diff --git a/.github/workflows/solana.yml b/.github/workflows/solana.yml index 9b8f3696e..2aa6261d0 100644 --- a/.github/workflows/solana.yml +++ b/.github/workflows/solana.yml @@ -1,10 +1,14 @@ name: solana on: + workflow_dispatch: push: branches: - main - pull_request: + pull_request: + branches: + - main + - 'shim/integration' paths: - 'solana/**' @@ -26,10 +30,18 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Install toolchain uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.RUSTC_VERSION }} + - name: Git Submodule Update + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git submodule update --init --recursive + working-directory: ./solana - name: make cargo-test-all run: make cargo-test-all working-directory: ./solana @@ -39,11 +51,19 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Install toolchain uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.RUSTC_VERSION }} components: clippy, rustfmt + - name: Git Submodule Update + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git submodule update --init --recursive + working-directory: ./solana - name: make lint run: make lint working-directory: ./solana @@ -53,6 +73,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - uses: metadaoproject/setup-anchor@v2 with: node-version: "20.11.0" @@ -61,6 +83,12 @@ jobs: - name: Set default Rust toolchain run: rustup default stable working-directory: ./solana + - name: Git Submodule Update + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git submodule update --init --recursive + working-directory: ./solana - name: make check-idl run: make check-idl working-directory: ./solana @@ -70,6 +98,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: @@ -82,6 +112,12 @@ jobs: - name: Set default Rust toolchain run: rustup default stable working-directory: ./solana + - name: Git Submodule Update + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git submodule update --init --recursive + working-directory: ./solana - name: make anchor-test run: make anchor-test working-directory: ./solana @@ -91,6 +127,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + with: + submodules: true - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: diff --git a/.github/workflows/universal-rs.yml b/.github/workflows/universal-rs.yml index 37ce603b8..75ca17eb4 100644 --- a/.github/workflows/universal-rs.yml +++ b/.github/workflows/universal-rs.yml @@ -1,6 +1,7 @@ name: universal-rs on: + workflow_dispatch: push: branches: - main @@ -73,4 +74,4 @@ jobs: toolchain: ${{ env.RUSTC_VERSION }} components: rustfmt - run: cargo fmt --all --check - working-directory: ./universal/rs \ No newline at end of file + working-directory: ./universal/rs diff --git a/.gitmodules b/.gitmodules index ca439845a..b04c919b6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,7 @@ path = evm/lib/wormhole-solidity-sdk url = https://github.com/wormhole-foundation/wormhole-solidity-sdk branch = 2b7db51f99b49eda99b44f4a044e751cb0b2e8ea +[submodule "solana/lib/wormhole"] + path = solana/lib/wormhole + url = https://github.com/wormholelabs-xyz/wormhole.git + branch = f69b3ae366211276fe15554f83a2d76abee0535c diff --git a/solana/Cargo.lock b/solana/Cargo.lock index e45ef5212..839efc20e 100644 --- a/solana/Cargo.lock +++ b/solana/Cargo.lock @@ -2,6 +2,31 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aead" version = "0.4.3" @@ -56,6 +81,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "getrandom 0.2.11", "once_cell", "version_check", "zerocopy", @@ -70,6 +96,27 @@ dependencies = [ "memchr", ] +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + [[package]] name = "anchor-attribute-access-control" version = "0.30.1" @@ -139,7 +186,7 @@ dependencies = [ "anchor-syn", "anyhow", "bs58 0.5.0", - "heck", + "heck 0.3.3", "proc-macro2", "quote", "serde_json", @@ -215,7 +262,7 @@ checksum = "31cf97b4e6f7d6144a05e435660fcf757dbc3446d38d0e2b851d11ed13625bba" dependencies = [ "anchor-lang-idl-spec", "anyhow", - "heck", + "heck 0.3.3", "regex", "serde", "serde_json", @@ -239,12 +286,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04bd077c34449319a1e4e0bc21cea572960c9ae0d0fefda0dd7c52fcc3c647a3" dependencies = [ "anchor-lang", - "spl-associated-token-account", - "spl-pod", + "spl-associated-token-account 3.0.2", + "spl-pod 0.2.2", "spl-token", - "spl-token-2022", - "spl-token-group-interface", - "spl-token-metadata-interface", + "spl-token-2022 3.0.2", + "spl-token-group-interface 0.2.3", + "spl-token-metadata-interface 0.3.3", ] [[package]] @@ -256,7 +303,7 @@ dependencies = [ "anyhow", "bs58 0.5.0", "cargo_toml", - "heck", + "heck 0.3.3", "proc-macro2", "quote", "serde", @@ -266,11 +313,49 @@ dependencies = [ "thiserror", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" + +[[package]] +name = "aquamarine" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" +dependencies = [ + "include_dir", + "itertools", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "ark-bn254" @@ -313,7 +398,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools", - "num-bigint", + "num-bigint 0.4.4", "num-traits", "paste", "rustc_version", @@ -336,7 +421,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint", + "num-bigint 0.4.4", "num-traits", "proc-macro2", "quote", @@ -365,7 +450,7 @@ dependencies = [ "ark-serialize-derive", "ark-std", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.4", ] [[package]] @@ -401,19 +486,109 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "asn1-rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure 0.12.6", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "assert_matches" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-compression" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df895a515f70646414f4b45c0b79082783b80552b373a68283012928df56f522" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "async-mutex" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-trait" +version = "0.1.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -424,18 +599,51 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + [[package]] name = "base64" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "bincode" version = "1.3.3" @@ -445,6 +653,22 @@ dependencies = [ "serde", ] +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -574,7 +798,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", "syn_derive", ] @@ -622,6 +846,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + [[package]] name = "bs58" version = "0.4.0" @@ -670,7 +915,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -679,6 +924,43 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "caps" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" +dependencies = [ + "libc", + "thiserror", +] + [[package]] name = "cargo_toml" version = "0.19.2" @@ -691,12 +973,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "755717a7de9ec452bf7f3f1a3099085deabd7f2962b861dae91ecd7a365903d2" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -717,7 +1000,22 @@ version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.48.5", +] + +[[package]] +name = "chrono-humanize" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799627e6b4d27827a814e837b9d8a504832086081806d45b1afa34dc982b023b" +dependencies = [ + "chrono", ] [[package]] @@ -729,6 +1027,81 @@ dependencies = [ "generic-array", ] +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width 0.1.14", + "vec_map", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_lex", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap 0.16.1", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width 0.2.0", + "windows-sys 0.59.0", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -749,12 +1122,34 @@ dependencies = [ "web-sys", ] +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + [[package]] name = "constant_time_eq" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "cpufeatures" version = "0.2.12" @@ -764,6 +1159,24 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.5" @@ -858,8 +1271,8 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", - "syn 2.0.48", + "strsim 0.10.0", + "syn 2.0.98", ] [[package]] @@ -870,17 +1283,69 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] -name = "derivation-path" -version = "0.2.0" +name = "dashmap" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" - -[[package]] -name = "derivative" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", + "rayon", +] + +[[package]] +name = "data-encoding" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" + +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid", +] + +[[package]] +name = "der-parser" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint 0.4.4", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivation-path" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" + +[[package]] +name = "derivative" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" @@ -890,6 +1355,24 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "dialoguer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +dependencies = [ + "console", + "shell-words", + "tempfile", + "zeroize", +] + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + [[package]] name = "digest" version = "0.9.0" @@ -910,6 +1393,82 @@ dependencies = [ "subtle", ] +[[package]] +name = "dir-diff" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ad16bf5f84253b50d6557681c58c3ab67c47c77d39fed9aeb56e947290bd10" +dependencies = [ + "walkdir", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "dlopen2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b4f5f101177ff01b8ec4ecc81eead416a8aa42819a2869311b3420fa114ffa" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + +[[package]] +name = "eager" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" + [[package]] name = "ed25519" version = "1.5.3" @@ -945,12 +1504,72 @@ dependencies = [ "sha2 0.10.8", ] +[[package]] +name = "educe" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "either" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enum-iterator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "enum-ordinalize" +version = "3.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" +dependencies = [ + "num-bigint 0.4.4", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.98", +] + [[package]] name = "env_logger" version = "0.9.3" @@ -971,1449 +1590,4383 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "feature-probe" -version = "0.1.1" +name = "errno" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] [[package]] -name = "fnv" -version = "1.0.7" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] -name = "generic-array" -version = "0.14.7" +name = "fastrand" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "serde", - "typenum", - "version_check", -] +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] -name = "getrandom" -version = "0.1.16" +name = "feature-probe" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", - "wasm-bindgen", -] +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" [[package]] -name = "getrandom" -version = "0.2.11" +name = "filetime" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", - "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", + "libredox", + "windows-sys 0.59.0", ] [[package]] -name = "hashbrown" -version = "0.11.2" +name = "flate2" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ - "ahash 0.7.8", + "crc32fast", + "miniz_oxide", ] [[package]] -name = "hashbrown" -version = "0.13.2" +name = "float-cmp" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" dependencies = [ - "ahash 0.8.11", + "num-traits", ] [[package]] -name = "hashbrown" -version = "0.14.3" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "heck" -version = "0.3.3" +name = "form_urlencoded" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "unicode-segmentation", + "percent-encoding", ] [[package]] -name = "hermit-abi" -version = "0.1.19" +name = "fragile" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ - "libc", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "hex" -version = "0.4.3" +name = "futures-channel" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] [[package]] -name = "hex-literal" -version = "0.4.1" +name = "futures-core" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] -name = "hmac" -version = "0.8.1" +name = "futures-executor" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ - "crypto-mac", - "digest 0.9.0", + "futures-core", + "futures-task", + "futures-util", ] [[package]] -name = "hmac" -version = "0.12.1" +name = "futures-io" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest 0.10.7", -] +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] -name = "hmac-drbg" -version = "0.3.0" +name = "futures-macro" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ - "digest 0.9.0", - "generic-array", - "hmac 0.8.1", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "humantime" -version = "2.1.0" +name = "futures-sink" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] -name = "ident_case" -version = "1.0.1" +name = "futures-task" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] -name = "im" -version = "15.1.0" +name = "futures-util" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ - "bitmaps", - "rand_core 0.6.4", - "rand_xoshiro", - "rayon", "serde", - "sized-chunks", "typenum", "version_check", ] [[package]] -name = "indexmap" -version = "2.1.0" +name = "gethostname" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" dependencies = [ - "equivalent", - "hashbrown 0.14.3", + "libc", + "winapi", ] [[package]] -name = "itertools" -version = "0.10.5" +name = "getrandom" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "either", + "cfg-if", + "js-sys", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "itoa" -version = "1.0.10" +name = "getrandom" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] [[package]] -name = "jobserver" -version = "0.1.27" +name = "getrandom" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ + "cfg-if", "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", ] [[package]] -name = "js-sys" -version = "0.3.68" +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" -dependencies = [ - "wasm-bindgen", -] +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "keccak" -version = "0.1.4" +name = "goblin" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" dependencies = [ - "cpufeatures", + "log", + "plain", + "scroll", ] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "h2" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.7.1", + "slab", + "tokio", + "tokio-util 0.7.13", + "tracing", +] [[package]] -name = "libc" -version = "0.2.152" +name = "hash32" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +dependencies = [ + "byteorder", +] [[package]] -name = "libsecp256k1" -version = "0.6.0" +name = "hashbrown" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "arrayref", - "base64 0.12.3", - "digest 0.9.0", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.7.3", - "serde", - "sha2 0.9.9", - "typenum", + "ahash 0.7.8", ] [[package]] -name = "libsecp256k1-core" -version = "0.2.2" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", + "ahash 0.7.8", ] [[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.2.1" +name = "hashbrown" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "libsecp256k1-core", + "ahash 0.8.11", ] [[package]] -name = "libsecp256k1-gen-genmult" -version = "0.2.1" +name = "hashbrown" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" -dependencies = [ - "libsecp256k1-core", -] +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] -name = "light-poseidon" -version = "0.2.0" +name = "hashbrown" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" -dependencies = [ - "ark-bn254", - "ark-ff", - "num-bigint", - "thiserror", -] +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] -name = "liquidity-layer-common-solana" -version = "0.0.0" +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ - "anchor-lang", - "cfg-if", - "liquidity-layer-messages", - "solana-program", - "wormhole-cctp-solana", - "wormhole-solana-consts", + "unicode-segmentation", ] [[package]] -name = "liquidity-layer-messages" -version = "0.0.0" -dependencies = [ - "wormhole-io", - "wormhole-raw-vaas", -] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "lock_api" -version = "0.4.11" +name = "hermit-abi" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ - "autocfg", - "scopeguard", + "libc", ] [[package]] -name = "log" -version = "0.4.20" +name = "hermit-abi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] -name = "matching-engine" -version = "0.0.0" +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" dependencies = [ - "anchor-lang", - "anchor-spl", - "cfg-if", - "hex", - "hex-literal", - "liquidity-layer-common-solana", - "ruint", - "solana-program", - "wormhole-solana-utils", + "arrayvec", ] [[package]] -name = "memchr" -version = "2.7.1" +name = "hex-literal" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] -name = "memmap2" -version = "0.5.10" +name = "histogram" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" -dependencies = [ - "libc", -] +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" [[package]] -name = "memoffset" -version = "0.9.0" +name = "hmac" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "autocfg", + "crypto-mac", + "digest 0.9.0", ] [[package]] -name = "merlin" -version = "3.0.0" +name = "hmac" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "byteorder", - "keccak", - "rand_core 0.6.4", - "zeroize", + "digest 0.10.7", ] [[package]] -name = "num-bigint" -version = "0.4.4" +name = "hmac-drbg" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "digest 0.9.0", + "generic-array", + "hmac 0.8.1", ] [[package]] -name = "num-derive" -version = "0.3.3" +name = "http" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "num-derive" -version = "0.4.2" +name = "http-body" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", + "bytes", + "http", + "pin-project-lite", ] [[package]] -name = "num-integer" -version = "0.1.45" +name = "httparse" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] -name = "num-traits" -version = "0.2.17" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" -dependencies = [ - "autocfg", -] +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "num_enum" -version = "0.6.1" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ - "num_enum_derive 0.6.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", ] [[package]] -name = "num_enum" -version = "0.7.2" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "num_enum_derive 0.7.2", + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", ] [[package]] -name = "num_enum_derive" -version = "0.6.1" +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 2.0.48", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "num_enum_derive" -version = "0.7.2" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.48", + "cc", ] [[package]] -name = "once_cell" -version = "1.19.0" +name = "icu_collections" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] [[package]] -name = "opaque-debug" -version = "0.3.0" +name = "icu_locid" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] [[package]] -name = "parking_lot" -version = "0.12.1" +name = "icu_locid_transform" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" dependencies = [ - "lock_api", - "parking_lot_core", + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "parking_lot_core" -version = "0.9.9" +name = "icu_locid_transform_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" dependencies = [ - "cfg-if", - "libc", - "redox_syscall", + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", "smallvec", - "windows-targets", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", ] [[package]] -name = "paste" -version = "1.0.14" +name = "icu_normalizer_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" [[package]] -name = "pbkdf2" -version = "0.4.0" +name = "icu_properties" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" dependencies = [ - "crypto-mac", + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", ] [[package]] -name = "pbkdf2" -version = "0.11.0" +name = "icu_properties_data" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", -] +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" [[package]] -name = "percent-encoding" -version = "2.3.1" +name = "icu_provider" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] [[package]] -name = "polyval" -version = "0.5.3" +name = "icu_provider_macros" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ - "cfg-if", - "cpufeatures", - "opaque-debug", - "universal-hash", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "ppv-lite86" -version = "0.2.17" +name = "ident_case" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] -name = "proc-macro-crate" -version = "0.1.5" +name = "idna" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "toml 0.5.11", + "idna_adapter", + "smallvec", + "utf8_iter", ] [[package]] -name = "proc-macro-crate" -version = "1.3.1" +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "once_cell", - "toml_edit 0.19.15", + "icu_normalizer", + "icu_properties", ] [[package]] -name = "proc-macro-crate" -version = "3.1.0" +name = "im" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" dependencies = [ - "toml_edit 0.21.1", + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "rayon", + "serde", + "sized-chunks", + "typenum", + "version_check", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "include_dir" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", + "include_dir_macros", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "include_dir_macros" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ "proc-macro2", "quote", - "version_check", ] [[package]] -name = "proc-macro2" -version = "1.0.78" +name = "index_list" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" -dependencies = [ - "unicode-ident", -] +checksum = "fa38453685e5fe724fd23ff6c1a158c1e2ca21ce0c2718fa11e96e70e99fd4de" [[package]] -name = "qstring" -version = "0.7.2" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "percent-encoding", + "autocfg", + "hashbrown 0.12.3", ] [[package]] -name = "qualifier_attr" -version = "0.2.2" +name = "indexmap" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", + "equivalent", + "hashbrown 0.15.2", ] [[package]] -name = "quote" -version = "1.0.35" +name = "indicatif" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ - "proc-macro2", + "console", + "number_prefix", + "portable-atomic", + "unicode-width 0.2.0", + "web-time", ] [[package]] -name = "rand" -version = "0.7.3" +name = "ipnet" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] -name = "rand" -version = "0.8.5" +name = "itertools" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", + "either", ] [[package]] -name = "rand_chacha" -version = "0.2.2" +name = "itoa" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "jobserver" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "libc", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "js-sys" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ - "getrandom 0.1.16", + "wasm-bindgen", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "jsonrpc-core" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "getrandom 0.2.11", + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "keccak" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ - "rand_core 0.5.1", + "cpufeatures", ] [[package]] -name = "rand_xoshiro" -version = "0.6.0" +name = "lazy_static" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" -dependencies = [ - "rand_core 0.6.4", -] +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] -name = "rayon" -version = "1.8.0" +name = "libc" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" -dependencies = [ - "either", - "rayon-core", -] +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] -name = "rayon-core" -version = "1.12.0" +name = "libredox" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "crossbeam-deque", - "crossbeam-utils", + "bitflags 2.4.2", + "libc", + "redox_syscall 0.5.8", ] [[package]] -name = "redox_syscall" -version = "0.4.1" +name = "libsecp256k1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" dependencies = [ - "bitflags 1.3.2", + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "typenum", ] [[package]] -name = "regex" -version = "1.10.2" +name = "libsecp256k1-core" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "crunchy", + "digest 0.9.0", + "subtle", ] [[package]] -name = "regex-automata" -version = "0.4.3" +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", + "libsecp256k1-core", ] [[package]] -name = "regex-syntax" -version = "0.8.2" +name = "libsecp256k1-gen-genmult" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] [[package]] -name = "ruint" -version = "1.9.0" +name = "light-poseidon" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e1574d439643c8962edf612a888e7cc5581bcdf36cb64e6bc88466b03b2daa" +checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" dependencies = [ - "ruint-macro", + "ark-bn254", + "ark-ff", + "num-bigint 0.4.4", "thiserror", ] [[package]] -name = "ruint-macro" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" - -[[package]] -name = "rustc-hash" -version = "1.1.0" +name = "linux-raw-sys" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +name = "liquidity-layer-common-solana" +version = "0.0.0" dependencies = [ - "semver", + "anchor-lang", + "cfg-if", + "liquidity-layer-messages", + "solana-program", + "wormhole-cctp-solana", + "wormhole-solana-consts", ] [[package]] -name = "rustversion" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +name = "liquidity-layer-messages" +version = "0.0.0" +dependencies = [ + "wormhole-io", + "wormhole-raw-vaas", +] [[package]] -name = "ryu" -version = "1.0.16" +name = "litemap" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] -name = "scopeguard" -version = "1.2.0" +name = "lock_api" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] [[package]] -name = "semver" -version = "1.0.21" +name = "log" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] -name = "serde" -version = "1.0.195" +name = "lru" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" dependencies = [ - "serde_derive", + "hashbrown 0.12.3", ] [[package]] -name = "serde_bytes" -version = "0.11.14" +name = "lz4" +version = "1.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4" dependencies = [ - "serde", + "lz4-sys", ] [[package]] -name = "serde_derive" -version = "1.0.195" +name = "lz4-sys" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", + "cc", + "libc", ] [[package]] -name = "serde_json" -version = "1.0.111" +name = "matchers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "itoa", - "ryu", - "serde", + "regex-automata 0.1.10", ] [[package]] -name = "serde_spanned" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +name = "matching-engine" +version = "0.0.0" dependencies = [ + "anchor-lang", + "anchor-spl", + "anyhow", + "base64 0.22.1", + "bincode", + "bs58 0.5.0", + "bytemuck", + "cfg-if", + "hex", + "hex-literal", + "lazy_static", + "liquidity-layer-common-solana", + "num-traits", + "once_cell", + "ruint", + "secp256k1", "serde", + "serde_json", + "solana-cli-output", + "solana-program", + "solana-program-test", + "solana-sdk", + "tracing", + "tracing-log", + "tracing-subscriber", + "wormhole-io", + "wormhole-solana-utils", + "wormhole-svm-definitions", + "wormhole-svm-shim", ] [[package]] -name = "serde_with" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +name = "matching-engine-testing" +version = "0.0.0" dependencies = [ + "anchor-lang", + "anchor-spl", + "anyhow", + "base64 0.22.1", + "bincode", + "bs58 0.5.0", + "bytemuck", + "cfg-if", + "hex", + "hex-literal", + "lazy_static", + "liquidity-layer-common-solana", + "matching-engine", + "num-traits", + "once_cell", + "ruint", + "secp256k1", "serde", - "serde_with_macros", + "serde_json", + "solana-cli-output", + "solana-program", + "solana-program-test", + "solana-sdk", + "tracing", + "tracing-log", + "tracing-subscriber", + "wormhole-io", + "wormhole-solana-utils", + "wormhole-svm-definitions", + "wormhole-svm-shim", ] [[package]] -name = "serde_with_macros" -version = "2.3.3" +name = "memchr" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.48", -] +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] -name = "sha2" -version = "0.9.9" +name = "memmap2" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "libc", ] [[package]] -name = "sha2" -version = "0.10.8" +name = "memoffset" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "autocfg", ] [[package]] -name = "sha3" -version = "0.9.1" +name = "memoffset" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "keccak", - "opaque-debug", + "autocfg", ] [[package]] -name = "sha3" -version = "0.10.8" +name = "merlin" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" dependencies = [ - "digest 0.10.7", + "byteorder", "keccak", + "rand_core 0.6.4", + "zeroize", ] [[package]] -name = "signature" -version = "1.6.4" +name = "mime" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "siphasher" -version = "0.3.11" +name = "minimal-lexical" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] -name = "sized-chunks" -version = "0.6.5" +name = "miniz_oxide" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" dependencies = [ - "bitmaps", - "typenum", + "adler2", ] [[package]] -name = "smallvec" -version = "1.11.2" +name = "mio" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] [[package]] -name = "solana-frozen-abi" -version = "1.18.15" +name = "mockall" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c00a6aca244dfa904e2c4a26406ba7b0987344ceaec932f3cda0b35eff0babc" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" dependencies = [ - "block-buffer 0.10.4", - "bs58 0.4.0", - "bv", - "either", - "generic-array", - "im", + "cfg-if", + "downcast", + "fragile", "lazy_static", - "log", - "memmap2", - "rustc_version", - "serde", - "serde_bytes", - "serde_derive", - "sha2 0.10.8", - "solana-frozen-abi-macro", - "subtle", - "thiserror", + "mockall_derive", + "predicates", + "predicates-tree", ] [[package]] -name = "solana-frozen-abi-macro" -version = "1.18.15" +name = "mockall_derive" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed58b27b9b8877893f69bc5cfd1c62e984315e0229d83cf8a32ad0933c0d6c9" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ + "cfg-if", "proc-macro2", "quote", - "rustc_version", - "syn 2.0.48", + "syn 1.0.109", ] [[package]] -name = "solana-logger" -version = "1.18.15" +name = "modular-bitfield" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee2daf61ae582edf9634adf8e5021faf002df0d3f69078ecbcd6c7b41bdf833" +checksum = "a53d79ba8304ac1c4f9eb3b9d281f21f7be9d4626f72ce7df4ad8fbde4f38a74" dependencies = [ - "env_logger", - "lazy_static", - "log", + "modular-bitfield-impl", + "static_assertions", ] [[package]] -name = "solana-program" -version = "1.18.15" +name = "modular-bitfield-impl" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4908f360900d0a1aa81c7bad7937c78f0825c3f08ff0b22f1de0e43e5946f2" +checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" dependencies = [ - "ark-bn254", - "ark-ec", - "ark-ff", - "ark-serialize", - "base64 0.21.7", - "bincode", - "bitflags 2.4.2", - "blake3", - "borsh 0.10.3", - "borsh 0.9.3", - "borsh 1.5.0", - "bs58 0.4.0", - "bv", - "bytemuck", - "cc", - "console_error_panic_hook", - "console_log", - "curve25519-dalek", - "getrandom 0.2.11", - "itertools", - "js-sys", - "lazy_static", - "libc", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", + "pin-utils", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.9", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive 0.7.2", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pbkdf2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216eaa586a190f0a738f2f918511eecfa90f13295abec0e457cdebcceda80cbd" +dependencies = [ + "crypto-mac", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "percentage" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd23b938276f14057220b707937bcb42fa76dda7560e57a2da30cb52d557937" +dependencies = [ + "num", +] + +[[package]] +name = "pin-project" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der", + "spki", + "zeroize", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates-core" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" + +[[package]] +name = "predicates-tree" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty-hex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml 0.5.11", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "qualifier_attr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring 0.16.20", + "rustc-hash", + "rustls", + "rustls-native-certs", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.11", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rcgen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" +dependencies = [ + "pem", + "ring 0.16.20", + "time", + "yasna", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags 2.4.2", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.11", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "async-compression", + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tokio-util 0.7.13", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.11", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ruint" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e1574d439643c8962edf612a888e7cc5581bcdf36cb64e6bc88466b03b2daa" +dependencies = [ + "ruint-macro", + "thiserror", +] + +[[package]] +name = "ruint-macro" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.4.2", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring 0.17.8", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +dependencies = [ + "scroll_derive", +] + +[[package]] +name = "scroll_derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.8", + "untrusted 0.9.0", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" + +[[package]] +name = "seqlock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5c67b6f14ecc5b86c66fa63d76b5092352678545a8a3cdae80aef5128371910" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "serde" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serde_json" +version = "1.0.138" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.7.1", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solana-account-decoder" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b109fd3a106e079005167e5b0e6f6d2c88bbedec32530837b584791a8b5abf36" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "bv", + "lazy_static", + "serde", + "serde_derive", + "serde_json", + "solana-config-program", + "solana-sdk", + "spl-token", + "spl-token-2022 1.0.0", + "spl-token-group-interface 0.1.0", + "spl-token-metadata-interface 0.2.0", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-accounts-db" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec9829d10d521f3ed5e50c12d2b62784e2901aa484a92c2aa3924151da046139" +dependencies = [ + "arrayref", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lz4", + "memmap2", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.2", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "seqlock", + "serde", + "serde_derive", + "smallvec", + "solana-bucket-map", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-nohash-hasher", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", + "static_assertions", + "strum", + "strum_macros", + "tar", + "tempfile", + "thiserror", +] + +[[package]] +name = "solana-address-lookup-table-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3527a26138b5deb126f13c27743f3d95ac533abee5979e4113f6d59ef919cc6" +dependencies = [ + "bincode", + "bytemuck", + "log", + "num-derive 0.4.2", + "num-traits", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-banks-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" +dependencies = [ + "borsh 1.5.0", + "futures", + "solana-banks-interface", + "solana-program", + "solana-sdk", + "tarpc", + "thiserror", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-banks-interface" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f54d0a4334c153eadaa0326296a47a92d110c1cc975075fd6e1a7b67067f9812" +dependencies = [ + "serde", + "solana-sdk", + "tarpc", +] + +[[package]] +name = "solana-banks-server" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" +dependencies = [ + "bincode", + "crossbeam-channel", + "futures", + "solana-accounts-db", + "solana-banks-interface", + "solana-client", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "tarpc", + "tokio", + "tokio-serde", +] + +[[package]] +name = "solana-bpf-loader-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8cc27ceda9a22804d73902f5d718ff1331aa53990c2665c90535f6b182db259" +dependencies = [ + "bincode", + "byteorder", + "libsecp256k1", + "log", + "scopeguard", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-bucket-map" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca55ec9b8d01d2e3bba9fad77b27c9a8fd51fe12475549b93a853d921b653139" +dependencies = [ + "bv", + "bytemuck", + "log", + "memmap2", + "modular-bitfield", + "num_enum 0.7.2", + "rand 0.8.5", + "solana-measure", + "solana-sdk", + "tempfile", +] + +[[package]] +name = "solana-clap-utils" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074ef478856a45d5627270fbc6b331f91de9aae7128242d9e423931013fb8a2a" +dependencies = [ + "chrono", + "clap 2.34.0", + "rpassword", + "solana-remote-wallet", + "solana-sdk", + "thiserror", + "tiny-bip39", + "uriparse", + "url", +] + +[[package]] +name = "solana-cli-config" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb5ded97f71d1ff4de9b256fc33acab9f9def864d5aa16762c8f91b67c66466c" +dependencies = [ + "dirs-next", + "lazy_static", + "serde", + "serde_derive", + "serde_yaml", + "solana-clap-utils", + "solana-sdk", + "url", +] + +[[package]] +name = "solana-cli-output" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da6b601aa9f9764afc60ba310c42ff8576923fcf3dd5da30fd0cdf9c44caf98" +dependencies = [ + "Inflector", + "base64 0.21.7", + "chrono", + "clap 2.34.0", + "console", + "humantime", + "indicatif", + "pretty-hex", + "semver", + "serde", + "serde_json", + "solana-account-decoder", + "solana-clap-utils", + "solana-cli-config", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-vote-program", + "spl-memo", +] + +[[package]] +name = "solana-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24a9f32c42402c4b9484d5868ac74b7e0a746e3905d8bfd756e1203e50cbb87e" +dependencies = [ + "async-trait", + "bincode", + "dashmap", + "futures", + "futures-util", + "indexmap 2.7.1", + "indicatif", + "log", + "quinn", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-quic-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-rpc-client-nonce-utils", + "solana-sdk", + "solana-streamer", + "solana-thin-client", + "solana-tpu-client", + "solana-udp-client", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-compute-budget-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af050a6e0b402e322aa21f5441c7e27cdd52624a2d659f455b68afd7cda218c" +dependencies = [ + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-config-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d75b803860c0098e021a26f0624129007c15badd5b0bc2fbd9f0e1a73060d3b" +dependencies = [ + "bincode", + "chrono", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-connection-cache" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9306ede13e8ceeab8a096bcf5fa7126731e44c201ca1721ea3c38d89bcd4111" +dependencies = [ + "async-trait", + "bincode", + "crossbeam-channel", + "futures-util", + "indexmap 2.7.1", + "log", + "rand 0.8.5", + "rayon", + "rcgen", + "solana-measure", + "solana-metrics", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-cost-model" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c852790063f7646a1c5199234cc82e1304b55a3b3fb8055a0b5c8b0393565c1c" +dependencies = [ + "lazy_static", + "log", + "rustc_version", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-compute-budget-program", + "solana-config-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-metrics", + "solana-program-runtime", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-vote-program", +] + +[[package]] +name = "solana-frozen-abi" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ab2c30c15311b511c0d1151e4ab6bc9a3e080a37e7c6e7c2d96f5784cf9434" +dependencies = [ + "block-buffer 0.10.4", + "bs58 0.4.0", + "bv", + "either", + "generic-array", + "im", + "lazy_static", + "log", + "memmap2", + "rustc_version", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "solana-frozen-abi-macro", + "subtle", + "thiserror", +] + +[[package]] +name = "solana-frozen-abi-macro" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.98", +] + +[[package]] +name = "solana-loader-v4-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" +dependencies = [ + "log", + "solana-measure", + "solana-program-runtime", + "solana-sdk", + "solana_rbpf", +] + +[[package]] +name = "solana-logger" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121d36ffb3c6b958763312cbc697fbccba46ee837d3a0aa4fc0e90fcb3b884f3" +dependencies = [ + "env_logger", + "lazy_static", + "log", +] + +[[package]] +name = "solana-measure" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" +dependencies = [ + "log", + "solana-sdk", +] + +[[package]] +name = "solana-metrics" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e36052aff6be1536bdf6f737c6e69aca9dbb6a2f3f582e14ecb0ddc0cd66ce" +dependencies = [ + "crossbeam-channel", + "gethostname", + "lazy_static", + "log", + "reqwest", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-net-utils" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a1f5c6be9c5b272866673741e1ebc64b2ea2118e5c6301babbce526fdfb15f4" +dependencies = [ + "bincode", + "clap 3.2.25", + "crossbeam-channel", + "log", + "nix", + "rand 0.8.5", + "serde", + "serde_derive", + "socket2", + "solana-logger", + "solana-sdk", + "solana-version", + "tokio", + "url", +] + +[[package]] +name = "solana-nohash-hasher" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" + +[[package]] +name = "solana-perf" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28acaf22477566a0fbddd67249ea5d859b39bacdb624aff3fadd3c5745e2643c" +dependencies = [ + "ahash 0.8.11", + "bincode", + "bv", + "caps", + "curve25519-dalek", + "dlopen2", + "fnv", + "lazy_static", + "libc", + "log", + "nix", + "rand 0.8.5", + "rayon", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-metrics", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c10f4588cefd716b24a1a40dd32c278e43a560ab8ce4de6b5805c9d113afdfa1" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "base64 0.21.7", + "bincode", + "bitflags 2.4.2", + "blake3", + "borsh 0.10.3", + "borsh 0.9.3", + "borsh 1.5.0", + "bs58 0.4.0", + "bv", + "bytemuck", + "cc", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.11", + "itertools", + "js-sys", + "lazy_static", + "libc", + "libsecp256k1", + "light-poseidon", + "log", + "memoffset 0.9.0", + "num-bigint 0.4.4", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk-macro", + "thiserror", + "tiny-bip39", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "solana-program-runtime" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf0c3eab2a80f514289af1f422c121defb030937643c43b117959d6f1932fb5" +dependencies = [ + "base64 0.21.7", + "bincode", + "eager", + "enum-iterator", + "itertools", + "libc", + "log", + "num-derive 0.4.2", + "num-traits", + "percentage", + "rand 0.8.5", + "rustc_version", + "serde", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-measure", + "solana-metrics", + "solana-sdk", + "solana_rbpf", + "thiserror", +] + +[[package]] +name = "solana-program-test" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1382a5768ff738e283770ee331d0a4fa04aa1aceed8eb820a97094c93d53b72" +dependencies = [ + "assert_matches", + "async-trait", + "base64 0.21.7", + "bincode", + "chrono-humanize", + "crossbeam-channel", + "log", + "serde", + "solana-accounts-db", + "solana-banks-client", + "solana-banks-interface", + "solana-banks-server", + "solana-bpf-loader-program", + "solana-logger", + "solana-program-runtime", + "solana-runtime", + "solana-sdk", + "solana-vote-program", + "solana_rbpf", + "test-case", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-pubsub-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b064e76909d33821b80fdd826e6757251934a52958220c92639f634bea90366d" +dependencies = [ + "crossbeam-channel", + "futures-util", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", + "tokio-stream", + "tokio-tungstenite", + "tungstenite", + "url", +] + +[[package]] +name = "solana-quic-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" +dependencies = [ + "async-mutex", + "async-trait", + "futures", + "itertools", + "lazy_static", + "log", + "quinn", + "quinn-proto", + "rcgen", + "rustls", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-net-utils", + "solana-rpc-client-api", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-rayon-threadlimit" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66468f9c014992167de10cc68aad6ac8919a8c8ff428dc88c0d2b4da8c02b8b7" +dependencies = [ + "lazy_static", + "num_cpus", +] + +[[package]] +name = "solana-remote-wallet" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c191019f4d4f84281a6d0dd9a43181146b33019627fc394e42e08ade8976b431" +dependencies = [ + "console", + "dialoguer", + "log", + "num-derive 0.4.2", + "num-traits", + "parking_lot", + "qstring", + "semver", + "solana-sdk", + "thiserror", + "uriparse", +] + +[[package]] +name = "solana-rpc-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ed4628e338077c195ddbf790693d410123d17dec0a319b5accb4aaee3fb15c" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "indicatif", + "log", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "solana-vote-program", + "tokio", +] + +[[package]] +name = "solana-rpc-client-api" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83c913551faa4a1ae4bbfef6af19f3a5cf847285c05b4409e37c8993b3444229" +dependencies = [ + "base64 0.21.7", + "bs58 0.4.0", + "jsonrpc-core", + "reqwest", + "semver", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "solana-transaction-status", + "solana-version", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "solana-rpc-client-nonce-utils" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a47b6bb1834e6141a799db62bbdcf80d17a7d58d7bc1684c614e01a7293d7cf" +dependencies = [ + "clap 2.34.0", + "solana-clap-utils", + "solana-rpc-client", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-runtime" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73a12e1270121e1ca6a4e86d6d0f5c339f0811a8435161d9eee54cbb0a083859" +dependencies = [ + "aquamarine", + "arrayref", + "base64 0.21.7", + "bincode", + "blake3", + "bv", + "bytemuck", + "byteorder", + "bzip2", + "crossbeam-channel", + "dashmap", + "dir-diff", + "flate2", + "fnv", + "im", + "index_list", + "itertools", + "lazy_static", + "log", + "lru", + "lz4", + "memmap2", + "mockall", + "modular-bitfield", + "num-derive 0.4.2", + "num-traits", + "num_cpus", + "num_enum 0.7.2", + "ouroboros", + "percentage", + "qualifier_attr", + "rand 0.8.5", + "rayon", + "regex", + "rustc_version", + "serde", + "serde_derive", + "serde_json", + "solana-accounts-db", + "solana-address-lookup-table-program", + "solana-bpf-loader-program", + "solana-bucket-map", + "solana-compute-budget-program", + "solana-config-program", + "solana-cost-model", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-measure", + "solana-metrics", + "solana-perf", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-sdk", + "solana-stake-program", + "solana-system-program", + "solana-version", + "solana-vote", + "solana-vote-program", + "solana-zk-token-proof-program", + "solana-zk-token-sdk", + "static_assertions", + "strum", + "strum_macros", + "symlink", + "tar", + "tempfile", + "thiserror", + "zstd", +] + +[[package]] +name = "solana-sdk" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580ad66c2f7a4c3cb3244fe21440546bd500f5ecb955ad9826e92a78dded8009" +dependencies = [ + "assert_matches", + "base64 0.21.7", + "bincode", + "bitflags 2.4.2", + "borsh 1.5.0", + "bs58 0.4.0", + "bytemuck", + "byteorder", + "chrono", + "derivation-path", + "digest 0.10.7", + "ed25519-dalek", + "ed25519-dalek-bip32", + "generic-array", + "hmac 0.12.1", + "itertools", + "js-sys", + "lazy_static", "libsecp256k1", - "light-poseidon", "log", - "memoffset", - "num-bigint", + "memmap2", + "num-derive 0.4.2", + "num-traits", + "num_enum 0.7.2", + "pbkdf2 0.11.0", + "qstring", + "qualifier_attr", + "rand 0.7.3", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "serde_with", + "sha2 0.10.8", + "sha3 0.10.8", + "siphasher", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-logger", + "solana-program", + "solana-sdk-macro", + "thiserror", + "uriparse", + "wasm-bindgen", +] + +[[package]] +name = "solana-sdk-macro" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b75d0f193a27719257af19144fdaebec0415d1c9e9226ae4bd29b791be5e9bd" +dependencies = [ + "bs58 0.4.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.98", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" + +[[package]] +name = "solana-send-transaction-service" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3218f670f582126a3859c4fd152e922b93b3748a636bb143f970391925723577" +dependencies = [ + "crossbeam-channel", + "log", + "solana-client", + "solana-measure", + "solana-metrics", + "solana-runtime", + "solana-sdk", + "solana-tpu-client", +] + +[[package]] +name = "solana-stake-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb3e0d2dc7080b9fa61b34699b176911684f5e04e8df4b565b2b6c962bb4321" +dependencies = [ + "bincode", + "log", + "rustc_version", + "solana-config-program", + "solana-program-runtime", + "solana-sdk", + "solana-vote-program", +] + +[[package]] +name = "solana-streamer" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" +dependencies = [ + "async-channel", + "bytes", + "crossbeam-channel", + "futures-util", + "histogram", + "indexmap 2.7.1", + "itertools", + "libc", + "log", + "nix", + "pem", + "percentage", + "pkcs8", + "quinn", + "quinn-proto", + "rand 0.8.5", + "rcgen", + "rustls", + "smallvec", + "solana-metrics", + "solana-perf", + "solana-sdk", + "thiserror", + "tokio", + "x509-parser", +] + +[[package]] +name = "solana-system-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26f31e04f5baad7cbc2281fea312c4e48277da42a93a0ba050b74edc5a74d63c" +dependencies = [ + "bincode", + "log", + "serde", + "serde_derive", + "solana-program-runtime", + "solana-sdk", +] + +[[package]] +name = "solana-thin-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8c02245d0d232430e79dc0d624aa42d50006097c3aec99ac82ac299eaa3a73f" +dependencies = [ + "bincode", + "log", + "rayon", + "solana-connection-cache", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", +] + +[[package]] +name = "solana-tpu-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67251506ed03de15f1347b46636b45c47da6be75015b4a13f0620b21beb00566" +dependencies = [ + "async-trait", + "bincode", + "futures-util", + "indexmap 2.7.1", + "indicatif", + "log", + "rayon", + "solana-connection-cache", + "solana-measure", + "solana-metrics", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-transaction-status" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3d36db1b2ab2801afd5482aad9fb15ed7959f774c81a77299fdd0ddcf839d4" +dependencies = [ + "Inflector", + "base64 0.21.7", + "bincode", + "borsh 0.10.3", + "bs58 0.4.0", + "lazy_static", + "log", + "serde", + "serde_derive", + "serde_json", + "solana-account-decoder", + "solana-sdk", + "spl-associated-token-account 2.3.0", + "spl-memo", + "spl-token", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "solana-udp-client" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a754a3c2265eb02e0c35aeaca96643951f03cee6b376afe12e0cf8860ffccd1" +dependencies = [ + "async-trait", + "solana-connection-cache", + "solana-net-utils", + "solana-sdk", + "solana-streamer", + "thiserror", + "tokio", +] + +[[package]] +name = "solana-version" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f44776bd685cc02e67ba264384acc12ef2931d01d1a9f851cb8cdbd3ce455b9e" +dependencies = [ + "log", + "rustc_version", + "semver", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", +] + +[[package]] +name = "solana-vote" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5983370c95b615dc5f5d0e85414c499f05380393c578749bcd14c114c77c9bc" +dependencies = [ + "crossbeam-channel", + "itertools", + "log", + "rustc_version", + "serde", + "serde_derive", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-sdk", + "solana-vote-program", + "thiserror", +] + +[[package]] +name = "solana-vote-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25810970c91feb579bd3f67dca215fce971522e42bfd59696af89c5dfebd997c" +dependencies = [ + "bincode", + "log", "num-derive 0.4.2", "num-traits", - "parking_lot", - "rand 0.8.5", "rustc_version", - "rustversion", "serde", - "serde_bytes", "serde_derive", - "serde_json", - "sha2 0.10.8", - "sha3 0.10.8", "solana-frozen-abi", "solana-frozen-abi-macro", - "solana-sdk-macro", + "solana-metrics", + "solana-program", + "solana-program-runtime", + "solana-sdk", + "thiserror", +] + +[[package]] +name = "solana-zk-token-proof-program" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be1c15d4aace575e2de73ebeb9b37bac455e89bee9a8c3531f47ac5066b33e1" +dependencies = [ + "bytemuck", + "num-derive 0.4.2", + "num-traits", + "solana-program-runtime", + "solana-sdk", + "solana-zk-token-sdk", +] + +[[package]] +name = "solana-zk-token-sdk" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cbdf4249b6dfcbba7d84e2b53313698043f60f8e22ce48286e6fbe8a17c8d16" +dependencies = [ + "aes-gcm-siv", + "base64 0.21.7", + "bincode", + "bytemuck", + "byteorder", + "curve25519-dalek", + "getrandom 0.1.16", + "itertools", + "lazy_static", + "merlin", + "num-derive 0.4.2", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", + "sha3 0.9.1", + "solana-program", + "solana-sdk", + "subtle", "thiserror", - "tiny-bip39", - "wasm-bindgen", "zeroize", ] [[package]] -name = "solana-sdk" -version = "1.18.15" +name = "solana_rbpf" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da5d083187e3b3f453e140f292c09186881da8a02a7b5e27f645ee26de3d9cc5" +dependencies = [ + "byteorder", + "combine", + "goblin", + "hash32", + "libc", + "log", + "rand 0.8.5", + "rustc-demangle", + "scroll", + "thiserror", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "spl-associated-token-account" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992d9c64c2564cc8f63a4b508bf3ebcdf2254b0429b13cd1d31adb6162432a5f" +dependencies = [ + "assert_matches", + "borsh 0.10.3", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token", + "spl-token-2022 1.0.0", + "thiserror", +] + +[[package]] +name = "spl-associated-token-account" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" +dependencies = [ + "assert_matches", + "borsh 1.5.0", + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-token", + "spl-token-2022 3.0.2", + "thiserror", +] + +[[package]] +name = "spl-discriminator" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive 0.1.2", +] + +[[package]] +name = "spl-discriminator" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator-derive 0.2.0", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" +dependencies = [ + "quote", + "spl-discriminator-syn 0.1.2", + "syn 2.0.98", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +dependencies = [ + "quote", + "spl-discriminator-syn 0.2.0", + "syn 2.0.98", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.98", + "thiserror", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.98", + "thiserror", +] + +[[package]] +name = "spl-memo" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +dependencies = [ + "solana-program", +] + +[[package]] +name = "spl-pod" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" +dependencies = [ + "borsh 0.10.3", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-pod" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" +dependencies = [ + "borsh 1.5.0", + "bytemuck", + "solana-program", + "solana-zk-token-sdk", + "spl-program-error 0.4.1", +] + +[[package]] +name = "spl-program-error" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" +dependencies = [ + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-program-error-derive 0.3.2", + "thiserror", +] + +[[package]] +name = "spl-program-error" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49065093ea91f57b9b2bd81493ff705e2ad4e64507a07dbc02b085778e02770e" +dependencies = [ + "num-derive 0.4.2", + "num-traits", + "solana-program", + "spl-program-error-derive 0.4.1", + "thiserror", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.98", +] + +[[package]] +name = "spl-program-error-derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.98", +] + +[[package]] +name = "spl-tlv-account-resolution" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50ec330850953d4971b052ff98c74a8e67e7618b4aed9f4971b8d3b68fcd1cd" +checksum = "615d381f48ddd2bb3c57c7f7fb207591a2a05054639b18a62e785117dd7a8683" dependencies = [ - "assert_matches", - "base64 0.21.7", - "bincode", - "bitflags 2.4.2", - "borsh 1.5.0", - "bs58 0.4.0", "bytemuck", - "byteorder", - "chrono", - "derivation-path", - "digest 0.10.7", - "ed25519-dalek", - "ed25519-dalek-bip32", - "generic-array", - "hmac 0.12.1", - "itertools", - "js-sys", - "lazy_static", - "libsecp256k1", - "log", - "memmap2", - "num-derive 0.4.2", - "num-traits", - "num_enum 0.7.2", - "pbkdf2 0.11.0", - "qstring", - "qualifier_attr", - "rand 0.7.3", - "rand 0.8.5", - "rustc_version", - "rustversion", - "serde", - "serde_bytes", - "serde_derive", - "serde_json", - "serde_with", - "sha2 0.10.8", - "sha3 0.10.8", - "siphasher", - "solana-frozen-abi", - "solana-frozen-abi-macro", - "solana-logger", "solana-program", - "solana-sdk-macro", - "thiserror", - "uriparse", - "wasm-bindgen", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", ] [[package]] -name = "solana-sdk-macro" -version = "1.18.15" +name = "spl-tlv-account-resolution" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ef2ea49002d1bf52a4a8509570b2c3b88e7b6d0a131b11bbd637ca1e1df0ff" +checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" dependencies = [ - "bs58 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.48", + "bytemuck", + "solana-program", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.1", + "spl-type-length-value 0.4.3", ] [[package]] -name = "solana-security-txt" -version = "1.1.1" +name = "spl-token" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" +checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.6.1", + "solana-program", + "thiserror", +] [[package]] -name = "solana-zk-token-sdk" -version = "1.18.15" +name = "spl-token-2022" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cafb3df56516086f65e2a08a8cd03f504236f3b5348299abd45415d1d18ba32" +checksum = "d697fac19fd74ff472dfcc13f0b442dd71403178ce1de7b5d16f83a33561c059" dependencies = [ - "aes-gcm-siv", - "base64 0.21.7", - "bincode", + "arrayref", "bytemuck", - "byteorder", - "curve25519-dalek", - "getrandom 0.1.16", - "itertools", - "lazy_static", - "merlin", "num-derive 0.4.2", "num-traits", - "rand 0.7.3", - "serde", - "serde_json", - "sha3 0.9.1", + "num_enum 0.7.2", "solana-program", - "solana-sdk", - "subtle", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod 0.1.0", + "spl-token", + "spl-token-group-interface 0.1.0", + "spl-token-metadata-interface 0.2.0", + "spl-transfer-hook-interface 0.4.1", + "spl-type-length-value 0.3.0", "thiserror", - "zeroize", ] [[package]] -name = "spl-associated-token-account" +name = "spl-token-2022" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e688554bac5838217ffd1fab7845c573ff106b6336bf7d290db7c98d5a8efd" +checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" dependencies = [ - "assert_matches", - "borsh 1.5.0", + "arrayref", + "bytemuck", "num-derive 0.4.2", "num-traits", + "num_enum 0.7.2", "solana-program", + "solana-security-txt", + "solana-zk-token-sdk", + "spl-memo", + "spl-pod 0.2.2", "spl-token", - "spl-token-2022", + "spl-token-group-interface 0.2.3", + "spl-token-metadata-interface 0.3.3", + "spl-transfer-hook-interface 0.6.3", + "spl-type-length-value 0.4.3", "thiserror", ] [[package]] -name = "spl-discriminator" -version = "0.2.2" +name = "spl-token-group-interface" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" +checksum = "b889509d49fa74a4a033ca5dae6c2307e9e918122d97e58562f5c4ffa795c75d" dependencies = [ "bytemuck", "solana-program", - "spl-discriminator-derive", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", ] [[package]] -name = "spl-discriminator-derive" -version = "0.2.0" +name = "spl-token-group-interface" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" dependencies = [ - "quote", - "spl-discriminator-syn", - "syn 2.0.48", + "bytemuck", + "solana-program", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.1", ] [[package]] -name = "spl-discriminator-syn" +name = "spl-token-metadata-interface" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" +checksum = "4c16ce3ba6979645fb7627aa1e435576172dd63088dc7848cb09aa331fa1fe4f" dependencies = [ - "proc-macro2", - "quote", - "sha2 0.10.8", - "syn 2.0.48", - "thiserror", + "borsh 0.10.3", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-type-length-value 0.3.0", ] [[package]] -name = "spl-memo" -version = "4.0.0" +name = "spl-token-metadata-interface" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f180b03318c3dbab3ef4e1e4d46d5211ae3c780940dd0a28695aba4b59a75a" +checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" dependencies = [ + "borsh 1.5.0", "solana-program", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.1", + "spl-type-length-value 0.4.3", ] [[package]] -name = "spl-pod" -version = "0.2.2" +name = "spl-transfer-hook-interface" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" +checksum = "7aabdb7c471566f6ddcee724beb8618449ea24b399e58d464d6b5bc7db550259" dependencies = [ - "borsh 1.5.0", + "arrayref", "bytemuck", "solana-program", - "solana-zk-token-sdk", - "spl-program-error", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", + "spl-tlv-account-resolution 0.5.1", + "spl-type-length-value 0.3.0", ] [[package]] -name = "spl-program-error" -version = "0.4.1" +name = "spl-transfer-hook-interface" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49065093ea91f57b9b2bd81493ff705e2ad4e64507a07dbc02b085778e02770e" +checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" dependencies = [ - "num-derive 0.4.2", - "num-traits", + "arrayref", + "bytemuck", "solana-program", - "spl-program-error-derive", - "thiserror", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.1", + "spl-tlv-account-resolution 0.6.3", + "spl-type-length-value 0.4.3", +] + +[[package]] +name = "spl-type-length-value" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.1.0", + "spl-pod 0.1.0", + "spl-program-error 0.3.0", +] + +[[package]] +name = "spl-type-length-value" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" +dependencies = [ + "bytemuck", + "solana-program", + "spl-discriminator 0.2.2", + "spl-pod 0.2.2", + "spl-program-error 0.4.1", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "symlink" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "spl-program-error-derive" -version = "0.4.1" +name = "sync_wrapper" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "sha2 0.10.8", - "syn 2.0.48", + "syn 1.0.109", + "unicode-xid", ] [[package]] -name = "spl-tlv-account-resolution" -version = "0.6.3" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "spl-token" -version = "4.0.0" +name = "system-configuration" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08459ba1b8f7c1020b4582c4edf0f5c7511a5e099a7a97570c9698d4f2337060" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ - "arrayref", - "bytemuck", - "num-derive 0.3.3", - "num-traits", - "num_enum 0.6.1", - "solana-program", - "thiserror", + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", ] [[package]] -name = "spl-token-2022" -version = "3.0.2" +name = "system-configuration-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5412f99ae7ee6e0afde00defaa354e6228e47e30c0e3adf553e2e01e6abb584" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" dependencies = [ - "arrayref", - "bytemuck", - "num-derive 0.4.2", - "num-traits", - "num_enum 0.7.2", - "solana-program", - "solana-security-txt", - "solana-zk-token-sdk", - "spl-memo", - "spl-pod", - "spl-token", - "spl-token-group-interface", - "spl-token-metadata-interface", - "spl-transfer-hook-interface", - "spl-type-length-value", - "thiserror", + "core-foundation-sys", + "libc", ] [[package]] -name = "spl-token-group-interface" -version = "0.2.3" +name = "tar" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", + "filetime", + "libc", + "xattr", ] [[package]] -name = "spl-token-metadata-interface" -version = "0.3.3" +name = "tarpc" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" +checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" dependencies = [ - "borsh 1.5.0", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-type-length-value", + "anyhow", + "fnv", + "futures", + "humantime", + "opentelemetry", + "pin-project", + "rand 0.8.5", + "serde", + "static_assertions", + "tarpc-plugins", + "thiserror", + "tokio", + "tokio-serde", + "tokio-util 0.6.10", + "tracing", + "tracing-opentelemetry", ] [[package]] -name = "spl-transfer-hook-interface" -version = "0.6.3" +name = "tarpc-plugins" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" +checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" dependencies = [ - "arrayref", - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", - "spl-tlv-account-resolution", - "spl-type-length-value", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] -name = "spl-type-length-value" -version = "0.4.3" +name = "tempfile" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ - "bytemuck", - "solana-program", - "spl-discriminator", - "spl-pod", - "spl-program-error", + "cfg-if", + "fastrand", + "getrandom 0.3.1", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] -name = "strsim" -version = "0.10.0" +name = "termcolor" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +dependencies = [ + "winapi-util", +] [[package]] -name = "subtle" -version = "2.4.1" +name = "termtree" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] -name = "syn" -version = "1.0.109" +name = "test-case" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "test-case-macros", ] [[package]] -name = "syn" -version = "2.0.48" +name = "test-case-core" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" dependencies = [ + "cfg-if", "proc-macro2", "quote", - "unicode-ident", + "syn 2.0.98", ] [[package]] -name = "syn_derive" -version = "0.1.8" +name = "test-case-macros" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", + "test-case-core", ] [[package]] -name = "termcolor" -version = "1.4.0" +name = "textwrap" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "winapi-util", + "unicode-width 0.1.14", ] +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + [[package]] name = "thiserror" version = "1.0.56" @@ -2431,7 +5984,48 @@ checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", ] [[package]] @@ -2453,6 +6047,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -2493,6 +6097,115 @@ dependencies = [ "wormhole-io", ] +[[package]] +name = "tokio" +version = "1.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-serde" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" +dependencies = [ + "bincode", + "bytes", + "educe", + "futures-core", + "futures-sink", + "pin-project", + "serde", + "serde_json", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +dependencies = [ + "futures-util", + "log", + "rustls", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.25.4", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "slab", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + [[package]] name = "toml" version = "0.5.11" @@ -2529,7 +6242,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap", + "indexmap 2.7.1", "toml_datetime", "winnow 0.5.33", ] @@ -2540,7 +6253,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap", + "indexmap 2.7.1", "toml_datetime", "winnow 0.5.33", ] @@ -2551,13 +6264,121 @@ version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ - "indexmap", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", "winnow 0.6.7", ] +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "sha1", + "thiserror", + "url", + "utf-8", + "webpki-roots 0.24.0", +] + [[package]] name = "typenum" version = "1.17.0" @@ -2585,6 +6406,24 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "universal-hash" version = "0.4.1" @@ -2595,6 +6434,33 @@ dependencies = [ "subtle", ] +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "upgrade-manager" version = "0.0.0" @@ -2620,12 +6486,78 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "url" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + [[package]] name = "version_check" version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -2638,6 +6570,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.91" @@ -2659,10 +6600,22 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.91" @@ -2681,7 +6634,7 @@ checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2702,6 +6655,31 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" +dependencies = [ + "rustls-webpki", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + [[package]] name = "winapi" version = "0.3.9" @@ -2733,19 +6711,71 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "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", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -2754,42 +6784,90 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" version = "0.5.33" @@ -2808,6 +6886,25 @@ dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.4.2", +] + [[package]] name = "wormhole-cctp-solana" version = "0.3.0-alpha.0" @@ -2871,6 +6968,98 @@ dependencies = [ "wormhole-solana-consts", ] +[[package]] +name = "wormhole-svm-definitions" +version = "0.1.0" +dependencies = [ + "borsh 1.5.0", + "cfg-if", + "sha2-const-stable", + "solana-program", +] + +[[package]] +name = "wormhole-svm-shim" +version = "0.1.0" +dependencies = [ + "solana-program", + "wormhole-svm-definitions", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time", +] + +[[package]] +name = "xattr" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "synstructure 0.13.1", +] + [[package]] name = "zerocopy" version = "0.7.32" @@ -2888,7 +7077,28 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", + "synstructure 0.13.1", ] [[package]] @@ -2908,5 +7118,56 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.13+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +dependencies = [ + "cc", + "pkg-config", ] diff --git a/solana/Cargo.toml b/solana/Cargo.toml index 7bc5ba4d9..563282a94 100644 --- a/solana/Cargo.toml +++ b/solana/Cargo.toml @@ -3,6 +3,7 @@ members = [ "modules/*", "programs/*" ] +exclude = ["lib"] resolver = "2" [workspace.package] @@ -47,11 +48,18 @@ hex = "0.4.3" ruint = "1.9.0" cfg-if = "1.0" hex-literal = "0.4.1" +bytemuck = "1.13.0" +wormhole-svm-shim = { git = "https://github.com/wormholelabs-xyz/wormhole.git", rev = "32cb65dd9ae11547f0e57d106b6974dc8ed5f52d" } +wormhole-svm-definitions = { git = "https://github.com/wormholelabs-xyz/wormhole.git", rev = "32cb65dd9ae11547f0e57d106b6974dc8ed5f52d", features = ["borsh"] } + +[patch."https://github.com/wormholelabs-xyz/wormhole.git"] +wormhole-svm-shim = { path = "lib/wormhole/svm/wormhole-core-shims/crates/shim" } +wormhole-svm-definitions = { path = "lib/wormhole/svm/wormhole-core-shims/crates/definitions" } [profile.release] overflow-checks = true -lto = "fat" -codegen-units = 1 +# lto = "fat" +# codegen-units = 1 [profile.release.build-override] opt-level = 3 @@ -60,6 +68,7 @@ codegen-units = 1 [workspace.lints.clippy] correctness = { priority = -1, level = "warn"} +inconsistent_digit_grouping = "allow" ### See clippy.toml. unnecessary_lazy_evaluations = "allow" diff --git a/solana/Makefile b/solana/Makefile index 0d72bd4fe..e2f70e70e 100644 --- a/solana/Makefile +++ b/solana/Makefile @@ -7,6 +7,12 @@ CLONED_MAINNET_PROGRAMS=\ ts/tests/artifacts/mainnet_cctp_token_messenger_minter.so \ ts/tests/artifacts/mainnet_cctp_message_transmitter.so +PROGRAM_NAMES=matching_engine token_router upgrade_manager + +### Building the IDL requires a nightly build. We arbitrarily chose the same +### date as the release of Anchor 0.30.1. +IDL_TOOLCHAIN=nightly-2024-06-20 + .PHONY: all all: check @@ -24,7 +30,7 @@ node_modules: .PHONY: cargo-test cargo-test: - cargo test --workspace --all-targets --features $(NETWORK) + cargo test --lib --workspace --features $(NETWORK) .PHONY: cargo-test-all cargo-test-all: @@ -42,11 +48,15 @@ endif .PHONY: anchor-test-setup anchor-test-setup: node_modules ts/tests/artifacts $(CLONED_MAINNET_PROGRAMS) - anchor build -- --features integration-test + anchor build --no-idl -- --features integration-test .PHONY: idl idl: - anchor build -- --features localnet + mkdir -p target/idl target/types + for program in $(PROGRAM_NAMES); do \ + RUSTUP_TOOLCHAIN=$(IDL_TOOLCHAIN) anchor idl build -p $$program -o target/idl/$$program.json; \ + anchor idl type -o target/types/$$program.ts target/idl/$$program.json; \ + done mkdir -p ts/src/idl/json mkdir -p ts/src/idl/ts cp -r target/idl/* ts/src/idl/json/ @@ -58,6 +68,15 @@ check-idl: idl $(BUILD_$(NETWORK)): cargo-test +.PHONY: test-sbf +test-sbf: +### Because the tests are performed in a separate module, we need to ensure that the programs are +### built prior to performing `cargo test-sbf`. + cargo build-sbf --features mainnet +### Unfortunately we cannot saturate all CPUs to perform tests due to nondeterministic `RpcError` +### reverts. We constrain the number of threads when we run these tests. + cd modules/matching-engine-testing && cargo test-sbf --features mainnet -- --test-threads 4 + .PHONY: anchor-test anchor-test: anchor-test-setup cp target/deploy/upgrade_manager.so ts/tests/artifacts/testnet_upgrade_manager.so @@ -65,7 +84,7 @@ anchor-test: anchor-test-setup .PHONY: anchor-test-upgrade anchor-test-upgrade: node_modules ts/tests/artifacts $(CLONED_MAINNET_PROGRAMS) - anchor build -- --features testnet + anchor build --no-idl -- --features testnet cp target/deploy/matching_engine.so ts/tests/artifacts/new_testnet_matching_engine.so cp target/deploy/token_router.so ts/tests/artifacts/new_testnet_token_router.so cp target/deploy/upgrade_manager.so ts/tests/artifacts/testnet_upgrade_manager.so diff --git a/solana/lib/wormhole b/solana/lib/wormhole new file mode 160000 index 000000000..32cb65dd9 --- /dev/null +++ b/solana/lib/wormhole @@ -0,0 +1 @@ +Subproject commit 32cb65dd9ae11547f0e57d106b6974dc8ed5f52d diff --git a/solana/modules/matching-engine-testing/Cargo.toml b/solana/modules/matching-engine-testing/Cargo.toml new file mode 100644 index 000000000..175a90593 --- /dev/null +++ b/solana/modules/matching-engine-testing/Cargo.toml @@ -0,0 +1,86 @@ +[package] +name = "matching-engine-testing" +edition.workspace = true +version.workspace = true +authors.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[features] +mainnet = ["matching-engine/mainnet", "common/mainnet"] +testnet = ["matching-engine/testnet", "common/testnet"] +localnet = ["matching-engine/localnet", "common/localnet"] +integration-test = ["localnet"] + +[dev-dependencies] +matching-engine.workspace = true +hex-literal.workspace = true +wormhole-io.workspace = true +common.workspace = true +wormhole-solana-utils.workspace = true + +anchor-lang = { workspace = true, features = ["event-cpi", "init-if-needed"] } +anchor-spl.workspace = true +solana-program.workspace = true + +hex.workspace = true +bytemuck.workspace = true +ruint.workspace = true +cfg-if.workspace = true +wormhole-svm-definitions.workspace = true +wormhole-svm-shim.workspace = true + +solana-program-test = "1.18.15" +solana-sdk = "1.18.15" +serde_json = "1.0.138" +bincode = "1.3.3" +solana-cli-output = "1.18.15" +base64 = "0.22.1" +lazy_static = "1.4.0" +bs58 = "0.5.0" +serde = { version = "1.0.212", features = ["derive"] } +secp256k1 = {version = "0.30.0", features = ["rand", "hashes", "std", "global-context", "recovery"] } +num-traits = "0.2.16" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +tracing-log = "0.2.0" +once_cell = "1.8" +anyhow = "1.0.97" + +[lints.clippy] +correctness = { priority = -1, level = "warn"} +inconsistent_digit_grouping = "allow" + +### See clippy.toml. +unnecessary_lazy_evaluations = "allow" +or_fun_call = "warn" + +arithmetic_side_effects = "allow" +as_conversions = "allow" +cast_abs_to_unsigned = "allow" +cast_lossless= "allow" +cast_possible_truncation = "allow" +cast_possible_wrap = "allow" +cast_precision_loss = "deny" +cast_sign_loss = "deny" +eq_op = "deny" +expect_used = "deny" +float_cmp = "deny" +integer_division = "allow" +large_futures = "deny" +large_stack_arrays = "deny" +large_stack_frames = "deny" +lossy_float_literal = "deny" +manual_slice_size_calculation = "deny" +modulo_one = "deny" +out_of_bounds_indexing = "deny" +overflow_check_conditional = "deny" +panic = "allow" +recursive_format_impl = "deny" +todo = "allow" +unchecked_duration_subtraction = "allow" +unreachable = "deny" + diff --git a/solana/modules/matching-engine-testing/tests/README.md b/solana/modules/matching-engine-testing/tests/README.md new file mode 100644 index 000000000..0f6ee8755 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/README.md @@ -0,0 +1,86 @@ +# Matching Engine Tests + +## How to read the tests + +Each test is found in the `test_scenarios` directory. + +Each file in this directory is a module that contains tests for a specific subset of scenarios (instructions). + +Each test is a function that is annotated with `#[tokio::test]`. + +Each test is a test for a specific scenario, and uses the `TestingEngine` to execute a series of instruction triggers. + +The `TestingEngine` is initialized with a `TestingContext`. The `TestingContext` holds the the `TestingActors`, the transfer direction, created vaas, as well as some constants. + +The `TestingActors` are structs that hold information for any keypair that is setup before the tests are conducted. These include the `owner` the `owner_assistant` and the `Solvers`. + +The `TestingEngine` is used to execute the instruction triggers in the order they are provided. See the `testing_engine/engine.rs` file for more details. + +## How to run the tests + +### Setup for running the tests + +The program must be built. This is done by entering the `solana/programs/matching-enginge` directory and running `cargo build-sbf --features mainnet`. With an incorrect `so` file, the tests will not be run against the correct program. + +```bash +cd solana/programs/matching-engine +cargo build-sbf --features mainnet +``` + +### Running the tests + +The tests are run by the following command + +```bash +cd solana/modules/matching-engine-testing +cargo test-sbf --features mainnet -- --show-output --test-threads 5 +``` + +#### ❗❗ NOTE when running tests +In order to run tests successfully and avoiding an annoying error due to an RpcTimeout, use a low number of `--test-threads`. This will depend on the local machine. The current recommended threads is `5`. + + +## Happy path integration tests + +### Initialize program + +What is expected: +- Program is initialized +- Router endpoints are created + + +### Create CCTP router endpoints + +What is expected: +- CCTP router endpoints are created + +### Create fast market order + +What is expected: +- Fast market order account is created +- Guardian signatures account is created via Verify VAA Shim program, which are the signatures found in the fast market order VAA from the source network. +- Fast market order is initialized + +### Close fast market order + +What is expected: +- Fast market order account is closed +- Close account refund recipient is sent lamports from the fast market order account + +### Place initial offer (shim) + +What is expected: +- Fast market order is initialized +- Initial offer is placed +- Auction account is created and corresponds to a vaa and the initial offer + +### Place initial offer (shimless) + +What is expected: +- Fast market order is posted as a vaa +- Initial offer is placed +- Auction account is created and corresponds to a vaa and the initial offer + + + + diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/config.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/config.json new file mode 100644 index 000000000..1806e2e29 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/config.json @@ -0,0 +1,11 @@ +{ + "pubkey": "2yVjuQwpsvdsrywzsJJVs9Ueh4zayyo5DYJbBNc3DDpn", + "account": { + "lamports": 1057920, + "data": ["AAAAAMbrG4wAAAAAgFEBAAoAAAAAAAAA", "base64"], + "owner": "worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 24 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/fee_collector.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/fee_collector.json new file mode 100644 index 000000000..2e08f6482 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/fee_collector.json @@ -0,0 +1,11 @@ +{ + "pubkey": "9bFNrXNb2WTx8fMHXCheaZqkLZ3YCCaiqTftHxeintHy", + "account": { + "lamports": 2350640070, + "data": ["", "base64"], + "owner": "11111111111111111111111111111111", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 0 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/guardian_set_0.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/guardian_set_0.json new file mode 100644 index 000000000..3cd95bced --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/core_bridge/guardian_set_0.json @@ -0,0 +1,11 @@ +{ + "pubkey": "DS7qfSAgYsonPpKoAjcGhX9VFjXdGkiHjEDkTidf8H2P", + "account": { + "lamports": 21141440, + "data": ["AAAAAAEAAAC++kKdV80Yt/ik2RotqatK8F0PvkPJm2EAAAAA", "base64"], + "owner": "worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 36 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/message_transmitter/message_transmitter_config.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/message_transmitter/message_transmitter_config.json new file mode 100644 index 000000000..0e3e24891 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/message_transmitter/message_transmitter_config.json @@ -0,0 +1,14 @@ +{ + "pubkey": "BWrwSWjbikT3H7qHAkUEbLmwDQoB4ZDJ4wcSEhSPTZCu", + "account": { + "lamports": 2519520, + "data": [ + "Ryi0jhPLI/wfOQgPIIpMNon4r0rVMO7Sy1fUtUxQmdUxE51OObvhOoDFz5C0iApooK3hQfndo8m3eRHbcLcd6T35aIm/9s3sgMXPkLSICmigreFB+d2jybd5Edtwtx3pPfloib/2zeyAxc+QtIgKaKCt4UH53aPJt3kR23C3Hek9+WiJv/bN7AAFAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAvvpCnVfNGLf4pNkaLamrSvBdD77QBwAAAAAAACYAAAAAAAAA/w==", + "base64" + ], + "owner": "CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 234 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/matching_engine_custodian.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/matching_engine_custodian.json new file mode 100644 index 000000000..4d3584ed2 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/matching_engine_custodian.json @@ -0,0 +1,14 @@ +{ + "pubkey": "5BsCKkzuZXLygduw6RorCqEB61AdzNkxp5VzQrFGzYWr", + "account": { + "lamports": 1927920, + "data": [ + "hOSLuHDkbPAMGliG/hCT35/EOMKW+fcnW3cYtrwOFW2NM2xY8IOZbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyYhuGDPpdfzJOBnceTvHX8S6d3fMAJtKCp45SBiW1cXT3n2+4rU8d7ccb0Cv2HoY7eHIPeYyfdHVa3M3rheUeAgAAAAIAAAAAAAAAK/Yehjt4cg95jJ90dVrczeuF5R4BAAAAAQAAAAAAAAA=", + "base64" + ], + "owner": "mPydpGUWxzERTNpyvTKdvS7v8kvw5sgwfiP8WQFrXVS", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 149 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/token_router_custodian.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/token_router_custodian.json new file mode 100644 index 000000000..0402b34b6 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/token_router_custodian.json @@ -0,0 +1,14 @@ +{ + "pubkey": "CFYdtHYDnQgCAcwetWVjVg5V8Uiy1CpJaoYJxmV19Z7N", + "account": { + "lamports": 1851360, + "data": [ + "hOSLuHDkbPAADBpYhv4Qk9+fxDjClvn3J1t3GLa8DhVtjTNsWPCDmW0AsmIbhgz6XX8yTgZ3Hk7x1/Eund3zACbSgqeOUgYltXGyYhuGDPpdfzJOBnceTvHX8S6d3fMAJtKCp45SBiW1cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "base64" + ], + "owner": "tD8RmtdcV7bzBeuFgyrFc8wvayj988ChccEzRQzo6md", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 138 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/token_router_program_data_hacked.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/token_router_program_data_hacked.json new file mode 100644 index 000000000..178063391 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/testnet/token_router_program_data_hacked.json @@ -0,0 +1,14 @@ +{ + "pubkey": "CqrEUyMva5apDRpzbMh52w3JV3NBFVNBiQsr52uewM6j", + "account": { + "lamports": 10102224240, + "data": [ + "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AAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAD3mgAAeWFoAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADrmgAAeWFwAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADfmgAAeWHwAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADTmgAAeWH4AgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADHmgAAeWE4AAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAC7mgAAeWFAAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACvmgAAeWGoAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACjmgAAeWGwAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACXmgAAeWHYAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAA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ALcDAAAIAAAAhRAAAKyZAAB5YcABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAKCZAAB5YegBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAJSZAAB5YfABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAIiZAAB5YRgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAHyZAAB5YSACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAHCZAAB5YUgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAGSZAAB5YVACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAFiZAAB5YXgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAEyZAAB5YYACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAECZAAB5YagCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAADSZAAB5YbACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAACiZAAB5YdgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAByZAAB5YeACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAABCZAAB5YQgDAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAASZAAB5YRADAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAPiYAAB5YTgDAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAOyYAAB5YUADAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAOCYAAB5YWgDAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAANSYAAB5YXADAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAMiYAAB5YZgDAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAALyYAAB5YaADAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAALCYAAB5YcgDAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAKSYAAB5YdADAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAJiYAACVAAAAAAAAAL8WAAAAAAAAeWHIAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACKmAAAeWHQAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAB+mAAAeWH4AAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABymAAAeWEAAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABmmAAAeWEoAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABamAAAeWEwAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABOmAAAeWGYAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABCmAAAeWGgAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAA2mAAAeWFYAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAqmAAAeWFgAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAemAAAeWGIAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAASmAAAeWGQAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAGmAAAeWG4AQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAD6lwAAeWHAAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADulwAAeWHoAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADilwAAeWHwAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADWlwAAeWEYAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADKlwAAeWEgAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAC+lwAAeWFIAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACylwAAeWFQAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACmlwAAeWF4AgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACalwAAeWGAAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACOlwAAeWGoAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACClwAAeWGwAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIA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AAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAALOVAAB5YTABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAKeVAAB5YZgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAJuVAAB5YaAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAI+VAAB5YVgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAIOVAAB5YWABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAHeVAAB5YYgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAGuVAAB5YZABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAF+VAAB5YbgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAFOVAAB5YcABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAEeVAACVAAAAAAAAAL8WAAAAAAAAeWEIAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAA5lQAAeWEQAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAtlQAAeWFIBAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAhlQAAeWFQBAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAVlQAAeWGABAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAJlQAAeWGIBAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAD9lAAAv2EAAAAAAAAHAQAAMAAAAIUQAAAT+P//eWGIAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADulAAAeWGQAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADilAAAeWG4AAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADWlAAAeWHAAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADKlAAAeWHoAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAC+lAAAeWHwAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACylAAAeWE4BQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACmlAAAeWFABQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACalAAAeWEYAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACOlAAAeWEgAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACClAAAeWFIAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAB2lAAAeWFQAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABqlAAAeWF4AQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABelAAAeWGAAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABSlAAAeWGoAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABGlAAAeWGwAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAA6lAAAeWHYAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAulAAAeWHgAQAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAilAAAeWEIAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAWlAAAeWEQAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAKlAAAeWE4AgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAD+kwAAeWFAAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADykwAAeWFoAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADmkwAAeWFwAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADakwAAeWGYAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADOkwAAeWGgAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADCkwAAeWHIAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAC2kwAAeWHQAgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACqkwAAeWH4AgAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACekwAAeWEAAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACSkwAAeWEoAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACGkwAAeWEwAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAB6kwAAeWFYAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABukwAAeWFgAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABikwAAeWGIAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABWkwAAeWGQAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABKkwAAeWG4AwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAA+kwAAeWHAAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAykwAAeWHoAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAmkwAAeWHwAwAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAakwAAeWEYBAAAAAB5EgAAAAAAAAcCAAD/////eyEA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AP////97IQAAAAAAAL+hAAAAAAAABwEAALj1//+FEAAA5Jz//7+hAAAAAAAABwEAAJD0//+FEAAA4Zz//7+hAAAAAAAABwEAAGD0//+FEAAA3pz//7+hAAAAAAAABwEAADD0//+FEAAA25z//7+hAAAAAAAABwEAAAD0//+FEAAA2Jz//7+hAAAAAAAABwEAANDz//+FEAAA1Zz//7+hAAAAAAAABwEAAKDz//+FEAAA0pz//7+hAAAAAAAABwEAAHDz//+FEAAAz5z//7+hAAAAAAAABwEAAEDz//+FEAAAzJz//7+hAAAAAAAABwEAABDz//+FEAAAyZz//7+hAAAAAAAABwEAAODy//+FEAAAxpz//7+hAAAAAAAABwEAALDy//+FEAAAw5z//7+hAAAAAAAABwEAAIDy//+FEAAAwJz//7+hAAAAAAAABwEAAFDy//+FEAAAvZz//7+hAAAAAAAABwEAAEjy//+FEAAAO57//3mhIPIAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAFzoAAHmhKPIAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAACzoAAHmh8PEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAA/zkAAHmh+PEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAA8zkAAHmhwPEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAA5zkAAHmhyPEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAA2zkAAHmhkPEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAzzkAAHmhmPEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAwzkAAJUAAAAAAAAAeaEI8QAAAAB5EgAAAAAAAAcCAAABAAAAeyEAAAAAAAC3AQAAAQAAABUCAQAAAAAAtwEAAAAAAABVAQEAAQAAAAUAWPsAAAAAGAEAADDHCQAAAAAAAAAAAHsaoPcAAAAAtwYAAAAAAAB7aqj3AAAAAL+hAAAAAAAABwEAALD3//+/ogAAAAAAAAcCAADI+f//twMAADAAAACFEAAAo8gAALcBAAAIAAAAexoY+AAAAAB7aiD4AAAAAHtqEPgAAAAAeaHY8AAAAABzGgr4AAAAAHmh4PAAAAAAcxoJ+AAAAAB5oejwAAAAAHMaCPgAAAAAeaHw8AAAAAB7GgD4AAAAAHuK+PcAAAAAeaEI8QAAAAB7GvD3AAAAAHmhMPEAAAAAexro9wAAAAB5oQDxAAAAAHsa4PcAAAAAv6EAAAAAAAAHAQAAEPz//7+iAAAAAAAABwIAAOjx//+FEAAAgWcAAHmnEPwAAAAAFQcBAAQAAAAFAHAAAAAAAHmhGPwAAAAAexpY+wAAAAB7GsD6AAAAAHmhIPwAAAAAexpg+wAAAAB7Gsj6AAAAAHmhKPwAAAAAexpo+wAAAAB7GtD6AAAAAL+hAAAAAAAABwEAAED4//+/ogAAAAAAAAcCAADA+v//hRAAAFhnAAB5p0D4AAAAABUHAQAEAAAABQCUAAAAAAB5oUj4AAAAAHsaoPoAAAAAexoI+gAAAAB5oVD4AAAAAHsaqPoAAAAAexoQ+gAAAAB5oVj4AAAAAHsasPoAAAAAexoY+gAAAAB5oWD4AAAAAHsauPoAAAAAexog+gAAAAC/oQAAAAAAAAcBAABY8f//v6IAAAAAAAAHAgAACPr//4UQAAAbjgAAv6EAAAAAAAAHAQAAEPz//3sayPYAAAAAtwEAAAQAAAB7GrD2AAAAABgBAACUzQkAAAAAAAAAAAB7Gqj2AAAAALcBAAADAAAAexoA+gAAAAC/oQAAAAAAAAcBAACo9v//exr4+QAAAAC3AQAAAQAAAHsa0PYAAAAAexqo9wAAAAC/oQAAAAAAAAcBAAD4+f//exqg9wAAAAB5oWDxAAAAAHsawPYAAAAAeaFY8QAAAAB7Grj2AAAAAHmhKPEAAAAAcxoQ/AAAAAC/pgAAAAAAAAcGAAAI9///v6IAAAAAAAAHAgAAoPf//79hAAAAAAAAtwMAAIgAAACFEAAARsgAAL+hAAAAAAAABwEAAHD7//+/YgAAAAAAAHmjEPEAAAAAhRAAACGEAAB5p3D7AAAAABUHAQAEAAAABQCNAAAAAAB5odD6AAAAAAUAhvsAAAAAv6YAAAAAAAAHBgAAEPz//79hAAAAAAAAtwIAANAHAAAFAEAAAAAAAHmiIPwAAAAAeyr4+AAAAAB5oyj8AAAAAHs6APkAAAAAYaQU/AAAAAB5pRj8AAAAAHtaePsAAAAAY0p0+wAAAABjGnD7AAAAAHsqgPsAAAAAezqI+wAAAAC/pgAAAAAAAAcGAAAQ/P//v6IAAAAAAAAHAgAAcPv//79hAAAAAAAAhRAAAACBAAB5pyDxAAAAAL9xAAAAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAAhyAAAtwEAAAIAAABzF7gAAAAAAL+hAAAAAAAABwEAAOj1//+FEAAAvpv//7+hAAAAAAAABwEAAED4//+FEAAAu5v//wUAMQAAAAAAeaEo/AAAAAB7Gmj7AAAAAHmhIPwAAAAAexpg+wAAAAB5oRj8AAAAAHsaWPsAAAAAv6YAAAAAAAAHBgAA2Pr//7+iAAAAAAAABwIAADD8//+/YQAAAAAAALcDAACAAAAAhRAAAAvIAAB5oWj7AAAAAHmoIPEAAAAAexgYAAAAAAB5oWD7AAAAAHsYEAAAAAAAeaFY+wAAAAB7GAgAAAAAAL+BAAAAAAAABwEAACAAAAC/YgAAAAAAALcDAACAAAAAhRAAAP/HAAC3AQAAAgAAAHMYuAAAAAAAe3gAAAAAAAAFAFH9AAAAAL+mAAAAAAAABwYAABD8//+/YQAAAAAAALcCAADVBwAAhRAAADGGAAC/pwAAAAAAAAcHAADo9f//v3EAAAAAAAC/YgAAAAAAABgDAADjzwkAAAAAAAAAAAC3BAAADQAAAIUQAADJkP//eaYg8QAAAAC/YQAAAAAAAL9yAAAAAAAAtwMAAKAAAACFEAAA6ccAALcBAAACAAAAcxa4AAAAAAC/oQAAAAAAAAcBAAD49P//hRAAAO6b//8FAKH+AAAAAHmhYPgAAAAAexq4+gAAAAB5oVj4AAAAAHsasPoAAAAAeaFQ+AAAAAB7Gqj6AAAAAHmhSPgAAAAAexqg+gAAAAC/pgAAAAAAAAcGAAAo+v//v6IAAAAAAAAHAgAAaPj//79hAAAAAAAAtwMAAHgAAACFEAAA1McAAHmhuPoAAAAAeagg8QAAAAB7GCAAAAAAAHmhsPoAAAAAexgYAAAAAAB5oaj6AAAAAHsYEAAAAAAAeaGg+gAAAAB7GAgAAAAAAL+BAAAAAAAABwEAACgAAAC/YgAAAAAAALcDAAB4AAAAhRAAAMbHAAC3AQAAAgAAAHMYuAAAAAAAe3gAAAAAAAC/oQAAAAAAAAcBAACg9///hRAAAC2m//95odD6AAAAAAUAdv4AAAAAv6YAAAAAAAAHBgAAEPz//79hAAAAAAAAtwIAANAHAACFEAAA9IUAAL+nAAAAAAAABwcAAOj1//+/cQAAAAAAAL9iAAAAAAAAGAMAAETTCQAAAAAAAAAAALcEAAAFAAAABQDC/wAAAAC/pgAAAAAAAAcGAAD4+P//v6IAAAAAAAAHAgAAePv//79hAAAAAAAAtwMAAJgAAACFEAAAqscAAHmoIPEAAAAAv4EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAAJgAAACFEAAApMcAALcBAAACAAAAcxi4AAAAAAB7eAAAAAAAAHmh0PoAAAAABQBX/gAAAAB5oTD8AAAAAHsaEPkAAAAAeaEo/AAAAAB7Ggj5AAAAAHmhIPwAAAAAexoA+QAAAAB5oRj8AAAAAHsa+PgAAAAAv6YAAAAAAAAHBgAA6PX//7+iAAAAAAAABwIAADj8//+/YQAAAAAAALcDAAB4AAAAhRAAAJDHAAB5oRD5AAAAAHmpIPEAAAAAexkgAAAAAAB5oQj5AAAAAHsZGAAAAAAAeaEA+QAAAAB7GRAAAAAAAHmh+PgAAAAAexkIAAAAAAC/kQAAAAAAAAcBAAAoAAAAv2IAAAAAAAC3AwAAeAAAAIUQAACCxwAAc3m4AAAAAAB7iQAAAAAAAAUAmP8AAAAAv6YAAAAAAAAHBgAAEPz//7+iAAAAAAAABwIAABjy//+/YQAAAAAAAIUQAACKmv//cac5/AAAAAC/YQAAAAAAAIUQAAAYm///FQc1AAAAAAC/pgAAAAAAAAcGAABw+///v6IAAAAAAAAHAgAAGPL//79hAAAAAAAAhRAAABx8AAC/YQAAAAAAABgCAACJ0AkAAAAAAAAAAAC3AwAAIAAAAIUQAAD0xwAAFQA1AAAAAAC/pwAAAAAAAAcHAAAQ/P//v3EAAAAAAAC3AgAABgAAAIUQAADAsv//v6YAAAAAAAAHBgAA6PX//79hAAAAAAAAv3IAAAAAAAAYAwAAMtIJAAAAAAAAAAAAtwQAAA0AAACFEAAAN5D//3mhiPsAAAAAexpY+AAAAAB5oYD7AAAAAHsaUPgAAAAAeaF4+wAAAAB7Gkj4AAAAAHmhcPsAAAAAexpA+AAAAAAYAQAAxtpUCwAAAADDNkcRexpg+AAAAAAYAQAA0RPwDgAAAAAU33caexpo+AAAAAAYAQAAPekRtwAAAADsv+/6expw+AAAAAAYAQAA3Mr4KwAAAABzqr6Cexp4+AAAAAC/pwAAAAAAAAcHAAAQ/P//v6MAAAAAAAAHAwAAQPj//79xAAAAAAAAv2IAAAAAAACFEAAAOYAAAAUAUv8AAAAAv6YAAAAAAAAHBgAAEPz//79hAAAAAAAAtwIAANAHAACFEAAAdoUAAL+nAAAAAAAABwcAAOj1//+/cQAAAAAAAL9iAAAAAAAAGAMAADLSCQAAAAAAAAAAAAUARP8AAAAAeaI48QAAAABpIZQAAAAAANwBAAAQAAAAaxqo9gAAAABxIZYAAAAAALcCAAABAAAAeypo+AAAAAC/ogAAAAAAAAcCAADI+f//eypg+AAAAAC3CAAAAgAAAHuKWPgAAAAAv6IAAAAAAAAHAgAAqPb//3sqUPgAAAAAtwIAAAgAAAB7Kkj4AAAAABgCAAAQzgkAAAAAAAAAAAB7KkD4AAAAAHMayPkAAAAAv6YAAAAAAAAHBgAA+Pj//79hAAAAAAAAhRAAANw/AAC/pwAAAAAAAAcHAACg9///v3EAAAAAAAC/YgAAAAAAAIUQAAAZhAAAv6YAAAAAAAAHBgAAcPv//7+iAAAAAAAABwIAAED4//+/YQAAAAAAALcDAAADAAAAv3QAAAAAAACFEAAATpQAAL+hAAAAAAAABwEAABD8//+/YgAAAAAAAIUQAABUpv//eacQ/AAAAAAVBwEABAAAAAUAOgAAAAAAeaEY/AAAAAB7Gtj6AAAAAHmhIPwAAAAAexrg+gAAAAB5oSj8AAAAAHsaGPcAAAAAexro+gAAAAB5oTD8AAAAAHsaIPcAAAAAexrw+gAAAAB5oTjxAAAAAHkRAAAAAAAAeRIYAAAAAAB7Kij8AAAAAHkSEAAAAAAAeyog/AAAAAB5EggAAAAAAHsqGPwAAAAAeREAAAAAAAB7GhD8AAAAAL+hAAAAAAAABwEAABD8//+/ogAAAAAAAAcCAADY+v//twMAACAAAACFEAAAd8cAABUAPwAAAAAAv6cAAAAAAAAHBwAAEPz//79xAAAAAAAAtwIAANYHAACFEAAAIoUAAL+mAAAAAAAABwYAAOj1//+/YQAAAAAAAL9yAAAAAAAAGAMAAEnTCQAAAAAAAAAAALcEAAAPAAAAhRAAALqP//95oTjxAAAAAHkRAAAAAAAAeRIYAAAAAAB7Klj4AAAAAHkSEAAAAAAAeypQ+AAAAAB5EggAAAAAAHsqSPgAAAAAeREAAAAAAAB7GkD4AAAAAHmh2PoAAAAAexpg+AAAAAB5oeD6AAAAAHsaaPgAAAAAeaHo+gAAAAB7GnD4AAAAAHmh8PoAAAAABQCE/wAAAAB5oTD8AAAAAHsaIPcAAAAAeaEo/AAAAAB7Ghj3AAAAAHmhIPwAAAAAexoQ9wAAAAB5oRj8AAAAAHsaCPcAAAAAv6YAAAAAAAAHBgAA6PX//7+iAAAAAAAABwIAADj8//+/YQAAAAAAALcDAAB4AAAAhRAAAL7GAAB5oSD3AAAAAHmpIPEAAAAAexkgAAAAAAB5oRj3AAAAAHsZGAAAAAAAeaEQ9wAAAAB7GRAAAAAAAHmhCPcAAAAAexkIAAAAAAC/kQAAAAAAAAcBAAAoAAAAv2IAAAAAAAC3AwAAeAAAAIUQAACwxgAAc4m4AAAAAAB7eQAAAAAAAAUAxv4AAAAAv6YAAAAAAAAHBgAAEPz//7+iAAAAAAAABwIAALDy//+/YQAAAAAAAIUQAAACmv//cac5/AAAAAC/YQAAAAAAAIUQAABGmv//FQeJAAAAAAC/pgAAAAAAAAcGAAAQ/P//v6IAAAAAAAAHAgAAcPP//79hAAAAAAAAhRAAAPiZ//9xpzn8AAAAAL9hAAAAAAAAhRAAADya//8VB4wAAAAAAL+mAAAAAAAABwYAABD8//+/ogAAAAAAAAcCAADQ8///v2EAAAAAAACFEAAA7pn//3GnOfwAAAAAv2EAAAAAAACFEAAAMpr//xUHjwAAAAAAv6EAAAAAAAAHAQAA0Pz//7+iAAAAAAAABwIAAIjx//+3AwAAMAAAAIUQAACJxgAAv6EAAAAAAAAHAQAAAP3//7+iAAAAAAAABwIAALjx//+3AwAAMAAAAIUQAACDxgAAv6EAAAAAAAAHAQAAMP3//7+iAAAAAAAABwIAAOjx//+3AwAAMAAAAIUQAAB9xgAAv6YAAAAAAAAHBgAAEPz//7+iAAAAAAAABwIAAPj0//+/YQAAAAAAALcDAADAAAAAhRAAAHbGAAC/oQAAAAAAAAcBAABg/f//v6IAAAAAAAAHAgAAGPL//7cDAAAwAAAAhRAAAHDGAAC/oQAAAAAAAAcBAACQ/f//v6IAAAAAAAAHAgAAUPL//7cDAAAwAAAAhRAAAGrGAAC/oQAAAAAAAAcBAADA/f//v6IAAAAAAAAHAgAAgPL//7cDAAAwAAAAhRAAAGTGAAC/oQAAAAAAAAcBAADw/f//v6IAAAAAAAAHAgAAsPL//7cDAAAwAAAAhRAAAF7GAAC/oQAAAAAAAAcBAAAg/v//v6IAAAAAAAAHAgAA4PL//7cDAAAwAAAAhRAAAFjGAAC/oQAAAAAAAAcBAABQ/v//v6IAAAAAAAAHAgAAEPP//7cDAAAwAAAAhRAAAFLGAAC/oQAAAAAAAAcBAACA/v//v6IAAAAAAAAHAgAAQPP//7cDAAAwAAAAhRAAAEzGAAC/oQAAAAAAAAcBAACw/v//v6IAAAAAAAAHAgAAcPP//7cDAAAwAAAAhRAAAEbGAAC/oQAAAAAAAAcBAADg/v//v6IAAAAAAAAHAgAAoPP//7cDAAAwAAAAhRAAAEDGAAC/oQAAAAAAAAcBAAAQ////v6IAAAAAAAAHAgAA0PP//7cDAAAwAAAAhRAAADrGAAC/oQAAAAAAAAcBAABA////v6IAAAAAAAAHAgAAAPT//7cDAAAwAAAAhRAAADTGAAC/oQAAAAAAAAcBAABw////v6IAAAAAAAAHAgAAMPT//7cDAAAwAAAAhRAAAC7GAAC/oQAAAAAAAAcBAACg////v6IAAAAAAAAHAgAAYPT//7cDAAAwAAAAhRAAACjGAAC/oQAAAAAAAAcBAADQ////v6IAAAAAAAAHAgAAkPT//7cDAAAwAAAAhRAAACLGAAB5pyDxAAAAAL9xAAAAAAAAv2IAAAAAAAC3AwAA8AMAAIUQAAAdxgAAeaE48QAAAAB7F/ADAAAAAAUAYv0AAAAAv6YAAAAAAAAHBgAAEPz//79hAAAAAAAAtwIAANAHAACFEAAAUIQAAL+nAAAAAAAABwcAAOj1//+/cQAAAAAAAL9iAAAAAAAAGAMAAGrUCQAAAAAAAAAAALcEAAALAAAABQAe/gAAAAC/pgAAAAAAAAcGAAAQ/P//v2EAAAAAAAC3AgAA0AcAAIUQAABDhAAAv6cAAAAAAAAHBwAA6PX//79xAAAAAAAAv2IAAAAAAAAYAwAAq9MJAAAAAAAAAAAAtwQAAAsAAAAFABH+AAAAAL+mAAAAAAAABwYAABD8//+/YQAAAAAAALcCAADQBwAAhRAAADaEAAC/pwAAAAAAAAcHAADo9f//v3EAAAAAAAC/YgAAAAAAABgDAAB11AkAAAAAAAAAAAC3BAAAJAAAAAUABP4AAAAAexpo8wAAAAB5UQjwAAAAAHsagPMAAAAAexoI8AAAAAB5VhDwAAAAAHtqEPAAAAAAeVgA8AAAAAB7igDwAAAAAL+hAAAAAAAABwEAAAj3//+/pQAAAAAAAHsqePMAAAAAezqI8wAAAAB7SnDzAAAAAIUQAAD8egAAeaEI9wAAAABVAQcABAAAAL+hAAAAAAAABwEAACD2//+/ogAAAAAAAAcCAAAQ9///twMAADAAAACFEAAA3MUAAAUAEAAAAAAAv6cAAAAAAAAHBwAAMP3//7+iAAAAAAAABwIAAAj3//+/cQAAAAAAALcDAACgAAAAhRAAANTFAAC/oQAAAAAAAAcBAAAY9v//v3IAAAAAAAAYAwAARNMJAAAAAAAAAAAAtwQAAAUAAACFEAAAqI7//3mpGPYAAAAAVQmKAAQAAAC/pwAAAAAAAAcHAACQ/P//v6IAAAAAAAAHAgAAIPb//79xAAAAAAAAtwMAADAAAACFEAAAxMUAAL+hAAAAAAAABwEAANDz//+/cgAAAAAAALcDAAAwAAAAhRAAAL/FAAB5oYDzAAAAAHsaCPAAAAAAe2oQ8AAAAAB7igDwAAAAAL+hAAAAAAAABwEAAAj3//+/pQAAAAAAAHmiePMAAAAAeaOI8wAAAAB5pHDzAAAAAIUQAAD5eQAAeaEI9wAAAABVAQcABAAAAL+hAAAAAAAABwEAACD2//+/ogAAAAAAAAcCAAAQ9///twMAADAAAACFEAAArMUAAAUAEQAAAAAAv6cAAAAAAAAHBwAAMP3//7+iAAAAAAAABwIAAAj3//+/cQAAAAAAALcDAACgAAAAhRAAAKTFAAC/oQAAAAAAAAcBAAAY9v//v3IAAAAAAAAYAwAAKdIJAAAAAAAAAAAAtwQAAAkAAACFEAAAeI7//3mpGPYAAAAAFQkBAAQAAAAFAHYAAAAAAL+nAAAAAAAABwcAAJD8//+/ogAAAAAAAAcCAAAg9v//v3EAAAAAAAC3AwAAMAAAAIUQAACTxQAAv6EAAAAAAAAHAQAAAPT//79yAAAAAAAAtwMAADAAAACFEAAAjsUAAHmhgPMAAAAAexoI8AAAAAB7ahDwAAAAAHuKAPAAAAAAv6EAAAAAAAAHAQAACPf//7+lAAAAAAAAeaJ48wAAAAB5o4jzAAAAAHmkcPMAAAAAhRAAAMh5AAB5oQj3AAAAAFUBBwAEAAAAv6EAAAAAAAAHAQAAIPb//7+iAAAAAAAABwIAABD3//+3AwAAMAAAAIUQAAB7xQAABQARAAAAAAC/pwAAAAAAAAcHAAAw/f//v6IAAAAAAAAHAgAACPf//79xAAAAAAAAtwMAAKAAAACFEAAAc8UAAL+hAAAAAAAABwEAABj2//+/cgAAAAAAABgDAACZ1AkAAAAAAAAAAAC3BAAAAwAAAIUQAABHjv//eakY9gAAAAAVCQEABAAAAAUAbwAAAAAAv6cAAAAAAAAHBwAAkPz//7+iAAAAAAAABwIAACD2//+/cQAAAAAAALcDAAAwAAAAhRAAAGLFAAC/oQAAAAAAAAcBAAAw9P//v3IAAAAAAAC3AwAAMAAAAIUQAABdxQAAeaOI8wAAAAB5MQgAAAAAABUBUwAAAAAABwEAAP////97EwgAAAAAAHkxAAAAAAAAexpg8wAAAAAHAQAAMAAAAHsTAAAAAAAAeaGA8wAAAAB7GgjwAAAAAHtqEPAAAAAAe4oA8AAAAAC/oQAAAAAAAAcBAAAI9///v6UAAAAAAAB5onjzAAAAAHmkcPMAAAAAhRAAAI95AAB5oQj3AAAAAFUBawAEAAAAv6EAAAAAAAAHAQAAIPb//7+iAAAAAAAABwIAABD3//+3AwAAMAAAAIUQAABCxQAABQB0AAAAAAC/pgAAAAAAAAcGAACQ/P//v6IAAAAAAAAHAgAAIPb//79hAAAAAAAAtwMAADAAAACFEAAAOsUAAL+nAAAAAAAABwcAAGD5//+/ogAAAAAAAAcCAABQ9v//v3EAAAAAAAC3AwAAaAAAAIUQAAAzxQAAeaho8wAAAAC/gQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAMAAAAIUQAAAtxQAAv4EAAAAAAAAHAQAAOAAAAL9yAAAAAAAAtwMAAGgAAACFEAAAKMUAALcBAAACAAAAcxi4AAAAAAB7mAAAAAAAAAUAWQgAAAAAv6YAAAAAAAAHBgAAkPz//7+iAAAAAAAABwIAACD2//+/YQAAAAAAALcDAAAwAAAAhRAAAB3FAAC/pwAAAAAAAAcHAABg+f//v6IAAAAAAAAHAgAAUPb//79xAAAAAAAAtwMAAGgAAACFEAAAFsUAAHmoaPMAAAAAv4EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAADAAAACFEAAAEMUAAL+BAAAAAAAABwEAADgAAAC/cgAAAAAAALcDAABoAAAAhRAAAAvFAAC3AQAAAgAAAHMYuAAAAAAAe5gAAAAAAAAFACQIAAAAAL+mAAAAAAAABwYAADD9//+/YQAAAAAAALcCAAC9CwAAhRAAAD2DAAB5p2jzAAAAAL9xAAAAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAD9xAAAtwEAAAIAAABzF7gAAAAAAAUA5wcAAAAAv6YAAAAAAAAHBgAAkPz//7+iAAAAAAAABwIAACD2//+/YQAAAAAAALcDAAAwAAAAhRAAAPPEAAC/pwAAAAAAAAcHAABg+f//v6IAAAAAAAAHAgAAUPb//79xAAAAAAAAtwMAAGgAAACFEAAA7MQAAHmoaPMAAAAAv4EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAADAAAACFEAAA5sQAAL+BAAAAAAAABwEAADgAAAC/cgAAAAAAALcDAABoAAAAhRAAAOHEAAC3AQAAAgAAAHMYuAAAAAAAe5gAAAAAAAAFAOIHAAAAAL+nAAAAAAAABwcAADD9//+/ogAAAAAAAAcCAAAI9///v3EAAAAAAAC3AwAAoAAAAIUQAADWxAAAv6EAAAAAAAAHAQAAGPb//79yAAAAAAAAGAMAADLSCQAAAAAAAAAAALcEAAANAAAAhRAAAKqN//95qRj2AAAAAFUJggAEAAAAv6cAAAAAAAAHBwAAkPz//7+iAAAAAAAABwIAACD2//+/cQAAAAAAALcDAAAwAAAAhRAAAMbEAAC/oQAAAAAAAAcBAABg9P//v3IAAAAAAAC3AwAAMAAAAIUQAADBxAAAeaGA8wAAAAB7GgjwAAAAAHtqEPAAAAAAe4oA8AAAAAC/oQAAAAAAAAcBAAAI9///v6UAAAAAAAB5onjzAAAAAHmjiPMAAAAAeaRw8wAAAACFEAAAhnoAAHmhCPcAAAAAVQEHAAQAAAC/oQAAAAAAAAcBAAAg9v//v6IAAAAAAAAHAgAAEPf//7cDAAAwAAAAhRAAAK7EAAAFABEAAAAAAL+nAAAAAAAABwcAADD9//+/ogAAAAAAAAcCAAAI9///v3EAAAAAAAC3AwAAoAAAAIUQAACmxAAAv6EAAAAAAAAHAQAAGPb//79yAAAAAAAAGAMAAMPUCQAAAAAAAAAAALcEAAAZAAAAhRAAAHqN//95qRj2AAAAABUJAQAEAAAABQChAAAAAAC/pwAAAAAAAAcHAACQ/P//v6IAAAAAAAAHAgAAIPb//79xAAAAAAAAtwMAADAAAACFEAAAlcQAAL+hAAAAAAAABwEAAJD0//+/cgAAAAAAALcDAAAwAAAAhRAAAJDEAAB5oYDzAAAAAHsaCPAAAAAAe2oQ8AAAAAB7igDwAAAAAL+hAAAAAAAABwEAAAj3//+/pQAAAAAAAHmiePMAAAAAeaOI8wAAAAB5pHDzAAAAAIUQAABVegAAeaEI9wAAAABVAQcABAAAAL+hAAAAAAAABwEAACD2//+/ogAAAAAAAAcCAAAQ9///twMAADAAAACFEAAAfcQAAAUAEQAAAAAAv6cAAAAAAAAHBwAAMP3//7+iAAAAAAAABwIAAAj3//+/cQAAAAAAALcDAACgAAAAhRAAAHXEAAC/oQAAAAAAAAcBAAAY9v//v3IAAAAAAAAYAwAA3NQJAAAAAAAAAAAAtwQAACIAAACFEAAASY3//3mpGPYAAAAAFQkBAAQAAAAFALcAAAAAAL+nAAAAAAAABwcAAJD8//+/ogAAAAAAAAcCAAAg9v//v3EAAAAAAAC3AwAAMAAAAIUQAABkxAAAv6EAAAAAAAAHAQAAwPT//79yAAAAAAAAtwMAADAAAACFEAAAX8QAAHmhgPMAAAAAexoI8AAAAAB7ahDwAAAAAHuKAPAAAAAAv6EAAAAAAAAHAQAACPf//7+lAAAAAAAAeaJ48wAAAAB5o4jzAAAAAHmkcPMAAAAAhRAAACR6AAB5oQj3AAAAAFUBJAAEAAAAv6EAAAAAAAAHAQAAIPb//7+iAAAAAAAABwIAABD3//+3AwAAMAAAAIUQAABMxAAABQAuAAAAAAC/pgAAAAAAAAcGAACQ/P//v6IAAAAAAAAHAgAAIPb//79hAAAAAAAAtwMAADAAAACFEAAARMQAAL+nAAAAAAAABwcAAGD5//+/ogAAAAAAAAcCAABQ9v//v3EAAAAAAAC3AwAAaAAAAIUQAAA9xAAAeaho8wAAAAC/gQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAMAAAAIUQAAA3xAAAv4EAAAAAAAAHAQAAOAAAAL9yAAAAAAAAtwMAAGgAAACFEAAAMsQAALcBAAACAAAAcxi4AAAAAAB7mAAAAAAAAAUAGwcAAAAAv6cAAAAAAAAHBwAAMP3//7+iAAAAAAAABwIAAAj3//+/cQAAAAAAALcDAACgAAAAhRAAACfEAAC/oQAAAAAAAAcBAAAY9v//v3IAAAAAAAAYAwAAG9UJAAAAAAAAAAAAtwQAAB8AAACFEAAA+4z//3mpGPYAAAAAFQkBAAQAAAAFALAAAAAAAL+nAAAAAAAABwcAAJD8//+/ogAAAAAAAAcCAAAg9v//v3EAAAAAAAC3AwAAMAAAAIUQAAAWxAAAv6EAAAAAAAAHAQAA8PT//79yAAAAAAAAtwMAADAAAACFEAAAEcQAAHmhgPMAAAAAexoI8AAAAAB7ahDwAAAAAHuKAPAAAAAAv6EAAAAAAAAHAQAACPf//7+lAAAAAAAAeal48wAAAAC/kgAAAAAAAHmniPMAAAAAv3MAAAAAAAB5pHDzAAAAAIUQAADUeQAAeaEI9wAAAABVASQABAAAAL+hAAAAAAAABwEAACD2//+/ogAAAAAAAAcCAAAQ9///twMAADAAAACFEAAA/MMAAAUALgAAAAAAv6YAAAAAAAAHBgAAkPz//7+iAAAAAAAABwIAACD2//+/YQAAAAAAALcDAAAwAAAAhRAAAPTDAAC/pwAAAAAAAAcHAABg+f//v6IAAAAAAAAHAgAAUPb//79xAAAAAAAAtwMAAGgAAACFEAAA7cMAAHmoaPMAAAAAv4EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAADAAAACFEAAA58MAAL+BAAAAAAAABwEAADgAAAC/cgAAAAAAALcDAABoAAAAhRAAAOLDAAC3AQAAAgAAAHMYuAAAAAAAe5gAAAAAAAAFALMGAAAAAL+mAAAAAAAABwYAADD9//+/ogAAAAAAAAcCAAAI9///v2EAAAAAAAC3AwAAoAAAAIUQAADXwwAAv6EAAAAAAAAHAQAAGPb//79iAAAAAAAAGAMAAP7UCQAAAAAAAAAAALcEAAAdAAAAhRAAAKuM//95qBj2AAAAABUIAQAEAAAABQCnAAAAAAC/pgAAAAAAAAcGAACQ/P//v6IAAAAAAAAHAgAAIPb//79hAAAAAAAAtwMAADAAAACFEAAAxsMAAL+hAAAAAAAABwEAACD1//+/YgAAAAAAALcDAAAwAAAAhRAAAMHDAAC/oQAAAAAAAAcBAAAI9///v3IAAAAAAACFEAAAW6n//3mhCPcAAAAAVQEkAAQAAAC/oQAAAAAAAAcBAAAg9v//v6IAAAAAAAAHAgAAEPf//7cDAAAwAAAAhRAAALXDAAAFAC4AAAAAAL+mAAAAAAAABwYAAJD8//+/ogAAAAAAAAcCAAAg9v//v2EAAAAAAAC3AwAAMAAAAIUQAACtwwAAv6cAAAAAAAAHBwAAYPn//7+iAAAAAAAABwIAAFD2//+/cQAAAAAAALcDAABoAAAAhRAAAKbDAAB5qGjzAAAAAL+BAAAAAAAABwEAAAgAAAC/YgAAAAAAALcDAAAwAAAAhRAAAKDDAAC/gQAAAAAAAAcBAAA4AAAAv3IAAAAAAAC3AwAAaAAAAIUQAACbwwAAtwEAAAIAAABzGLgAAAAAAHuYAAAAAAAABQBpBgAAAAC/pgAAAAAAAAcGAAAw/f//v6IAAAAAAAAHAgAACPf//79hAAAAAAAAtwMAAKAAAACFEAAAkMMAAL+hAAAAAAAABwEAABj2//+/YgAAAAAAABgDAAA61QkAAAAAAAAAAAC3BAAAFwAAAIUQAABkjP//eagY9gAAAAAVCAEABAAAAAUALQEAAAAAv6YAAAAAAAAHBgAAkPz//7+iAAAAAAAABwIAACD2//+/YQAAAAAAALcDAAAwAAAAhRAAAH/DAAC/oQAAAAAAAAcBAABQ9f//v2IAAAAAAAC3AwAAMAAAAIUQAAB6wwAAv6EAAAAAAAAHAQAACPf//79yAAAAAAAAhRAAAMCo//95oQj3AAAAAFUBJAAEAAAAv6EAAAAAAAAHAQAAIPb//7+iAAAAAAAABwIAABD3//+3AwAAMAAAAIUQAABuwwAABQAuAAAAAAC/pgAAAAAAAAcGAACQ/P//v6IAAAAAAAAHAgAAIPb//79hAAAAAAAAtwMAADAAAACFEAAAZsMAAL+nAAAAAAAABwcAAGD5//+/ogAAAAAAAAcCAABQ9v//v3EAAAAAAAC3AwAAaAAAAIUQAABfwwAAeaho8wAAAAC/gQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAMAAAAIUQAABZwwAAv4EAAAAAAAAHAQAAOAAAAL9yAAAAAAAAtwMAAGgAAACFEAAAVMMAALcBAAACAAAAcxi4AAAAAAB7mAAAAAAAAAUAHwYAAAAAv6YAAAAAAAAHBgAAMP3//7+iAAAAAAAABwIAAAj3//+/YQAAAAAAALcDAACgAAAAhRAAAEnDAAC/oQAAAAAAAAcBAAAY9v//v2IAAAAAAAAYAwAAbdIJAAAAAAAAAAAAtwQAAA0AAACFEAAAHYz//3moGPYAAAAAFQgBAAQAAAAFAB4BAAAAAL+mAAAAAAAABwYAAJD8//+/ogAAAAAAAAcCAAAg9v//v2EAAAAAAAC3AwAAMAAAAIUQAAA4wwAAv6EAAAAAAAAHAQAAgPX//79iAAAAAAAAtwMAADAAAACFEAAAM8MAAL+hAAAAAAAABwEAAAj3//+/cgAAAAAAAIUQAAB1qf//eaEI9wAAAABVASQABAAAAL+hAAAAAAAABwEAACD2//+/ogAAAAAAAAcCAAAQ9///twMAADAAAACFEAAAJ8MAAAUALgAAAAAAv6YAAAAAAAAHBgAAkPz//7+iAAAAAAAABwIAACD2//+/YQAAAAAAALcDAAAwAAAAhRAAAB/DAAC/pwAAAAAAAAcHAABg+f//v6IAAAAAAAAHAgAAUPb//79xAAAAAAAAtwMAAGgAAACFEAAAGMMAAHmpaPMAAAAAv5EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAADAAAACFEAAAEsMAAL+RAAAAAAAABwEAADgAAAC/cgAAAAAAALcDAABoAAAAhRAAAA3DAAC3AQAAAgAAAHMZuAAAAAAAe4kAAAAAAAAFANUFAAAAAL+mAAAAAAAABwYAADD9//+/ogAAAAAAAAcCAAAI9///v2EAAAAAAAC3AwAAoAAAAIUQAAACwwAAv6EAAAAAAAAHAQAAGPb//79iAAAAAAAAGAMAAF/SCQAAAAAAAAAAALcEAAAOAAAAhRAAANaL//95qBj2AAAAABUIAQAEAAAABQD0AAAAAAC/pgAAAAAAAAcGAACQ/P//v6IAAAAAAAAHAgAAIPb//79hAAAAAAAAtwMAADAAAACFEAAA8cIAAL+hAAAAAAAABwEAALD1//+/YgAAAAAAALcDAAAwAAAAhRAAAOzCAAC/oQAAAAAAAAcBAAAw/f//hRAAAByTAABhoTD9AAAAABUBAQAWAAAABQCqAAAAAAB5oTj9AAAAAHsa4PUAAAAAeaFA/QAAAAB7Guj1AAAAAHmhSP0AAAAAexrw9QAAAAC/oQAAAAAAAAcBAAAw/f//v6IAAAAAAAAHAgAAMPT//4UQAADRYQAAeacw/QAAAAAVBwEABAAAAAUA8QAAAAAAeaE4/QAAAAB7Gvj7AAAAAHsaSPsAAAAAeaFA/QAAAAB7GgD8AAAAAHsaUPsAAAAAeaFI/QAAAAB7Ggj8AAAAAHsaWPsAAAAAv6EAAAAAAAAHAQAACPf//7+iAAAAAAAABwIAAEj7//+FEAAAqGEAAHmnCPcAAAAAFQcBAAQAAAAFAP0AAAAAAHmhEPcAAAAAexoY+gAAAAB7GsD4AAAAAHmhGPcAAAAAexog+gAAAAB7Gsj4AAAAAHmhIPcAAAAAexoo+gAAAAB7GtD4AAAAAHmhKPcAAAAAexow+gAAAAB7Gtj4AAAAAL+hAAAAAAAABwEAAMDz//+/ogAAAAAAAAcCAADA+P//hRAAAGuIAAC3AQAABAAAAHsaMPgAAAAAGAEAAJTNCQAAAAAAAAAAAHsaKPgAAAAAeaHI8wAAAAB7GkD4AAAAAHmhwPMAAAAAexo4+AAAAAC/oQAAAAAAAAcBAACQ/P//v6IAAAAAAAAHAgAAKPj//7+UAAAAAAAAtwkAAAIAAAC3AwAAAgAAAIUQAAC4jwAAeaGo/AAAAAB7GhD2AAAAAHmhoPwAAAAAexoI9gAAAAB5oZj8AAAAAHsaAPYAAAAAeaGQ/AAAAAB7Gvj1AAAAAHmhWPsAAAAAeRIAAAAAAAAHAgAA/////3GosPwAAAAAeyEAAAAAAAC/pgAAAAAAAAcGAAAw/f//v2EAAAAAAAAYAgAA488JAAAAAAAAAAAAtwMAAA0AAACFEAAAWqX//3mhgPMAAAAAv2IAAAAAAAC/gwAAAAAAAIUQAACfov//v6YAAAAAAAAHBgAAMP3//79hAAAAAAAAeadg8wAAAAC/cgAAAAAAAIUQAAA0dwAAv6IAAAAAAAAHAgAA+PX//79hAAAAAAAAtwMAACAAAACFEAAADMMAABUA3AAAAAAAv3gAAAAAAAC/pwAAAAAAAAcHAAAw/f//v3EAAAAAAAC3AgAA1gcAAIUQAAC2gAAAv6YAAAAAAAAHBgAACPf//79hAAAAAAAAv3IAAAAAAAAYAwAA488JAAAAAAAAAAAAtwQAAA0AAACFEAAATov//7+nAAAAAAAABwcAABj2//+/cQAAAAAAAL+CAAAAAAAAhRAAABt3AAB5oRD2AAAAAHsaUPYAAAAAeaEI9gAAAAB7Gkj2AAAAAHmhAPYAAAAAexpA9gAAAAB5ofj1AAAAAHsaOPYAAAAAv6gAAAAAAAAHCAAAMP3//7+BAAAAAAAAv2IAAAAAAAC/cwAAAAAAAIUQAABYewAAeaZo8wAAAAC/YQAAAAAAAL+CAAAAAAAAtwMAAKAAAACFEAAAW8IAAHOWuAAAAAAABQAZBQAAAAC/pgAAAAAAAAcGAACQ/P//v6IAAAAAAAAHAgAAIPb//79hAAAAAAAAtwMAADAAAACFEAAAUsIAAL+nAAAAAAAABwcAAGD5//+/ogAAAAAAAAcCAABQ9v//v3EAAAAAAAC3AwAAaAAAAIUQAABLwgAAealo8wAAAAC/kQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAMAAAAIUQAABFwgAAv5EAAAAAAAAHAQAAOAAAAL9yAAAAAAAAtwMAAGgAAACFEAAAQMIAALcBAAACAAAAcxm4AAAAAAB7iQAAAAAAAAUABQUAAAAAYaJM/QAAAABjKjD2AAAAAHmjRP0AAAAAezoo9gAAAAB5pDz9AAAAAHtKIPYAAAAAeaU0/QAAAAB7Whj2AAAAAGMaCPcAAAAAe1oM9wAAAAB7ShT3AAAAAHs6HPcAAAAAYyok9wAAAAC/pgAAAAAAAAcGAAAw/f//v6IAAAAAAAAHAgAACPf//79hAAAAAAAAhRAAAAN7AAB5p2jzAAAAAL9xAAAAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAAkwgAAtwEAAAIAAABzF7gAAAAAAAUA4QQAAAAAv6YAAAAAAAAHBgAAkPz//7+iAAAAAAAABwIAACD2//+/YQAAAAAAALcDAAAwAAAAhRAAABrCAAC/pwAAAAAAAAcHAABg+f//v6IAAAAAAAAHAgAAUPb//79xAAAAAAAAtwMAAGgAAACFEAAAE8IAAHmpaPMAAAAAv5EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAADAAAACFEAAADcIAAL+RAAAAAAAABwEAADgAAAC/cgAAAAAAALcDAABoAAAAhRAAAAjCAAC3AQAAAgAAAHMZuAAAAAAAe4kAAAAAAAAFAMoEAAAAAL+mAAAAAAAABwYAAJD8//+/ogAAAAAAAAcCAAAg9v//v2EAAAAAAAC3AwAAMAAAAIUQAAD9wQAAv6cAAAAAAAAHBwAAYPn//7+iAAAAAAAABwIAAFD2//+/cQAAAAAAALcDAABoAAAAhRAAAPbBAAB5qWjzAAAAAL+RAAAAAAAABwEAAAgAAAC/YgAAAAAAALcDAAAwAAAAhRAAAPDBAAC/kQAAAAAAAAcBAAA4AAAAv3IAAAAAAAC3AwAAaAAAAIUQAADrwQAAtwEAAAIAAABzGbgAAAAAAHuJAAAAAAAABQCqBAAAAAB5oUj9AAAAAHsaCPwAAAAAeaFA/QAAAAB7GgD8AAAAAHmhOP0AAAAAexr4+wAAAAC/pgAAAAAAAAcGAAAY9v//v6IAAAAAAAAHAgAAUP3//79hAAAAAAAAtwMAAIAAAACFEAAA2sEAAHmhCPwAAAAAeaho8wAAAAB7GBgAAAAAAHmhAPwAAAAAexgQAAAAAAB5ofj7AAAAAHsYCAAAAAAAv4EAAAAAAAAHAQAAIAAAAL9iAAAAAAAAtwMAAIAAAACFEAAAzsEAALcBAAACAAAAcxi4AAAAAAB7eAAAAAAAAAUAigQAAAAAeaEo9wAAAAB7GjD6AAAAAHmhIPcAAAAAexoo+gAAAAB5oRj3AAAAAHsaIPoAAAAAeaEQ9wAAAAB7Ghj6AAAAAL+mAAAAAAAABwYAAGD5//+/ogAAAAAAAAcCAAAw9///v2EAAAAAAAC3AwAAeAAAAIUQAAC7wQAAeaEw+gAAAAB5qGjzAAAAAHsYIAAAAAAAeaEo+gAAAAB7GBgAAAAAAHmhIPoAAAAAexgQAAAAAAB5oRj6AAAAAHsYCAAAAAAAv4EAAAAAAAAHAQAAKAAAAL9iAAAAAAAAtwMAAHgAAACFEAAArcEAALcBAAACAAAAcxi4AAAAAAB7eAAAAAAAAHmhWPsAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAABQBlBAAAAAC/oQAAAAAAAAcBAADY9v//v3IAAAAAAACFEAAAspT//3mp8PYAAAAAv5EAAAAAAAAYAgAAsMcJAAAAAAAAAAAAtwMAACAAAACFEAAAJcIAABUAHwAAAAAAv6EAAAAAAAAHAQAAMP3//79yAAAAAAAAhRAAAAuR//9xoej9AAAAAHmoePMAAAAAFQEBAAIAAAAFADUAAAAAAL+mAAAAAAAABwYAAGD5//+/ogAAAAAAAAcCAAAw/f//v2EAAAAAAAC3AwAAoAAAAIUQAACLwQAAv6cAAAAAAAAHBwAAkPz//79xAAAAAAAAv2IAAAAAAAAYAwAA488JAAAAAAAAAAAAtwQAAA0AAACFEAAAXor//3mmaPMAAAAAv2EAAAAAAAC/cgAAAAAAALcDAACgAAAAhRAAAH7BAAC3AQAAAgAAAHMWuAAAAAAABQA4BAAAAAC/cQAAAAAAAIUQAAAShAAAvwYAAAAAAAB7mojzAAAAAFUGTgAAAAAAv6EAAAAAAAAHAQAA4PX//7cCAACUAAAAhRAAAPGOAAB7CkDzAAAAAL+hAAAAAAAABwEAAMj3//+/ogAAAAAAAAcCAADQ8///hRAAAKKU//+/oQAAAAAAAAcBAAD49///v3IAAAAAAACFEAAAeZT//3mjuPUAAAAAeTEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHmksPUAAAAAexMAAAAAAABVAnUAAQAAAIUQAAD/////hRAAAP////+/oQAAAAAAAAcBAAAI9///v6IAAAAAAAAHAgAAMP3//7cDAADAAAAAhRAAAFfBAAC/oQAAAAAAAAcBAADY9v//hRAAAASEAAAVAAEAlAAAAAUASQAAAAAAv5EAAAAAAAC/ggAAAAAAALcDAAAgAAAAhRAAANjBAAAVAEMCAAAAAL+nAAAAAAAABwcAADD9//+/cQAAAAAAALcCAADUBwAAhRAAAIN/AAC/pgAAAAAAAAcGAABg+f//v2EAAAAAAAC/cgAAAAAAABgDAADjzwkAAAAAAAAAAAC3BAAADQAAAIUQAAAbiv//eZEYAAAAAAB7Gqj8AAAAAHmREAAAAAAAexqg/AAAAAB5kQgAAAAAAHsamPwAAAAAeZEAAAAAAAB7GpD8AAAAAHmBAAAAAAAAexqw/AAAAAB5gQgAAAAAAHsauPwAAAAAeYEQAAAAAAB7GsD8AAAAAHmBGAAAAAAAexrI/AAAAAC/pwAAAAAAAAcHAAAw/f//v6MAAAAAAAAHAwAAkPz//79xAAAAAAAAv2IAAAAAAACFEAAAIXoAAAUAWQIAAAAAe4pw8wAAAAC/eAAAAAAAAL+nAAAAAAAABwcAAGD5//+/ogAAAAAAAAcCAADQ8///v3EAAAAAAACFEAAAzXUAAL+pAAAAAAAABwkAADD9//+/kQAAAAAAAL+CAAAAAAAAhRAAAMh1AAC/cQAAAAAAAL+SAAAAAAAAtwMAACAAAACFEAAAocEAABUAwQAAAAAAv6EAAAAAAAAHAQAA4PX//7cCAACUAAAAhRAAAJGOAAC/CQAAAAAAACUJAQABAAAAtwkAAAEAAAB5p2DzAAAAAC1p7gAAAAAAeaa49QAAAAB5obD1AAAAAHsagPMAAAAABQBAAQAAAAC/pgAAAAAAAAcGAAAw/f//v2EAAAAAAAC3AgAA4wcAAIUQAAA/fwAAv6cAAAAAAAAHBwAAYPn//79xAAAAAAAAv2IAAAAAAAAYAwAA488JAAAAAAAAAAAAtwQAAA0AAACFEAAA14n//7+hAAAAAAAABwEAANj2//+FEAAAqYMAAL+mAAAAAAAABwYAADD9//+/YQAAAAAAAL9yAAAAAAAAtwMAAJQAAAC/BAAAAAAAAIUQAAAXif//eado8wAAAAC/cQAAAAAAAL9iAAAAAAAAtwMAAKAAAACFEAAA7cAAALcBAAACAAAAcxe4AAAAAAAFACICAAAAAHmmwPUAAAAAeWEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHtKcPMAAAAAezqA8wAAAAB7FgAAAAAAAFUCAQABAAAABQCA/wAAAAB5ocj1AAAAAHsaWPMAAAAAeaHQ9QAAAAB7GlDzAAAAAHGh2PUAAAAAexpI8wAAAABxqdn1AAAAAHGn2vUAAAAAv6EAAAAAAAAHAQAAMP3//7+iAAAAAAAABwIAAMj3//+3AwAAYAAAAIUQAADRwAAAtwEAAAgAAAB7Gtj9AAAAAHN6yv0AAAAAc5rJ/QAAAAB5oUjzAAAAAHMayP0AAAAAeaFQ8wAAAAB7GsD9AAAAAHmhWPMAAAAAexq4/QAAAAB7arD9AAAAAHmhgPMAAAAAexqo/QAAAAB5oXDzAAAAAHsaoP0AAAAAtwEAAAAAAAB7GuD9AAAAAHsa0P0AAAAAexqY/QAAAAAYAQAAMMcJAAAAAAAAAAAAexqQ/QAAAAC/oQAAAAAAAAcBAACQ/P//v6IAAAAAAAAHAgAAMPT//4UQAACsXwAAeaeQ/AAAAAAVBwEABAAAAAUAiQEAAAAAeaGY/AAAAAB7Gij7AAAAAHsaePwAAAAAeaGg/AAAAAB7GjD7AAAAAHsagPwAAAAAeaGo/AAAAAB7Gjj7AAAAAHsaiPwAAAAAv6EAAAAAAAAHAQAAGPr//7+iAAAAAAAABwIAAHj8//+FEAAAg18AAHmnGPoAAAAAFQcBAAQAAAAFAA8CAAAAAHmhIPoAAAAAexq4+gAAAAB7GsD7AAAAAHmhKPoAAAAAexrA+gAAAAB7Gsj7AAAAAHmhMPoAAAAAexrI+gAAAAB7GtD7AAAAAHmhOPoAAAAAexrQ+gAAAAB7Gtj7AAAAAL+hAAAAAAAABwEAAJDz//+/ogAAAAAAAAcCAADA+///hRAAAEaGAAC/oQAAAAAAAAcBAACQ/P//exoI+wAAAAC3AQAABAAAAHsa8PoAAAAAGAEAAJTNCQAAAAAAAAAAAHsa6PoAAAAAtwEAAAMAAAB7Guj7AAAAAL+hAAAAAAAABwEAAOj6//97GuD7AAAAALcBAAABAAAAexoQ+wAAAAB7Gpj9AAAAAL+hAAAAAAAABwEAAOD7//97GpD9AAAAAHmhmPMAAAAAexoA+wAAAAB5oZDzAAAAAHsa+PoAAAAAc4qQ/AAAAAC/pwAAAAAAAAcHAABg+f//v6IAAAAAAAAHAgAAMP3//79xAAAAAAAAtwMAALgAAACFEAAAcsAAAL+hAAAAAAAABwEAAMD4//+/cgAAAAAAAHmjQPMAAAAAtwQAAJQAAAB5pXjzAAAAAIUQAAC0fAAAeafA+AAAAAAVBwEABAAAAAUAAAMAAAAAeaGI/AAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAAC/oQAAAAAAAAcBAAAw/f//eaJg8wAAAACFEAAAxYz//3Gh6P0AAAAAFQHM/gIAAAC/oQAAAAAAAAcBAAAI9///v6IAAAAAAAAHAgAAMP3//7cDAADAAAAAhRAAAFjAAAB5qHjzAAAAAHmpiPMAAAAABQD+/gAAAAC/oQAAAAAAAAcBAABQ/f//GAIAAPTNCQAAAAAAAAAAAIUQAABcfQAAtwEAAAUQAACFEAAAh34AAL8GAAAAAAAAv6EAAAAAAAAHAQAAaP3//xgCAAD0zQkAAAAAAAAAAACFEAAAPJP//7cBAAANAAAAYxpI/QAAAAC3AQAANwAAAHsaQP0AAAAAGAEAAPDPCQAAAAAAAAAAAHsaOP0AAAAAtwEAAAAAAAB7GjD9AAAAAGNqyP0AAAAAtwkAAAIAAABzmoD9AAAAAL+mAAAAAAAABwYAAGD5//+/ogAAAAAAAAcCAAAw/f//v2EAAAAAAACFEAAADXkAAL+nAAAAAAAABwcAAJD8//+/ogAAAAAAAAcCAADQ8///v3EAAAAAAACFEAAA3XQAAL+hAAAAAAAABwEAALD8//95omDzAAAAAIUQAADZdAAAv6gAAAAAAAAHCAAAMP3//7+BAAAAAAAAv2IAAAAAAAC/cwAAAAAAAIUQAAAeeQAAeaZo8wAAAAC/YQAAAAAAAL+CAAAAAAAAtwMAAKAAAACFEAAAIcAAAHOWuAAAAAAABQDcAgAAAAC/oQAAAAAAAAcBAAAY+v//v6IAAAAAAAAHAgAA0PP//4UQAABQk///v6EAAAAAAAAHAQAASPr//79yAAAAAAAAhRAAACeT//+/kgAAAAAAAB9iAAAAAAAAtwEAAAEAAAC3AwAAAQAAAC2SAQAAAAAAtwMAAAAAAAC3BAAAAAAAAFUDAQAAAAAAvyQAAAAAAAB7SljzAAAAAHmkuPUAAAAAeUIAAAAAAAAHAgAAAQAAABUCAQAAAAAAtwEAAAAAAAB5o7D1AAAAAHs6gPMAAAAAv0gAAAAAAAB7JAAAAAAAAFUBAQABAAAABQCi/gAAAAB5psD1AAAAAHlhAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7FgAAAAAAAFUCAQABAAAABQCZ/gAAAAB5ocj1AAAAAHsaUPMAAAAAeaHQ9QAAAAB7GkjzAAAAAHGh2PUAAAAAexpA8wAAAABxodn1AAAAAHsaOPMAAAAAcafa9QAAAAC/qQAAAAAAAAcJAAAw/f//v6IAAAAAAAAHAgAAGPr//7+RAAAAAAAAtwMAAGAAAACFEAAA6L8AALcBAAAIAAAAexrY/QAAAABzesr9AAAAAHmhOPMAAAAAcxrJ/QAAAAB5oUDzAAAAAHMayP0AAAAAeaFI8wAAAAB7GsD9AAAAAHmhUPMAAAAAexq4/QAAAAB7arD9AAAAAL+GAAAAAAAAe2qo/QAAAAB5oYDzAAAAAHsaoP0AAAAAtwEAAAAAAAB7GuD9AAAAAHsa0P0AAAAAexqY/QAAAAAYAQAAMMcJAAAAAAAAAAAAexqQ/QAAAAC/oQAAAAAAAAcBAABg+f//v5IAAAAAAAB5o1jzAAAAAIUQAAB0fAAAealg+QAAAABVCSYBBAAAAHmnYPMAAAAAv6EAAAAAAAAHAQAAuPr//79yAAAAAAAAhRAAANaS//95YgAAAAAAAAcCAAABAAAAeyYAAAAAAAC3AQAAAQAAABUCAQAAAAAAtwEAAAAAAAB7aljzAAAAAFUBAQABAAAABQBd/gAAAAB5psD1AAAAAHlhAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7FgAAAAAAAFUCAQABAAAABQBU/gAAAAB5ocj1AAAAAHsaUPMAAAAAeaHQ9QAAAAB7GkjzAAAAAHGo2PUAAAAAcanZ9QAAAABxp9r1AAAAABgBAAAwxwkAAAAAAAAAAAB7GsD4AAAAALcBAAAAAAAAexrI+AAAAAC/oQAAAAAAAAcBAADQ+P//v6IAAAAAAAAHAgAAuPr//7cDAAAwAAAAhRAAAKG/AAC3AQAACAAAAHsaOPkAAAAAtwEAAAAAAAB7GkD5AAAAAHsaMPkAAAAAe2pA8wAAAAB7ahD5AAAAAHmhWPMAAAAAexoI+QAAAAB5oYDzAAAAAHsaAPkAAAAAe3oo8wAAAABzeir5AAAAAHuaMPMAAAAAc5op+QAAAAB7ijjzAAAAAHOKKPkAAAAAeaFI8wAAAAB7GiD5AAAAAHmhUPMAAAAAexoY+QAAAAC/oQAAAAAAAAcBAAAw/f//v6IAAAAAAAAHAgAAMPT//4UQAAB9XgAAeakw/QAAAAAVCQEABAAAAAUAwAAAAAAAeaE4/QAAAAB7Gij7AAAAAHsaePwAAAAAeaFA/QAAAAB7GjD7AAAAAHsagPwAAAAAeaFI/QAAAAB7Gjj7AAAAAHsaiPwAAAAAv6EAAAAAAAAHAQAAYPn//7+iAAAAAAAABwIAAHj8//+FEAAAVF4AAHmmYPkAAAAAFQYBAAQAAAAFAD4BAAAAAHmhaPkAAAAAexro+gAAAAB7GsD7AAAAAHmhcPkAAAAAexrw+gAAAAB7Gsj7AAAAAHmhePkAAAAAexr4+gAAAAB7GtD7AAAAAHmhgPkAAAAAexoA+wAAAAB7Gtj7AAAAAL+hAAAAAAAABwEAALDz//+/ogAAAAAAAAcCAADA+///hRAAABeFAAC/oQAAAAAAAAcBAAAw/f//exro9wAAAAC3AQAABAAAAHsa0PcAAAAAGAEAAJTNCQAAAAAAAAAAAHsayPcAAAAAtwEAAAMAAAB7Guj7AAAAAL+hAAAAAAAABwEAAMj3//97GuD7AAAAALcHAAABAAAAe3rw9wAAAAB7esj4AAAAAL+hAAAAAAAABwEAAOD7//97GsD4AAAAAHmhuPMAAAAAexrg9wAAAAB5obDzAAAAAHsa2PcAAAAAeaFw8wAAAABzGjD9AAAAAL+mAAAAAAAABwYAACj4//+/ogAAAAAAAAcCAADA+P//v2EAAAAAAAC3AwAAiAAAAIUQAABCvwAAv6EAAAAAAAAHAQAAkPz//79iAAAAAAAAtwMAAJQAAACFEAAAtHoAAHmpkPwAAAAAFQkBAAQAAAAFAOMBAAAAAHmhiPwAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAv6EAAAAAAAAHAQAA6Pr//3miYPMAAAAAhRAAAEOS//95oljzAAAAAHkhAAAAAAAABwEAAAEAAAB7EgAAAAAAABUBAQAAAAAAtwcAAAAAAABVB2ECAQAAAAUAy/0AAAAAeaGo/AAAAAB7Gjj7AAAAAHmhoPwAAAAAexow+wAAAAB5oZj8AAAAAHsaKPsAAAAAv6YAAAAAAAAHBgAA+Pv//7+iAAAAAAAABwIAALD8//+/YQAAAAAAALcDAACAAAAAhRAAAB2/AAB5oTj7AAAAAHmoaPMAAAAAexgYAAAAAAB5oTD7AAAAAHsYEAAAAAAAeaEo+wAAAAB7GAgAAAAAAL+BAAAAAAAABwEAACAAAAC/YgAAAAAAALcDAACAAAAAhRAAABG/AAC3AQAAAgAAAHMYuAAAAAAAe3gAAAAAAAC/oQAAAAAAAAcBAAAw/f//hRAAAMeS//8FAMcBAAAAAL+hAAAAAAAABwEAAOD1//+3AgAAlAAAAIUQAACFjAAAvwYAAAAAAAB5oaD3AAAAAHkTAAAAAAAABwMAAAEAAAC3BAAAAQAAABUDAQAAAAAAtwQAAAAAAAB5opj3AAAAAHsxAAAAAAAAVQQBAAEAAAAFAJz9AAAAAHmjqPcAAAAAeTQAAAAAAAAHBAAAAQAAALcFAAABAAAAFQQBAAAAAAC3BQAAAAAAAHtDAAAAAAAAVQUBAAEAAAAFAJP9AAAAAHGkwvcAAAAAc0pa/QAAAABxpMH3AAAAAHNKWf0AAAAAcaTA9wAAAABzSlj9AAAAAHmkuPcAAAAAe0pQ/QAAAAB5pLD3AAAAAHtKSP0AAAAAezpA/QAAAAB7Gjj9AAAAAHsqMP0AAAAAv6cAAAAAAAAHBwAAMP3//79xAAAAAAAAhRAAAHqBAAC/CAAAAAAAAL9xAAAAAAAAhRAAAICS//8thgEAAAAAAAUAbQAAAAAAv6YAAAAAAAAHBgAAMP3//79hAAAAAAAAtwIAANUHAACFEAAAEn0AAL+nAAAAAAAABwcAAGD5//+/cQAAAAAAAL9iAAAAAAAAGAMAAOPPCQAAAAAAAAAAALcEAAANAAAAhRAAAKqH//95pmjzAAAAAL9hAAAAAAAAv3IAAAAAAAC3AwAAoAAAAIUQAADKvgAAtwEAAAIAAABzFrgAAAAAAL+hAAAAAAAABwEAAAj3//+FEAAAz5L//wUAgQEAAAAAeaFI/QAAAAB7Gjj7AAAAAHmhQP0AAAAAexow+wAAAAB5oTj9AAAAAHsaKPsAAAAAv6YAAAAAAAAHBgAA+Pv//7+iAAAAAAAABwIAAFD9//+/YQAAAAAAALcDAACAAAAAhRAAALe+AAB5oTj7AAAAAHmnaPMAAAAAexcYAAAAAAB5oTD7AAAAAHsXEAAAAAAAeaEo+wAAAAB7FwgAAAAAAL9xAAAAAAAABwEAACAAAAC/YgAAAAAAALcDAACAAAAAhRAAAKu+AAC3AQAAAgAAAHMXuAAAAAAAe5cAAAAAAAC/oQAAAAAAAAcBAADA+P//hRAAABKd//8FAGEBAAAAAL+mAAAAAAAABwYAAJD8//+/ogAAAAAAAAcCAABo+f//v2EAAAAAAAC3AwAAmAAAAIUQAACdvgAAeado8wAAAAC/cQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAACXvgAAtwEAAAIAAABzF7gAAAAAAHuXAAAAAAAABQBQAQAAAAB5oTj6AAAAAHsa0PoAAAAAeaEw+gAAAAB7Gsj6AAAAAHmhKPoAAAAAexrA+gAAAAB5oSD6AAAAAHsauPoAAAAAv6YAAAAAAAAHBgAASPv//7+iAAAAAAAABwIAAED6//+/YQAAAAAAALcDAAB4AAAAhRAAAIS+AAB5odD6AAAAAHmoaPMAAAAAexggAAAAAAB5ocj6AAAAAHsYGAAAAAAAeaHA+gAAAAB7GBAAAAAAAHmhuPoAAAAAexgIAAAAAAC/gQAAAAAAAAcBAAAoAAAAv2IAAAAAAAC3AwAAeAAAAIUQAAB2vgAAtwEAAAIAAABzGLgAAAAAAHt4AAAAAAAAv6EAAAAAAAAHAQAAMP3//4UQAAAskv//BQAoAQAAAAC/oQAAAAAAAAcBAAAY9v//v6IAAAAAAAAHAgAACPf//7cDAADAAAAAhRAAAGm+AAC/oQAAAAAAAAcBAADY9v//hRAAAAiS//95p7D2AAAAAHlxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5o6j2AAAAAHs6iPMAAAAAexcAAAAAAABVAgEAAQAAAAUA/PwAAAAAeam49gAAAAB5kQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAexkAAAAAAABVAgEAAQAAAAUA8/wAAAAAe5pA/QAAAAB7ejj9AAAAAHmhiPMAAAAAexow/QAAAABxodL2AAAAAHsagPMAAAAAcxpa/QAAAABxqNH2AAAAAHOKWf0AAAAAcaHQ9gAAAAB7GnDzAAAAAHMaWP0AAAAAeaHI9gAAAAB7GmDzAAAAAHsaUP0AAAAAeabA9gAAAAB7akj9AAAAAL+hAAAAAAAABwEAADD9//+FEAAA4JH//xUI7wEAAAAAeXIAAAAAAAAHAgAAAQAAAHsnAAAAAAAAtwEAAAEAAAAVAgEAAAAAALcBAAAAAAAAVQElAAEAAAAFANb8AAAAAHmhgPkAAAAAexoA+wAAAAB5oXj5AAAAAHsa+PoAAAAAeaFw+QAAAAB7GvD6AAAAAHmhaPkAAAAAexro+gAAAAC/pwAAAAAAAAcHAABI+///v6IAAAAAAAAHAgAAiPn//79xAAAAAAAAtwMAAHgAAACFEAAAJr4AAHmhAPsAAAAAeaho8wAAAAB7GCAAAAAAAHmh+PoAAAAAexgYAAAAAAB5ofD6AAAAAHsYEAAAAAAAeaHo+gAAAAB7GAgAAAAAAL+BAAAAAAAABwEAACgAAAC/cgAAAAAAALcDAAB4AAAAhRAAABi+AAC3AQAAAgAAAHMYuAAAAAAAe2gAAAAAAAC/oQAAAAAAAAcBAADA+P//hRAAAH+c//8FAMoAAAAAAHmSAAAAAAAABwIAAAEAAAB7KQAAAAAAALcBAAABAAAAFQIBAAAAAAC3AQAAAAAAAFUBAQABAAAABQCq/AAAAAB5oYDzAAAAAHMaivkAAAAAc4qJ+QAAAAB5oXDzAAAAAHMaiPkAAAAAeaFg8wAAAAB7GoD5AAAAAHtqePkAAAAAe5pw+QAAAAB5oYjzAAAAAHsaYPkAAAAAe3po+QAAAAC/oQAAAAAAAAcBAABg+f//hRAAAJOAAAB7CljzAAAAAHlyAAAAAAAABwIAAAEAAAB7JwAAAAAAALcBAAABAAAAFQIBAAAAAAC3AQAAAAAAAFUBAQABAAAABQCS/AAAAAB5kgAAAAAAAAcCAAABAAAAeykAAAAAAAC3AQAAAQAAABUCAQAAAAAAtwEAAAAAAABVAQEAAQAAAAUAivwAAAAAeaGA8wAAAABzGjL3AAAAAHOKMfcAAAAAeaFw8wAAAABzGjD3AAAAAHmhYPMAAAAAexoo9wAAAAB7aiD3AAAAAHuaGPcAAAAAe3oQ9wAAAAB5oYjzAAAAAHsaCPcAAAAAv6EAAAAAAAAHAQAAMP3//7+iAAAAAAAABwIAAAj3//+FEAAAmoAAAGGhMP0AAAAAFQEBABYAAAAFAIwBAAAAAHmjOP0AAAAAv6EAAAAAAAAHAQAA4PX//3miWPMAAAAAhRAAAImLAAC/BgAAAAAAAL+hAAAAAAAABwEAAAj3//+FEAAAbpH//7+hAAAAAAAABwEAAGD5//+FEAAAa5H//1UGAQAAAAAABQC6AQAAAAC/pgAAAAAAAAcGAAAw/f//v6IAAAAAAAAHAgAA0PP//79hAAAAAAAAhRAAAPeQ//9xp1n9AAAAAL9hAAAAAAAAhRAAAGCR//8VB+0BAAAAALcBAAABAAAAexqo/AAAAAAYAQAAI88JAAAAAAAAAAAAexqg/AAAAAC3AQAABwAAAHsamPwAAAAAGAEAABzPCQAAAAAAAAAAAHsakPwAAAAAv6YAAAAAAAAHBgAAYPn//7+iAAAAAAAABwIAAJD8//+3BwAAAgAAAL9hAAAAAAAAtwMAAAIAAAB5pHjzAAAAAIUQAADqigAAv6EAAAAAAAAHAQAAMP3//79iAAAAAAAAhRAAAAqd//95qDD9AAAAABUIAQAEAAAABQDyAQAAAAB5oTj9AAAAAHsawPgAAAAAeaFA/QAAAAB7Gsj4AAAAAHmhSP0AAAAAexoo+gAAAAB7GtD4AAAAAHmhUP0AAAAAexow+gAAAAB7Gtj4AAAAAL+mAAAAAAAABwYAADD9//+/ogAAAAAAAAcCAAAA9P//v2EAAAAAAACFEAAAQHIAAL+iAAAAAAAABwIAAMD4//+/YQAAAAAAALcDAAAgAAAAhRAAABi+AAAVAPwBAAAAAL+nAAAAAAAABwcAADD9//+/cQAAAAAAALcCAADWBwAAhRAAAMN7AAC/pgAAAAAAAAcGAAAI9///v2EAAAAAAAC/cgAAAAAAABgDAAAp0gkAAAAAAAAAAAC3BAAACQAAAIUQAABbhv//v6cAAAAAAAAHBwAAYPn//7+iAAAAAAAABwIAAAD0//+/cQAAAAAAAIUQAAAncgAAeaHY+AAAAAB7Gpj5AAAAAHmh0PgAAAAAexqQ+QAAAAB5ocj4AAAAAHsaiPkAAAAAeaHA+AAAAAB7GoD5AAAAAL+oAAAAAAAABwgAADD9//+/gQAAAAAAAL9iAAAAAAAAv3MAAAAAAACFEAAAZHYAAHmmaPMAAAAAv2EAAAAAAAC/ggAAAAAAAAUAawEAAAAAv6YAAAAAAAAHBgAAKPj//7+iAAAAAAAABwIAAMj4//+/YQAAAAAAALcDAACYAAAAhRAAAGG9AAB5qGjzAAAAAL+BAAAAAAAABwEAAAgAAAC/YgAAAAAAALcDAACYAAAAhRAAAFu9AAC3AQAAAgAAAHMYuAAAAAAAe3gAAAAAAAAFABAAAAAAAL+mAAAAAAAABwYAABj6//+/ogAAAAAAAAcCAACY/P//v2EAAAAAAAC3AwAAmAAAAIUQAABQvQAAeado8wAAAAC/cQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAABKvQAAtwEAAAIAAABzF7gAAAAAAHuXAAAAAAAAeaGI/AAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAAC/oQAAAAAAAAcBAADY9v//hRAAAOKQ//+/oQAAAAAAAAcBAACw9f//hRAAAN+Q//+/oQAAAAAAAAcBAACA9f//hRAAANyQ//+/oQAAAAAAAAcBAABQ9f//hRAAANmQ//+/oQAAAAAAAAcBAAAg9f//hRAAANaQ//+/oQAAAAAAAAcBAADw9P//hRAAANOQ//+/oQAAAAAAAAcBAADA9P//hRAAANCQ//+/oQAAAAAAAAcBAACQ9P//hRAAAM2Q//95oWj0AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAACouAAB5oXD0AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAB4uAAB5oTj0AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAABIuAAB5oUD0AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAAYuAAB5oQj0AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAPotAAB5oRD0AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAO4tAAB5odjzAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAOItAAB5oeDzAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAANYtAACVAAAAAAAAAHmhQPMAAAAAeRIAAAAAAAAHAgAAAQAAAHshAAAAAAAAtwEAAAEAAAAVAgEAAAAAALcBAAAAAAAAVQEBAAEAAAAFAGL7AAAAABgBAAAwxwkAAAAAAAAAAAB7GsD4AAAAALcGAAAAAAAAe2rI+AAAAAC/oQAAAAAAAAcBAADQ+P//v6IAAAAAAAAHAgAA6Pr//7cDAAAwAAAAhRAAALa8AAC3AQAACAAAAHsaOPkAAAAAe2pA+QAAAAB7ajD5AAAAAHmhKPMAAAAAcxoq+QAAAAB5oTDzAAAAAHMaKfkAAAAAeaE48wAAAABzGij5AAAAAHmhSPMAAAAAexog+QAAAAB5oVDzAAAAAHsaGPkAAAAAeaFA8wAAAAB7GhD5AAAAAHmhWPMAAAAAexoI+QAAAAB5oYDzAAAAAHsaAPkAAAAAv6EAAAAAAAAHAQAAMP3//7+iAAAAAAAABwIAADD0//+FEAAAk1sAAHmnMP0AAAAAFQcBAAQAAAAFAHAAAAAAAHmhOP0AAAAAexp4/AAAAAB7GuD7AAAAAHmhQP0AAAAAexqA/AAAAAB7Guj7AAAAAHmhSP0AAAAAexqI/AAAAAB7GvD7AAAAAL+hAAAAAAAABwEAAGD5//+/ogAAAAAAAAcCAADg+///hRAAAGpbAAB5p2D5AAAAABUHAQAEAAAABQCUAAAAAAB5oWj5AAAAAHsawPsAAAAAexoo+wAAAAB5oXD5AAAAAHsayPsAAAAAexow+wAAAAB5oXj5AAAAAHsa0PsAAAAAexo4+wAAAAB5oYD5AAAAAHsa2PsAAAAAexpA+wAAAAC/oQAAAAAAAAcBAACg8///v6IAAAAAAAAHAgAAKPv//4UQAAAtggAAv6EAAAAAAAAHAQAAMP3//3sa6PcAAAAAtwEAAAQAAAB7GtD3AAAAABgBAACUzQkAAAAAAAAAAAB7Gsj3AAAAALcBAAADAAAAexog+wAAAAC/oQAAAAAAAAcBAADI9///exoY+wAAAAC3AQAAAQAAAHsa8PcAAAAAexrI+AAAAAC/oQAAAAAAAAcBAAAY+///exrA+AAAAAB5oajzAAAAAHsa4PcAAAAAeaGg8wAAAAB7Gtj3AAAAAHmhcPMAAAAAcxow/QAAAAC/pgAAAAAAAAcGAAAo+P//v6IAAAAAAAAHAgAAwPj//79hAAAAAAAAtwMAAIgAAACFEAAAWLwAAL+hAAAAAAAABwEAAJD8//+/YgAAAAAAAHmjePMAAAAAhRAAADN4AAB5p5D8AAAAABUHAQAEAAAABQCNAAAAAAB5ofD7AAAAAAUA5/sAAAAAv6YAAAAAAAAHBgAAMP3//79hAAAAAAAAtwIAANAHAAAFAEAAAAAAAHmiQP0AAAAAeyoY+gAAAAB5o0j9AAAAAHs6IPoAAAAAYaQ0/QAAAAB5pTj9AAAAAHtamPwAAAAAY0qU/AAAAABjGpD8AAAAAHsqoPwAAAAAezqo/AAAAAC/pgAAAAAAAAcGAAAw/f//v6IAAAAAAAAHAgAAkPz//79hAAAAAAAAhRAAABJ1AAB5p2jzAAAAAL9xAAAAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAAzvAAAtwEAAAIAAABzF7gAAAAAAL+hAAAAAAAABwEAAAj3//+FEAAA0I///7+hAAAAAAAABwEAAGD5//+FEAAAzY///wUAMQAAAAAAeaFI/QAAAAB7Goj8AAAAAHmhQP0AAAAAexqA/AAAAAB5oTj9AAAAAHsaePwAAAAAv6YAAAAAAAAHBgAA+Pv//7+iAAAAAAAABwIAAFD9//+/YQAAAAAAALcDAACAAAAAhRAAAB28AAB5oYj8AAAAAHmoaPMAAAAAexgYAAAAAAB5oYD8AAAAAHsYEAAAAAAAeaF4/AAAAAB7GAgAAAAAAL+BAAAAAAAABwEAACAAAAC/YgAAAAAAALcDAACAAAAAhRAAABG8AAC3AQAAAgAAAHMYuAAAAAAAe3gAAAAAAAAFAGX9AAAAAL+mAAAAAAAABwYAADD9//+/YQAAAAAAALcCAADVBwAAhRAAAEN6AAC/pwAAAAAAAAcHAAAI9///v3EAAAAAAAC/YgAAAAAAABgDAADjzwkAAAAAAAAAAAC3BAAADQAAAIUQAADbhP//eaZo8wAAAAC/YQAAAAAAAL9yAAAAAAAAtwMAAKAAAACFEAAA+7sAALcBAAACAAAAcxa4AAAAAAC/oQAAAAAAAAcBAAAY9v//hRAAAACQ//8FALX+AAAAAHmhgPkAAAAAexrY+wAAAAB5oXj5AAAAAHsa0PsAAAAAeaFw+QAAAAB7Gsj7AAAAAHmhaPkAAAAAexrA+wAAAAC/pgAAAAAAAAcGAABI+///v6IAAAAAAAAHAgAAiPn//79hAAAAAAAAtwMAAHgAAACFEAAA5rsAAHmh2PsAAAAAeaho8wAAAAB7GCAAAAAAAHmh0PsAAAAAexgYAAAAAAB5ocj7AAAAAHsYEAAAAAAAeaHA+wAAAAB7GAgAAAAAAL+BAAAAAAAABwEAACgAAAC/YgAAAAAAALcDAAB4AAAAhRAAANi7AAC3AQAAAgAAAHMYuAAAAAAAe3gAAAAAAAC/oQAAAAAAAAcBAADA+P//hRAAAD+a//95ofD7AAAAAAUAiv4AAAAAv6YAAAAAAAAHBgAAMP3//79hAAAAAAAAtwIAANAHAACFEAAABnoAAL+nAAAAAAAABwcAAAj3//+/cQAAAAAAAL9iAAAAAAAAGAMAAETTCQAAAAAAAAAAALcEAAAFAAAABQDC/wAAAAC/pgAAAAAAAAcGAAAY+v//v6IAAAAAAAAHAgAAmPz//79hAAAAAAAAtwMAAJgAAACFEAAAvLsAAHmoaPMAAAAAv4EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAAJgAAACFEAAAtrsAALcBAAACAAAAcxi4AAAAAAB7eAAAAAAAAHmh8PsAAAAABQBr/gAAAAB5oVD9AAAAAHsaMPoAAAAAeaFI/QAAAAB7Gij6AAAAAHmhQP0AAAAAexog+gAAAAB5oTj9AAAAAHsaGPoAAAAAv6YAAAAAAAAHBgAACPf//7+iAAAAAAAABwIAAFj9//+/YQAAAAAAALcDAAB4AAAAhRAAAKK7AAB5oTD6AAAAAHmpaPMAAAAAexkgAAAAAAB5oSj6AAAAAHsZGAAAAAAAeaEg+gAAAAB7GRAAAAAAAHmhGPoAAAAAexkIAAAAAAC/kQAAAAAAAAcBAAAoAAAAv2IAAAAAAAC3AwAAeAAAAIUQAACUuwAAc3m4AAAAAAB7iQAAAAAAAAUAmP8AAAAAv6EAAAAAAAAHAQAAMPT//4UQAADcfgAAeQYYAAAAAAC/pwAAAAAAAAcHAACQ/P//v3EAAAAAAACFEAAAk18AAL9hAAAAAAAAv3IAAAAAAAC3AwAAIAAAAIUQAAAPvAAAFQAsAAAAAAC/qAAAAAAAAAcIAAAw/f//v4EAAAAAAAC3AgAA1AcAAIUQAAC6eQAAv6cAAAAAAAAHBwAACPf//79xAAAAAAAAv4IAAAAAAAAYAwAAmdQJAAAAAAAAAAAAtwQAAAMAAACFEAAAUoT//3lhGAAAAAAAexp4+QAAAAB5YRAAAAAAAHsacPkAAAAAeWEIAAAAAAB7Gmj5AAAAAHlhAAAAAAAAexpg+QAAAAB5oZD8AAAAAHsagPkAAAAAeaGY/AAAAAB7Goj5AAAAAHmhoPwAAAAAexqQ+QAAAAB5oaj8AAAAAHsamPkAAAAAv6YAAAAAAAAHBgAAMP3//7+jAAAAAAAABwMAAGD5//+/YQAAAAAAAL9yAAAAAAAAhRAAAFh0AAB5p2jzAAAAAL9xAAAAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAABbuwAAtwEAAAIAAABzF7gAAAAAAAUAX/8AAAAAv6YAAAAAAAAHBgAAMP3//7+iAAAAAAAABwIAAGD0//+/YQAAAAAAAIUQAABjjv//cadZ/QAAAAC/YQAAAAAAAIUQAADxjv//FQc1AAAAAAC/pgAAAAAAAAcGAACQ/P//v6IAAAAAAAAHAgAAYPT//79hAAAAAAAAhRAAAPVvAAC/YQAAAAAAABgCAACJ0AkAAAAAAAAAAAC3AwAAIAAAAIUQAADNuwAAFQA1AAAAAAC/pwAAAAAAAAcHAAAw/f//v3EAAAAAAAC3AgAABgAAAIUQAACZpv//v6YAAAAAAAAHBgAACPf//79hAAAAAAAAv3IAAAAAAAAYAwAAMtIJAAAAAAAAAAAAtwQAAA0AAACFEAAAEIT//3mhqPwAAAAAexp4+QAAAAB5oaD8AAAAAHsacPkAAAAAeaGY/AAAAAB7Gmj5AAAAAHmhkPwAAAAAexpg+QAAAAAYAQAAxtpUCwAAAADDNkcRexqA+QAAAAAYAQAA0RPwDgAAAAAU33caexqI+QAAAAAYAQAAPekRtwAAAADsv+/6exqQ+QAAAAAYAQAA3Mr4KwAAAABzqr6CexqY+QAAAAC/pwAAAAAAAAcHAAAw/f//v6MAAAAAAAAHAwAAYPn//79xAAAAAAAAv2IAAAAAAACFEAAAEnQAAAUAGf8AAAAAv6YAAAAAAAAHBgAAMP3//79hAAAAAAAAtwIAANAHAACFEAAAT3kAAL+nAAAAAAAABwcAAAj3//+/cQAAAAAAAL9iAAAAAAAAGAMAADLSCQAAAAAAAAAAAAUAC/8AAAAAv6YAAAAAAAAHBgAAMP3//7+iAAAAAAAABwIAAJD0//+/YQAAAAAAAIUQAABijv//cadZ/QAAAAC/YQAAAAAAAIUQAACmjv//FQdiAAAAAAC/pgAAAAAAAAcGAAAw/f//v6IAAAAAAAAHAgAAwPT//79hAAAAAAAAhRAAAFiO//9xp1n9AAAAAL9hAAAAAAAAhRAAAJyO//8VB2UAAAAAAL+mAAAAAAAABwYAADD9//+/ogAAAAAAAAcCAAAg9f//v2EAAAAAAACFEAAATo7//3GnWf0AAAAAv2EAAAAAAACFEAAAko7//xUHaAAAAAAAv6EAAAAAAAAHAQAA8P3//7+iAAAAAAAABwIAANDz//+3AwAAMAAAAIUQAADpugAAv6EAAAAAAAAHAQAAIP7//7+iAAAAAAAABwIAAAD0//+3AwAAMAAAAIUQAADjugAAv6EAAAAAAAAHAQAAUP7//7+iAAAAAAAABwIAADD0//+3AwAAMAAAAIUQAADdugAAv6YAAAAAAAAHBgAAMP3//7+iAAAAAAAABwIAABj2//+/YQAAAAAAALcDAADAAAAAhRAAANa6AAC/oQAAAAAAAAcBAACA/v//v6IAAAAAAAAHAgAAYPT//7cDAAAwAAAAhRAAANC6AAC/oQAAAAAAAAcBAACw/v//v6IAAAAAAAAHAgAAkPT//7cDAAAwAAAAhRAAAMq6AAC/oQAAAAAAAAcBAADg/v//v6IAAAAAAAAHAgAAwPT//7cDAAAwAAAAhRAAAMS6AAC/oQAAAAAAAAcBAAAQ////v6IAAAAAAAAHAgAA8PT//7cDAAAwAAAAhRAAAL66AAC/oQAAAAAAAAcBAABA////v6IAAAAAAAAHAgAAIPX//7cDAAAwAAAAhRAAALi6AAC/oQAAAAAAAAcBAABw////v6IAAAAAAAAHAgAAUPX//7cDAAAwAAAAhRAAALK6AAC/oQAAAAAAAAcBAACg////v6IAAAAAAAAHAgAAgPX//7cDAAAwAAAAhRAAAKy6AAC/oQAAAAAAAAcBAADQ////v6IAAAAAAAAHAgAAsPX//7cDAAAwAAAAhRAAAKa6AAB5oWjzAAAAAL9iAAAAAAAAtwMAANACAACFEAAAoroAAAUA1v0AAAAAv6YAAAAAAAAHBgAAMP3//79hAAAAAAAAtwIAANAHAACFEAAA13gAAL+nAAAAAAAABwcAAAj3//+/cQAAAAAAAL9iAAAAAAAAGAMAAMPUCQAAAAAAAAAAALcEAAAZAAAABQCT/gAAAAC/pgAAAAAAAAcGAAAw/f//v2EAAAAAAAC3AgAA0AcAAIUQAADKeAAAv6cAAAAAAAAHBwAACPf//79xAAAAAAAAv2IAAAAAAAAYAwAA3NQJAAAAAAAAAAAAtwQAACIAAAAFAIb+AAAAAL+mAAAAAAAABwYAADD9//+/YQAAAAAAALcCAADQBwAAhRAAAL14AAC/pwAAAAAAAAcHAAAI9///v3EAAAAAAAC/YgAAAAAAABgDAAD+1AkAAAAAAAAAAAC3BAAAHQAAAAUAef4AAAAAvxYAAAAAAAB5IQgAAAAAALcDAAAIAAAALRMJAAAAAAB5IQAAAAAAAHkRAAAAAAAAGAMAAITki7gAAAAAcORs8B0xAQAAAAAABQAHAAAAAAC/YQAAAAAAAIUQAABOAAAABQBMAAAAAAC/YQAAAAAAALcCAAC5CwAAhRAAAKV4AAAFAEgAAAAAAL+hAAAAAAAABwEAAND///8YAgAAxM0JAAAAAAAAAAAAhRAAAHB3AAC3AQAAugsAAIUQAACbeAAAvwcAAAAAAAC3AQAAAQAAAHsa8P8AAAAAtwkAAAAAAAB7mvj/AAAAAHua6P8AAAAAv6gAAAAAAAAHCAAAkP7//7+iAAAAAAAABwIAAOj///+/gQAAAAAAABgDAAA4HQoAAAAAAAAAAACFEAAAtKYAABgBAADEzQkAAAAAAAAAAAC/ggAAAAAAAIUQAADBeAAAFQALAAAAAAC/owAAAAAAAAcDAAAw////GAEAAJTLCQAAAAAAAAAAALcCAAA3AAAAGAQAAGgdCgAAAAAAAAAAABgFAACIHQoAAAAAAAAAAACFEAAAGKIAAIUQAAD/////eaHQ/wAAAAB7GlD/AAAAAHmh2P8AAAAAexpY/wAAAAB5oeD/AAAAAHsaYP8AAAAAY3rI/wAAAAB5oej/AAAAAHsaaP8AAAAAeaHw/wAAAAB7GnD/AAAAAHmh+P8AAAAAexp4/wAAAAC3AQAAAgAAAHMagP8AAAAAtwEAAAMAAABjGkj/AAAAALcBAAAsAAAAexpA/wAAAAAYAQAAUdUJAAAAAAAAAAAAexo4/wAAAAB7mjD/AAAAAL+nAAAAAAAABwcAAJD+//+/ogAAAAAAAAcCAAAw////v3EAAAAAAACFEAAA/nIAAL9hAAAAAAAAv3IAAAAAAAAYAwAAfdUJAAAAAAAAAAAAtwQAAAkAAACFEAAA/IL//5UAAAAAAAAAvyMAAAAAAAC/FgAAAAAAAHkyCAAAAAAAJQIFAAcAAAC3AQAACAAAABgDAAAAIwoAAAAAAAAAAACFEAAAK64AAIUQAAD/////FQJzAAgAAAB5OQAAAAAAAHGXCAAAAAAAc3ro/gAAAAC3AQAAAgAAAC1xHgAAAAAAGAEAADiiCQAAAAAAAAAAAHsaEP8AAAAAv6EAAAAAAAAHAQAA6P7//3saCP8AAAAAv6EAAAAAAAAHAQAACP///3sagP8AAAAAtwEAAAEAAAB7Goj/AAAAAHsaeP8AAAAAGAEAAEAeCgAAAAAAAAAAAHsacP8AAAAAtwEAAAAAAAB7GmD/AAAAAL+hAAAAAAAABwEAADj///+/ogAAAAAAAAcCAABg////hRAAAHiRAAC3AQAAGAAAALcCAAAIAAAAhRAAAAErAABVAHQAAAAAALcBAAAYAAAAtwIAAAgAAACFEAAAS5EAAIUQAAD/////vyEAAAAAAAAHAQAA9////7cDAAAgAAAALRNMAAAAAAC/kQAAAAAAAAcBAAAJAAAAeZMPAAAAAABxlBcAAAAAAHNKaP8AAAAAezpg/wAAAAB5pGH/AAAAAGEVAAAAAAAAY1rg/gAAAABpEQQAAAAAAGsa5P4AAAAAeZEYAAAAAAB7Gsj+AAAAAHmRIAAAAAAAexrQ/gAAAABxkSgAAAAAAHMa2P4AAAAAFQI6ACkAAAC/KAAAAAAAAAcIAADW////v5AAAAAAAAAHAAAAKgAAAHGRKQAAAAAAcxo3/wAAAAAVASAAAAAAABUBAQABAAAABQA1AAAAAAC3BQAAIAAAAC2FLwAAAAAAeZgwAAAAAABxlTgAAAAAAHNaaP8AAAAAe4pg/wAAAAB7SsD+AAAAAHmkYf8AAAAAYQUAAAAAAABjWjD/AAAAAGkFBAAAAAAAa1o0/wAAAABxlUkAAAAAAHtauP4AAAAAeZBBAAAAAAB5lTkAAAAAAHOKIP8AAAAAe1oI/wAAAAB7ChD/AAAAAHmluP4AAAAAc1oY/wAAAAAHAgAAtv///wcJAABKAAAAe0oh/wAAAAB3BAAAOAAAAHtKuP4AAAAAeaTA/gAAAAB5pSD/AAAAAL+QAAAAAAAAvygAAAAAAABhojD/AAAAAGMqAP8AAAAAaaI0/wAAAABrKgT/AAAAAHmiCP8AAAAAeyro/gAAAAB5ohD/AAAAAHsq8P4AAAAAcaIY/wAAAABzKvj+AAAAALcCAAAgAAAALYIHAAAAAAB5CQYAAAAAAHECDgAAAAAAcypo/wAAAAB7mmD/AAAAAFcIAADg////FQgBACAAAAAFAEgAAAAAABgBAAAIHQoAAAAAAAAAAACFEAAAEowAAAUAJwAAAAAAGAEAADiiCQAAAAAAAAAAAHsaWP8AAAAAv6EAAAAAAAAHAQAAN////3saUP8AAAAAtwEAAAEAAAB7Goj/AAAAAL+hAAAAAAAABwEAAFD///97GoD/AAAAALcBAAACAAAAexp4/wAAAAAYAQAAAB8KAAAAAAAAAAAAexpw/wAAAAC3AQAAAAAAAHsaYP8AAAAAv6EAAAAAAAAHAQAAOP///7+iAAAAAAAABwIAAGD///+FEAAABZEAALcBAAAYAAAAtwIAAAgAAACFEAAAjioAAFUAAQAAAAAABQCM/wAAAAB5oUj/AAAAAHsQEAAAAAAAeaFA/wAAAAB7EAgAAAAAAHmhOP8AAAAAexAAAAAAAAC3AQAAFAAAAL8CAAAAAAAAGAMAAIAcCgAAAAAAAAAAAIUQAADbjQAAvwcAAAAAAAC/oQAAAAAAAAcBAABg////twIAALsLAACFEAAArncAAL9xAAAAAAAAVwEAAAMAAABVAQ8AAQAAAHlxBwAAAAAAeRIAAAAAAAB5cf//AAAAAI0AAAACAAAAeXMHAAAAAAAHBwAA/////3kyCAAAAAAAFQIDAAAAAAB5cQAAAAAAAHkzEAAAAAAAhRAAAHAqAAC/cQAAAAAAALcCAAAYAAAAtwMAAAgAAACFEAAAbCoAAL+iAAAAAAAABwIAAGD///+/YQAAAAAAALcDAACgAAAAhRAAAFy5AACVAAAAAAAAAHtawP4AAAAAeaJh/wAAAAB7KrD+AAAAALcCAAABAAAAVQcBAAAAAAC3AgAAAAAAAHkHJgAAAAAAcQUuAAAAAABzWkD/AAAAAGGl4P4AAAAAY1oI/wAAAABppeT+AAAAAGtaDP8AAAAAeaXI/gAAAAB7WmD/AAAAAHml0P4AAAAAe1po/wAAAABxpdj+AAAAAHNacP8AAAAAe3o4/wAAAAB5qDn/AAAAAGmlBP8AAAAAa1ZuAAAAAABhpQD/AAAAAGNWagAAAAAAcaX4/gAAAABzWkj/AAAAAHml8P4AAAAAe1pA/wAAAAB5pej+AAAAAHtaOP8AAAAAaQUEAAAAAABrViwAAAAAAGEFAAAAAAAAY1YoAAAAAABhBSAAAAAAAGNWSAAAAAAAaQUkAAAAAABrVkwAAAAAAGmlDP8AAAAAa1YMAAAAAABhpQj/AAAAAGNWCAAAAAAAe0YPAAAAAABzNg4AAAAAAHmjYP8AAAAAezYXAAAAAAB5o2j/AAAAAHs2HwAAAAAAcaNw/wAAAABzNicAAAAAAHmjsP4AAAAAezYvAAAAAABzli4AAAAAAHkDDwAAAAAAezY3AAAAAAB5AxcAAAAAAHs2PwAAAAAAcQMfAAAAAABzNkcAAAAAAHuGTwAAAAAAc3ZOAAAAAABxAz8AAAAAAHM2ZwAAAAAAeQM3AAAAAAB7Nl8AAAAAAHkDLwAAAAAAezZXAAAAAABzJmgAAAAAAHmiwP4AAAAAeyZwAAAAAAB5orj+AAAAAHMmeAAAAAAAcxZpAAAAAAB5oTj/AAAAAHsWeQAAAAAAeaFA/wAAAAB7FoEAAAAAAHGhSP8AAAAAcxaJAAAAAAC3AQAABAAAAHsWAAAAAAAABQCs/wAAAAC/FgAAAAAAAHkhCAAAAAAAtwMAAAgAAAAtEwkAAAAAAHkhAAAAAAAAeREAAAAAAAAYAwAA9DYx/QAAAAC4LvmfHTEBAAAAAAAFAAcAAAAAAL9hAAAAAAAAhRAAAE4AAAAFAEwAAAAAAL9hAAAAAAAAtwIAALkLAACFEAAAM3cAAAUASAAAAAAAv6EAAAAAAAAHAQAA0P///xgCAADEzQkAAAAAAAAAAACFEAAA/nUAALcBAAC6CwAAhRAAACl3AAC/BwAAAAAAALcBAAABAAAAexrw/wAAAAC3CQAAAAAAAHua+P8AAAAAe5ro/wAAAAC/qAAAAAAAAAcIAACQ/v//v6IAAAAAAAAHAgAA6P///7+BAAAAAAAAGAMAADgdCgAAAAAAAAAAAIUQAABCpQAAGAEAAMTNCQAAAAAAAAAAAL+CAAAAAAAAhRAAAE93AAAVAAsAAAAAAL+jAAAAAAAABwMAADD///8YAQAAlMsJAAAAAAAAAAAAtwIAADcAAAAYBAAAaB0KAAAAAAAAAAAAGAUAAIgdCgAAAAAAAAAAAIUQAACmoAAAhRAAAP////95odD/AAAAAHsaUP8AAAAAeaHY/wAAAAB7Glj/AAAAAHmh4P8AAAAAexpg/wAAAABjesj/AAAAAHmh6P8AAAAAexpo/wAAAAB5ofD/AAAAAHsacP8AAAAAeaH4/wAAAAB7Gnj/AAAAALcBAAACAAAAcxqA/wAAAAC3AQAAAwAAAGMaSP8AAAAAtwEAADEAAAB7GkD/AAAAABgBAAAn0AkAAAAAAAAAAAB7Gjj/AAAAAHuaMP8AAAAAv6cAAAAAAAAHBwAAkP7//7+iAAAAAAAABwIAADD///+/cQAAAAAAAIUQAACMcQAAv2EAAAAAAAC/cgAAAAAAABgDAACG1QkAAAAAAAAAAAC3BAAADQAAAIUQAACKgf//lQAAAAAAAAC/IwAAAAAAAL8WAAAAAAAAeTIIAAAAAAAlAgUABwAAALcBAAAIAAAAGAMAABgjCgAAAAAAAAAAAIUQAAC5rAAAhRAAAP////9XAgAA+P///xUCBgAIAAAAeTEAAAAAAAB5EQgAAAAAALcCAAAEAAAAeyYAAAAAAAB7FggAAAAAAAUAIAAAAAAAGAEAAAgdCgAAAAAAAAAAAIUQAAAMiwAAvwcAAAAAAAC/oQAAAAAAAAcBAABg////twIAALsLAACFEAAA0HYAAL9xAAAAAAAAVwEAAAMAAABVARAAAQAAAHlxBwAAAAAAeRIAAAAAAAB5cf//AAAAAI0AAAACAAAAv3gAAAAAAAAHCAAA/////3lzBwAAAAAAeTIIAAAAAAAVAgMAAAAAAHmBAAAAAAAAeTMQAAAAAACFEAAAkSkAAL+BAAAAAAAAtwIAABgAAAC3AwAACAAAAIUQAACNKQAAv6IAAAAAAAAHAgAAYP///79hAAAAAAAAtwMAAKAAAACFEAAAfbgAAJUAAAAAAAAAvxYAAAAAAAB5IQgAAAAAALcDAAAIAAAALRMJAAAAAAB5IQAAAAAAAHkRAAAAAAAAGAMAAMrxQboAAAAAbuvuUB0xAQAAAAAABQAHAAAAAAC/YQAAAAAAAIUQAABOAAAABQBMAAAAAAC/YQAAAAAAALcCAAC5CwAAhRAAAKd2AAAFAEgAAAAAAL+hAAAAAAAABwEAAND///8YAgAAxM0JAAAAAAAAAAAAhRAAAHJ1AAC3AQAAugsAAIUQAACddgAAvwcAAAAAAAC3AQAAAQAAAHsa8P8AAAAAtwkAAAAAAAB7mvj/AAAAAHua6P8AAAAAv6gAAAAAAAAHCAAAkP7//7+iAAAAAAAABwIAAOj///+/gQAAAAAAABgDAAA4HQoAAAAAAAAAAACFEAAAtqQAABgBAADEzQkAAAAAAAAAAAC/ggAAAAAAAIUQAADDdgAAFQALAAAAAAC/owAAAAAAAAcDAAAw////GAEAAJTLCQAAAAAAAAAAALcCAAA3AAAAGAQAAGgdCgAAAAAAAAAAABgFAACIHQoAAAAAAAAAAACFEAAAGqAAAIUQAAD/////eaHQ/wAAAAB7GlD/AAAAAHmh2P8AAAAAexpY/wAAAAB5oeD/AAAAAHsaYP8AAAAAY3rI/wAAAAB5oej/AAAAAHsaaP8AAAAAeaHw/wAAAAB7GnD/AAAAAHmh+P8AAAAAexp4/wAAAAC3AQAAAgAAAHMagP8AAAAAtwEAAAoAAABjGkj/AAAAALcBAAAwAAAAexpA/wAAAAAYAQAArdUJAAAAAAAAAAAAexo4/wAAAAB7mjD/AAAAAL+nAAAAAAAABwcAAJD+//+/ogAAAAAAAAcCAAAw////v3EAAAAAAACFEAAAAHEAAL9hAAAAAAAAv3IAAAAAAAAYAwAA3dUJAAAAAAAAAAAAtwQAAAwAAACFEAAA/oD//5UAAAAAAAAAvyMAAAAAAAC/GQAAAAAAAHkyCAAAAAAAJQIFAAcAAAC3AQAACAAAABgDAABAIwoAAAAAAAAAAACFEAAALawAAIUQAAD/////vyEAAAAAAAAHAQAA+P///7cEAAAgAAAALRQHAAAAAAB5NgAAAAAAAHlhDgAAAAAAcWQWAAAAAABzSmj/AAAAAHsaYP8AAAAAFQIBACgAAAAFACEAAAAAABgBAAAIHQoAAAAAAAAAAACFEAAAfYoAAL8HAAAAAAAAe3o4/wAAAAC/oQAAAAAAAAcBAABg////twIAALsLAACFEAAAQHYAAL9xAAAAAAAAVwEAAAMAAABVAQ8AAQAAAHlxBwAAAAAAeRIAAAAAAAB5cf//AAAAAI0AAAACAAAAeXMHAAAAAAAHBwAA/////3kyCAAAAAAAFQIDAAAAAAB5cQAAAAAAAHkzEAAAAAAAhRAAAAIpAAC/cQAAAAAAALcCAAAYAAAAtwMAAAgAAACFEAAA/igAAL+iAAAAAAAABwIAAGD///+/kQAAAAAAALcDAACgAAAAhRAAAO63AACVAAAAAAAAAL8kAAAAAAAABwQAANf///+3BwAAIAAAAC1H2/8AAAAAeaNh/wAAAABxZSgAAAAAAHlkLwAAAAAAcWg3AAAAAABzimj/AAAAAHtKYP8AAAAAvygAAAAAAAAHCAAAt////y2H0v8AAAAAe5oo/wAAAAB5p2H/AAAAAHloTwAAAAAAcWlXAAAAAABzmmj/AAAAAHuKYP8AAAAAFQKWAGkAAAB7WhD/AAAAAHt6IP8AAAAAealh/wAAAABxZWkAAAAAAHNaN/8AAAAAtwcAAAMAAAB7Whj/AAAAAC1XHwAAAAAAGAEAAPhbAAAAAAAAAAAAAHsaWP8AAAAAv6EAAAAAAAAHAQAAN////3saUP8AAAAAv6EAAAAAAAAHAQAAUP///3sagP8AAAAAtwEAAAEAAAB7Goj/AAAAAHsaeP8AAAAAGAEAADAjCgAAAAAAAAAAAHsacP8AAAAAtwEAAAAAAAB7GmD/AAAAAL+hAAAAAAAABwEAADj///+/ogAAAAAAAAcCAABg////hRAAADiPAAC3AQAAGAAAALcCAAAIAAAAhRAAAMEoAAB5qSj/AAAAAFUAegAAAAAAtwEAABgAAAC3AgAACAAAAIUQAAAKjwAAhRAAAP////+/JwAAAAAAAFcHAAD+////FQdsAGoAAAB7mgj/AAAAAL8nAAAAAAAABwcAAJT///+3CQAAIAAAAC15ZwAAAAAAaWlqAAAAAAB5ZXIAAAAAAHFnegAAAAAAc3po/wAAAAB7WmD/AAAAAAcCAAB0////twcAAAgAAAAtJ18AAAAAAL9nAAAAAAAABwcAAAgAAAC/YgAAAAAAAAcCAAAXAAAAv2AAAAAAAAAHAAAAKQAAAHsKyP4AAAAAv2AAAAAAAAAHAAAAOAAAAHsK0P4AAAAAv2AAAAAAAAAHAAAASQAAAHsK2P4AAAAAv2AAAAAAAAAHAAAAWAAAAHsK4P4AAAAAezro/gAAAAC/YwAAAAAAAAcDAABsAAAAe1r4/gAAAAB5pWH/AAAAAHtaAP8AAAAAeWWMAAAAAAB7mvD+AAAAAGl5BAAAAAAAa5o8/wAAAABhdwAAAAAAAGN6OP8AAAAAcScQAAAAAAB5oCj/AAAAAHNwJwAAAAAAeScIAAAAAAB7cB8AAAAAAHkiAAAAAAAAeyAXAAAAAAB5p8j+AAAAAGlyBAAAAAAAayAsAAAAAABhcgAAAAAAAGMgKAAAAAAAeafQ/gAAAABxchAAAAAAAHMgRwAAAAAAeXIIAAAAAAB7ID8AAAAAAHlyAAAAAAAAeyA3AAAAAAB5p9j+AAAAAGFyAAAAAAAAYyBIAAAAAABpcgQAAAAAAGsgTAAAAAAAeafg/gAAAAB5cgAAAAAAAHsgVwAAAAAAeXIIAAAAAAB7IF8AAAAAAHFyEAAAAAAAcyBnAAAAAABhMgAAAAAAAGMgaAAAAAAAaTIEAAAAAABrIGwAAAAAAHFiiwAAAAAAcyCHAAAAAAB5YoMAAAAAAHsgfwAAAAAAeWJ7AAAAAAB7IHcAAAAAAHMaPv8AAAAAeaHo/gAAAAB7Gj//AAAAAHsQDwAAAAAAeaE4/wAAAAB7EAgAAAAAAHmhGP8AAAAAcxCTAAAAAAB5oRD/AAAAAHMQkgAAAAAAeaHw/gAAAABrEJAAAAAAAHtQiAAAAAAAeaEA/wAAAAB7EG8AAAAAAHmh+P4AAAAAcxBuAAAAAAB5oQj/AAAAAHsQTwAAAAAAc4BOAAAAAAB5oSD/AAAAAHsQLwAAAAAAc0AuAAAAAAC3AQAABAAAAHsQAAAAAAAABQBV/wAAAAAYAQAACB0KAAAAAAAAAAAAhRAAALKJAAC/BwAAAAAAAHt6OP8AAAAAeako/wAAAAAFADP/AAAAAHmhSP8AAAAAexAQAAAAAAB5oUD/AAAAAHsQCAAAAAAAeaE4/wAAAAB7EAAAAAAAALcBAAAUAAAAvwIAAAAAAAAYAwAAgBwKAAAAAAAAAAAAhRAAAJSLAAAFACX/AAAAAL8WAAAAAAAAeSEIAAAAAAC3AwAACAAAAC0TCQAAAAAAeSEAAAAAAAB5EQAAAAAAABgDAAADFQ22AAAAAKeVgHYdMQEAAAAAAAUABwAAAAAAv2EAAAAAAACFEAAATgAAAAUATAAAAAAAv2EAAAAAAAC3AgAAuQsAAIUQAABbdQAABQBIAAAAAAC/oQAAAAAAAAcBAADQ////GAIAAMTNCQAAAAAAAAAAAIUQAAAmdAAAtwEAALoLAACFEAAAUXUAAL8HAAAAAAAAtwEAAAEAAAB7GvD/AAAAALcJAAAAAAAAe5r4/wAAAAB7muj/AAAAAL+oAAAAAAAABwgAAJD+//+/ogAAAAAAAAcCAADo////v4EAAAAAAAAYAwAAOB0KAAAAAAAAAAAAhRAAAGqjAAAYAQAAxM0JAAAAAAAAAAAAv4IAAAAAAACFEAAAd3UAABUACwAAAAAAv6MAAAAAAAAHAwAAMP///xgBAACUywkAAAAAAAAAAAC3AgAANwAAABgEAABoHQoAAAAAAAAAAAAYBQAAiB0KAAAAAAAAAAAAhRAAAM6eAACFEAAA/////3mh0P8AAAAAexpQ/wAAAAB5odj/AAAAAHsaWP8AAAAAeaHg/wAAAAB7GmD/AAAAAGN6yP8AAAAAeaHo/wAAAAB7Gmj/AAAAAHmh8P8AAAAAexpw/wAAAAB5ofj/AAAAAHsaeP8AAAAAtwEAAAIAAABzGoD/AAAAALcBAAAWAAAAYxpI/wAAAAC3AQAAMQAAAHsaQP8AAAAAGAEAAFjQCQAAAAAAAAAAAHsaOP8AAAAAe5ow/wAAAAC/pwAAAAAAAAcHAACQ/v//v6IAAAAAAAAHAgAAMP///79xAAAAAAAAhRAAALRvAAC/YQAAAAAAAL9yAAAAAAAAGAMAAOnVCQAAAAAAAAAAALcEAAANAAAAhRAAALJ///+VAAAAAAAAAL8jAAAAAAAAvxYAAAAAAAB5MggAAAAAACUCBQAHAAAAtwEAAAgAAAAYAwAAWCMKAAAAAAAAAAAAhRAAAOGqAACFEAAA/////3k1AAAAAAAAv1cAAAAAAAAHBwAACAAAAHt6OP4AAAAAvyEAAAAAAAAHAQAA+P///3saQP4AAAAAtwAAACAAAAAtEEUAAAAAAL8oAAAAAAAABwgAANj///97ikD+AAAAAL9UAAAAAAAABwQAACgAAAB7Sjj+AAAAAHlRDgAAAAAAcVMWAAAAAABzOjj/AAAAAHsaMP8AAAAAeaMx/wAAAABheQAAAAAAAGOaCP8AAAAAaXcEAAAAAABregz/AAAAAHlXFwAAAAAAe3rw/gAAAAB5Vx8AAAAAAHt6+P4AAAAAcVcnAAAAAABzegD/AAAAAC2ALwAAAAAAv1AAAAAAAAAHAAAASAAAAHsKOP4AAAAAvyAAAAAAAAAHAAAAuP///3sKQP4AAAAAeVkuAAAAAABxVzYAAAAAAHN6OP8AAAAAe5ow/wAAAAB5qDH/AAAAAGFHAAAAAAAAY3oo/wAAAABpRAQAAAAAAGtKLP8AAAAAeVQ3AAAAAAB7ShD/AAAAAHlUPwAAAAAAe0oY/wAAAABxVEcAAAAAAHNKIP8AAAAAFQAZAAAAAABxUEgAAAAAAL9UAAAAAAAABwQAAEkAAAB7Sjj+AAAAAL8kAAAAAAAABwQAALf///97SkD+AAAAAHMKL/8AAAAAVQAwAAAAAAAVBA8AAAAAAHuKMP4AAAAAvyAAAAAAAAAHAAAAtv///3FXSQAAAAAAewpA/gAAAAC/VAAAAAAAAAcEAABKAAAAe0o4/gAAAABzetf/AAAAABUHdAAAAAAAFQcBAAEAAAAFAD4AAAAAALcEAAAIAAAALQQBAAAAAAAFAGYAAAAAABgBAAAIHQoAAAAAAAAAAACFEAAA7ogAAL8HAAAAAAAAv6EAAAAAAAAHAQAAMP///7cCAAC7CwAAhRAAALJ0AAC/cQAAAAAAAFcBAAADAAAAVQEPAAEAAAB5cQcAAAAAAHkSAAAAAAAAeXH//wAAAACNAAAAAgAAAHlzBwAAAAAABwcAAP////95MggAAAAAABUCAwAAAAAAeXEAAAAAAAB5MxAAAAAAAIUQAAB0JwAAv3EAAAAAAAC3AgAAGAAAALcDAAAIAAAAhRAAAHAnAAC/ogAAAAAAAAcCAAAw////v2EAAAAAAAC3AwAAoAAAAIUQAABgtgAAlQAAAAAAAAAYAQAA+FsAAAAAAAAAAAAAexr4/wAAAAC/oQAAAAAAAAcBAAAv////exrw/wAAAAC/oQAAAAAAAAcBAADw////expQ/wAAAAC3AQAAAQAAAHsaWP8AAAAAexpI/wAAAAAYAQAAMCMKAAAAAAAAAAAAexpA/wAAAAC3AQAAAAAAAHsaMP8AAAAAv6EAAAAAAAAHAQAA2P///7+iAAAAAAAABwIAADD///+FEAAAxo0AALcBAAAYAAAAtwIAAAgAAACFEAAATycAAFUAIAAAAAAABQAbAAAAAAAYAQAAOKIJAAAAAAAAAAAAexr4/wAAAAC/oQAAAAAAAAcBAADX////exrw/wAAAAC3AQAAAQAAAHsaWP8AAAAAv6EAAAAAAAAHAQAA8P///3saUP8AAAAAtwEAAAIAAAB7Gkj/AAAAABgBAAAAHwoAAAAAAAAAAAB7GkD/AAAAALcBAAAAAAAAexow/wAAAAC/oQAAAAAAAAcBAADY////v6IAAAAAAAAHAgAAMP///4UQAACqjQAAtwEAABgAAAC3AgAACAAAAIUQAAAzJwAAVQAEAAAAAAC3AQAAGAAAALcCAAAIAAAAhRAAAH2NAACFEAAA/////3mh6P8AAAAAexAQAAAAAAB5oeD/AAAAAHsQCAAAAAAAeaHY/wAAAAB7EAAAAAAAALcBAAAUAAAAvwIAAAAAAAAYAwAAgBwKAAAAAAAAAAAAhRAAAH2KAAAFAJ3/AAAAALcHAAABAAAAeVRKAAAAAAB7Shj+AAAAAAcCAACu////eypA/gAAAAAHBQAAUgAAAHtaOP4AAAAAv1QAAAAAAAC/IAAAAAAAALcFAAAgAAAALQU0AAAAAAB7eij+AAAAAL8CAAAAAAAABwIAAOD///97KkD+AAAAAL9HAAAAAAAABwcAACAAAAB7eiD+AAAAAHt6OP4AAAAAeUgGAAAAAABxRw4AAAAAAHN6OP8AAAAAe4ow/wAAAAAtJScAAAAAAHmiMf8AAAAAeyoQ/gAAAAC/QgAAAAAAAAcCAABAAAAAeyo4/gAAAAC/AgAAAAAAAAcCAADA////eypA/gAAAAB5RyYAAAAAAHFFLgAAAAAAc1o4/wAAAAB7ejD/AAAAALcFAAAIAAAALSUZAAAAAAB7egj+AAAAAHuK+P0AAAAAeaIx/wAAAAB7KgD+AAAAAHlHQAAAAAAAv0IAAAAAAAAHAgAASAAAAHsqOP4AAAAAvwIAAAAAAAAHAgAAuP///3sqQP4AAAAAtwUAAAIAAAAtJQwAAAAAAHt68P0AAAAAaUJIAAAAAAB7Kuj9AAAAAL9FAAAAAAAABwUAAEoAAAB7Wjj+AAAAAL8CAAAAAAAABwIAALb///97KkD+AAAAALcHAAAgAAAALScBAAAAAAAFAAYAAAAAABgBAAAIHQoAAAAAAAAAAACFEAAASYgAAL8HAAAAAAAAe3rg/gAAAAAFAFn/AAAAAL9HAAAAAAAABwcAAA8AAAC/SAAAAAAAAAcIAAAvAAAABwAAAJb///97CkD+AAAAAL9CAAAAAAAABwIAAGoAAAB7Kjj+AAAAAHlAUAAAAAAAcUJYAAAAAABzKjj/AAAAAGGiCP8AAAAAYyrg/gAAAABpogz/AAAAAGsq5P4AAAAAeaLw/gAAAAB7Ksf+AAAAAHmi+P4AAAAAeyrP/gAAAABxogD/AAAAAHMq1/4AAAAAewrY/QAAAAB7CjD/AAAAAHmiMf8AAAAAeyrg/QAAAABhoij/AAAAAGMq2P4AAAAAaaIs/wAAAABrKtz+AAAAAHGiIP8AAAAAcyq4/gAAAAB5ohj/AAAAAHsqsP4AAAAAeaIQ/wAAAAB7Kqj+AAAAAHs65/4AAAAAcxrm/gAAAAB5oeD+AAAAAHsa0P0AAAAAYaHr/gAAAABjGsP+AAAAAGGh6P4AAAAAYxrA/gAAAABpQQQAAAAAAGsapP4AAAAAYUEAAAAAAABjGqD+AAAAAHFxEAAAAAAAcxqY/gAAAAB5cQgAAAAAAHsakP4AAAAAeXEAAAAAAAB7Goj+AAAAAHmiIP4AAAAAaSEEAAAAAABrGoT+AAAAAGEhAAAAAAAAYxqA/gAAAABxgRAAAAAAAHMaeP4AAAAAeYEIAAAAAAB7GnD+AAAAAHmBAAAAAAAAexpo/gAAAABpUQQAAAAAAGsaZP4AAAAAYVEAAAAAAABjGmD+AAAAAHFBaQAAAAAAcxpY/gAAAAB5QWEAAAAAAHsaUP4AAAAAeUFZAAAAAAB7Gkj+AAAAALcBAADAAAAAtwIAAAgAAACFEAAAjyYAAFUABAAAAAAAtwEAAMAAAAC3AgAACAAAAIUQAADZjAAAhRAAAP////95odD9AAAAAHsQAAAAAAAAeaHA/gAAAAB7EAgAAAAAAHmhyP4AAAAAexAQAAAAAAB5odD+AAAAAHsQGAAAAAAAeaHW/gAAAAB7EB4AAAAAAHmhMP4AAAAAexAnAAAAAABzkCYAAAAAAHmhqP4AAAAAexAvAAAAAAB5obD+AAAAAHsQNwAAAAAAcaG4/gAAAABzED8AAAAAAGGhoP4AAAAAYxBAAAAAAABpoaT+AAAAAGsQRAAAAAAAeaEQ/gAAAAB7EEcAAAAAAHmh+P0AAAAAcxBGAAAAAAB5oYj+AAAAAHsQTwAAAAAAeaGQ/gAAAAB7EFcAAAAAAHGhmP4AAAAAcxBfAAAAAABpoYT+AAAAAGGigP4AAAAAeaMI/gAAAABzMGYAAAAAAHmjAP4AAAAAezBnAAAAAABjIGAAAAAAAGsQZAAAAAAAeaFo/gAAAAB7EG8AAAAAAHmhcP4AAAAAexB3AAAAAABxoXj+AAAAAHMQfwAAAAAAYaFg/gAAAABjEIAAAAAAAGmhZP4AAAAAeaLY/QAAAABzIIYAAAAAAHmi4P0AAAAAeyCHAAAAAABrEIQAAAAAAHmhSP4AAAAAexCPAAAAAAB5oVD+AAAAAHsQlwAAAAAAcaFY/gAAAABzEJ8AAAAAAHmhKP4AAAAAexCgAAAAAAB5oRj+AAAAAHsQqAAAAAAAeaHw/QAAAAB7ELAAAAAAAHmh6P0AAAAAvwgAAAAAAABrELgAAAAAAL+hAAAAAAAABwEAADD///+/ogAAAAAAAAcCAAA4/v//hRAAANSY//95pzD/AAAAAHmhOP8AAAAAFQEIAAAAAAB5okD/AAAAAHsmIAAAAAAAexYYAAAAAAB7dhAAAAAAAHuGCAAAAAAAtwEAAAQAAAB7FgAAAAAAAAUAy/4AAAAAv4EAAAAAAAC3AgAAwAAAALcDAAAIAAAAhRAAADImAAAFAKv+AAAAAL9XAAAAAAAAv0gAAAAAAAC/NgAAAAAAAL8pAAAAAAAAexoY/gAAAAC/kQAAAAAAABgCAAD21QkAAAAAAAAAAAC3AwAAIAAAAIUQAACmtQAAVQAJAAAAAAB7ihD+AAAAAHlxCPAAAAAAtwIAAAgAAAAtEgEAAAAAAAUAIQAAAAAAv6EAAAAAAAAHAQAAIP7//7cCAABkAAAABQADAAAAAAC/oQAAAAAAAAcBAAAg/v//twIAAAQQAACFEAAASXMAAHmhIP4AAAAAVQEEAAQAAAC3AQAAFgAAAHmiGP4AAAAAYxIAAAAAAAAFABIAAAAAAL+nAAAAAAAABwcAAMD+//+/ogAAAAAAAAcCAAAg/v//v3EAAAAAAAC3AwAAoAAAAIUQAAABtQAAv3EAAAAAAACFEAAA8G0AAL+oAAAAAAAABwgAAGD///+/gQAAAAAAAL9yAAAAAAAAtwMAAKAAAACFEAAA+bQAAHmhGP4AAAAAv4IAAAAAAACFEAAAHHAAAJUAAAAAAAAAeXUA8AAAAAAHAQAA+P///79SAAAAAAAABwIAAAgAAABxUwcAAAAAAHs6+P0AAAAAcVMGAAAAAAB7OgD+AAAAAHFTBQAAAAAAezoI/gAAAABxUAQAAAAAAHFXAwAAAAAAcVMCAAAAAABxVAEAAAAAAHFVAAAAAAAAZQUcAJgAAABlBTcAPgAAABUFggALAAAAFQWYABMAAAAVBQEAPQAAAAUAIgEAAAAAVQQhAVUAAABVAyABiAAAAL9zAAAAAAAAVQMeAX8AAAC/AwAAAAAAAFUDHAEeAAAAeaMI/gAAAABVAxoBdgAAAHmjAP4AAAAAVQMYASUAAAB5o/j9AAAAABUDAQB+AAAABQAVAQAAAAB7KgDwAAAAAHsaCPAAAAAAv6EAAAAAAAAHAQAAIP7//7+lAAAAAAAAv5IAAAAAAAC/YwAAAAAAAHmkEP4AAAAAhRAAABIDAAAFALv/AAAAAGUFMgCuAAAAFQWUAJkAAAAVBaoApgAAABUFAQCnAAAABQAGAQAAAABVBAUBPQAAAFUDBAEJAAAAv3MAAAAAAABVAwIBIwAAAL8DAAAAAAAAVQMAAcAAAAB5owj+AAAAAFUD/gApAAAAeaMA/gAAAABVA/wAQAAAAHmj+P0AAAAAFQMBALIAAAAFAPkAAAAAAHsqAPAAAAAAexoI8AAAAAC/oQAAAAAAAAcBAAAg/v//v6UAAAAAAAC/kgAAAAAAAL9jAAAAAAAAeaQQ/gAAAACFEAAAowYAAAUAn/8AAAAAZQUxAE8AAAAVBaYAPwAAABUFAQBAAAAABQDrAAAAAAC/QQAAAAAAAFUB6QD0AAAAvzEAAAAAAABVAecAvAAAAL9xAAAAAAAAVQHlAHgAAAC/AQAAAAAAAFUB4wCnAAAAeaEI/gAAAABVAeEA6QAAAHmhAP4AAAAAVQHfAGkAAAB5ofj9AAAAABUBAQAKAAAABQDcAAAAAAC/oQAAAAAAAAcBAAAg/v//twIAAOgDAAAFAIf/AAAAAGUF1QDWAAAAFQWmAK8AAAAVBQEAvgAAAAUA1AAAAAAAVQTTAOwAAABVA9IAgQAAAL9zAAAAAAAAVQPQAOYAAAC/AwAAAAAAAFUDzgBnAAAAeaMI/gAAAABVA8wAeAAAAHmjAP4AAAAAVQPKAMMAAAB5o/j9AAAAABUDAQCnAAAABQDHAAAAAAB7KgDwAAAAAHsaCPAAAAAAv6EAAAAAAAAHAQAAIP7//7+lAAAAAAAAv5IAAAAAAAC/YwAAAAAAAHmkEP4AAAAAhRAAAEAEAAAFAG3/AAAAABUFowBQAAAAFQUBAHYAAAAFALoAAAAAAFUEuQCUAAAAVQO4AG0AAAC/cwAAAAAAAFUDtgBEAAAAvwMAAAAAAABVA7QAyQAAAHmjCP4AAAAAVQOyAB4AAAB5owD+AAAAAFUDsACLAAAAeaP4/QAAAAAVAwEANQAAAAUArQAAAAAAeyoA8AAAAAB7GgjwAAAAAL+hAAAAAAAABwEAACD+//+/pQAAAAAAAL+SAAAAAAAAv2MAAAAAAAB5pBD+AAAAAIUQAAC7BQAABQBT/wAAAABVBKIANAAAAFUDoQC1AAAAv3MAAAAAAABVA58ABQAAAL8DAAAAAAAAVQOdAGUAAAB5owj+AAAAAFUDmwDCAAAAeaMA/gAAAABVA5kAyAAAAHmj+P0AAAAAFQMBAA8AAAAFAJYAAAAAAHsqAPAAAAAAexoI8AAAAAC/oQAAAAAAAAcBAAAg/v//v6UAAAAAAAC/kgAAAAAAAL9jAAAAAAAAeaQQ/gAAAACFEAAAeQMAAAUAPP8AAAAAVQSLAJ0AAABVA4oAoQAAAL9zAAAAAAAAVQOIAMQAAAC/AwAAAAAAAFUDhgBYAAAAeaMI/gAAAABVA4QAsAAAAHmjAP4AAAAAVQOCAEYAAAB5o/j9AAAAABUDAQAVAAAABQB/AAAAAAB7KgDwAAAAAHsaCPAAAAAAv6EAAAAAAAAHAQAAIP7//7+lAAAAAAAAv5IAAAAAAAC/YwAAAAAAAHmkEP4AAAAAhRAAAKMAAAAFACX/AAAAAFUEdABTAAAAVQNzAK8AAAC/cwAAAAAAAFUDcQA1AAAAvwMAAAAAAABVA28AqAAAAHmjCP4AAAAAVQNtACIAAAB5owD+AAAAAFUDawCDAAAAeaP4/QAAAAAVAwEAFgAAAAUAaAAAAAAAeyoA8AAAAAB7GgjwAAAAAL+hAAAAAAAABwEAACD+//+/pQAAAAAAAL+SAAAAAAAAv2MAAAAAAAB5pBD+AAAAAIUQAACuBgAABQAO/wAAAABVBF0ANQAAAFUDXAC3AAAAv3MAAAAAAABVA1oAggAAAL8DAAAAAAAAVQNYAGwAAAB5owj+AAAAAFUDVgAYAAAAeaMA/gAAAABVA1QArQAAAHmj+P0AAAAAFQMBAJgAAAAFAFEAAAAAAHsqAPAAAAAAexoI8AAAAAC/oQAAAAAAAAcBAAAg/v//v6UAAAAAAAC/kgAAAAAAAL9jAAAAAAAAeaQQ/gAAAACFEAAAywEAAAUA9/4AAAAAVQRGACAAAABVA0UAmgAAAL9zAAAAAAAAVQNDAAIAAAC/AwAAAAAAAFUDQQA4AAAAeaMI/gAAAABVAz8AZwAAAHmjAP4AAAAAVQM9AE8AAAB5o/j9AAAAABUDAQAtAAAABQA6AAAAAAB7KgDwAAAAAHsaCPAAAAAAv6EAAAAAAAAHAQAAIP7//7+lAAAAAAAAv5IAAAAAAAC/YwAAAAAAAHmkEP4AAAAAhRAAABgHAAAFAOD+AAAAAFUELwCvAAAAVQMuAG0AAAC/cwAAAAAAAFUDLAAfAAAAvwMAAAAAAABVAyoADQAAAHmjCP4AAAAAVQMoAJgAAAB5owD+AAAAAFUDJgCbAAAAeaP4/QAAAAAVAwEA7QAAAAUAIwAAAAAAeyoA8AAAAAB7GgjwAAAAAL+hAAAAAAAABwEAACD+//+/pQAAAAAAAL+SAAAAAAAAv2MAAAAAAAB5pBD+AAAAAIUQAAAYBAAABQDJ/gAAAABVBBgAVgAAAFUDFwDWAAAAv3MAAAAAAABVAxUAhwAAAL8DAAAAAAAAVQMTAFwAAAB5owj+AAAAAFUDEQDkAAAAeaMA/gAAAABVAw8AqQAAAHmj+P0AAAAAFQMBAIIAAAAFAAwAAAAAAHsqAPAAAAAAexoI8AAAAAC/oQAAAAAAAAcBAAAg/v//v6UAAAAAAAC/kgAAAAAAAL9jAAAAAAAAeaQQ/gAAAACFEAAABAEAAAUAsv4AAAAAFQUFANcAAAAVBRsA5AAAAL+hAAAAAAAABwEAACD+//+3AgAAZQAAAAUAq/4AAAAAVQT7/w0AAABVA/r/WAAAAL9zAAAAAAAAVQP4/8cAAAC/AwAAAAAAAFUD9v8wAAAAeaMI/gAAAABVA/T/wwAAAHmjAP4AAAAAVQPy/xMAAAB5o/j9AAAAABUDAQDhAAAABQDv/wAAAAB7KgDwAAAAAHsaCPAAAAAAv6EAAAAAAAAHAQAAIP7//7+lAAAAAAAAv5IAAAAAAAC/YwAAAAAAAHmkEP4AAAAAhRAAAGEEAAAFAJX+AAAAAL9BAAAAAAAAVQHj/0UAAAC/MQAAAAAAAFUB4f+lAAAAv3EAAAAAAABVAd//LgAAAL8BAAAAAAAAVQHd/1EAAAB5oQj+AAAAAFUB2//LAAAAeaEA/gAAAABVAdn/mgAAAHmh+P0AAAAAVQHX/x0AAAC/oQAAAAAAAAcBAAAg/v//twIAANwFAAAFAIL+AAAAAL9YAAAAAAAAv0cAAAAAAAB7Ojj5AAAAAHsqQPkAAAAAexpI+QAAAAAYAQAAFtYJAAAAAAAAAAAAtwIAAB8AAACFEAAA/////3mGCPAAAAAAe2rQ+QAAAAB5iQDwAAAAAHuayPkAAAAAv6EAAAAAAAAHAQAA8Pz//7+iAAAAAAAABwIAAMj5//+FEAAAyN7//3mo8PwAAAAAeaEQ/QAAAABVARYAAgAAAL+BAAAAAAAAVwEAAAMAAABVAQ8AAQAAAHmBBwAAAAAAeRIAAAAAAAB5gf//AAAAAI0AAAACAAAAeYMHAAAAAAAHCAAA/////3kyCAAAAAAAFQIDAAAAAAB5gQAAAAAAAHkzEAAAAAAAhRAAAHkkAAC/gQAAAAAAALcCAAAYAAAAtwMAAAgAAACFEAAAdSQAAHmhSPkAAAAAtwIAAGYAAACFEAAAonEAAAUAqAAAAAAAexog+QAAAAB5oQj9AAAAAHsagPkAAAAAeaEA/QAAAAB7Gnj5AAAAAHmh+PwAAAAAexpw+QAAAAB5oRj9AAAAAHsaYPkAAAAAeaEg/QAAAAB7Gmj5AAAAAHmhOP0AAAAAexpQ+QAAAAB5oUD9AAAAAHsaWPkAAAAAeaEo/QAAAAB7GjD5AAAAAHmhMP0AAAAAexoo+QAAAAC3AQAAAAAAAHsamPkAAAAAexqQ+QAAAAB7Gqj5AAAAAHsasPkAAAAAeaHw/AAAAAB7GqD5AAAAAHt6wPkAAAAAeaE4+QAAAAB7Grj5AAAAAL+hAAAAAAAABwEAAIj5//97GgjwAAAAAL+hAAAAAAAABwEAAKD5//97GhDwAAAAAHtqAPAAAAAAv6EAAAAAAAAHAQAA8Pz//7+jAAAAAAAABwMAALj5//+/pQAAAAAAAHmiQPkAAAAAv5QAAAAAAACFEAAAvNX//2GpaP0AAAAAVQkYAAIAAAB5pyj5AAAAAL+mAAAAAAAABwYAAEz8//+/ogAAAAAAAAcCAABw/f//v2EAAAAAAAC3AwAAoAAAAIUQAAAwswAAeaFI+QAAAAC/YgAAAAAAALcDAACgAAAAhRAAACyzAAC/oQAAAAAAAAcBAACg+f//hRAAABWS//+/oQAAAAAAAAcBAACI+f//hRAAADCR//95ojD5AAAAABUCZgAAAAAAv3EAAAAAAAC3AwAAAQAAAIUQAAAsJAAABQBiAAAAAAC/pgAAAAAAAAcGAADI+f//v6IAAAAAAAAHAgAA8Pz//79hAAAAAAAAtwMAAHgAAACFEAAAGbMAAL+nAAAAAAAABwcAAEj8//+/ogAAAAAAAAcCAABs/f//v3EAAAAAAAC3AwAApAAAAIUQAAASswAAv6EAAAAAAAAHAQAA6Pr//7+iAAAAAAAABwIAABD+//+3AwAAYAEAAIUQAAAMswAAv6EAAAAAAAAHAQAARPr//79yAAAAAAAAtwMAAKQAAACFEAAAB7MAAGOaQPoAAAAAeaGI+QAAAAB7GoD/AAAAAHmhkPkAAAAAexqI/wAAAAB5oZj5AAAAAHsakP8AAAAAe2qg/wAAAAB5oUD5AAAAAHsamP8AAAAAeaHA+QAAAAB7Gnj/AAAAAHmhuPkAAAAAexpw/wAAAAB7iqj/AAAAAHmhIPkAAAAAexrI/wAAAAB5oXD5AAAAAHsasP8AAAAAeaF4+QAAAAB7Grj/AAAAAHmhgPkAAAAAexrA/wAAAAB5oSj5AAAAAHsa6P8AAAAAeaEw+QAAAAB7GuD/AAAAAHmhYPkAAAAAexrQ/wAAAAB5oWj5AAAAAHsa2P8AAAAAeaFQ+QAAAAB7GvD/AAAAAHmhWPkAAAAAexr4/wAAAAC/oQAAAAAAAAcBAADw/P//v6IAAAAAAAAHAgAAcP///7+jAAAAAAAABwMAAKj///+FEAAA7wYAAHmn8PwAAAAAFQcBAAQAAAAFAAgAAAAAAL+mAAAAAAAABwYAAMj5//95oUj5AAAAAL9iAAAAAAAAeaNA+QAAAACFEAAAudz//79hAAAAAAAABQAQAAAAAAC/pgAAAAAAAAcGAABI/P//v6IAAAAAAAAHAgAA+Pz//79hAAAAAAAAtwMAAJgAAACFEAAAy7IAAHmoSPkAAAAAv4EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAAJgAAACFEAAAxbIAAHt4AAAAAAAAv6EAAAAAAAAHAQAAyPn//4UQAAAXjf//v6EAAAAAAAAHAQAAoPn//4UQAACqkf//lQAAAAAAAAC/WAAAAAAAAL9JAAAAAAAAvzYAAAAAAAC/JwAAAAAAAHsa+PsAAAAAGAEAADXWCQAAAAAAAAAAALcCAAAfAAAAhRAAAP////+3AQAAAAAAAHsaEPwAAAAAexoI/AAAAAB7GiD8AAAAAHsaKPwAAAAAeaFY/gAAAAB7Ghj8AAAAAHuaOPwAAAAAe2ow/AAAAAC/oQAAAAAAAAcBAAAA/P//exoI8AAAAAC/oQAAAAAAAAcBAAAY/P//exoQ8AAAAAB5gQjwAAAAAHsaAPAAAAAAeYQA8AAAAAC/oQAAAAAAAAcBAABY/v//v6MAAAAAAAAHAwAAMPz//7+lAAAAAAAAe3rw+wAAAAC/cgAAAAAAAIUQAADVuf//camA/gAAAABVCRIAAgAAAL+mAAAAAAAABwYAALf9//+/ogAAAAAAAAcCAACI/v//v2EAAAAAAAC3AwAAoAAAAIUQAACRsgAAeaH4+wAAAAC/YgAAAAAAALcDAACgAAAAhRAAAI2yAAC/oQAAAAAAAAcBAAAY/P//hRAAAHaR//+/oQAAAAAAAAcBAAAA/P//hRAAAJGQ//8FAEoAAAAAAHmh+PsAAAAAv6gAAAAAAAAHCAAAQPz//7+iAAAAAAAABwIAAFj+//+/gQAAAAAAALcDAAAoAAAAhRAAAH6yAAC/pgAAAAAAAAcGAACw/f//v6IAAAAAAAAHAgAAgf7//79hAAAAAAAAtwMAAKcAAACFEAAAd7IAAL+hAAAAAAAABwEAABD9//+/ogAAAAAAAAcCAAAo////twMAAKAAAACFEAAAcbIAAL+hAAAAAAAABwEAAGn8//+/YgAAAAAAALcDAACnAAAAhRAAAGyyAABzmmj8AAAAAHmhAPwAAAAAexrY/wAAAAB5oQj8AAAAAHsa4P8AAAAAeaEQ/AAAAAB7Guj/AAAAAHuK+P8AAAAAeaHw+wAAAAB7GvD/AAAAAHmhOPwAAAAAexrQ/wAAAAB5oTD8AAAAAHsayP8AAAAAv6EAAAAAAAAHAQAAWP7//7+iAAAAAAAABwIAAMj///+FEAAAUQgAAHmnWP4AAAAAFQcRAAQAAAC/pgAAAAAAAAcGAACw/f//v6IAAAAAAAAHAgAAYP7//79hAAAAAAAAtwMAAJgAAACFEAAAULIAAHmo+PsAAAAAv4EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAAJgAAACFEAAASrIAAHt4AAAAAAAAv6EAAAAAAAAHAQAAQPz//wUABgAAAAAAv6YAAAAAAAAHBgAAQPz//3mh+PsAAAAAv2IAAAAAAACFEAAA3L3//79hAAAAAAAAhRAAAACM//+/oQAAAAAAAAcBAAAY/P//hRAAACiR//+VAAAAAAAAAL9YAAAAAAAAv0kAAAAAAAC/NgAAAAAAAL8nAAAAAAAAexpI8wAAAAAYAQAAVNYJAAAAAAAAAAAAtwIAACEAAACFEAAA/////7cBAAAAAAAAexpg8wAAAAB7GljzAAAAAHsacPMAAAAAexp48wAAAAB5oQD6AAAAAHsaaPMAAAAAe5qI8wAAAAB7aoDzAAAAAL+hAAAAAAAABwEAAFDz//97GgjwAAAAAL+hAAAAAAAABwEAAGjz//97GhDwAAAAAHmBCPAAAAAAexoA8AAAAAB5hADwAAAAAL+hAAAAAAAABwEAAAD6//+/owAAAAAAAAcDAACA8///v6UAAAAAAAB7ekDzAAAAAL9yAAAAAAAAhRAAACbD//9xqSj6AAAAAFUJEgACAAAAv6YAAAAAAAAHBgAAX/n//7+iAAAAAAAABwIAADD6//+/YQAAAAAAALcDAACgAAAAhRAAAA+yAAB5oUjzAAAAAL9iAAAAAAAAtwMAAKAAAACFEAAAC7IAAL+hAAAAAAAABwEAAGjz//+FEAAA9JD//7+hAAAAAAAABwEAAFDz//+FEAAAD5D//wUASwAAAAAAeaFI8wAAAAC/qAAAAAAAAAcIAACQ8///v6IAAAAAAAAHAgAAAPr//7+BAAAAAAAAtwMAACgAAACFEAAA/LEAAL+mAAAAAAAABwYAAFj5//+/ogAAAAAAAAcCAAAp+v//v2EAAAAAAAC3AwAApwAAAIUQAAD1sQAAv6EAAAAAAAAHAQAAYPT//7+iAAAAAAAABwIAAND6//+3AwAA+AQAAIUQAADvsQAAv6EAAAAAAAAHAQAAufP//79iAAAAAAAAtwMAAKcAAACFEAAA6rEAAHOauPMAAAAAeaFQ8wAAAAB7Gtj/AAAAAHmhWPMAAAAAexrg/wAAAAB5oWDzAAAAAHsa6P8AAAAAe4r4/wAAAAB5p0DzAAAAAHt68P8AAAAAeaGI8wAAAAB7GtD/AAAAAHmhgPMAAAAAexrI/wAAAAC/oQAAAAAAAAcBAAAA+v//v6IAAAAAAAAHAgAAyP///4UQAACkCAAAeagA+gAAAAAVCBEABAAAAL+mAAAAAAAABwYAAFj5//+/ogAAAAAAAAcCAAAI+v//v2EAAAAAAAC3AwAAmAAAAIUQAADOsQAAeadI8wAAAAC/cQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAADIsQAAe4cAAAAAAAC/oQAAAAAAAAcBAACQ8///BQAHAAAAAAC/pgAAAAAAAAcGAACQ8///eaFI8wAAAAC/YgAAAAAAAL9zAAAAAAAAhRAAAN/S//+/YQAAAAAAAIUQAACBjf//v6EAAAAAAAAHAQAAaPP//4UQAAClkP//lQAAAAAAAAC/VwAAAAAAAL9IAAAAAAAAezow9gAAAAB7Kjj2AAAAAHsaQPYAAAAAGAEAAHXWCQAAAAAAAAAAALcCAAAbAAAAhRAAAP////95dgjwAAAAAHtqkPYAAAAAeXkA8AAAAAB7moj2AAAAAL+hAAAAAAAABwEAADj7//+/ogAAAAAAAAcCAACI9v//hRAAAESV//95oTj7AAAAAHmiQPsAAAAAvxcAAAAAAAAVAhEAAAAAAHsqIPYAAAAAexoo9gAAAAB5oUj7AAAAAHsaGPYAAAAAv6EAAAAAAAAHAQAAOPv//7+iAAAAAAAABwIAAIj2//+FEAAAN5X//3mnOPsAAAAAeaFA+wAAAABVARsAAAAAAHmiKPYAAAAAeaEg9gAAAAAVAgIAAAAAALcDAAABAAAAhRAAAJwiAAC/cQAAAAAAAFcBAAADAAAAVQEPAAEAAAB5cQcAAAAAAHkSAAAAAAAAeXH//wAAAACNAAAAAgAAAHlzBwAAAAAABwcAAP////95MggAAAAAABUCAwAAAAAAeXEAAAAAAAB5MxAAAAAAAIUQAACOIgAAv3EAAAAAAAC3AgAAGAAAALcDAAAIAAAAhRAAAIoiAAB5oUD2AAAAALcCAABmAAAAhRAAALdvAAAFAKgAAAAAAHsaEPYAAAAAeaFI+wAAAAB7Ggj2AAAAALcBAAAAAAAAexpY9gAAAAB7GlD2AAAAAHsaaPYAAAAAexpw9gAAAAB5oTj7AAAAAHsaYPYAAAAAe4qA9gAAAAB5oTD2AAAAAHsaePYAAAAAv6EAAAAAAAAHAQAASPb//3saCPAAAAAAv6EAAAAAAAAHAQAAYPb//3saEPAAAAAAe2oA8AAAAAC/oQAAAAAAAAcBAAA4+///v6MAAAAAAAAHAwAAePb//7+lAAAAAAAAeaI49gAAAAC/lAAAAAAAAIUQAABH3f//canw+wAAAABVCRwAAgAAAL+mAAAAAAAABwYAAID6//+/ogAAAAAAAAcCAAA4+///v2EAAAAAAAC3AwAAoAAAAIUQAABWsQAAeaFA9gAAAAC/YgAAAAAAALcDAACgAAAAhRAAAFKxAAC/oQAAAAAAAAcBAABg9v//hRAAADuQ//+/oQAAAAAAAAcBAABI9v//hRAAAFaP//95oij2AAAAABUCAwAAAAAAeaEg9gAAAAC3AwAAAQAAAIUQAABSIgAAFQdzAAAAAAB5oRD2AAAAAL9yAAAAAAAAtwMAAAEAAACFEAAATSIAAAUAbgAAAAAAv6YAAAAAAAAHBgAAgPr//7+iAAAAAAAABwIAADj7//+/YQAAAAAAALcDAAC4AAAAhRAAADqxAAC/oQAAAAAAAAcBAABB9///v6IAAAAAAAAHAgAA8fv//7cDAAA/AwAAhRAAADSxAAC/qAAAAAAAAAcIAACI9v//v4EAAAAAAAC/YgAAAAAAAHmmOPYAAAAAtwMAALgAAACFEAAALbEAAHOaQPcAAAAAeaFI9gAAAAB7GnD/AAAAAHmhUPYAAAAAexp4/wAAAAB5oVj2AAAAAHsagP8AAAAAe4qQ/wAAAAB7aoj/AAAAAHmhgPYAAAAAexpo/wAAAAB5oXj2AAAAAHsaYP8AAAAAeaEI9gAAAAB7Glj/AAAAAHmhEPYAAAAAexpQ/wAAAAB7ekj/AAAAAHmhGPYAAAAAexpA/wAAAAB5oSD2AAAAAHsaOP8AAAAAeaEo9gAAAAB7GjD/AAAAAL+hAAAAAAAABwEAADj7//+/ogAAAAAAAAcCAABg////v6MAAAAAAAAHAwAAMP///4UQAABkEwAAeac4+wAAAAAVBwEABAAAAAUACwAAAAAAv6EAAAAAAAAHAQAAgPr//7+iAAAAAAAABwIAAIj2//+/YwAAAAAAAIUQAACamf//eaGA+gAAAABVARIABAAAAHmnQPYAAAAAtwYAAAQAAAAFACYAAAAAAL+mAAAAAAAABwYAAID6//+/ogAAAAAAAAcCAABA+///v2EAAAAAAAC3AwAAmAAAAIUQAAD5sAAAeahA9gAAAAC/gQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAADzsAAAe3gAAAAAAAAFABgAAAAAAL+mAAAAAAAABwYAADj7//+/ogAAAAAAAAcCAACA+v//v2EAAAAAAAC3AwAAoAAAAIUQAADqsAAAv6EAAAAAAAAHAQAAYP///79iAAAAAAAAGAMAAOPPCQAAAAAAAAAAALcEAAANAAAAhRAAAL55//95pmD/AAAAAHmnQPYAAAAAFQbe/wQAAAC/cQAAAAAAAAcBAAAIAAAAv6IAAAAAAAAHAgAAaP///7cDAACYAAAAhRAAANqwAAB7ZwAAAAAAAL+hAAAAAAAABwEAAIj2//+FEAAAe4f//7+hAAAAAAAABwEAAGD2//+FEAAAv4///5UAAAAAAAAAv1gAAAAAAAC/SQAAAAAAAL82AAAAAAAAvycAAAAAAAB7GsD4AAAAABgBAACQ1gkAAAAAAAAAAAC3AgAAGwAAAIUQAAD/////twEAAAAAAAB7Gtj4AAAAAHsa0PgAAAAAexro+AAAAAB7GvD4AAAAAHmhkPwAAAAAexrg+AAAAAB7mgD5AAAAAHtq+PgAAAAAv6EAAAAAAAAHAQAAyPj//3saCPAAAAAAv6EAAAAAAAAHAQAA4Pj//3saEPAAAAAAeYEI8AAAAAB7GgDwAAAAAHmEAPAAAAAAv6EAAAAAAAAHAQAAkPz//7+jAAAAAAAABwMAAPj4//+/pQAAAAAAAHt6uPgAAAAAv3IAAAAAAACFEAAAvOr//3GpSP0AAAAAVQkSAAIAAAC/pgAAAAAAAAcGAADY+///v6IAAAAAAAAHAgAAkPz//79hAAAAAAAAtwMAAKAAAACFEAAAprAAAHmhwPgAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAACisAAAv6EAAAAAAAAHAQAA4Pj//4UQAACLj///v6EAAAAAAAAHAQAAyPj//4UQAACmjv//BQBeAAAAAAB5p8D4AAAAAL+mAAAAAAAABwYAANj7//+/ogAAAAAAAAcCAACQ/P//v2EAAAAAAAC3AwAAuAAAAIUQAACTsAAAv6EAAAAAAAAHAQAAwfn//7+iAAAAAAAABwIAAEn9//+3AwAAFwIAAIUQAACNsAAAv6gAAAAAAAAHCAAACPn//7+BAAAAAAAAv2IAAAAAAAC3AwAAuAAAAIUQAACHsAAAc5rA+QAAAAB5ocj4AAAAAHsacP8AAAAAeaHQ+AAAAAB7Gnj/AAAAAHmh2PgAAAAAexqA/wAAAAB7ipD/AAAAAHmmuPgAAAAAe2qI/wAAAAB5oQD5AAAAAHsaaP8AAAAAeaH4+AAAAAB7GmD/AAAAAL+hAAAAAAAABwEAAJD8//+/ogAAAAAAAAcCAABg////hRAAACQZAAB5qJD8AAAAABUIDgAEAAAAv6YAAAAAAAAHBgAA2Pv//7+iAAAAAAAABwIAAJj8//+/YQAAAAAAALcDAACYAAAAhRAAAGuwAAC/cQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAABmsAAAe4cAAAAAAAAFACEAAAAAAL+hAAAAAAAABwEAANj7//+/ogAAAAAAAAcCAAAI+f//v2MAAAAAAACFEAAA85j//3mh2PsAAAAAVQECAAQAAAC3BgAABAAAAAUAFgAAAAAAv6YAAAAAAAAHBgAAkPz//7+iAAAAAAAABwIAANj7//+/YQAAAAAAALcDAACgAAAAhRAAAFOwAAC/oQAAAAAAAAcBAABg////v2IAAAAAAAAYAwAA488JAAAAAAAAAAAAtwQAAA0AAACFEAAAJ3n//3mmYP8AAAAAFQbu/wQAAAC/cQAAAAAAAAcBAAAIAAAAv6IAAAAAAAAHAgAAaP///7cDAACYAAAAhRAAAESwAAB7ZwAAAAAAAL+hAAAAAAAABwEAAAj5//+FEAAAtIj//7+hAAAAAAAABwEAAOD4//+FEAAAKY///5UAAAAAAAAAv1gAAAAAAAC/SQAAAAAAAL82AAAAAAAAvycAAAAAAAB7Ggj7AAAAABgBAABQxwkAAAAAAAAAAAC3AgAAIAAAAIUQAAD/////twEAAAAAAAB7GiD7AAAAAHsaGPsAAAAAexow+wAAAAB7Gjj7AAAAAHmh6P0AAAAAexoo+wAAAAB7mkj7AAAAAHtqQPsAAAAAv6EAAAAAAAAHAQAAEPv//3saCPAAAAAAv6EAAAAAAAAHAQAAKPv//3saEPAAAAAAeYEI8AAAAAB7GgDwAAAAAHmEAPAAAAAAv6EAAAAAAAAHAQAA6P3//7+jAAAAAAAABwMAAED7//+/pQAAAAAAAHt6APsAAAAAv3IAAAAAAACFEAAANLz//3GpoP4AAAAAVQkSAAIAAAC/pgAAAAAAAAcGAAAw/f//v6IAAAAAAAAHAgAA6P3//79hAAAAAAAAtwMAAKAAAACFEAAAELAAAHmhCPsAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAAMsAAAv6EAAAAAAAAHAQAAKPv//4UQAAD1jv//v6EAAAAAAAAHAQAAEPv//4UQAAAQjv//BQBEAAAAAAB5oQj7AAAAAL+mAAAAAAAABwYAADD9//+/ogAAAAAAAAcCAADo/f//v2EAAAAAAAC3AwAAuAAAAIUQAAD9rwAAv6EAAAAAAAAHAQAACfz//7+iAAAAAAAABwIAAKH+//+3AwAAJwEAAIUQAAD3rwAAv6gAAAAAAAAHCAAAUPv//7+BAAAAAAAAv2IAAAAAAAC3AwAAuAAAAIUQAADxrwAAc5oI/AAAAAB5oRD7AAAAAHsa2P8AAAAAeaEY+wAAAAB7GuD/AAAAAHmhIPsAAAAAexro/wAAAAB7ivj/AAAAAHmhAPsAAAAAexrw/wAAAAB5oUj7AAAAAHsa0P8AAAAAeaFA+wAAAAB7Gsj/AAAAAL+hAAAAAAAABwEAAOj9//+/ogAAAAAAAAcCAADI////hRAAAN8bAAB5p+j9AAAAABUHEQAEAAAAv6YAAAAAAAAHBgAAMP3//7+iAAAAAAAABwIAAPD9//+/YQAAAAAAALcDAACYAAAAhRAAANWvAAB5qAj7AAAAAL+BAAAAAAAABwEAAAgAAAC/YgAAAAAAALcDAACYAAAAhRAAAM+vAAB7eAAAAAAAAL+hAAAAAAAABwEAAFD7//8FAAYAAAAAAL+mAAAAAAAABwYAAFD7//95oQj7AAAAAL9iAAAAAAAAhRAAAFTA//+/YQAAAAAAAIUQAADfiv//v6EAAAAAAAAHAQAAKPv//4UQAACtjv//lQAAAAAAAAC/WAAAAAAAAL9JAAAAAAAAvzYAAAAAAAC/JwAAAAAAAHsayPcAAAAAGAEAAKvWCQAAAAAAAAAAALcCAAAXAAAAhRAAAP////+3AQAAAAAAAHsa4PcAAAAAexrY9wAAAAB7GvD3AAAAAHsa+PcAAAAAeaFY/AAAAAB7Guj3AAAAAHuaCPgAAAAAe2oA+AAAAAC/oQAAAAAAAAcBAADQ9///exoI8AAAAAC/oQAAAAAAAAcBAADo9///exoQ8AAAAAB5gQjwAAAAAHsaAPAAAAAAeYQA8AAAAAC/oQAAAAAAAAcBAABY/P//v6MAAAAAAAAHAwAAAPj//7+lAAAAAAAAe3rA9wAAAAC/cgAAAAAAAIUQAADom///Yakw/QAAAABVCRIAAgAAAL+mAAAAAAAABwYAAID7//+/ogAAAAAAAAcCAABY/P//v2EAAAAAAAC3AwAAoAAAAIUQAACUrwAAeaHI9wAAAAC/YgAAAAAAALcDAACgAAAAhRAAAJCvAAC/oQAAAAAAAAcBAADo9///hRAAAHmO//+/oQAAAAAAAAcBAADQ9///hRAAAJSN//8FAEUAAAAAAHmhyPcAAAAAv6YAAAAAAAAHBgAAgPv//7+iAAAAAAAABwIAAFj8//+/YQAAAAAAALcDAADYAAAAhRAAAIGvAAC/oQAAAAAAAAcBAADs+P//v6IAAAAAAAAHAgAANP3//7cDAACUAgAAhRAAAHuvAAC/qAAAAAAAAAcIAAAQ+P//v4EAAAAAAAC/YgAAAAAAALcDAADYAAAAhRAAAHWvAABjmuj4AAAAAHmh0PcAAAAAexrY/wAAAAB5odj3AAAAAHsa4P8AAAAAeaHg9wAAAAB7Guj/AAAAAHuK+P8AAAAAeafA9wAAAAB7evD/AAAAAHmhCPgAAAAAexrQ/wAAAAB5oQD4AAAAAHsayP8AAAAAv6EAAAAAAAAHAQAAWPz//7+iAAAAAAAABwIAAMj///+FEAAAOBwAAHmoWPwAAAAAFQgRAAQAAAC/pgAAAAAAAAcGAACA+///v6IAAAAAAAAHAgAAYPz//79hAAAAAAAAtwMAAJgAAACFEAAAWa8AAHmnyPcAAAAAv3EAAAAAAAAHAQAACAAAAL9iAAAAAAAAtwMAAJgAAACFEAAAU68AAHuHAAAAAAAAv6EAAAAAAAAHAQAAEPj//wUABwAAAAAAv6YAAAAAAAAHBgAAEPj//3mhyPcAAAAAv2IAAAAAAAC/cwAAAAAAAIUQAAC9pf//v2EAAAAAAACFEAAAEoX//7+hAAAAAAAABwEAAOj3//+FEAAAMI7//5UAAAAAAAAAv1gAAAAAAAC/SQAAAAAAAL82AAAAAAAAvycAAAAAAAB7GoD7AAAAABgBAADC1gkAAAAAAAAAAAC3AgAAKwAAAIUQAAD/////twEAAAAAAAB7Gpj7AAAAAHsakPsAAAAAexqo+wAAAAB7GrD7AAAAAHmh6P0AAAAAexqg+wAAAAB7msD7AAAAAHtquPsAAAAAv6EAAAAAAAAHAQAAiPv//3saCPAAAAAAv6EAAAAAAAAHAQAAoPv//3saEPAAAAAAeYEI8AAAAAB7GgDwAAAAAHmEAPAAAAAAv6EAAAAAAAAHAQAA6P3//7+jAAAAAAAABwMAALj7//+/pQAAAAAAAHt6ePsAAAAAv3IAAAAAAACFEAAAq63//3GpEP4AAAAAVQkSAAIAAAC/pgAAAAAAAAcGAABH/f//v6IAAAAAAAAHAgAAGP7//79hAAAAAAAAtwMAAKAAAACFEAAAF68AAHmhgPsAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAATrwAAv6EAAAAAAAAHAQAAoPv//4UQAAD8jf//v6EAAAAAAAAHAQAAiPv//4UQAAAXjf//BQBkAAAAAAB5p4D7AAAAAL+oAAAAAAAABwgAAMj7//+/ogAAAAAAAAcCAADo/f//v4EAAAAAAAC3AwAAKAAAAIUQAAAErwAAv6YAAAAAAAAHBgAAQP3//7+iAAAAAAAABwIAABH+//+/YQAAAAAAALcDAACnAAAAhRAAAP2uAAC/oQAAAAAAAAcBAACY/P//v6IAAAAAAAAHAgAAuP7//7cDAACoAAAAhRAAAPeuAAC/oQAAAAAAAAcBAADx+///v2IAAAAAAAC3AwAApwAAAIUQAADyrgAAc5rw+wAAAAB5oYj7AAAAAHsacP8AAAAAeaGQ+wAAAAB7Gnj/AAAAAHmhmPsAAAAAexqA/wAAAAB7ipD/AAAAAHmmePsAAAAAe2qI/wAAAAB5ocD7AAAAAHsaaP8AAAAAeaG4+wAAAAB7GmD/AAAAAL+hAAAAAAAABwEAAOj9//+/ogAAAAAAAAcCAABg////hRAAAFkcAAB5qOj9AAAAABUIDgAEAAAAv6YAAAAAAAAHBgAAQP3//7+iAAAAAAAABwIAAPD9//+/YQAAAAAAALcDAACYAAAAhRAAANauAAC/cQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAADRrgAAe4cAAAAAAAAFACEAAAAAAL+hAAAAAAAABwEAAED9//+/ogAAAAAAAAcCAACI/P//v2MAAAAAAACFEAAAX5b//3mhQP0AAAAAVQECAAQAAAC3BgAABAAAAAUAFgAAAAAAv6YAAAAAAAAHBgAA6P3//7+iAAAAAAAABwIAAED9//+/YQAAAAAAALcDAACgAAAAhRAAAL6uAAC/oQAAAAAAAAcBAABg////v2IAAAAAAAAYAwAAKdIJAAAAAAAAAAAAtwQAAAkAAACFEAAAknf//3mmYP8AAAAAFQbu/wQAAAC/cQAAAAAAAAcBAAAIAAAAv6IAAAAAAAAHAgAAaP///7cDAACYAAAAhRAAAK+uAAB7ZwAAAAAAAL+hAAAAAAAABwEAAMj7//+FEAAAVIP//7+hAAAAAAAABwEAAKD7//+FEAAAlI3//5UAAAAAAAAAv1gAAAAAAAC/SQAAAAAAAL82AAAAAAAAvycAAAAAAAB7GuD7AAAAABgBAADt1gkAAAAAAAAAAAC3AgAALAAAAIUQAAD/////twEAAAAAAAB7Gvj7AAAAAHsa8PsAAAAAexoI/AAAAAB7GhD8AAAAAHmhGP4AAAAAexoA/AAAAAB7miD8AAAAAHtqGPwAAAAAv6EAAAAAAAAHAQAA6Pv//3saCPAAAAAAv6EAAAAAAAAHAQAAAPz//3saEPAAAAAAeYEI8AAAAAB7GgDwAAAAAHmEAPAAAAAAv6EAAAAAAAAHAQAAGP7//7+jAAAAAAAABwMAABj8//+/pQAAAAAAAHt62PsAAAAAv3IAAAAAAACFEAAA+Kn//3GpQP4AAAAAVQkSAAIAAAC/pgAAAAAAAAcGAAB3/f//v6IAAAAAAAAHAgAASP7//79hAAAAAAAAtwMAAKAAAACFEAAAe64AAHmh4PsAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAB3rgAAv6EAAAAAAAAHAQAAAPz//4UQAABgjf//v6EAAAAAAAAHAQAA6Pv//4UQAAB7jP//BQBkAAAAAAB5p+D7AAAAAL+oAAAAAAAABwgAACj8//+/ogAAAAAAAAcCAAAY/v//v4EAAAAAAAC3AwAAKAAAAIUQAABorgAAv6YAAAAAAAAHBgAAcP3//7+iAAAAAAAABwIAAEH+//+/YQAAAAAAALcDAACnAAAAhRAAAGGuAAC/oQAAAAAAAAcBAAD4/P//v6IAAAAAAAAHAgAA6P7//7cDAAB4AAAAhRAAAFuuAAC/oQAAAAAAAAcBAABR/P//v2IAAAAAAAC3AwAApwAAAIUQAABWrgAAc5pQ/AAAAAB5oej7AAAAAHsacP8AAAAAeaHw+wAAAAB7Gnj/AAAAAHmh+PsAAAAAexqA/wAAAAB7ipD/AAAAAHmm2PsAAAAAe2qI/wAAAAB5oSD8AAAAAHsaaP8AAAAAeaEY/AAAAAB7GmD/AAAAAL+hAAAAAAAABwEAABj+//+/ogAAAAAAAAcCAABg////hRAAALwcAAB5qBj+AAAAABUIDgAEAAAAv6YAAAAAAAAHBgAAcP3//7+iAAAAAAAABwIAACD+//+/YQAAAAAAALcDAACYAAAAhRAAADquAAC/cQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAAA1rgAAe4cAAAAAAAAFACEAAAAAAL+hAAAAAAAABwEAAHD9//+/ogAAAAAAAAcCAAC4/P//v2MAAAAAAACFEAAAw5X//3mhcP0AAAAAVQECAAQAAAC3BgAABAAAAAUAFgAAAAAAv6YAAAAAAAAHBgAAGP7//7+iAAAAAAAABwIAAHD9//+/YQAAAAAAALcDAACgAAAAhRAAACKuAAC/oQAAAAAAAAcBAABg////v2IAAAAAAAAYAwAAKdIJAAAAAAAAAAAAtwQAAAkAAACFEAAA9nb//3mmYP8AAAAAFQbu/wQAAAC/cQAAAAAAAAcBAAAIAAAAv6IAAAAAAAAHAgAAaP///7cDAACYAAAAhRAAABOuAAB7ZwAAAAAAAL+hAAAAAAAABwEAACj8//+FEAAAVoL//7+hAAAAAAAABwEAAAD8//+FEAAA+Iz//5UAAAAAAAAAv1gAAAAAAAC/SQAAAAAAAL82AAAAAAAAvycAAAAAAAB7GuD7AAAAABgBAAAZ1wkAAAAAAAAAAAC3AgAAKwAAAIUQAAD/////twEAAAAAAAB7Gvj7AAAAAHsa8PsAAAAAexoI/AAAAAB7GhD8AAAAAHmhGP4AAAAAexoA/AAAAAB7miD8AAAAAHtqGPwAAAAAv6EAAAAAAAAHAQAA6Pv//3saCPAAAAAAv6EAAAAAAAAHAQAAAPz//3saEPAAAAAAeYEI8AAAAAB7GgDwAAAAAHmEAPAAAAAAv6EAAAAAAAAHAQAAGP7//7+jAAAAAAAABwMAABj8//+/pQAAAAAAAHt62PsAAAAAv3IAAAAAAACFEAAAsKX//3GpQP4AAAAAVQkSAAIAAAC/pgAAAAAAAAcGAAB3/f//v6IAAAAAAAAHAgAASP7//79hAAAAAAAAtwMAAKAAAACFEAAA360AAHmh4PsAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAADbrQAAv6EAAAAAAAAHAQAAAPz//4UQAADEjP//v6EAAAAAAAAHAQAA6Pv//4UQAADfi///BQBkAAAAAAB5p+D7AAAAAL+oAAAAAAAABwgAACj8//+/ogAAAAAAAAcCAAAY/v//v4EAAAAAAAC3AwAAKAAAAIUQAADMrQAAv6YAAAAAAAAHBgAAcP3//7+iAAAAAAAABwIAAEH+//+/YQAAAAAAALcDAACnAAAAhRAAAMWtAAC/oQAAAAAAAAcBAAD4/P//v6IAAAAAAAAHAgAA6P7//7cDAAB4AAAAhRAAAL+tAAC/oQAAAAAAAAcBAABR/P//v2IAAAAAAAC3AwAApwAAAIUQAAC6rQAAc5pQ/AAAAAB5oej7AAAAAHsacP8AAAAAeaHw+wAAAAB7Gnj/AAAAAHmh+PsAAAAAexqA/wAAAAB7ipD/AAAAAHmm2PsAAAAAe2qI/wAAAAB5oSD8AAAAAHsaaP8AAAAAeaEY/AAAAAB7GmD/AAAAAL+hAAAAAAAABwEAABj+//+/ogAAAAAAAAcCAABg////hRAAAB8dAAB5qBj+AAAAABUIDgAEAAAAv6YAAAAAAAAHBgAAcP3//7+iAAAAAAAABwIAACD+//+/YQAAAAAAALcDAACYAAAAhRAAAJ6tAAC/cQAAAAAAAAcBAAAIAAAAv2IAAAAAAAC3AwAAmAAAAIUQAACZrQAAe4cAAAAAAAAFACEAAAAAAL+hAAAAAAAABwEAAHD9//+/ogAAAAAAAAcCAAC4/P//v2MAAAAAAACFEAAAJ5X//3mhcP0AAAAAVQECAAQAAAC3BgAABAAAAAUAFgAAAAAAv6YAAAAAAAAHBgAAGP7//7+iAAAAAAAABwIAAHD9//+/YQAAAAAAALcDAACgAAAAhRAAAIatAAC/oQAAAAAAAAcBAABg////v2IAAAAAAAAYAwAAKdIJAAAAAAAAAAAAtwQAAAkAAACFEAAAWnb//3mmYP8AAAAAFQbu/wQAAAC/cQAAAAAAAAcBAAAIAAAAv6IAAAAAAAAHAgAAaP///7cDAACYAAAAhRAAAHetAAB7ZwAAAAAAAL+hAAAAAAAABwEAACj8//+FEAAAuoH//7+hAAAAAAAABwEAAAD8//+FEAAAXIz//5UAAAAAAAAAv1gAAAAAAAC/SQAAAAAAAL82AAAAAAAAvycAAAAAAAB7GkD8AAAAABgBAABE1wkAAAAAAAAAAAC3AgAAIQAAAIUQAAD/////twEAAAAAAAB7Glj8AAAAAHsaUPwAAAAAexpo/AAAAAB7GnD8AAAAAHmhSP4AAAAAexpg/AAAAAB7moD8AAAAAHtqePwAAAAAv6EAAAAAAAAHAQAASPz//3saCPAAAAAAv6EAAAAAAAAHAQAAYPz//3saEPAAAAAAeYEI8AAAAAB7GgDwAAAAAHmEAPAAAAAAv6EAAAAAAAAHAQAASP7//7+jAAAAAAAABwMAAHj8//+/pQAAAAAAAHt6OPwAAAAAv3IAAAAAAACFEAAAyrH//3GpcP4AAAAAVQkSAAIAAAC/pgAAAAAAAAcGAACn/f//v6IAAAAAAAAHAgAAeP7//79hAAAAAAAAtwMAAKAAAACFEAAAQ60AAHmhQPwAAAAAv2IAAAAAAAC3AwAAoAAAAIUQAAA/rQAAv6EAAAAAAAAHAQAAYPz//4UQAAAojP//v6EAAAAAAAAHAQAASPz//4UQAABDi///BQBgAAAAAAB5p0D8AAAAAL+oAAAAAAAABwgAAIj8//+/ogAAAAAAAAcCAABI/v//v4EAAAAAAAC3AwAAKAAAAIUQAAAwrQAAv6YAAAAAAAAHBgAAoP3//7+iAAAAAAAABwIAAHH+//+/YQAAAAAAALcDAACnAAAAhRAAACmtAAC/oQAAAAAAAAcBAABY/f//v6IAAAAAAAAHAgAAGP///7cDAABIAAAAhRAAACOtAAC/oQAAAAAAAAcBAACx/P//v2IAAAAAAAC3AwAApwAAAIUQAAAerQAAc5qw/AAAAAB5oXj8AAAAAHmigPwAAAAAeypQ/gAAAAB7Gkj+AAAAAHmhSPwAAAAAexpY/gAAAAB5oVD8AAAAAHsaYP4AAAAAeaFY/AAAAAB7Gmj+AAAAAHuKeP4AAAAAeaY4/AAAAAB7anD+AAAAAL+hAAAAAAAABwEAAKD9//+/ogAAAAAAAAcCAAC4/P//hRAAALhhAAB5obj9AAAAAHsaUP0AAAAAeaGw/QAAAAB7Gkj9AAAAAHmhqP0AAAAAexpA/QAAAAB5oaD9AAAAAHsaOP0AAAAAv6EAAAAAAAAHAQAAWP7//4UQAAAKi///v6EAAAAAAAAHAQAAoP3//7+iAAAAAAAABwIAAOj8//+/YwAAAAAAAIUQAACQlP//eaGg/QAAAABVAQIABAAAALcGAAAEAAAABQAXAAAAAAC/pgAAAAAAAAcGAABI/v//v6IAAAAAAAAHAgAAoP3//79hAAAAAAAAtwMAAKAAAACFEAAA76wAAL+hAAAAAAAABwEAAGD///+/YgAAAAAAABgDAAAp0gkAAAAAAAAAAAC3BAAACQAAAIUQAADDdf//eaZg/wAAAABVBgEABAAAAAUA7f8AAAAAv3EAAAAAAAAHAQAACAAAAL+iAAAAAAAABwIAAGj///+3AwAAmAAAAIUQAADfrAAAe2cAAAAAAAC/oQAAAAAAAAcBAACI/P//hRAAAH2L//+/oQAAAAAAAAcBAABg/P//hRAAAMSL//+VAAAAAAAAAL9WAAAAAAAAv0kAAAAAAAC/OAAAAAAAAL8nAAAAAAAAexqg/AAAAAAYAQAAZdcJAAAAAAAAAAAAtwIAABUAAACFEAAA/////3lhCPAAAAAAFQEyAAAAAAB7epj8AAAAAHlkAPAAAAAAcUcAAAAAAABzemD/AAAAALcCAAACAAAALXIBAAAAAAAFAC8AAAAAALcCAAAAAAAAeyq4/AAAAAB7KrD8AAAAAHsqyPwAAAAAeyrQ/AAAAAB5onj+AAAAAHsqwPwAAAAAe5rg/AAAAAB7itj8AAAAAL+iAAAAAAAABwIAAKj8//97KgjwAAAAAL+iAAAAAAAABwIAAMD8//97KhDwAAAAAHsaAPAAAAAAv6EAAAAAAAAHAQAAeP7//7+jAAAAAAAABwMAANj8//+/pQAAAAAAAHmimPwAAAAAhRAAAIuv//9xqaD+AAAAAFUJVwACAAAAv6YAAAAAAAAHBgAA1/3//7+iAAAAAAAABwIAAKj+//+/YQAAAAAAALcDAACgAAAAhRAAAKWsAAB5oaD8AAAAAL9iAAAAAAAAtwMAAKAAAACFEAAAoawAAL+hAAAAAAAABwEAAMD8//+FEAAAiov//7+hAAAAAAAABwEAAKj8//+FEAAApYr//wUARAAAAAAAGAEAAAgdCgAAAAAAAAAAAIUQAAAJfwAABQApAAAAAAAYAQAAOKIJAAAAAAAAAAAAexrY/QAAAAC/oQAAAAAAAAcBAABg////exrQ/QAAAAC/oQAAAAAAAAcBAADQ/f//exqY/gAAAAC3AQAAAQAAAHsaoP4AAAAAexqQ/gAAAAAYAQAAQB4KAAAAAAAAAAAAexqI/gAAAAC3AQAAAAAAAHsaeP4AAAAAv6EAAAAAAAAHAQAA6Pz//7+iAAAAAAAABwIAAHj+//+FEAAA/YMAALcBAAAYAAAAtwIAAAgAAACFEAAAhh0AAFUABAAAAAAAtwEAABgAAAC3AgAACAAAAIUQAADQgwAAhRAAAP////95ofj8AAAAAHsQEAAAAAAAeaHw/AAAAAB7EAgAAAAAAHmh6PwAAAAAexAAAAAAAAC3AQAAFAAAAL8CAAAAAAAAGAMAAIAcCgAAAAAAAAAAAIUQAADQgAAAvwcAAAAAAAB5pqD8AAAAAL9xAAAAAAAAVwEAAAMAAABVAQ8AAQAAAHlxBwAAAAAAeRIAAAAAAAB5cf//AAAAAI0AAAACAAAAeXMHAAAAAAAHBwAA/////3kyCAAAAAAAFQIDAAAAAAB5cQAAAAAAAHkzEAAAAAAAhRAAAGgdAAC/cQAAAAAAALcCAAAYAAAAtwMAAAgAAACFEAAAZB0AAL9hAAAAAAAAtwIAAGYAAACFEAAAkWoAAJUAAAAAAAAAv6gAAAAAAAAHCAAA6Pz//7+iAAAAAAAABwIAAHj+//+/gQAAAAAAALcDAAAoAAAAhRAAAE6sAAC/pgAAAAAAAAcGAADQ/f//v6IAAAAAAAAHAgAAof7//79hAAAAAAAAtwMAAKcAAACFEAAAR6wAAHmhSP8AAAAAexq4/QAAAAB5oVD/AAAAAHsawP0AAAAAeaFY/wAAAAB7Gsj9AAAAAL+hAAAAAAAABwEAABH9//+/YgAAAAAAALcDAACnAAAAhRAAADysAAC3AQAAAQAAAFUHAQAAAAAAtwEAAAAAAABzmhD9AAAAAHMaqP0AAAAAeaHY/AAAAAB5ouD8AAAAAHsqgP4AAAAAexp4/gAAAAB5oaj8AAAAAHsaiP4AAAAAeaGw/AAAAAB7GpD+AAAAAHmhuPwAAAAAexqY/gAAAAB7iqj+AAAAAHmmmPwAAAAAe2qg/gAAAAC/oQAAAAAAAAcBAADQ/f//v4IAAAAAAACFEAAA02AAAHmh6P0AAAAAexqg/QAAAAB5oeD9AAAAAHsamP0AAAAAeaHY/QAAAAB7GpD9AAAAAHmh0P0AAAAAexqI/QAAAAC/oQAAAAAAAAcBAACI/v//hRAAACWK//+/oQAAAAAAAAcBAADQ/f//v6IAAAAAAAAHAgAAGP3//79jAAAAAAAAhRAAAKuT//95odD9AAAAABUBAQAEAAAABQADAAAAAAB5p6D8AAAAALcGAAAEAAAABQAZAAAAAAC/pgAAAAAAAAcGAAB4/v//v6IAAAAAAAAHAgAA0P3//79hAAAAAAAAtwMAAKAAAACFEAAACKwAAL+hAAAAAAAABwEAAGD///+/YgAAAAAAABgDAAAp0gkAAAAAAAAAAAC3BAAACQAAAIUQAADcdP//eaZg/wAAAAB5p6D8AAAAAFUGAgAEAAAAtwYAAAQAAAAFAAYAAAAAAL9xAAAAAAAABwEAAAgAAAC/ogAAAAAAAAcCAABo////twMAAJgAAACFEAAA9qsAAHtnAAAAAAAAv6EAAAAAAAAHAQAA6Pz//4UQAACLgf//v6EAAAAAAAAHAQAAwPz//4UQAADbiv//BQCY/wAAAAC/OQAAAAAAAL8YAAAAAAAAv6EAAAAAAAAHAQAAEP7//7cDAAA4AAAAhRAAAOirAAC/oQAAAAAAAAcBAABI/v//v5IAAAAAAAC3AwAAWAAAAIUQAADjqwAAeaGI/gAAAAB7GgD+AAAAAHmhgP4AAAAAexoI/gAAAAB5pnj+AAAAABUGQQAAAAAAe4r4/QAAAAB5oZD+AAAAAHsa8P0AAAAAaaGY/gAAAAB7Guj9AAAAAHmocP4AAAAAeado/gAAAAC/oQAAAAAAAAcBAABI/v//GAIAALDHCQAAAAAAAAAAALcDAAAgAAAAhRAAAFqsAAAVABsAAAAAABUHcwAAAAAALWgBAAAAAAAFAHEAAAAAAL+hAAAAAAAABwEAAKD+//8YAgAA4M0JAAAAAAAAAAAAhRAAAGSV//+3AQAAAQAAAHsawP4AAAAAtwcAAAAAAAB7esj+AAAAAHt6uP4AAAAAv6YAAAAAAAAHBgAAuP///7+iAAAAAAAABwIAALj+//+/YQAAAAAAABgDAAA4HQoAAAAAAAAAAACFEAAAGpgAABgBAADgzQkAAAAAAAAAAAC/YgAAAAAAAIUQAABNl///FQCsAAAAAAAFAC8AAAAAAL+hAAAAAAAABwEAAKD+//8YAgAA7M0JAAAAAAAAAAAAhRAAAEyV//+3AQAAAQAAAHsawP4AAAAAtwcAAAAAAAB7esj+AAAAAHt6uP4AAAAAv6YAAAAAAAAHBgAAuP///7+iAAAAAAAABwIAALj+//+/YQAAAAAAABgDAAA4HQoAAAAAAAAAAACFEAAAApgAABgBAADszQkAAAAAAAAAAAC/YgAAAAAAAIUQAAA1l///FQAjAAAAAAAFABcAAAAAAL+hAAAAAAAABwEAAKD+//8YAgAAwM0JAAAAAAAAAAAAhRAAADSV//+3AQAAAQAAAHsawP4AAAAAtwcAAAAAAAB7esj+AAAAAHt6uP4AAAAAv6YAAAAAAAAHBgAAuP///7+iAAAAAAAABwIAALj+//+/YQAAAAAAABgDAAA4HQoAAAAAAAAAAACFEAAA6pcAABgBAADAzQkAAAAAAAAAAAC/YgAAAAAAAIUQAAAdl///FQCbAAAAAAC/owAAAAAAAAcDAAD4////GAEAAJTLCQAAAAAAAAAAALcCAAA3AAAAGAQAAGgdCgAAAAAAAAAAABgFAACIHQoAAAAAAAAAAACFEAAATpMAAIUQAAD/////eaGg/gAAAAB7GvD+AAAAAHmhqP4AAAAAexr4/gAAAAB5obD+AAAAAHsaAP8AAAAAtwEAAHYZAABjGmj/AAAAAHmhuP4AAAAAexoI/wAAAAB5ocD+AAAAAHsaEP8AAAAAeaHI/gAAAAB7Ghj/AAAAALcBAAACAAAAcxog/wAAAAC3AQAAZQAAAGMa6P4AAAAAtwEAADsAAAB7GuD+AAAAABgBAABxzwkAAAAAAAAAAAB7Gtj+AAAAAHt60P4AAAAAv6IAAAAAAAAHAgAA0P7//3mh+P0AAAAAhRAAADVkAAB5ogj+AAAAABUCUAEAAAAABQCPAAAAAAB7auD9AAAAAHmmQP4AAAAAv2IAAAAAAAAHAgAAQAEAAL+hAAAAAAAABwEAAND+//+FEAAAAWAAAL9iAAAAAAAABwIAAOAAAAC/oQAAAAAAAAcBAADw/v//hRAAAPxfAAC/YgAAAAAAAAcCAADAAQAAv6EAAAAAAAAHAQAAEP///3sq2P0AAAAAhRAAAPZfAAB5YQAAAAAAAHkSGAAAAAAAeypI/wAAAAB5EhAAAAAAAHsqQP8AAAAAeRIIAAAAAAB7Kjj/AAAAAHkRAAAAAAAAexow/wAAAAB5kQAAAAAAAHsaUP8AAAAAeZEIAAAAAAB7Glj/AAAAAHmREAAAAAAAexpg/wAAAAB5kRgAAAAAAHsaaP8AAAAAtwEAAMAAAAC3AgAACAAAAIUQAAA+HAAAvwkAAAAAAABVCQQAAAAAALcBAADAAAAAtwIAAAgAAACFEAAAh4IAAIUQAAD/////v6IAAAAAAAAHAgAA0P7//7+RAAAAAAAAtwMAAKAAAACFEAAAKqsAAHmh6P0AAAAAaxm4AAAAAAB5oeD9AAAAAHsZsAAAAAAAe4moAAAAAAB7eaAAAAAAAHlhcAEAAAAAtwIAAMAAAAC3AwAACAAAAIUQAAArHAAAeWJ4AQAAAAAVAgMAAAAAAHlhgAEAAAAAtwMAAAEAAACFEAAAJhwAAHmh8P0AAAAAexaIAQAAAAB5oQD+AAAAAHsWgAEAAAAAeaEI/gAAAAB7FngBAAAAAHuWcAEAAAAAeWcoAgAAAAB5cQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeWggAgAAAAB7FwAAAAAAAFUCQwABAAAAhRAAAP////+FEAAA/////3mhoP4AAAAAexrw/gAAAAB5oaj+AAAAAHsa+P4AAAAAeaGw/gAAAAB7GgD/AAAAALcBAAByGAAAYxpo/wAAAAB5obj+AAAAAHsaCP8AAAAAeaHA/gAAAAB7GhD/AAAAAHmhyP4AAAAAexoY/wAAAAC3AQAAAgAAAHMaIP8AAAAAtwEAAGkAAABjGuj+AAAAALcBAAA7AAAAexrg/gAAAAAYAQAAcc8JAAAAAAAAAAAAexrY/gAAAAB7etD+AAAAAL+iAAAAAAAABwIAAND+//95ofj9AAAAAIUQAADEYwAAeaII/gAAAAAVAt8AAAAAAAUAHgAAAAAAeaGg/gAAAAB7GvD+AAAAAHmhqP4AAAAAexr4/gAAAAB5obD+AAAAAHsaAP8AAAAAtwEAAHAYAABjGmj/AAAAAHmhuP4AAAAAexoI/wAAAAB5ocD+AAAAAHsaEP8AAAAAeaHI/gAAAAB7Ghj/AAAAALcBAAACAAAAcxog/wAAAAC3AQAAYgAAAGMa6P4AAAAAtwEAADsAAAB7GuD+AAAAABgBAABxzwkAAAAAAAAAAAB7Gtj+AAAAAHt60P4AAAAAv6IAAAAAAAAHAgAA0P7//7+BAAAAAAAAhRAAAKVjAAB5ogj+AAAAABUCwAAAAAAAeaEA/gAAAAC3AwAAAQAAAIUQAADUGwAABQC8AAAAAAB5aTACAAAAAHmRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7GQAAAAAAAFUCAQABAAAABQC0/wAAAABxYUoCAAAAAHsa0P0AAAAAcWFJAgAAAAB7Guj9AAAAAHFhSAIAAAAAexrw/QAAAAB5YUACAAAAAHsaAP4AAAAAeWE4AgAAAAB7Ggj+AAAAAHmh2P0AAAAAhRAAAAFuAAB5AwgAAAAAAHkxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5BAAAAAAAAHsTAAAAAAAAVQIBAAEAAAAFAJ7/AAAAAHkFEAAAAAAAeVEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHtKyP0AAAAAezrY/QAAAAB7WsD9AAAAAHsVAAAAAAAAVQIBAAEAAAAFAJL/AAAAAHEBKgAAAAAAexqY/QAAAABxASkAAAAAAHsaoP0AAAAAcQEoAAAAAAB7Gqj9AAAAAHkBIAAAAAAAexqw/QAAAAB5ARgAAAAAAHsauP0AAAAAv2EAAAAAAAAHAQAA8AEAAIUQAADebQAAeQMIAAAAAAB5MQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeQQAAAAAAAB7EwAAAAAAAFUCAQABAAAABQB7/wAAAAB5BRAAAAAAAHlRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7Soj9AAAAAHs6kP0AAAAAe1qA/QAAAAB7FQAAAAAAAFUCAQABAAAABQBv/wAAAABxASoAAAAAAHsaUP0AAAAAcQEpAAAAAAB7Glj9AAAAAHEBKAAAAAAAexpg/QAAAAB5ASAAAAAAAHsaaP0AAAAAeQEYAAAAAAB7GnD9AAAAAAcGAAAQAQAAv2EAAAAAAACFEAAAu20AAHkBCAAAAAAAeRMAAAAAAAAHAwAAAQAAALcEAAABAAAAFQMBAAAAAAC3BAAAAAAAAHuaeP0AAAAAeQkAAAAAAAB7MQAAAAAAAFUEAQABAAAABQBX/wAAAAB7ikj9AAAAAHkDEAAAAAAAeTQAAAAAAAAHBAAAAQAAALcFAAABAAAAFQQBAAAAAAC3BQAAAAAAAL94AAAAAAAAe0MAAAAAAABVBQEAAQAAAAUATP8AAAAAeQQYAAAAAAB5BSAAAAAAAHEGKAAAAAAAcQcpAAAAAABxACoAAAAAALcCAAAIAAAAeyqo/wAAAAC3AgAAAAAAAHsqsP8AAAAAeyqg/wAAAAB5otD9AAAAAHMqmv8AAAAAeaLo/QAAAABzKpn/AAAAAHmi8P0AAAAAcyqY/wAAAAB5ogD+AAAAAHsqkP8AAAAAeaII/gAAAAB7Koj/AAAAAHmieP0AAAAAeyqA/wAAAAB7inj/AAAAAHmiSP0AAAAAeypw/wAAAABzCmr/AAAAAHN6af8AAAAAc2po/wAAAAB7WmD/AAAAAHtKWP8AAAAAezpQ/wAAAAB7Gkj/AAAAAHuaQP8AAAAAeaFQ/QAAAABzGjr/AAAAAHmhWP0AAAAAcxo5/wAAAAB5oWD9AAAAAHMaOP8AAAAAeaFo/QAAAAB7GjD/AAAAAHmhcP0AAAAAexoo/wAAAAB5oYD9AAAAAHsaIP8AAAAAeaGQ/QAAAAB7Ghj/AAAAAHmhiP0AAAAAexoQ/wAAAAB5oZj9AAAAAHMaCv8AAAAAeaGg/QAAAABzGgn/AAAAAHmhqP0AAAAAcxoI/wAAAAB5obD9AAAAAHsaAP8AAAAAeaG4/QAAAAB7Gvj+AAAAAHmhwP0AAAAAexrw/gAAAAB5odj9AAAAAHsa6P4AAAAAeaHI/QAAAAB7GuD+AAAAALcBAAABAAAAexrY/gAAAAAYAQAAkB8KAAAAAAAAAAAAexrQ/gAAAAC/ogAAAAAAAAcCAADQ/v//eaH4/QAAAAB5o+D9AAAAAIUQAADBUQAAv6EAAAAAAAAHAQAAIP7//4UQAAATiP//lQAAAAAAAAC/FgAAAAAAAL+hAAAAAAAABwEAAOD+//+3AwAAOAAAAIUQAAADqgAAeacQ/wAAAAB5eEgBAAAAAHmBAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5eUABAAAAAHsYAAAAAAAAVQICAAEAAACFEAAA/////4UQAAD/////eXNQAQAAAAB5MQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAezrY/gAAAAB7EwAAAAAAAFUCAQABAAAABQD0/wAAAABxcWoBAAAAAHsasP4AAAAAcXFpAQAAAAB7Grj+AAAAAHFxaAEAAAAAexrA/gAAAAB5cWABAAAAAHsayP4AAAAAeXFYAQAAAAB7GtD+AAAAAL9xAAAAAAAABwEAABABAACFEAAALm0AAHkDCAAAAAAAeTEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHkEAAAAAAAAexMAAAAAAABVAgEAAQAAAAUA3f8AAAAAeQUQAAAAAAB5UQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAe0qg/gAAAAB7Oqj+AAAAAHtamP4AAAAAexUAAAAAAABVAgEAAQAAAAUA0f8AAAAAcQEqAAAAAAB7GnD+AAAAAHEBKQAAAAAAexp4/gAAAABxASgAAAAAAHsagP4AAAAAeQEgAAAAAAB7Goj+AAAAAHkBGAAAAAAAexqQ/gAAAAC/cQAAAAAAAAcBAADgAAAAhRAAAAttAAB5AwgAAAAAAHkxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5BAAAAAAAAHsTAAAAAAAAVQIBAAEAAAAFALr/AAAAAHkFEAAAAAAAeVEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHtKYP4AAAAAezpo/gAAAAB7Wlj+AAAAAHsVAAAAAAAAVQIBAAEAAAAFAK7/AAAAAHEBKgAAAAAAexow/gAAAABxASkAAAAAAHsaOP4AAAAAcQEoAAAAAAB7GkD+AAAAAHkBIAAAAAAAexpI/gAAAAB5ARgAAAAAAHsaUP4AAAAAv3EAAAAAAACFEAAA6WwAAHkBCAAAAAAAeRMAAAAAAAAHAwAAAQAAALcEAAABAAAAFQMBAAAAAAC3BAAAAAAAAHkCAAAAAAAAezEAAAAAAABVBAEAAQAAAAUAmP8AAAAAe5og/gAAAAB5AxAAAAAAAHk0AAAAAAAABwQAAAEAAAC3BQAAAQAAABUEAQAAAAAAtwUAAAAAAAB7Khj+AAAAAL+JAAAAAAAAe2oo/gAAAAB7QwAAAAAAAFUFAQABAAAABQCL/wAAAAB5BBgAAAAAAHkFIAAAAAAAcQgoAAAAAABxAikAAAAAAHEAKgAAAAAAtwYAAAgAAAB7avD/AAAAALcGAAAAAAAAe2r4/wAAAAB7auj/AAAAAHmmsP4AAAAAc2ri/wAAAAB5prj+AAAAAHNq4f8AAAAAeabA/gAAAABzauD/AAAAAHmmyP4AAAAAe2rY/wAAAAB5ptD+AAAAAHtq0P8AAAAAeabY/gAAAAB7asj/AAAAAHuawP8AAAAAeaYg/gAAAAB7arj/AAAAAHMKsv8AAAAAcyqx/wAAAABzirD/AAAAAHtaqP8AAAAAe0qg/wAAAAB7Opj/AAAAAHsakP8AAAAAeaEY/gAAAAB7Goj/AAAAAHmhMP4AAAAAcxqC/wAAAAB5oTj+AAAAAHMagf8AAAAAeaFA/gAAAABzGoD/AAAAAHmhSP4AAAAAexp4/wAAAAB5oVD+AAAAAHsacP8AAAAAeaFY/gAAAAB7Gmj/AAAAAHmhaP4AAAAAexpg/wAAAAB5oWD+AAAAAHsaWP8AAAAAeaFw/gAAAABzGlL/AAAAAHmheP4AAAAAcxpR/wAAAAB5oYD+AAAAAHMaUP8AAAAAeaGI/gAAAAB7Gkj/AAAAAHmhkP4AAAAAexpA/wAAAAB5oZj+AAAAAHsaOP8AAAAAeaGo/gAAAAB7GjD/AAAAAHmhoP4AAAAAexoo/wAAAAC3AQAAAQAAAHsaIP8AAAAAGAEAAJAfCgAAAAAAAAAAAHsaGP8AAAAAeXGQAAAAAAB5E7AAAAAAAL+iAAAAAAAABwIAABj///95oSj+AAAAAIUQAADsUAAAv6EAAAAAAAAHAQAA8P7//4UQAAA+h///lQAAAAAAAAC/JgAAAAAAAL8YAAAAAAAAv6EAAAAAAAAHAQAAuPP//7cDAAA4AAAAhRAAAC2pAAB5oejzAAAAAHESoAUAAAAAVQIdAAEAAABhEaQFAAAAAHsaoPAAAAAAv6EAAAAAAAAHAQAA8PP//79iAAAAAAAAtwMAADgAAACFEAAAI6kAAHmpIPQAAAAAeZFIAAAAAAB7Gjj0AAAAAHmRQAAAAAAAexow9AAAAAB5kTgAAAAAAHsaKPQAAAAAtwEAAAEAAAB7GUAAAAAAALcCAAAAAAAAeylIAAAAAAB7KTgAAAAAAHmWKAMAAAAAeWIAAAAAAAAHAgAAAQAAABUCAQAAAAAAtwEAAAAAAAB5lCADAAAAAHsmAAAAAAAAVQEkAAEAAACFEAAA/////4UQAAD/////v6EAAAAAAAAHAQAACP///xgCAACYzQkAAAAAAAAAAACFEAAApZL//7cBAAABAAAAexqA9wAAAAC3BwAAAAAAAHt6iPcAAAAAe3p49wAAAAC/pgAAAAAAAAcGAADg9P//v6IAAAAAAAAHAgAAePf//79hAAAAAAAAGAMAADgdCgAAAAAAAAAAAIUQAABblQAAGAEAAJjNCQAAAAAAAAAAAL9iAAAAAAAAhRAAAI6U//8VABQAAAAAAL+jAAAAAAAABwMAAPj///8YAQAAlMsJAAAAAAAAAAAAtwIAADcAAAAYBAAAaB0KAAAAAAAAAAAAGAUAAIgdCgAAAAAAAAAAAIUQAAC/kAAAhRAAAP////95kzADAAAAAHkxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7EwAAAAAAAFUCIAABAAAABQDT/wAAAAB5oQj/AAAAAHsauPsAAAAAeaEQ/wAAAAB7GsD7AAAAAHmhGP8AAAAAexrI+wAAAAC3AQAAthcAAGMaMPwAAAAAeaF49wAAAAB7GtD7AAAAAHmhgPcAAAAAexrY+wAAAAB5oYj3AAAAAHsa4PsAAAAAtwEAAAIAAABzGuj7AAAAALcBAACjAAAAYxqw+wAAAAC3AQAAPgAAAHsaqPsAAAAAGAEAACTPCQAAAAAAAAAAAHsaoPsAAAAAe3qY+wAAAAC/ogAAAAAAAAcCAACY+///v4EAAAAAAACFEAAAnWEAAL+hAAAAAAAABwEAAMjz//8FAI0JAAAAAHtKmPMAAAAAeZGABAAAAAB7GqDzAAAAAHkRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAABxlEoDAAAAAHtKiPMAAAAAcZRJAwAAAAB7SpDzAAAAAHGQSAMAAAAAeZVAAwAAAAB5lDgDAAAAAHmXeAQAAAAAe3qA8wAAAAB5p6DzAAAAAHsXAAAAAAAAVQIBAAEAAAAFAJ//AAAAAHmXiAQAAAAAeXEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHsKYPMAAAAAe1po8wAAAAB7SnDzAAAAAHs6ePMAAAAAexcAAAAAAABVAgEAAQAAAAUAkv8AAAAAcZGiBAAAAAB7GjjzAAAAAHGRoQQAAAAAexpA8wAAAABxkaAEAAAAAHsaSPMAAAAAeZGYBAAAAAB7GlDzAAAAAHmRkAQAAAAAexpY8wAAAAC/kQAAAAAAAAcBAADQAQAAhRAAAMxeAAB5AwgAAAAAAHkxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5BAAAAAAAAHsTAAAAAAAAVQIBAAEAAAAFAHv/AAAAAHkFEAAAAAAAeVEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHtKKPMAAAAAezow8wAAAAB7WiDzAAAAAHsVAAAAAAAAVQIBAAEAAAAFAG//AAAAAHEBKgAAAAAAexr48gAAAABxASkAAAAAAHsaAPMAAAAAcQEoAAAAAAB7GgjzAAAAAHkBIAAAAAAAexoQ8wAAAAB5ARgAAAAAAHsaGPMAAAAAv5EAAAAAAAAHAQAA4AAAAIUQAAC/awAAeQMIAAAAAAB5MQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeQQAAAAAAAB7EwAAAAAAAFUCAQABAAAABQBY/wAAAAB5BRAAAAAAAHlRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7SujyAAAAAHs68PIAAAAAe1rg8gAAAAB7FQAAAAAAAFUCAQABAAAABQBM/wAAAABxASoAAAAAAHsauPIAAAAAcQEpAAAAAAB7GsDyAAAAAHEBKAAAAAAAexrI8gAAAAB5ASAAAAAAAHsa0PIAAAAAeQEYAAAAAAB7GtjyAAAAAL+RAAAAAAAABwEAAAACAACFEAAAhl4AAHkDCAAAAAAAeTEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHkEAAAAAAAAexMAAAAAAABVAgEAAQAAAAUANf8AAAAAeQUQAAAAAAB5UQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAe0qo8gAAAAB7OrDyAAAAAHtaoPIAAAAAexUAAAAAAABVAgEAAQAAAAUAKf8AAAAAcQEqAAAAAAB7GnjyAAAAAHEBKQAAAAAAexqA8gAAAABxASgAAAAAAHsaiPIAAAAAeQEgAAAAAAB7GpDyAAAAAHkBGAAAAAAAexqY8gAAAAC/kQAAAAAAAAcBAAAwAgAAhRAAAGNeAAB5AwgAAAAAAHkxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5BAAAAAAAAHsTAAAAAAAAVQIBAAEAAAAFABL/AAAAAHkFEAAAAAAAeVEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHtKaPIAAAAAezpw8gAAAAB7WmDyAAAAAHsVAAAAAAAAVQIBAAEAAAAFAAb/AAAAAHEBKgAAAAAAexo48gAAAABxASkAAAAAAHsaQPIAAAAAcQEoAAAAAAB7GkjyAAAAAHkBIAAAAAAAexpQ8gAAAAB5ARgAAAAAAHsaWPIAAAAAv5EAAAAAAAAHAQAAYAIAAIUQAABAXgAAeQMIAAAAAAB5MQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeQQAAAAAAAB7EwAAAAAAAFUCAQABAAAABQDv/gAAAAB5BRAAAAAAAHlRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7SijyAAAAAHs6MPIAAAAAe1og8gAAAAB7FQAAAAAAAFUCAQABAAAABQDj/gAAAABxASoAAAAAAHsa+PEAAAAAcQEpAAAAAAB7GgDyAAAAAHEBKAAAAAAAexoI8gAAAAB5ASAAAAAAAHsaEPIAAAAAeQEYAAAAAAB7GhjyAAAAAL+RAAAAAAAABwEAAJACAACFEAAAHV4AAHkDCAAAAAAAeTEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHkEAAAAAAAAexMAAAAAAABVAgEAAQAAAAUAzP4AAAAAeQUQAAAAAAB5UQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAe0ro8QAAAAB7OvDxAAAAAHta4PEAAAAAexUAAAAAAABVAgEAAQAAAAUAwP4AAAAAcQEqAAAAAAB7GrDxAAAAAHEBKQAAAAAAexq48QAAAABxASgAAAAAAHsawPEAAAAAeQEgAAAAAAB7GsjxAAAAAHkBGAAAAAAAexrQ8QAAAAC/kQAAAAAAAAcBAADAAgAAhRAAAPpdAAB5BAgAAAAAAHlBAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7etjxAAAAAHmjmPMAAAAAeQMAAAAAAAB7FAAAAAAAAFUCAQABAAAABQCn/gAAAAB5BxAAAAAAAHlxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7OqDxAAAAAHtKqPEAAAAAexcAAAAAAABVAgEAAQAAAAUAnP4AAAAAcQEqAAAAAAB7GnjxAAAAAHEBKQAAAAAAexqA8QAAAABxASgAAAAAAHsaiPEAAAAAeQEgAAAAAAB7GpDxAAAAAHkBGAAAAAAAexqY8QAAAAC/kQAAAAAAAAcBAACwAAAAhRAAAOxqAAB5AwgAAAAAAHkxAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5BQAAAAAAAHsTAAAAAAAAVQIBAAEAAAAFAIX+AAAAAHkEEAAAAAAAeUEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHtKcPEAAAAAexQAAAAAAABVAgEAAQAAAAUAe/4AAAAAeZRYAwAAAAB5QQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAe1po8QAAAAB5lVADAAAAAHtaYPEAAAAAcQUqAAAAAAB7WkjxAAAAAHEFKQAAAAAAe1pQ8QAAAABxBSgAAAAAAHtaWPEAAAAAeQUgAAAAAAB7WkDxAAAAAHkAGAAAAAAAexQAAAAAAABVAgEAAQAAAAUAZv4AAAAAeZVgAwAAAAB5UQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAewo48QAAAAB7FQAAAAAAAFUCAQABAAAABQBc/gAAAAB5kCgDAAAAAHkBAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7ajDxAAAAAHmWIAMAAAAAe2oo8QAAAABxlnoDAAAAAHtqEPEAAAAAcZZ5AwAAAAB7ahjxAAAAAHGWeAMAAAAAe2og8QAAAAB5lnADAAAAAHtqCPEAAAAAeZZoAwAAAAB7agDxAAAAAHsQAAAAAAAAVQIBAAEAAAAFAEb+AAAAAHmSMAMAAAAAeSEAAAAAAAAHAQAAAQAAALcGAAABAAAAFQEBAAAAAAC3BgAAAAAAAHuKqPAAAAAAexIAAAAAAABVBgEAAQAAAAUAPP4AAAAAeZaIAwAAAAB5YQAAAAAAAAcBAAABAAAAtwgAAAEAAAAVAQEAAAAAALcIAAAAAAAAezr48AAAAAB5k4ADAAAAAHs68PAAAAAAcZNKAwAAAAB7OujwAAAAAHGTSQMAAAAAezrQ8AAAAABxk0gDAAAAAHs6yPAAAAAAeZNAAwAAAAB7OtjwAAAAAHmTOAMAAAAAezrg8AAAAAB7FgAAAAAAAFUIAQABAAAABQAm/gAAAAB5kZADAAAAAHkYAAAAAAAABwgAAAEAAAC3AwAAAQAAABUIAQAAAAAAtwMAAAAAAAB7gQAAAAAAAFUDAQABAAAABQAd/gAAAAB5mJgDAAAAAHmToAMAAAAAezrA8AAAAABxk6gDAAAAAHs6uPAAAAAAcZOpAwAAAAB7OrDwAAAAAHGZqgMAAAAAeaN48QAAAABzOlr2AAAAAHmjgPEAAAAAczpZ9gAAAAB5o4jxAAAAAHM6WPYAAAAAeaOQ8QAAAAB7OlD2AAAAAHmjmPEAAAAAezpI9gAAAAB7ekD2AAAAAHmjqPEAAAAAezo49gAAAAB5o6DxAAAAAHs6MPYAAAAAeaOw8QAAAABzOir2AAAAAHmjuPEAAAAAczop9gAAAAB5o8DxAAAAAHM6KPYAAAAAeaPI8QAAAAB7OiD2AAAAAHmj0PEAAAAAezoY9gAAAAB5o+DxAAAAAHs6EPYAAAAAeaPw8QAAAAB7Ogj2AAAAAHmj6PEAAAAAezoA9gAAAAB5o/jxAAAAAHM6+vUAAAAAeaMA8gAAAABzOvn1AAAAAHmjCPIAAAAAczr49QAAAAB5oxDyAAAAAHs68PUAAAAAeaMY8gAAAAB7Ouj1AAAAAHmjIPIAAAAAezrg9QAAAAB5ozDyAAAAAHs62PUAAAAAeaMo8gAAAAB7OtD1AAAAAHmjOPIAAAAAczrK9QAAAAB5o0DyAAAAAHM6yfUAAAAAeaNI8gAAAABzOsj1AAAAAHmjUPIAAAAAezrA9QAAAAB5o1jyAAAAAHs6uPUAAAAAeaNg8gAAAAB7OrD1AAAAAHmjcPIAAAAAezqo9QAAAAB5o2jyAAAAAHs6oPUAAAAAeaN48gAAAABzOpr1AAAAAHmjgPIAAAAAczqZ9QAAAAB5o4jyAAAAAHM6mPUAAAAAeaOQ8gAAAAB7OpD1AAAAAHmjmPIAAAAAezqI9QAAAAB5o6DyAAAAAHs6gPUAAAAAeaOw8gAAAAB7Onj1AAAAAHmjqPIAAAAAezpw9QAAAAB5o7jyAAAAAHM6avUAAAAAeaPA8gAAAABzOmn1AAAAAHmjyPIAAAAAczpo9QAAAAB5o9DyAAAAAHs6YPUAAAAAeaPY8gAAAAB7Olj1AAAAAHmj4PIAAAAAezpQ9QAAAAB5o/DyAAAAAHs6SPUAAAAAeaPo8gAAAAB7OkD1AAAAAHmj+PIAAAAAczo69QAAAAB5owDzAAAAAHM6OfUAAAAAeaMI8wAAAABzOjj1AAAAAHmjEPMAAAAAezow9QAAAAB5oxjzAAAAAHs6KPUAAAAAeaMg8wAAAAB7OiD1AAAAAHmjMPMAAAAAezoY9QAAAAB5oyjzAAAAAHs6EPUAAAAAeaM48wAAAABzOgr1AAAAAHmjQPMAAAAAczoJ9QAAAAB5o0jzAAAAAHM6CPUAAAAAeaNQ8wAAAAB7OgD1AAAAAHmjWPMAAAAAezr49AAAAAB5o9jxAAAAAHs68PQAAAAAeaOg8wAAAAB7Ouj0AAAAAHmjgPMAAAAAezrg9AAAAAB5o2jxAAAAAHs6YPYAAAAAeaP48AAAAAB7Omj2AAAAAHmjcPEAAAAAezpw9gAAAAB5ozjxAAAAAHs6ePYAAAAAeaNA8QAAAAB7OoD2AAAAAHmjSPEAAAAAczqK9gAAAAB5o1DxAAAAAHM6ifYAAAAAeaNY8QAAAABzOoj2AAAAAHmjYPEAAAAAezqQ9gAAAAB7Spj2AAAAAHtaoPYAAAAAeaMA8QAAAAB7Oqj2AAAAAHmjCPEAAAAAezqw9gAAAAB5oxDxAAAAAHM6uvYAAAAAeaMY8QAAAABzOrn2AAAAAHmjIPEAAAAAczq49gAAAABxo5z7AAAAAHM6X/YAAAAAYaOY+wAAAABjOlv2AAAAAGGjePcAAAAAYzqL9gAAAABxo3z3AAAAAHM6j/YAAAAAeaPI8AAAAABzOuj2AAAAAHmj0PAAAAAAczrp9gAAAAB5o+jwAAAAAHM66vYAAAAAeaPY8AAAAAB7OuD2AAAAAHmj4PAAAAAAezrY9gAAAAB7KtD2AAAAAHsKyPYAAAAAeaIo8QAAAAB7KsD2AAAAAHOaGvcAAAAAeaKw8AAAAABzKhn3AAAAAHmiuPAAAAAAcyoY9wAAAAB5osDwAAAAAHsqEPcAAAAAe4oI9wAAAAB7GgD3AAAAAHtq+PYAAAAAeaHw8AAAAAB7GvD2AAAAAHGhDP8AAAAAcxq/9gAAAABhoQj/AAAAAGMau/YAAAAAYaEw/gAAAABjGuv2AAAAAHGhNP4AAAAAcxrv9gAAAABxoTT6AAAAAHMaH/cAAAAAYaEw+gAAAABjGhv3AAAAAHmhiPMAAAAAcxpa9wAAAAB5oZDzAAAAAHMaWfcAAAAAeaFg8wAAAABzGlj3AAAAAHmhaPMAAAAAexpQ9wAAAAB5oXDzAAAAAHsaSPcAAAAAeaF48wAAAAB7GkD3AAAAAHmhMPEAAAAAexo49wAAAAB5oZjzAAAAAHsaMPcAAAAAcaEc+wAAAABzGl/3AAAAAGGhGPsAAAAAYxpb9wAAAAC3AQAACAAAAHsaaPcAAAAAtwEAAAAAAAB7GnD3AAAAAHsaYPcAAAAAGAEAAJAfCgAAAAAAAAAAAHsaIPcAAAAAtwEAAAEAAAB7Gij3AAAAAHmnIPQAAAAAeXj4AgAAAAB5ggAAAAAAAAcCAAABAAAAFQIBAAAAAAC3AQAAAAAAAHl58AIAAAAAeygAAAAAAABVAQEAAQAAAAUAIv0AAAAAeXMAAwAAAAB5MQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAezoI8wAAAAB7EwAAAAAAAFUCAQABAAAABQAY/QAAAABxcRoDAAAAAHsaAPMAAAAAcXEZAwAAAAB7GujyAAAAAHFxGAMAAAAAexrg8gAAAAB5cRADAAAAAHsa8PIAAAAAeXEIAwAAAAB7GvjyAAAAAL9xAAAAAAAAhRAAAFNcAAB5AQgAAAAAAHsaiPMAAAAAeREAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHkDAAAAAAAAezrY8gAAAAB5o4jzAAAAAHsTAAAAAAAAVQIBAAEAAAAFAP/8AAAAAHkBEAAAAAAAexqA8wAAAAB5EQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeaOA8wAAAAB7EwAAAAAAAFUCAQABAAAABQD0/AAAAABxASoAAAAAAHsaqPIAAAAAcQEpAAAAAAB7GrDyAAAAAHEBKAAAAAAAexq48gAAAAB5ASAAAAAAAHsawPIAAAAAeQEYAAAAAAB7GsjyAAAAAL9xAAAAAAAABwEAAEABAACFEAAARGkAAHkBCAAAAAAAexp48wAAAAB5EQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeQMAAAAAAAB7OtDyAAAAAHmjePMAAAAAexMAAAAAAABVAgEAAQAAAAUA2vwAAAAAeQEQAAAAAAB7GnDzAAAAAHkRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5o3DzAAAAAHsTAAAAAAAAVQIBAAEAAAAFAM/8AAAAAHlxgAQAAAAAexpo8wAAAAB5EQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeXN4BAAAAAB7OnjyAAAAAHEDKgAAAAAAezqA8gAAAABxAykAAAAAAHs6iPIAAAAAcQMoAAAAAAB7OpDyAAAAAHkDIAAAAAAAezqY8gAAAAB5AxgAAAAAAHs6oPIAAAAAeaNo8wAAAAB7EwAAAAAAAFUCAQABAAAABQC4/AAAAAB5cYgEAAAAAHsaYPMAAAAAeREAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHmjYPMAAAAAexMAAAAAAABVAgEAAQAAAAUArfwAAAAAcXGiBAAAAAB7GlDyAAAAAHFxoQQAAAAAexpY8gAAAABxcaAEAAAAAHsaYPIAAAAAeXGYBAAAAAB7GmjyAAAAAHlxkAQAAAAAexpw8gAAAAC/cQAAAAAAAAcBAAAQAQAAhRAAAOdbAAB5AQgAAAAAAHsaWPMAAAAAeREAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHkDAAAAAAAAezpI8gAAAAB5o1jzAAAAAHsTAAAAAAAAVQIBAAEAAAAFAJP8AAAAAHkBEAAAAAAAexpQ8wAAAAB5EQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeaNQ8wAAAAB7EwAAAAAAAFUCAQABAAAABQCI/AAAAABxASoAAAAAAHsaIPIAAAAAcQEpAAAAAAB7GijyAAAAAHEBKAAAAAAAexow8gAAAAB5ASAAAAAAAHsaOPIAAAAAeQEYAAAAAAB7GkDyAAAAAL9xAAAAAAAABwEAAHABAACFEAAAwlsAAHkBCAAAAAAAexpI8wAAAAB5EQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeQMAAAAAAAB7OhjyAAAAAHmjSPMAAAAAexMAAAAAAABVAgEAAQAAAAUAbvwAAAAAeQEQAAAAAAB7GkDzAAAAAHkRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5o0DzAAAAAHsTAAAAAAAAVQIBAAEAAAAFAGP8AAAAAHEBKgAAAAAAexrw8QAAAABxASkAAAAAAHsa+PEAAAAAcQEoAAAAAAB7GgDyAAAAAHkBIAAAAAAAexoI8gAAAAB5ARgAAAAAAHsaEPIAAAAAv3EAAAAAAAAHAQAAoAEAAIUQAACdWwAAeQEIAAAAAAB7GjjzAAAAAHkRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5AwAAAAAAAHs66PEAAAAAeaM48wAAAAB7EwAAAAAAAFUCAQABAAAABQBJ/AAAAAB5ARAAAAAAAHsaMPMAAAAAeREAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHmjMPMAAAAAexMAAAAAAABVAgEAAQAAAAUAPvwAAAAAeXG4AwAAAAB7GijzAAAAAHkRAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB5c7ADAAAAAHs64PEAAAAAcQMqAAAAAAB7OrjxAAAAAHEDKQAAAAAAezrA8QAAAABxAygAAAAAAHs6yPEAAAAAeQMgAAAAAAB7OtDxAAAAAHkDGAAAAAAAezrY8QAAAAB5oyjzAAAAAHsTAAAAAAAAVQIBAAEAAAAFACf8AAAAAHlzwAMAAAAAeTEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHs6sPEAAAAAexMAAAAAAABVAgEAAQAAAAUAHfwAAAAAcXHaAwAAAAB7GpjxAAAAAHFx2QMAAAAAexqg8QAAAABxcdgDAAAAAHsaqPEAAAAAeXHQAwAAAAB7GpDxAAAAAHlxyAMAAAAAexqI8QAAAAC/cQAAAAAAAAcBAADgAwAAhRAAAG1oAAB5AQgAAAAAAHsaIPMAAAAAeREAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHkDAAAAAAAAezqA8QAAAAB5oyDzAAAAAHsTAAAAAAAAVQIBAAEAAAAFAAP8AAAAAHkBEAAAAAAAexoY8wAAAAB5EQAAAAAAAAcBAAABAAAAtwIAAAEAAAAVAQEAAAAAALcCAAAAAAAAeaMY8wAAAAB7EwAAAAAAAFUCAQABAAAABQD4+wAAAABxASoAAAAAAHsaUPEAAAAAcQEpAAAAAAB7GljxAAAAAHEBKAAAAAAAexpg8QAAAAB5ASAAAAAAAHsaaPEAAAAAeQEYAAAAAAB7GnDxAAAAAL9xAAAAAAAABwEAABAEAACFEAAASGgAAHkDCAAAAAAAeTEAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHkEAAAAAAAAe0p48QAAAAB7EwAAAAAAAFUCAQABAAAABQDg+wAAAAB5ARAAAAAAAHsaEPMAAAAAeREAAAAAAAAHAQAAAQAAALcCAAABAAAAFQEBAAAAAAC3AgAAAAAAAHs6SPEAAAAAeaMQ8wAAAAB7EwAAAAAAAFUCAQABAAAABQDU+wAAAABxASoAAAAAAHsaMPEAAAAAcQEpAAAAAAB7GjjxAAAAAHEBKAAAAAAAexpA8QAAAAB5ASAAAAAAAHsaKPEAAAAAeQEYAAAAAAB7GiDxAAAAAL+mAAAAAAAABwYAAOD5//+/YQAAAAAAAL9yAAAAAAAAhRAAAIFZAAC/oQAAAAAAAAcBAACo8///v2IAAAAAAACFEAAAhWoAAHlxcAQAAAAAtwMAAAEAAAC/EgAAAAAAAAcCAAABAAAAFQIBAAAAAAC3AwAAAAAAAFUDBwABAAAAGAEAANDGCQAAAAAAAAAAALcCAAAcAAAAGAMAAAAhCgAAAAAAAAAAAIUQAADjiwAAhRAAAP////97mhDxAAAAAHuKGPEAAAAAeaOw8wAAAAB7OgDxAAAAAHmjqPMAAAAAezoI8QAAAAB7J3AEAAAAANwBAABAAAAAexoA+gAAAAB5ogj0AAAAABUC7QYAAAAAv6EAAAAAAAAHAQAAYPf//3sa6PAAAAAAv6EAAAAAAAAHAQAAcPX//3sa+PAAAAAAv6EAAAAAAAAHAQAAQPX//3sa4PAAAAAAv6EAAAAAAAAHAQAAAPT//3sa8PAAAAAAeaEA9AAAAAB7GpDzAAAAAAUACQAAAAAAeaKg8wAAAAB5oZDzAAAAABUB2wYAAAAAeaOY8wAAAABnAwAAAwAAAA8yAAAAAAAABwEAAP////97GpDzAAAAAHkiIAEAAAAAtwkAABMBAAC/JwAAAAAAAAcHAAAIAAAAeyqg8wAAAABpKBIBAAAAAHuKmPMAAAAAJwgAABgAAAAFAAkAAAAAAAcJAAABAAAABwgAAOj///8HBwAAGAAAABUBBQABAAAAVwEAAP8AAAAVARgAAAAAAAcJAADs/v//e5qY8wAAAAAFAOb/AAAAABUI5f8AAAAAeXEQAAAAAAC3BgAADAAAAL8TAAAAAAAALRYBAAAAAAC3AwAADAAAAB8WAAAAAAAAeXIIAAAAAAAYAQAAZc8JAAAAAAAAAAAAhRAAAA2lAAAVAAEAAAAAAL8GAAAAAAAAtwIAAAAAAAC3AwAAAQAAAFUGAQAAAAAAtwMAAAAAAAC3AQAA/////21i5P8AAAAAvzEAAAAAAAAFAOL/AAAAAHmhoPMAAAAAD5EAAAAAAABxEQAAAAAAALcCAAABAAAAeyrY+QAAAAC/ogAAAAAAAAcCAAAP+v//eyrQ+QAAAAC/ogAAAAAAAAcCAAAA+v//eyrA+QAAAAB5ogDxAAAAAHsquPkAAAAAeaII8QAAAAB7KrD5AAAAALcCAAADAAAAeyqo+QAAAAAYAgAAYs8JAAAAAAAAAAAAeyqg+QAAAABzGg/6AAAAALcBAAAEAAAAexqY+QAAAAC/oQAAAAAAAAcBAACg+f//exqQ+QAAAAAYAQAAcB8KAAAAAAAAAAAAexqA+QAAAAB5oVDxAAAAAHMa0vgAAAAAeaFY8QAAAABzGtH4AAAAAHmhYPEAAAAAcxrQ+AAAAAB5oWjxAAAAAHsayPgAAAAAeaFw8QAAAAB7GsD4AAAAAHmhGPMAAAAAexq4+AAAAAB5oSDzAAAAAHsasPgAAAAAeaGA8QAAAAB7Gqj4AAAAAHmhuPEAAAAAcxqi+AAAAAB5ocDxAAAAAHMaofgAAAAAeaHI8QAAAABzGqD4AAAAAHmh0PEAAAAAexqY+AAAAAB5odjxAAAAAHsakPgAAAAAeaEw8wAAAAB7Goj4AAAAAHmhOPMAAAAAexqA+AAAAAB5oejxAAAAAHsaePgAAAAAeaGo8gAAAABzGnL4AAAAAHmhsPIAAAAAcxpx+AAAAAB5objyAAAAAHMacPgAAAAAeaHA8gAAAAB7Gmj4AAAAAHmhyPIAAAAAexpg+AAAAAB5oYDzAAAAAHsaWPgAAAAAeaGI8wAAAAB7GlD4AAAAAHmh2PIAAAAAexpI+AAAAAB5ofDxAAAAAHMaQvgAAAAAeaH48QAAAABzGkH4AAAAAHmhAPIAAAAAcxpA+AAAAAB5oQjyAAAAAHsaOPgAAAAAeaEQ8gAAAAB7GjD4AAAAAHmhQPMAAAAAexoo+AAAAAB5oUjzAAAAAHsaIPgAAAAAeaEY8gAAAAB7Ghj4AAAAAHmhUPIAAAAAcxoS+AAAAAB5oVjyAAAAAHMaEfgAAAAAeaFg8gAAAABzGhD4AAAAAHmhaPIAAAAAexoI+AAAAAB5oXDyAAAAAHsaAPgAAAAAeaFg8wAAAAB7Gvj3AAAAAHmhaPMAAAAAexrw9wAAAAB5oXjyAAAAAHsa6PcAAAAAeaGA8gAAAABzGuL3AAAAAHmhiPIAAAAAcxrh9wAAAAB5oZDyAAAAAHMa4PcAAAAAeaGY8gAAAAB7Gtj3AAAAAHmhoPIAAAAAexrQ9wAAAAB5oXDzAAAAAHsayPcAAAAAeaF48wAAAAB7GsD3AAAAAHmh0PIAAAAAexq49wAAAAB5oSDyAAAAAHMasvcAAAAAeaEo8gAAAABzGrH3AAAAAHmhMPIAAAAAcxqw9wAAAAB5oTjyAAAAAHsaqPcAAAAAeaFA8gAAAAB7GqD3AAAAAHmhUPMAAAAAexqY9wAAAAB5oVjzAAAAAHsakPcAAAAAeaFI8gAAAAB7Goj3AAAAALcCAAAIAAAAeyrI+QAAAAC3AQAAAgAAAHsaiPkAAAAAeaPg8QAAAAB7Otj4AAAAAHmjKPMAAAAAezrg+AAAAAB5o7DxAAAAAHs66PgAAAAAeaOI8QAAAAB7OvD4AAAAAHmjkPEAAAAAezr4+AAAAAB5o5jxAAAAAHM6AvkAAAAAeaOg8QAAAABzOgH5AAAAAHmjqPEAAAAAczoA+QAAAAB5o3jxAAAAAHs6CPkAAAAAeaNI8QAAAAB7OhD5AAAAAHmjEPMAAAAAezoY+QAAAAB5oyDxAAAAAHs6IPkAAAAAeaMo8QAAAAB7Oij5AAAAAHmjMPEAAAAAczoy+QAAAAB5ozjxAAAAAHM6MfkAAAAAeaNA8QAAAABzOjD5AAAAAHGjnPsAAAAAczrX+AAAAABho5j7AAAAAGM60/gAAAAAYaMI/wAAAABjOgP5AAAAAHGjDP8AAAAAczoH+QAAAAB5o+DyAAAAAHM6YPkAAAAAeaPo8gAAAABzOmH5AAAAAHmjAPMAAAAAczpi+QAAAAB5o/DyAAAAAHs6WPkAAAAAeaP48gAAAAB7OlD5AAAAAHmjCPMAAAAAezpI+QAAAAB5oxjxAAAAAHs6QPkAAAAAeaMQ8QAAAAB7Ojj5AAAAAHsqcPkAAAAAtwIAAAAAAAB7Knj5AAAAAHsqaPkAAAAAcaI0/gAAAABzKjf5AAAAAGGiMP4AAAAAYyoz+QAAAABhojD6AAAAAGMqY/kAAAAAcaI0+gAAAABzKmf5AAAAAHsagPcAAAAAv6EAAAAAAAAHAQAAgPn//3saePcAAAAAeaYg9AAAAAB5YTAAAAAAAHkSWAAAAAAAeyoo+gAAAAB5ElAAAAAAAHsqIPoAAAAAeRJIAAAAAAB7Khj6AAAAAHkSQAAAAAAAeyoQ+gAAAAB5YmAFAAAAAHsqMPoAAAAAeWJoBQAAAAB7Kjj6AAAAAHlicAUAAAAAeypA+gAAAAB5YngFAAAAAHsqSPoAAAAAeRGwAAAAAAB7GpDzAAAAAHlhgAUAAAAAexpQ+gAAAAB5YYgFAAAAAHsaWPoAAAAAeWGQBQAAAAB7GmD6AAAAAHlhmAUAAAAAexpo+gAAAAC/qAAAAAAAAAcIAAAI////v2IAAAAAAAAHAgAAgAAAAL+BAAAAAAAAhRAAACtYAAC/pwAAAAAAAAcHAACY+///v3EAAAAAAAC/ggAAAAAAAIUQAABoaQAAeWEwAAAAAAB5EpgAAAAAAHsq0PsAAAAAeRKQAAAAAAB7Ksj7AAAAAHkSiAAAAAAAeyrA+wAAAAB5EYAAAAAAAHsauPsAAAAAeaE49AAAAAB7Ghj/AAAAAHmhMPQAAAAAexoQ/wAAAAB5oSj0AAAAAHsaCP8AAAAAv6EAAAAAAAAHAQAAMP7//7+iAAAAAAAABwIAAAj///+FEAAAFkkAAHmmMP4AAAAAeak4/gAAAAB5oUD+AAAAAHsaiPMAAAAAv6gAAAAAAAAHCAAAcPr//7+BAAAAAAAAv3IAAAAAAAC3AwAAQAAAAIUQAABbowAAeaEo+gAAAAB7Gsj6AAAAAHmhIPoAAAAAexrA+gAAAAB5oRj6AAAAAHsauPoAAAAAeaEQ+gAAAAB7GrD6AAAAAHmhSPoAAAAAexro+gAAAAB5oUD6AAAAAHsa4PoAAAAAeaE4+gAAAAB7Gtj6AAAAAHmhMPoAAAAAexrQ+gAAAAB5oWj6AAAAAHsaCPsAAAAAeaFg+gAAAAB7GgD7AAAAAHmhWPoAAAAAexr4+gAAAAB5oVD6AAAAAHsa8PoAAAAAv6EAAAAAAAAHAQAAGPv//7+CAAAAAAAAtwMAAEAAAACFEAAAPqMAAL+hAAAAAAAABwEAAJj7//95ovjwAAAAAIUQAAAgZgAAYaGY+wAAAAB7mpjzAAAAAFUBqgEWAAAAe2qA8wAAAAB5oaD7AAAAAHkWCAAAAAAAJQYGAAcAAAC3AQAACAAAAL9iAAAAAAAAGAMAAPgbCgAAAAAAAAAAAIUQAABBlwAAhRAAAP////95qKj7AAAAAL9jAAAAAAAABwMAAPj///+3AgAAIAAAAHuKePMAAAAALTI2AAAAAAC/YwAAAAAAAAcDAADY////LTIzAAAAAAC/YwAAAAAAAAcDAAC4////twIAACAAAAAtMi8AAAAAALcDAAABAAAAezqg8wAAAAC/YwAAAAAAAAcDAACY////LTIsAAAAAAAVBisAiAAAAHkZAAAAAAAAcZGIAAAAAABzGnj7AAAAALcCAAACAAAALRIBAAAAAAAFAEIAAAAAAL9iAAAAAAAABwIAAHf///+3AQAABAAAAC0hIQAAAAAAv2IAAAAAAAAHAgAAc////y0hHgAAAAAAv2IAAAAAAAAHAgAAb////7cBAAAEAAAALSEaAAAAAAC/YgAAAAAAAAcCAABr////LSEXAAAAAABhkYkAAAAAAAcGAABn////YZKVAAAAAAAHCQAAmQAAAHsaWPMAAAAAFQKaAAAAAAC3AQAAgAAAAL8nAAAAAAAAeypg8wAAAAAtIQEAAAAAALcHAACAAAAAv3EAAAAAAABnAQAABQAAAHsacPMAAAAAtwIAAAEAAACFEAAA/xMAAFUATQAAAAAAeaFw8wAAAAC3AgAAAQAAAIUQAABJegAAhRAAAP////+3AQAAAQAAAHsaoPMAAAAAGAEAAAgdCgAAAAAAAAAAAIUQAABedQAAvwcAAAAAAAC/pgAAAAAAAAcGAACY+///v2EAAAAAAAC/cgAAAAAAAIUQAADOWwAAeacg/AAAAAB5qCj8AAAAAHmpMPwAAAAAv6EAAAAAAAAHAQAAQPT//79iAAAAAAAAtwMAAIgAAACFEAAA3qIAAHua2PQAAAAAe4rQ9AAAAAB7esj0AAAAAHmiePMAAAAAeSEAAAAAAAAHAQAA/////3sSAAAAAAAAeaio8AAAAAB5qfDwAAAAAHmmgPMAAAAAFQZdAQAAAAAFAFgBAAAAABgBAAA4ogkAAAAAAAAAAAB7Gtj+AAAAAL+hAAAAAAAABwEAAHj7//97GtD+AAAAAL+hAAAAAAAABwEAAND+//97Gij/AAAAALcBAAABAAAAexow/wAAAAB7GiD/AAAAABgBAABAHgoAAAAAAAAAAAB7Ghj/AAAAALcBAAAAAAAAexoI/wAAAAC/oQAAAAAAAAcBAAAw/v//v6IAAAAAAAAHAgAACP///4UQAAA5egAAtwEAABgAAAC3AgAACAAAAIUQAADCEwAAVQAEAAAAAAC3AQAAGAAAALcCAAAIAAAAhRAAAAx6AACFEAAA/////3mhQP4AAAAAexAQAAAAAAB5oTj+AAAAAHsQCAAAAAAAeaEw/gAAAAB7EAAAAAAAALcBAAAUAAAAvwIAAAAAAAAYAwAAgBwKAAAAAAAAAAAAhRAAAAx3AAAFALz/AAAAAHsKEP8AAAAAe3oI/wAAAAC3AgAAAAAAAHsqGP8AAAAAtwcAAAAAAAC/lAAAAAAAAHmlYPMAAAAABQAbAAAAAAAHBwAAAQAAAAcEAAAgAAAAvyEAAAAAAABnAQAABQAAAL8DAAAAAAAADxMAAAAAAABpoXz7AAAAAGsTBAAAAAAAYaF4+wAAAABjEwAAAAAAAHmhcPMAAAAAexMHAAAAAABzkwYAAAAAAHmhMP4AAAAAexMPAAAAAAB5oTj+AAAAAHsTFwAAAAAAcaFA/gAAAABzEx8AAAAAAAcGAADg////BwIAAAEAAAB7Khj/AAAAAL9xAAAAAAAAZwEAACAAAAB3AQAAIAAAAC0VAQAAAAAABQAtAAAAAAC3AQAAIAAAAC1hIgAAAAAAeUkGAAAAAABxQQ4AAAAAAHMa2P4AAAAAe5rQ/gAAAAB5odH+AAAAAHsacPMAAAAAYUEAAAAAAABjGnj7AAAAAGlBBAAAAAAAaxp8+wAAAAB5QQ8AAAAAAHsaMP4AAAAAeUEXAAAAAAB7Gjj+AAAAAHFBHwAAAAAAcxpA/gAAAAB5oQj/AAAAAF0S0f8AAAAAv6EAAAAAAAAHAQAACP///3uaaPMAAAAAv0kAAAAAAACFEAAAeIX//3mlYPMAAAAAv5QAAAAAAAB5qWjzAAAAAHmgEP8AAAAAeaIY/wAAAAAFAMb/AAAAAL+UAAAAAAAAtwgAAAAAAAC3CQAAAQAAACUGFwAHAAAABQBy/wAAAAAYAQAACB0KAAAAAAAAAAAAhRAAANB0AAC/BwAAAAAAAHmiCP8AAAAAFQJw/wAAAABnAgAABQAAAHmhEP8AAAAABQAhAAAAAAB5qAj/AAAAAHmpEP8AAAAAv4cAAAAAAAAVCWn/AAAAALcBAAAIAAAALWEBAAAAAAAFAAYAAAAAABgBAAAIHQoAAAAAAAAAAACFEAAAwHQAAL8HAAAAAAAAFQhh/wAAAAAFABEAAAAAAL9hAAAAAAAAVwEAAPj///8VAQEACAAAAAUABgAAAAAAGAEAAAgdCgAAAAAAAAAAAIUQAAC2dAAAvwcAAAAAAAAVCFf/AAAAAAUABwAAAAAAFQYBABAAAAAFAAsAAAAAABgBAAAIHQoAAAAAAAAAAACFEAAArnQAAL8HAAAAAAAAFQhP/wAAAABnCAAABQAAAL+RAAAAAAAAv4IAAAAAAAC3AwAAAQAAAIUQAABAEwAABQBJ/wAAAAB5QQgAAAAAAHsacPMAAAAAFQgFAAAAAABnCAAABQAAAL+RAAAAAAAAv4IAAAAAAAC3AwAAAQAAAIUQAAA3EwAAeaJ48wAAAAB5IQAAAAAAAAcBAAD/////exIAAAAAAAB5oWD2AAAAAHkSAAAAAAAAeyqY+wAAAAB5EggAAAAAAHsqoPsAAAAAeRIQAAAAAAB7Kqj7AAAAAHkRGAAAAAAAexqw+wAAAAC/oQAAAAAAAAcBAABY+///v6IAAAAAAAAHAgAAmPv//4UQAAAJaAAAv6EAAAAAAAAHAQAAmPv//3mi4PAAAAAAhRAAAMNWAAB5ocj6AAAAAHsaIP8AAAAAeaHA+gAAAAB7Ghj/AAAAAHmhuPoAAAAAexoQ/wAAAAB5obD6AAAAAHsaCP8AAAAAv6EAAAAAAAAHAQAAePv//7+iAAAAAAAABwIAAAj///+FEAAA+GcAAL+mAAAAAAAABwYAAJj7//+/ogAAAAAAAAcCAADg9P//v2EAAAAAAAC3AwAAmAIAAIUQAAACogAAeaEI+wAAAAB7Gkj+AAAAAHmhAPsAAAAAexpA/gAAAAB5ofj6AAAAAHsaOP4AAAAAeaHw+gAAAAB7GjD+AAAAAHmh0PoAAAAAexpQ/gAAAAB5odj6AAAAAHsaWP4AAAAAeaHg+gAAAAB7GmD+AAAAAHmh6PoAAAAAexpo/gAAAAB5oaDwAAAAAGMaeP4AAAAAeaGQ8wAAAAB7GnD+AAAAAL+hAAAAAAAABwEAAAj///+/owAAAAAAAAcDAAAw/v//v2IAAAAAAACFEAAA0icAAHmmCP8AAAAAVQZLAAQAAAC/oQAAAAAAAAcBAACY+///v6IAAAAAAAAHAgAAePf//7cDAAAIAgAAhRAAAOChAAB5oXD7AAAAAHsaIP8AAAAAeaFo+wAAAAB7Ghj/AAAAAHmhYPsAAAAAexoQ/wAAAAB5oVj7AAAAAHsaCP8AAAAAeaF4+wAAAAB7Gkj/AAAAAHmhgPsAAAAAexpQ/wAAAAB5oYj7AAAAAHsaWP8AAAAAeaGQ+wAAAAB7GmD/AAAAALcGAAAAAAAAe2ow/wAAAAB7ajj/AAAAAHmhCPsAAAAAexqA/wAAAAB5oQD7AAAAAHsaeP8AAAAAeaH4+gAAAAB7GnD/AAAAAHmh8PoAAAAAexpo/wAAAAC/qAAAAAAAAAcIAACI////v6IAAAAAAAAHAgAAGPv//7+BAAAAAAAAtwMAAEAAAACFEAAAvqEAAHmhiPMAAAAAexrY/wAAAAB5oaDwAAAAAGMa9P8AAAAAeaFY8wAAAABjGvD/AAAAAHmhkPMAAAAAexoo/wAAAAB5oXDzAAAAAHsa6P8AAAAAeaGY8wAAAAB7GtD/AAAAAHmhgPMAAAAAexrI/wAAAABhoRL7AAAAAGMa4v8AAAAAaaEW+wAAAABrGub/AAAAALcHAAABAAAAa3rg/wAAAAB7akD/AAAAAHuKmPMAAAAAv4EAAAAAAACFEAAAqh0AAAcAAAABAAAAFQABAAAAAAC3BwAAAAAAAFUHbgIBAAAAGAEAANDGCQAAAAAAAAAAALcCAAAcAAAAGAMAAEgcCgAAAAAAAAAAAIUQAAC8iAAAhRAAAP////+/oQAAAAAAAAcBAABI9P//v6IAAAAAAAAHAgAAEP///7cDAACYAAAAhRAAAJWhAAB7akD0AAAAALcBAAAAAAAAexqg8wAAAAB5qKjwAAAAAHmp8PAAAAAAeaaA8wAAAAAVBhgAAAAAAAUAEwAAAAAAtwIAAAEAAAB7KqDzAAAAAGGinPsAAAAAeaOg+wAAAAB5pKj7AAAAAHmlsPsAAAAAe1qw+wAAAAB7Sqj7AAAAAHs6oPsAAAAAYyqc+wAAAABjGpj7AAAAAL+hAAAAAAAABwEAAED0//+/ogAAAAAAAAcCAACY+///hRAAAFdaAAB5qKjwAAAAAHmp8PAAAAAAFQYEAAAAAAB5oZjzAAAAAL9iAAAAAAAAtwMAAAEAAACFEAAAgRIAAHmhkPcAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAdRIAAHmhmPcAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAaRIAAHmhwPcAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAXRIAAHmhyPcAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAURIAAHmh8PcAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAARRIAAHmh+PcAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAORIAAHmhIPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAALRIAAHmhKPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAIRIAAHmhUPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAFRIAAHmhWPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAACRIAAHmhgPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAA/REAAHmhiPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAA8REAAHmhsPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAA5REAAHmhuPgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAA2REAAHmh4PgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAzREAAHmh6PgAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAwREAAHmhEPkAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAtREAAL+mAAAAAAAABwYAAGj5//95oRj5AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAKcRAAC/YQAAAAAAAIUQAAAwev//eaFA+QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACZEQAAeaFI+QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACNEQAAeaGg8wAAAABVAQEAAAAAAAUAOgEAAAAAeaHo9AAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAB+EQAAeaHw9AAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAByEQAAeaEY9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABmEQAAeaEg9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABaEQAAeaFI9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAABOEQAAeaFQ9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAABCEQAAeaF49QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAA2EQAAeaGA9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAAqEQAAeaGo9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAeEQAAeaGw9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAASEQAAeaHY9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAAGEQAAeaHg9QAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAAD6EAAAeaEI9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADuEAAAeaEQ9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADiEAAAeaE49gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAADWEAAAeaFA9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAADKEAAAeaFo9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAC+EAAAeaFw9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACyEAAAeaGY9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAACmEAAAeaGg9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACaEAAAeaHI9gAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAA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AAAAAAB5YQgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAGL///95YRAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAFb///95YTgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAEr///95YUAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAD7///95YWgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAADL///95YXAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAACb///95YZgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAABr///95YaAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAA7///95YcgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAAL///95YdAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAPb+//95YfgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAOr+//95YQABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAN7+//95YSgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAANL+//95YTABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAMb+//95YVgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAALr+//95YWABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAK7+//95YYgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAKL+//95YZABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAJb+//95YbgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQID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AAAAAAC/YwAAAAAAAIUQAADKbAAAlQAAAAAAAAC/FgAAAAAAAHlhGAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAATvH//3lhIAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAQvH//3lhSAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAANvH//3lhUAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAKvH//3lheAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAHvH//3lhgAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAEvH//3lhqAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAABvH//3lhsAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAA+vD//3lh2AAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAA7vD//3lh4AAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAA4vD//3lhCAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAA1vD//3lhEAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAyvD//3lhOAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAvvD//3lhQAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAsvD//3lhaAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAApvD//3lhcAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAmvD//3lhmAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAjvD//3lhoAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAgvD//79hAAAAAAAABwEAAPABAACFEAAAuQEAAHlhyAEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAc/D//3lh0AEAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAZ/D//5UAAAAAAAAAvxYAAAAAAAB5YRgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAFnw//95YSAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAE3w//95YUgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAEHw//95YVAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAADXw//95YXgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAACnw//95YYAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAB3w//95YagAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAABHw//95YbAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAAXw//95YdgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAPnv//95YeAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAO3v//95YQgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAOHv//95YRABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAANXv//95YTgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAMnv//95YUABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAL3v//95YWgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAALHv//95YXABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAKXv//95YZgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAJnv//95YaABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAI3v//95YcgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAIHv//95YdABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAHXv//95YfgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAGnv//95YQACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAF3v//95YSgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAFHv//95YTACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAEXv//95YVgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAADnv//95YWACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAC3v//95YYgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAACHv//95YZACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAABXv//95YbgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAAnv//95YcACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAP3u//+/YQAAAAAAAAcBAAAQAwAAhRAAADQAAAB5YegCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAO7u//95YfACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAOLu//+VAAAAAAAAAJUAAAAAAAAAeRIAAAAAAAAVAgMAAAAAAHkRCAAAAAAAtwMAAAEAAACFEAAA2+7//5UAAAAAAAAAeRYAAAAAAAC/YQAAAAAAAFcBAAADAAAAVQEPAAEAAAB5YQcAAAAAAHkSAAAAAAAAeWH//wAAAACNAAAAAgAAAHljBwAAAAAABwYAAP////95MggAAAAAABUCAwAAAAAAeWEAAAAAAAB5MxAAAAAAAIUQAADL7v//v2EAAAAAAAC3AgAAGAAAALcDAAAIAAAAhRAAAMfu//+VAAAAAAAAAL8WAAAAAAAAeWcQAAAAAAAVBxMAAAAAAHloCAAAAAAAJwcAADAAAAAHCAAAEAAAAAUAFgAAAAAAeYEAAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACz7v//BwgAADAAAAAHBwAA0P///1UHBwAAAAAAeWIAAAAAAAAVAhIAAAAAAHlhCAAAAAAAJwIAADAAAAC3AwAACAAAAIUQAACq7v//BQANAAAAAAB5gfj/AAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUC5f8AAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQLh/wAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAJ3u//8FAN3/AAAAAJUAAAAAAAAAeREAAAAAAACFEAAAJQAAALcAAAAAAAAAlQAAAAAAAAB5EQAAAAAAAHsayP8AAAAAv6YAAAAAAAAHBgAA0P///79hAAAAAAAAtwMAADAAAACFEAAAhX0AAL+hAAAAAAAABwEAAMj///8YAgAAeCYKAAAAAAAAAAAAv2MAAAAAAACFEAAA+GkAAJUAAAAAAAAAvzYAAAAAAAC/KAAAAAAAAHkXAAAAAAAAeXkQAAAAAAB5cQAAAAAAAB+RAAAAAAAAPWEFAAAAAAC/cQAAAAAAAL+SAAAAAAAAv2MAAAAAAACFEAAAawEAAHl5EAAAAAAAeXEIAAAAAAAPkQAAAAAAAL+CAAAAAAAAv2MAAAAAAACFEAAAbX0AAA9pAAAAAAAAe5cQAAAAAAC3AAAAAAAAAJUAAAAAAAAAvycAAAAAAAC/FgAAAAAAAL9xAAAAAAAAZwEAACAAAAB3AQAAIAAAALcCAACAAAAALRIOAAAAAAC3AgAAAAAAAGMq/P8AAAAAtwIAAAAIAAAtEgEAAAAAAAUAFQAAAAAAv3EAAAAAAABXAQAAPwAAAEcBAACAAAAAcxr9/wAAAAB3BwAABgAAAEcHAADAAAAAc3r8/wAAAAC3BwAAAgAAAAUAMAAAAAAAeWIQAAAAAAB5YQAAAAAAAF0SAwAAAAAAv2EAAAAAAACFEAAAewAAAHliEAAAAAAAeWEIAAAAAAAPIQAAAAAAAHNxAAAAAAAABwIAAAEAAAB7JhAAAAAAAAUANQAAAAAAv3EAAAAAAABnAQAAIAAAAHcBAAAgAAAAtwIAAAAAAQAtEhMAAAAAAFcHAAA/AAAARwcAAIAAAABzev//AAAAAL8SAAAAAAAAdwIAAAYAAABXAgAAPwAAAEcCAACAAAAAcyr+/wAAAAC/EgAAAAAAAHcCAAAMAAAAVwIAAD8AAABHAgAAgAAAAHMq/f8AAAAAdwEAABIAAABXAQAABwAAAEcBAADwAAAAcxr8/wAAAAC3BwAABAAAAAUADAAAAAAAVwcAAD8AAABHBwAAgAAAAHN6/v8AAAAAvxIAAAAAAAB3AgAADAAAAEcCAADgAAAAcyr8/wAAAAB3AQAABgAAAFcBAAA/AAAARwEAAIAAAABzGv3/AAAAALcHAAADAAAAeWgQAAAAAAB5YQAAAAAAAB+BAAAAAAAAPXEFAAAAAAC/YQAAAAAAAL+CAAAAAAAAv3MAAAAAAACFEAAAFAEAAHloEAAAAAAAeWEIAAAAAAAPgQAAAAAAAL+iAAAAAAAABwIAAPz///+/cwAAAAAAAIUQAAAVfQAAD3gAAAAAAAB7hhAAAAAAALcAAAAAAAAAlQAAAAAAAAC/NgAAAAAAAL8oAAAAAAAAvxcAAAAAAAB5eRAAAAAAAHlxAAAAAAAAH5EAAAAAAAA9YQUAAAAAAL9xAAAAAAAAv5IAAAAAAAC/YwAAAAAAAIUQAAD+AAAAeXkQAAAAAAB5cQgAAAAAAA+RAAAAAAAAv4IAAAAAAAC/YwAAAAAAAIUQAAAAfQAAD2kAAAAAAAB7lxAAAAAAALcAAAAAAAAAlQAAAAAAAAC/OAAAAAAAAL8nAAAAAAAAvxYAAAAAAAAVCAoAAAAAAHlBEAAAAAAAFQERAAAAAAB5QggAAAAAAFUCCQAAAAAAFQcYAAAAAAC/cQAAAAAAAL+CAAAAAAAAhRAAAPnt//8VABAAAAAAAAUAFQAAAAAAtwEAAAAAAAB7FhAAAAAAAAUADQAAAAAAeUEAAAAAAAC/gwAAAAAAAL90AAAAAAAAhRAAAPTt//8VAAcAAAAAAAUADAAAAAAAFQcJAAAAAAC/cQAAAAAAAL+CAAAAAAAAhRAAAOrt//8VAAEAAAAAAAUABgAAAAAAe4YQAAAAAAB7dggAAAAAALcBAAABAAAABQAFAAAAAAC3BwAAAAAAAL+AAAAAAAAAe3YQAAAAAAB7BggAAAAAALcBAAAAAAAAexYAAAAAAACVAAAAAAAAAL8WAAAAAAAABwIAAAEAAAC3AQAAAQAAABUCAQAAAAAAtwEAAAAAAABXAQAAAQAAAFUBJAAAAAAAeWEAAAAAAAC/FwAAAAAAAGcHAAABAAAALScBAAAAAAC/JwAAAAAAACUHAQAIAAAAtwcAAAgAAAC/cwAAAAAAAKcDAAD/////dwMAAD8AAAAVAQYAAAAAAHliCAAAAAAAtwQAAAEAAAB7Svj/AAAAAHsa8P8AAAAAeyro/wAAAAAFAAIAAAAAALcBAAAAAAAAexr4/wAAAAC/oQAAAAAAAAcBAADQ////v6QAAAAAAAAHBAAA6P///79yAAAAAAAAhRAAALj///95odj/AAAAAHmi0P8AAAAAVQIDAAAAAAB7dgAAAAAAAHsWCAAAAAAAlQAAAAAAAAB5ouD/AAAAABgDAAABAAAAAAAAAAAAAIAdMvv/AAAAAFUCAgAAAAAAhRAAAO5TAACFEAAA/////4UQAAD9UwAAhRAAAP////+/FgAAAAAAAAcCAAABAAAAtwEAAAEAAAAVAgEAAAAAALcBAAAAAAAAVwEAAAEAAABVASkAAAAAAHlhAAAAAAAAvxcAAAAAAABnBwAAAQAAAC0nAQAAAAAAvycAAAAAAAAlBwEABAAAALcHAAAEAAAAtwMAAAEAAAAYAgAAq6qqqgAAAACqqqoCLXIBAAAAAAC3AwAAAAAAAL9yAAAAAAAAJwIAADAAAABnAwAAAwAAABUBBwAAAAAAeWQIAAAAAAC3BQAACAAAAHta+P8AAAAAJwEAADAAAAB7GvD/AAAAAHtK6P8AAAAABQACAAAAAAC3AQAAAAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA0P///7+kAAAAAAAABwQAAOj///+FEAAAhP///3mh2P8AAAAAeaLQ/wAAAABVAgMAAAAAAHt2AAAAAAAAexYIAAAAAACVAAAAAAAAAHmi4P8AAAAAGAMAAAEAAAAAAAAAAAAAgB0y+/8AAAAAVQICAAAAAACFEAAAulMAAIUQAAD/////hRAAAMlTAACFEAAA/////78WAAAAAAAAvyQAAAAAAAAPNAAAAAAAALcBAAABAAAALUIBAAAAAAC3AQAAAAAAAFcBAAABAAAAVQEoAAAAAAB5YQAAAAAAAL8XAAAAAAAAZwcAAAEAAAAtRwEAAAAAAL9HAAAAAAAAJQcBAAQAAAC3BwAABAAAALcDAAABAAAAGAIAAMTDw8MAAAAAw8PDAy1yAQAAAAAAtwMAAAAAAAC/cgAAAAAAACcCAAAiAAAAFQEHAAAAAAB5ZAgAAAAAALcFAAABAAAAe1r4/wAAAAAnAQAAIgAAAHsa8P8AAAAAe0ro/wAAAAAFAAIAAAAAALcBAAAAAAAAexr4/wAAAAC/oQAAAAAAAAcBAADQ////v6QAAAAAAAAHBAAA6P///4UQAABQ////eaHY/wAAAAB5otD/AAAAAFUCAwAAAAAAe3YAAAAAAAB7FggAAAAAAJUAAAAAAAAAeaLg/wAAAAAYAwAAAQAAAAAAAAAAAACAHTL7/wAAAABVAgIAAAAAAIUQAACGUwAAhRAAAP////+FEAAAlVMAAIUQAAD/////vxYAAAAAAAC/JAAAAAAAAA80AAAAAAAAtwEAAAEAAAAtQgEAAAAAALcBAAAAAAAAVwEAAAEAAABVASkAAAAAAHlhAAAAAAAAvxcAAAAAAABnBwAAAQAAAC1HAQAAAAAAv0cAAAAAAAAlBwEABAAAALcHAAAEAAAAtwMAAAEAAAAYAgAAq6qqqgAAAACqqqoCLXIBAAAAAAC3AwAAAAAAAL9yAAAAAAAAJwIAADAAAABnAwAAAwAAABUBBwAAAAAAeWQIAAAAAAC3BQAACAAAAHta+P8AAAAAJwEAADAAAAB7GvD/AAAAAHtK6P8AAAAABQACAAAAAAC3AQAAAAAAAHsa+P8AAAAAv6EAAAAAAAAHAQAA0P///7+kAAAAAAAABwQAAOj///+FEAAAG////3mh2P8AAAAAeaLQ/wAAAABVAgMAAAAAAHt2AAAAAAAAexYIAAAAAACVAAAAAAAAAHmi4P8AAAAAGAMAAAEAAAAAAAAAAAAAgB0y+/8AAAAAVQICAAAAAACFEAAAUVMAAIUQAAD/////hRAAAGBTAACFEAAA/////78WAAAAAAAAvyQAAAAAAAAPNAAAAAAAALcBAAABAAAALUIBAAAAAAC3AQAAAAAAAFcBAAABAAAAVQEkAAAAAAB5YQAAAAAAAL8XAAAAAAAAZwcAAAEAAAAtRwEAAAAAAL9HAAAAAAAAJQcBAAgAAAC3BwAACAAAAL9zAAAAAAAApwMAAP////93AwAAPwAAABUBBgAAAAAAeWIIAAAAAAC3BAAAAQAAAHtK+P8AAAAAexrw/wAAAAB7Kuj/AAAAAAUAAgAAAAAAtwEAAAAAAAB7Gvj/AAAAAL+hAAAAAAAABwEAAND///+/pAAAAAAAAAcEAADo////v3IAAAAAAACFEAAA6/7//3mh2P8AAAAAeaLQ/wAAAABVAgMAAAAAAHt2AAAAAAAAexYIAAAAAACVAAAAAAAAAHmi4P8AAAAAGAMAAAEAAAAAAAAAAAAAgB0y+/8AAAAAVQICAAAAAACFEAAAIVMAAIUQAAD/////hRAAADBTAACFEAAA/////78mAAAAAAAAexoQ/wAAAAB5MSgAAAAAAHsaSP8AAAAAeTEgAAAAAAB7Gij/AAAAAHk4GAAAAAAAeTEQAAAAAAB7GlD/AAAAAHkxCAAAAAAAexow/wAAAAB5MQAAAAAAAHsaGP8AAAAABwIAABAAAAC/oQAAAAAAAAcBAABY////eyo4/wAAAACFEAAARwwAAHlpIAMAAAAAv5EAAAAAAAAnAQAAIgAAAHtqQP8AAAAAe4og/wAAAAB7Ggj/AAAAAFUJlwAAAAAAtwIAAAEAAAC3CAAAAAAAAHmmaP8AAAAAv2MAAAAAAAAnAwAAIgAAAHmhYP8AAAAADzEAAAAAAAC/gwAAAAAAACcDAAAiAAAAvycAAAAAAACFEAAAtHsAAA+GAAAAAAAAe2po/wAAAAAVCQQAAAAAAL9xAAAAAAAAeaII/wAAAAC3AwAAAQAAAIUQAAC47P//twcAAAAEAAC3AQAAAAQAALcCAAABAAAAhRAAALLs//+/CQAAAAAAAHmmUP8AAAAAVQkEAAAAAAC3AQAAAAQAALcCAAABAAAAhRAAAPpSAACFEAAA/////3uagP8AAAAAe3p4/wAAAAAYAQAAJpB/4QAAAAAf4e4ZexkAAAAAAAAYAQAA/////wAAAAAAAAAALRbKAAAAAABjaQgAAAAAALcIAAAMAAAAe4qI/wAAAAC3AQAA9QMAAC1hBwAAAAAAv6EAAAAAAAAHAQAAeP///7cCAAAMAAAAv2MAAAAAAACFEAAAiP///3mpgP8AAAAAeaiI/wAAAAC/kQAAAAAAAA+BAAAAAAAAeaIw/wAAAAC/YwAAAAAAAIUQAACJewAAD2gAAAAAAAB7ioj/AAAAABgBAAD/////AAAAAAAAAAB5p0j/AAAAAC0XsQAAAAAAeaF4/wAAAAC/EgAAAAAAAB+CAAAAAAAAJQIIAAMAAAC/oQAAAAAAAAcBAAB4////v4IAAAAAAAC3AwAABAAAAIUQAABy////eamA/wAAAAB5oXj/AAAAAHmoiP8AAAAAv5IAAAAAAAAPggAAAAAAAGNyAAAAAAAABwgAAAQAAAB7ioj/AAAAAB+BAAAAAAAALReVAAAAAAB5poD/AAAAAA+JAAAAAAAAv5EAAAAAAAB5oij/AAAAAL9zAAAAAAAAhRAAAGp7AAB5oXj/AAAAAFUGDAAAAAAAexp4/wAAAAC/owAAAAAAAAcDAAB4////GAEAAEDbCQAAAAAAAAAAALcCAAArAAAAGAQAAMAlCgAAAAAAAAAAABgFAADgJQoAAAAAAAAAAACFEAAAMGMAAIUQAAD/////GAIAAI60XdEAAAAA2AUIznsqkP8AAAAAGAIAAM3AvzwAAAAAGJgHLXsqiP8AAAAAGAIAAHWfOlQAAAAAYFjvzXsqgP8AAAAAGAIAAKZfyYkAAAAA219dQnsqeP8AAAAAeaJY/wAAAAB7Kpj/AAAAAHmiYP8AAAAAeyqg/wAAAAB5omj/AAAAAHsqqP8AAAAAe2q4/wAAAAB7GrD/AAAAAA94AAAAAAAAe4rA/wAAAAC/oQAAAAAAAAcBAADI////eaI4/wAAAACFEAAAaQkAAHmk2P8AAAAAeaHI/wAAAAAfQQAAAAAAAHmiQP8AAAAAeSgYAwAAAAB5JyADAAAAAD1xBgAAAAAAv6EAAAAAAAAHAQAAyP///79CAAAAAAAAv3MAAAAAAACFEAAA+f7//3mk2P8AAAAAeaHQ/wAAAAB7Gjj/AAAAABUHgwAAAAAAJwcAADAAAAC/gQAAAAAAAA9xAAAAAAAAexpI/wAAAAC/QgAAAAAAACcCAAAwAAAAeaE4/wAAAAAPEgAAAAAAAAcCAAAqAAAABQCCAAAAAAB7mvj+AAAAACcJAAAwAAAAtwcAAAEAAAAYAgAAkbS0tAAAAAC0tLS0LZIBAAAAAAC3BwAAAAAAAC2SAgAAAAAAhRAAAGVSAACFEAAA/////3lmGAMAAAAAv3IAAAAAAACFEAAAJOz//xUAUQAAAAAAtwcAAP////8HBgAAKAAAAHsKAP8AAAAAvwgAAAAAAAAFACgAAAAAAHlh2P8AAAAAeRIYAAAAAAB7Kvj/AAAAAHkSEAAAAAAAeyrw/wAAAAB5EggAAAAAAHsq6P8AAAAAeREAAAAAAAB7GuD/AAAAAHFjAAAAAAAAv6EAAAAAAAAHAQAAeP///7+iAAAAAAAABwIAAOD///+FEAAA4UUAAL+iAAAAAAAABwIAAHj///+/gQAAAAAAALcDAAAiAAAAhRAAAAF7AAAHBgAAMAAAAAcIAAAiAAAABwcAAAEAAAAHCQAA0P///1UJDwAAAAAAeaZo/wAAAAB5oVj/AAAAAB9hAAAAAAAAv3gAAAAAAAAHCAAAAQAAAHmp+P4AAAAAeaIA/wAAAAAtcTj/AAAAAL+hAAAAAAAABwEAAFj///+/YgAAAAAAAL+DAAAAAAAAhRAAAH7+//95ogD/AAAAAAUAMP8AAAAAcWEBAAAAAABVAdb/AAAAAHlh2P8AAAAAeRIYAAAAAAB7Kvj/AAAAAHkSEAAAAAAAeyrw/wAAAAB5EggAAAAAAHsq6P8AAAAAeREAAAAAAAB7GuD/AAAAAHFjAAAAAAAAv6EAAAAAAAAHAQAAeP///7+iAAAAAAAABwIAAOD///+FEAAAw0UAAAUA1f8AAAAAv6EAAAAAAAAHAQAAeP///7+CAAAAAAAAv3MAAAAAAACFEAAAzv7//3mmgP8AAAAAeaiI/wAAAAC/aQAAAAAAAAUAY/8AAAAAead4/wAAAAAVBwQAAAAAAL+RAAAAAAAAv3IAAAAAAAC3AwAAAQAAAIUQAADX6///GAEAAAMAAAAAAAAAFAAAAAUAYf8AAAAAeaEI/wAAAAC/cgAAAAAAAIUQAAAdUgAAhRAAAP////97dgAAAAAAAFUJAQABAAAABQAmAAAAAAB5hxgAAAAAAHmJIAAAAAAAcYEoAAAAAABxgykAAAAAAHGFKgAAAAAAc1IAAAAAAABzMv//AAAAAHMS/v8AAAAAe5L2/wAAAAB7cu7/AAAAAHti5v8AAAAAe0Le/wAAAAB7Atb/AAAAAAcCAAAwAAAAeaRQ/wAAAAAHBAAAAQAAAAcIAAAwAAAAeaFI/wAAAABdGAkAAAAAAHtK2P8AAAAAeaNA/wAAAAB5NugCAAAAAHlhAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBFQAAAAAAtwIAAAAAAAAFABMAAAAAAHtKUP8AAAAAeYQIAAAAAAB5RgAAAAAAAAcGAAABAAAAtwcAAAEAAAAVBgEAAAAAALcHAAAAAAAAeYAAAAAAAAB7ZAAAAAAAAFUHAgABAAAAhRAAAP////+FEAAA/////3mGEAAAAAAAeWcAAAAAAAAHBwAAAQAAALcJAAABAAAAFQfQ/wAAAAC3CQAAAAAAAAUAzv8AAAAAeTXgAgAAAAB7FgAAAAAAAFUCAQABAAAABQDz/wAAAAB5OPACAAAAAHmBAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7GAAAAAAAAFUCAQABAAAABQDq/wAAAAB5oUD/AAAAAHESCgMAAAAAeypI/wAAAABxEgkDAAAAAHsqUP8AAAAAcRkIAwAAAAB5EAADAAAAAHkX+AIAAAAAeaHI/wAAAABdFA8AAAAAAL+hAAAAAAAABwEAAMj///+/QgAAAAAAAHt6CP8AAAAAv1cAAAAAAAB7mgD/AAAAAL8JAAAAAAAAhRAAAM/9//+/kAAAAAAAAHmpAP8AAAAAv3UAAAAAAAB5pwj/AAAAAHmh0P8AAAAAexo4/wAAAAB5pNj/AAAAAL9BAAAAAAAAJwEAADAAAAB5ozj/AAAAAL8yAAAAAAAADxIAAAAAAAB5oUj/AAAAAHMSKgAAAAAAeaFQ/wAAAABzEikAAAAAAHOSKAAAAAAAewIgAAAAAAB7chgAAAAAAHuCEAAAAAAAe2IIAAAAAAB7UgAAAAAAAAcEAAABAAAAe0rY/wAAAAB5pkD/AAAAAHlhCAAAAAAAeWIAAAAAAAB7KgDwAAAAAHsaCPAAAAAAv6EAAAAAAAAHAQAAWP///7+iAAAAAAAABwIAAHj///+/pQAAAAAAAIUQAABwRQAAYaFY/wAAAABVAQQAFgAAALcBAAAEAAAAeaIQ/wAAAAB7EgAAAAAAAAUADAAAAAAAeaFw/wAAAAB7Gvj/AAAAAHmhaP8AAAAAexrw/wAAAAB5oWD/AAAAAHsa6P8AAAAAeaFY/wAAAAB7GuD/AAAAAL+iAAAAAAAABwIAAOD///95oRD/AAAAAIUQAAAZMwAAeacg/wAAAAC/oQAAAAAAAAcBAADI////hRAAAID8//95opj/AAAAABUCBAAAAAAAJwIAACIAAAB5oaD/AAAAALcDAAABAAAAhRAAAEDr//95orD/AAAAABUCAwAAAAAAeaG4/wAAAAC3AwAAAQAAAIUQAAA76///eaIY/wAAAAAVAgMAAAAAAHmhMP8AAAAAtwMAAAEAAACFEAAANuv//xUHBAAAAAAAeaEo/wAAAAC/cgAAAAAAALcDAAABAAAAhRAAADHr//+/YQAAAAAAAIUQAADJ+v//lQAAAAAAAAAYAgAAjrRd0QAAAADYBQjOeyEYAAAAAAAYAgAAzcC/PAAAAAAYmActeyEQAAAAAAAYAgAAdZ86VAAAAABgWO/NeyEIAAAAAAAYAgAApl/JiQAAAADbX11CeyEAAAAAAACVAAAAAAAAAL83AAAAAAAAvyYAAAAAAAB7GvD+AAAAAL+hAAAAAAAABwEAAIj///+/cgAAAAAAALcDAABAAAAAhRAAAA56AAB5cUAAAAAAAHsaCP8AAAAAYXFIAAAAAAB7Gvj+AAAAAL9nAAAAAAAAv6EAAAAAAAAHAQAAGP///79yAAAAAAAAhRAAANIOAAB5c5ACAAAAAL8yAAAAAAAAJwIAACIAAAB7egD/AAAAAHsq6P4AAAAAezoQ/wAAAABVA2YAAAAAALcCAAABAAAAtwkAAAAAAAB5qCj/AAAAAL+DAAAAAAAAJwMAACIAAAB5oSD/AAAAAA8xAAAAAAAAv5MAAAAAAAAnAwAAIgAAAL8mAAAAAAAAhRAAAPN5AAAPmAAAAAAAAHuKKP8AAAAAeaEQ/wAAAAAVAQQAAAAAAL9hAAAAAAAAeaLo/gAAAAC3AwAAAQAAAIUQAAD26v//twYAAAAEAAC3AQAAAAQAALcCAAABAAAAhRAAAPDq//9VAAQAAAAAALcBAAAABAAAtwIAAAEAAACFEAAAOlEAAIUQAAD/////eaH4/gAAAABjEBAAAAAAAHmhCP8AAAAAexAIAAAAAAAYAQAAp94TcgAAAABVFQ52exAAAAAAAAB5oaD/AAAAAHsQLAAAAAAAeaGY/wAAAAB7ECQAAAAAAHmhkP8AAAAAexAcAAAAAAB5oYj/AAAAAHsQFAAAAAAAeaGo/wAAAAB7EDQAAAAAAHmhsP8AAAAAexA8AAAAAAB5obj/AAAAAHsQRAAAAAAAeaHA/wAAAAB7EEwAAAAAAHtqcP8AAAAAewp4/wAAAAC3AQAAVAAAAHsagP8AAAAAGAEAAKZfyUMAAAAAQZpa1XsaOP8AAAAAGAEAAJAEL9YAAAAAfJeR/XsaQP8AAAAAGAEAAAFaz1MAAAAApUzII3saSP8AAAAAGAEAAO24/4EAAAAAue1yLnsaUP8AAAAAeaEY/wAAAAB7Glj/AAAAAHmhIP8AAAAAexpg/wAAAAB5oSj/AAAAAHsaaP8AAAAAv6EAAAAAAAAHAQAAyP///79yAAAAAAAAhRAAAJwMAAB5pNj/AAAAAHmhyP8AAAAAH0EAAAAAAAB5eIgCAAAAAHl3kAIAAAAAPXEGAAAAAAC/oQAAAAAAAAcBAADI////v0IAAAAAAAC/cwAAAAAAAIUQAABp/f//eaTY/wAAAAB5odD/AAAAAHsa+P4AAAAAFQdzAAAAAAAnBwAAMAAAAL+BAAAAAAAAD3EAAAAAAAB7Ggj/AAAAAL9CAAAAAAAAJwIAADAAAAB5ofj+AAAAAA8SAAAAAAAABwIAACoAAAAFAHIAAAAAAL83AAAAAAAAJwcAADAAAAC3CQAAAQAAABgBAACRtLS0AAAAALS0tLQtcQEAAAAAALcJAAAAAAAALXECAAAAAACFEAAA1VAAAIUQAAD/////eaEA/wAAAAB5GIgCAAAAAL8hAAAAAAAAv5IAAAAAAACFEAAAkur//xUAPwAAAAAAtwYAAP////8HCAAAKAAAAHsK4P4AAAAAvwkAAAAAAAAFACgAAAAAAHmB2P8AAAAAeRIYAAAAAAB7Kvj/AAAAAHkSEAAAAAAAeyrw/wAAAAB5EggAAAAAAHsq6P8AAAAAeREAAAAAAAB7GuD/AAAAAHGDAAAAAAAAv6EAAAAAAAAHAQAAOP///7+iAAAAAAAABwIAAOD///+FEAAAT0QAAL+iAAAAAAAABwIAADj///+/kQAAAAAAALcDAAAiAAAAhRAAAG95AAAHCAAAMAAAAAcJAAAiAAAABwYAAAEAAAAHBwAA0P///1UHDwAAAAAAeago/wAAAAB5oRj/AAAAAB+BAAAAAAAAv2kAAAAAAAAHCQAAAQAAAHmnAP8AAAAAeaLg/gAAAAAtYWf/AAAAAL+hAAAAAAAABwEAABj///+/ggAAAAAAAL+TAAAAAAAAhRAAAOz8//95ouD+AAAAAAUAX/8AAAAAcYEBAAAAAABVAdb/AAAAAHmB2P8AAAAAeRIYAAAAAAB7Kvj/AAAAAHkSEAAAAAAAeyrw/wAAAAB5EggAAAAAAHsq6P8AAAAAeREAAAAAAAB7GuD/AAAAAHGDAAAAAAAAv6EAAAAAAAAHAQAAOP///7+iAAAAAAAABwIAAOD///+FEAAAMUQAAAUA1f8AAAAAeaHo/gAAAAC/kgAAAAAAAIUQAACdUAAAhRAAAP////97dgAAAAAAAFUJAQABAAAABQAmAAAAAAB5hxgAAAAAAHmJIAAAAAAAcYEoAAAAAABxgykAAAAAAHGFKgAAAAAAc1IAAAAAAABzMv//AAAAAHMS/v8AAAAAe5L2/wAAAAB7cu7/AAAAAHti5v8AAAAAe0Le/wAAAAB7Atb/AAAAAAcCAAAwAAAAeaQQ/wAAAAAHBAAAAQAAAAcIAAAwAAAAeaEI/wAAAABdGAkAAAAAAHtK2P8AAAAAeaMA/wAAAAB5NlgCAAAAAHlhAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBFQAAAAAAtwIAAAAAAAAFABMAAAAAAHtKEP8AAAAAeYQIAAAAAAB5RgAAAAAAAAcGAAABAAAAtwcAAAEAAAAVBgEAAAAAALcHAAAAAAAAeYAAAAAAAAB7ZAAAAAAAAFUHAgABAAAAhRAAAP////+FEAAA/////3mGEAAAAAAAeWcAAAAAAAAHBwAAAQAAALcJAAABAAAAFQfQ/wAAAAC3CQAAAAAAAAUAzv8AAAAAeTVQAgAAAAB7FgAAAAAAAFUCAQABAAAABQDz/wAAAAB5OGACAAAAAHmBAAAAAAAABwEAAAEAAAC3AgAAAQAAABUBAQAAAAAAtwIAAAAAAAB7GAAAAAAAAFUCAQABAAAABQDq/wAAAABxMXoCAAAAAHsaCP8AAAAAcTF5AgAAAAB7GhD/AAAAAHE5eAIAAAAAeTBwAgAAAAB5N2gCAAAAAHmhyP8AAAAAXRQPAAAAAAC/oQAAAAAAAAcBAADI////v0IAAAAAAAB7euj+AAAAAL9XAAAAAAAAe5rg/gAAAAC/CQAAAAAAAIUQAABQ/P//v5AAAAAAAAB5qeD+AAAAAL91AAAAAAAAeafo/gAAAAB5odD/AAAAAHsa+P4AAAAAeaTY/wAAAAC/QQAAAAAAACcBAAAwAAAAeaP4/gAAAAC/MgAAAAAAAA8SAAAAAAAAeaEI/wAAAABzEioAAAAAAHmhEP8AAAAAcxIpAAAAAABzkigAAAAAAHsCIAAAAAAAe3IYAAAAAAB7ghAAAAAAAHtiCAAAAAAAe1IAAAAAAAAHBAAAAQAAAHtK2P8AAAAAeaYA/wAAAAB5YUgCAAAAAHliQAIAAAAAeyoA8AAAAAB7GgjwAAAAAL+hAAAAAAAABwEAABj///+/ogAAAAAAAAcCAAA4////v6UAAAAAAACFEAAA8UMAAGGhGP8AAAAAVQEEABYAAAC3AQAABAAAAHmi8P4AAAAAexIAAAAAAAAFAAwAAAAAAHmhMP8AAAAAexr4/wAAAAB5oSj/AAAAAHsa8P8AAAAAeaEg/wAAAAB7Guj/AAAAAHmhGP8AAAAAexrg/wAAAAC/ogAAAAAAAAcCAADg////eaHw/gAAAACFEAAAmjEAAL+hAAAAAAAABwEAAMj///+FEAAAAvv//3miWP8AAAAAFQIEAAAAAAAnAgAAIgAAAHmhYP8AAAAAtwMAAAEAAACFEAAAwun//3micP8AAAAAFQIDAAAAAAB5oXj/AAAAALcDAAABAAAAhRAAAL3p//95YQgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAALHp//95YRAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAKXp//95YTgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAJnp//95YUAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAI3p//95YWgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAIHp//95YXAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAHXp//95YZgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAGnp//95YaAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAF3p//95YcgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAFHp//95YdAAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAEXp//95YfgAAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAADnp//95YQABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAC3p//95YSgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAACHp//95YTABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAABXp//95YVgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAAnp//95YWABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAP3o//95YYgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAPHo//95YZABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAOXo//95YbgBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAANno//95YcABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAM3o//95YegBAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAMHo//95YfABAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAALXo//95YRgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAIAAAALcDAAAIAAAAhRAAAKno//95YSACAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRIIAAAAAAAHAgAA/////3shCAAAAAAAVQIDAAAAAAC3AgAAKAAAALcDAAAIAAAAhRAAAJ3o//+/YQAAAAAAAAcBAACAAgAAhRAAANT5//95YVgCAAAAAHkSAAAAAAAABwIAAP////97IQAAAAAAAFUCBwAAAAAAeRII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AP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACtyv//eWFoAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACAAAAC3AwAACAAAAIUQAAChyv//eWFwAAAAAAB5EgAAAAAAAAcCAAD/////eyEAAAAAAABVAgcAAAAAAHkSCAAAAAAABwIAAP////97IQgAAAAAAFUCAwAAAAAAtwIAACgAAAC3AwAACAAAAIUQAACVyv//lQAAAAAAAAC/FgAAAAAAAHlhCAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAh8r//3lhEAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAe8r//3lhOAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAb8r//3lhQAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAY8r//3lhaAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAgAAAAtwMAAAgAAACFEAAAV8r//3lhcAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAAALcCAAAoAAAAtwMAAAgAAACFEAAAS8r//3lhmAAAAAAAeRIAAAAAAAAHAgAA/////3shAAAAAAAAVQIHAAAAAAB5EggAAAAAAAcCAAD/////eyEIAAAAAABVAgMAAAAA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ALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQPJ/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQPD/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQO9/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQO3/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOx/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOr/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOl/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOf/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOZ/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOT/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQON/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOH/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQOB/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQN7/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQN1/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQNv/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQNp/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQNj/wAAAAAHAgAAAQAAALcDAAABAAAAFQIBAAAAAAC3AwAAAAAAAFcDAAABAAAAVQNd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c2FnZXMvZGVwb3NpdC5yc25vIGVudHJ5IGZvdW5kIGZvciBrZXlzcmMvdXRpbHMvYWNjb3VudHMucnMAAGFzc2VydGlvbiBmYWlsZWQ6IGlkeCA8IENBUEFDSVRZSW5zdHJ1Y3Rpb246IENvbnN1bWVQcmVwYXJlZEZpbGxBIHNpZ25lciBjb25zdHJhaW50IHdhcyB2aW9sYXRlZERlc3RpbmF0aW9uIENDVFAgZG9tYWluIG1pc21hdGNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBbiBvd25lciBjb25zdHJhaW50IHdhcyB2aW9sYXRlZGxpYnJhcnkvY29yZS9zcmMvc2xpY2UvbWVtY2hyLnJzBt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKlpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQWNjb3VudE5vdEFzc29jaWF0ZWRUb2tlbkFjY291bnRQcm9ncmFtRXJyb3IgY2F1c2VkIGJ5IGFjY291bnQ6IFRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBtdXRhYmxlVW5rbm93biBXb3JtaG9sZUNjdHBNZXNzYWdlIHR5cGVDY3RwUmVtb3RlVG9rZW5NZXNzZW5nZXJSZXF1aXJlZHNyYy9wYXlsb2FkLnJzSW52YWxpZFNpZ25hdHVyZW5vIHN0b3JhZ2Ugc3BhY2VBbHJlYWR5IHJlZGVlbWVkUGVybWlzc2lvbkRlbmllZEludmFsaWRQcm9ncmFtSWRDcmVhdGVJZGVtcG90ZW50ZW50aXR5IG5vdCBmb3VuZGZsb2F0aW5nIHBvaW50IGBQYXllck5vdFByZXBhcmVySW5zdWZmaWNpZW50RmVlcy4gRXJyb3IgTnVtYmVyOiApIHdoZW4gc2xpY2luZyBgQWRkck5vdEF2YWlsYWJsZVJlZGVlbWVyTWlzbWF0Y2hJbW11dGFibGVQcm9ncmFtQ29uc3RyYWludEhhc09uZWludmFsaWQgZmlsZW5hbWVjb25uZWN0aW9uIHJlc2V0YWxyZWFkeSBib3Jyb3dlZG5vIGFsbG9jIGZhaWx1cmVDb25zdHJhaW50U2lnbmVySW52YWxpZFBheWxvYWRJZEFjY291bnROb3RaZXJvZWRob3N0IHVucmVhY2hhYmxlcmFuZ2UgZW5kIGluZGV4IEFjY291bnROb3RTaWduZXJzcmMvZGUvbW9kLnJzY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZW1vZHVsZXMvY29tbW9uL3NyYy9hZG1pbi91dGlscy9wZW5kaW5nX293bmVyLnJzZmFpbGVkIHRvIGZpbGwgd2hvbGUgYnVmZmVyL2hvbWUvcnVubmVyL3dvcmsvcGxhdGZvcm0tdG9vbHMvcGxhdGZvcm0tdG9vbHMvb3V0L3J1c3QvbGlicmFyeS9zdGQvc3JjL2lvL2ltcGxzLnJzYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ob21lL3J1bm5lci93b3JrL3BsYXRmb3JtLXRvb2xzL3BsYXRmb3JtLXRvb2xzL291dC9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5yc2NhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVJbnZhbGlkIGJvb2wgcmVwcmVzZW50YXRpb246IC9ob21lL3J1bm5lci93b3JrL3BsYXRmb3JtLXRvb2xzL3BsYXRmb3JtLXRvb2xzL291dC9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25vZGUucnNhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDFhc3NlcnRpb24gZmFpbGVkOiBzcmMubGVuKCkgPT0gZHN0LmxlbigpL2hvbWUvcnVubmVyL3dvcmsvcGxhdGZvcm0tdG9vbHMvcGxhdGZvcm0tdG9vbHMvb3V0L3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMAbWludBEA//9maWxsRgAAABQA//8gICAguwsAAFNvbWUQAP//IDw9IHRydWUDAP//AQD//wABAAC6CwAArBAAAGtpbmTWBwAAY29kZXJlbnTUBwAAAgEAAKAQAABlbnVtBgIAAAACAAAFEAAAAgAAABIA//9LaW5kbGluZU5vbmUAAAAAZW5kcG9pbnROb1F1b3J1bWZpbGVuYW1lIChieXRlcyCE5Iu4cORs8PQ2Mf24LvmfyvFBum7r7lByZWRlZW1lcnNlcXVlbmNlRGVhZGxvY2tOb3RGb3VuZFRpbWVkT3V0T3ZlcmZsb3dkZWFkbG9jawMVDbanlYB2AQBJbnZhbGlkIE9wdGlvbiByZXByZXNlbnRhdGlvbjogLiBUaGUgZmlyc3QgYnl0ZSBtdXN0IGJlIDAgb3IgMXUzMiBvdmVyZmxvd3NyYy9yZWFkX3dyaXRlLnJzcHJvZ3JhbXMvdG9rZW4tcm91dGVyL3NyYy9wcm9jZXNzb3IvYWRtaW4vaW5pdGlhbGl6ZS5yc2VtaXR0ZXL/cHJvZ3JhbXMvdG9rZW4tcm91dGVyL3NyYy9wcm9jZXNzb3IvbWFya2V0X29yZGVyL3BsYWNlX2NjdHAucnNtc2djb3JlX21lc3NhZ2Vwcm9ncmFtcy90b2tlbi1yb3V0ZXIvc3JjL3Byb2Nlc3Nvci9tYXJrZXRfb3JkZXIvcHJlcGFyZS5yc3Byb2dyYW1zL3Rva2VuLXJvdXRlci9zcmMvcHJvY2Vzc29yL3JlZGVlbV9maWxsL2NjdHAucnNwcmVwYXJlZF9maWxscHJvZ3JhbXMvdG9rZW4tcm91dGVyL3NyYy9wcm9jZXNzb3IvcmVkZWVtX2ZpbGwvZmFzdC5yc3Byb2dyYW1zL3Rva2VuLXJvdXRlci9zcmMvc3RhdGUvcGF5ZXJfc2VxdWVuY2UucnNwcm9ncmFtcy90b2tlbi1yb3V0ZXIvc3JjL3N0YXRlL3ByZXBhcmVkX29yZGVyLnJzxtpUC8M2RxHRE/AOFN93Gj3pEbfsv+/63Mr4K3OqvoJJbnZhbGlkUmVkZWVtZXJJbnZhbGlkRGVwb3NpdE1lc3NhZ2VJbnZhbGlkU291cmNlUm91dGVyUmVmdW5kVG9rZW5NaXNtYXRjaE9yZGVyU2VuZGVyTWlzbWF0Y2hQcmVwYXJlZEJ5TWlzbWF0Y2hNaW5BbW91bnRPdXRUb29IaWdoSW5zdWZmaWNpZW50QW1vdW50UGF1c2VkSW52YWxpZENjdHBFbmRwb2ludEludmFsaWRNaW50UmVjaXBpZW50SW52YWxpZEVuZHBvaW50Q2hhaW5Ob3RBbGxvd2VkTm90UGVuZGluZ093bmVySW52YWxpZE5ld0Fzc2lzdGFudE5vVHJhbnNmZXJPd25lcnNoaXBSZXF1ZXN0QWxyZWFkeU93bmVyTm90VXNkY0ludmFsaWROZXdPd25lckFzc2lzdGFudFplcm9QdWJrZXlJbnZhbGlkQ3VzdG9keVRva2VuT3duZXJPckFzc2lzdGFudE9ubHlPd25lck9ubHljdXN0b2RpYW5jdXN0b2R5X3Rva2Vub3duZXJvd25lcl9hc3Npc3RhbnRwcm9ncmFtX2RhdGFzeXN0ZW1fcHJvZ3JhbXRva2VuX3Byb2dyYW1hc3NvY2lhdGVkX3Rva2VuX3Byb2dyYW1icGZfbG9hZGVyX3VwZ3JhZGVhYmxlX3Byb2dyYW1wZW5kaW5nX293bmVybmV3X293bmVyb3duZXJfb3JfYXNzaXN0YW50bmV3X293bmVyX2Fzc2lzdGFudHByZXBhcmVkX2J5cHJlcGFyZWRfb3JkZXJyZWZ1bmRfdG9rZW5vcmRlcl9zZW5kZXJyZW50X3JlY2lwaWVudGRzdF90b2tlbnNlcXBheWVyX3NlcXVlbmNlcGF5ZXJyb3V0ZXJfZW5kcG9pbnRjb3JlX2JyaWRnZV9jb25maWdjb3JlX2VtaXR0ZXJfc2VxdWVuY2Vjb3JlX2ZlZV9jb2xsZWN0b3JtZXNzYWdlX3RyYW5zbWl0dGVyX2NvbmZpZ2xvY2FsX3Rva2VuY2xvY2t0b2tlbl9tZXNzZW5nZXJfbWludGVyX3NlbmRlcl9hdXRob3JpdHl0b2tlbl9tZXNzZW5nZXJyZW1vdGVfdG9rZW5fbWVzc2VuZ2VydG9rZW5fbWludGVyY29yZV9icmlkZ2VfcHJvZ3JhbXRva2VuX21lc3Nlbmdlcl9taW50ZXJfcHJvZ3JhbW1lc3NhZ2VfdHJhbnNtaXR0ZXJfcHJvZ3JhbW9yZGVyX3Rva2VudXNlZF9ub25jZXN0b2tlbl9tZXNzZW5nZXJfbWludGVyX2N1c3RvZHlfdG9rZW52YWFtZXNzYWdlX3RyYW5zbWl0dGVyX2F1dGhvcml0eXRva2VuX3BhaXJtYXRjaGluZ19lbmdpbmVfY3VzdG9kaWFubWF0Y2hpbmdfZW5naW5lX3JlZGVlbWVkX2Zhc3RfZmlsbG1hdGNoaW5nX2VuZ2luZV9jdXN0b2R5X3Rva2VubWF0Y2hpbmdfZW5naW5lX3JvdXRlcl9lbmRwb2ludG1hdGNoaW5nX2VuZ2luZV9wcm9ncmFtcHJvZ3JhbXMvdG9rZW4tcm91dGVyL3NyYy9zdGF0ZS9jdXN0b2RpYW4ucnNDdXN0b2RpYW5QYXllclNlcXVlbmNlVW5leHBlY3RlZCB2YXJpYW50IGluZGV4OiBwcm9ncmFtcy90b2tlbi1yb3V0ZXIvc3JjL3N0YXRlL3ByZXBhcmVkX2ZpbGwucnNQcmVwYXJlZEZpbGxQcmVwYXJlZE9yZGVyDR5VoZ2Y1htPtcSxjXAHt+0fZ7NQjPd8dz9ini4CfHBJbnN0cnVjdGlvbjogUHJlcGFyZU1hcmtldE9yZGVySW5zdHJ1Y3Rpb246IENsb3NlUHJlcGFyZWRPcmRlckluc3RydWN0aW9uOiBQbGFjZU1hcmtldE9yZGVyQ2N0cEluc3RydWN0aW9uOiBSZWRlZW1DY3RwRmlsbEluc3RydWN0aW9uOiBSZWRlZW1GYXN0RmlsbEluc3RydWN0aW9uOiBJbml0aWFsaXplSW5zdHJ1Y3Rpb246IFN1Ym1pdE93bmVyc2hpcFRyYW5zZmVyUmVxdWVzdEluc3RydWN0aW9uOiBDb25maXJtT3duZXJzaGlwVHJhbnNmZXJSZXF1ZXN0SW5zdHJ1Y3Rpb246IENhbmNlbE93bmVyc2hpcFRyYW5zZmVyUmVxdWVzdEluc3RydWN0aW9uOiBVcGRhdGVPd25lckFzc2lzdGFudEluc3RydWN0aW9uOiBTZXRQYXVzZWZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcmEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvaG9tZS9ydW5uZXIvd29yay9wbGF0Zm9ybS10b29scy9wbGF0Zm9ybS10b29scy9vdXQvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnNVbmV4cGVjdGVkIHZhcmlhbnQgaW5kZXg6IHByb2dyYW1zL21hdGNoaW5nLWVuZ2luZS9zcmMvc3RhdGUvcm91dGVyX2VuZHBvaW50LnJzUm91dGVyRW5kcG9pbnQAAABtb2R1bGVzL2NvbW1vbi9zcmMvbWVzc2FnZXMvZGVwb3NpdC9maWxsLnJzAAAAAABhdHRlbXB0IHRvIGFkZCB3aXRoIG92ZXJmbG93bW9kdWxlcy9jb21tb24vc3JjL21lc3NhZ2VzL3Jhdy9kZXBvc2l0LnJzVW5rbm93biBMaXF1aWRpdHlMYXllckRlcG9zaXRNZXNzYWdlIHR5cGVMaXF1aWRpdHlMYXllckRlcG9zaXRNZXNzYWdlIHNwYW4gdG9vIHNob3J0LiBOZWVkIGF0IGxlYXN0IDEgYnl0ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVGaWxsIHNwYW4gdG9vIHNob3J0LiBOZWVkIGF0IGxlYXN0IDcwIGJ5dGVzRmlsbCBwYXlsb2FkIGxlbmd0aCBtaXNtYXRjaFNsb3dPcmRlclJlc3BvbnNlIHNwYW4gdG9vIHNob3J0LiBOZWVkIGV4YWN0bHkgOCBieXRlc21vZHVsZXMvY29tbW9uL3NyYy9tZXNzYWdlcy9yYXcvbW9kLnJzTGlxdWlkaXR5TGF5ZXJNZXNzYWdlIGlzIG5vdCBGYXN0RmlsbFVua25vd24gTGlxdWlkaXR5TGF5ZXJNZXNzYWdlIHR5cGVMaXF1aWRpdHlMYXllck1lc3NhZ2Ugc3BhbiB0b28gc2hvcnQuIE5lZWQgYXQgbGVhc3QgMSBieXRlRmFzdEZpbGwgc3BhbiB0b28gc2hvcnQuIE5lZWQgYXQgbGVhc3QgNzggYnl0ZXNGYXN0TWFya2V0T3JkZXIgc3BhbiB0b28gc2hvcnQuIE5lZWQgYXQgbGVhc3QgMTM4IGJ5dGVzRmFzdE1hcmtldE9yZGVyIHBheWxvYWQgbGVuZ3RoIG1pc21hdGNoAAAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWVzcmMvaW5zdHJ1Y3Rpb24ucnNmYWlsZWQgdG8gZmlsbCB3aG9sZSBidWZmZXJhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L2hvbWUvcnVubmVyL3dvcmsvcGxhdGZvcm0tdG9vbHMvcGxhdGZvcm0tdG9vbHMvb3V0L3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzc3JjL2NwaS92ZXJpZnlfdmFhX2FuZF9taW50LnJzRW5jb2RlZCBtaW50IHJlY2lwaWVudCBkb2VzIG5vdCBtYXRjaCBtaW50IHJlY2lwaWVudCB0b2tlbiBhY2NvdW50Q0NUUCBub25jZSBtaXNtYXRjaFNvdXJjZSBDQ1RQIGRvbWFpbiBtaXNtYXRjaE5vdCBhIFdvcm1ob2xlIENDVFAgZGVwb3NpdCBtZXNzYWdlQ2Fubm90IHBhcnNlIGVuY29kZWQgQ0NUUCBtZXNzYWdlQ2Fubm90IHBhcnNlIFZBQSBwYXlsb2FkIGFzIFdvcm1ob2xlIENDVFAgbWVzc2FnZQAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZWZhaWxlZCB0byBmaWxsIHdob2xlIGJ1ZmZlcmEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvaG9tZS9ydW5uZXIvd29yay9wbGF0Zm9ybS10b29scy9wbGF0Zm9ybS10b29scy9vdXQvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnNVbmV4cGVjdGVkIHZhcmlhbnQgaW5kZXg6IHNyYy91dGlscy92YWEvemVyb19jb3B5L2VuY29kZWRfdmFhLnJzc3JjL3V0aWxzL3ZhYS96ZXJvX2NvcHkvcG9zdGVkX3ZhYV92MS5yc1Bvc3RlZFZBQXNyYy91dGlscy92YWEvemVyb19jb3B5L21vZC5ycysSRsnu+jxGZ5IlMRHzX+we6O5enevEEtLpra3+zcxyRXhlY3V0YWJsZURpc2FsbG93ZWRQb3N0ZWRWYWFQYXlsb2FkVG9vTGFyZ2VXcml0ZUF1dGhvcml0eU1pc21hdGNoSW52YWxpZFByb2dyYW1FbWl0dGVyRW1pdHRlckF1dGhvcml0eU1pc21hdGNoQ2Fubm90UGFyc2VWYWFFeGNlZWRzTWF4UGF5bG9hZFNpemVEYXRhT3ZlcmZsb3dJbnZhbGlkQ3JlYXRlZEFjY291bnRTaXplSW52YWxpZFZhYVZlcnNpb25IYXNoTm90Q29tcHV0ZWRJbnZhbGlkTWVzc2FnZVN0YXR1c05vdEluV3JpdGluZ1N0YXR1c0luV3JpdGluZ1N0YXR1c1ZhYVN0aWxsUHJvY2Vzc2luZ1VudmVyaWZpZWRWYWFJbnZhbGlkR3VhcmRpYW5JbmRleFZhYUFscmVhZHlWZXJpZmllZFZhYVdyaXRpbmdEaXNhbGxvd2VkTWVzc2FnZUFscmVhZHlQdWJsaXNoZWREdXBsaWNhdGVHdWFyZGlhbkFkZHJlc3NHdWFyZGlhblplcm9BZGRyZXNzWmVyb0d1YXJkaWFuc1BheWxvYWRTaXplTWlzbWF0Y2hTaWduZXJJbmRpY2VzTWlzbWF0Y2hJbnZhbGlkR3VhcmRpYW5LZXlSZWNvdmVyeUd1YXJkaWFuU2V0RXhwaXJlZEludmFsaWRTaWdWZXJpZnlJbnN0cnVjdGlvbkVtcHR5U2lnVmVyaWZ5SW5zdHJ1Y3Rpb25JbnN0cnVjdGlvbkF0V3JvbmdJbmRleEd1YXJkaWFuU2V0TWlzbWF0Y2hJbnZhbGlkR3VhcmRpYW5TZXRJbmRleEltcGxlbWVudGF0aW9uTWlzbWF0Y2hJbnZhbGlkRmVlUmVjaXBpZW50Tm90RW5vdWdoTGFtcG9ydHNNZXNzYWdlTWlzbWF0Y2hJbnZhbGlkTWVzc2FnZUhhc2hJbnZhbGlkU2lnbmF0dXJlU2V0TGVnYWN5RW1pdHRlckV4ZWN1dGFibGVFbWl0dGVySW52YWxpZFByZXBhcmVkTWVzc2FnZU5vdFJlYWR5Rm9yUHVibGlzaGluZ0VtaXR0ZXJNaXNtYXRjaEludmFsaWRHb3Zlcm5hbmNlVmFhR292ZXJuYW5jZUZvckFub3RoZXJDaGFpbkxhdGVzdEd1YXJkaWFuU2V0UmVxdWlyZWRJbnZhbGlkR292ZXJuYW5jZUFjdGlvbkludmFsaWRHb3Zlcm5hbmNlRW1pdHRlckludmFsaWRDaGFpbkludmFsaWRDb21wdXRlU2l6ZVU2NE92ZXJmbG93SW52YWxpZERhdGFDb252ZXJzaW9uSW52YWxpZEluc3RydWN0aW9uQXJndW1lbnRFeGNlZWRzTWF4UGF5bG9hZFNpemUgKDMwS0IpAAAAAHNyYy9wcm90b2NvbC5yc0hlYWRlcjogaW52YWxpZCBsZW5ndGguIEV4cGVjdGVkIGF0IGxlYXN0IDYgYnl0ZXMuSGVhZGVyOiBJbnN1ZmZpY2llbnQgYnl0ZXMgdG8gcGFyc2UgYWxsIHNpZ25hdHVyZXNCb2R5OiBpbnZhbGlkIGxlbmd0aC4gRXhwZWN0ZWQgYXQgbGVhc3QgNTEgYnl0ZXMuV29ybWhvbGVDY3RwUGF5bG9hZCBzcGFuIHRvbyBzaG9ydC4gTmVlZCBhdCBsZWFzdCAxIGJ5dGVXb3JtaG9sZUNjdHBNZXNzYWdlIGlzIG5vdCBEZXBvc2l0c3JjL3BheWxvYWRzL2NjdHAvcGF5bG9hZHMucnNXb3JtaG9sZUNjdHBNZXNzYWdlIHNwYW4gdG9vIHNob3J0LiBOZWVkIGF0IGxlYXN0IDEgYnl0ZURlcG9zaXQgc3BhbiB0b28gc2hvcnQuIE5lZWQgYXQgbGVhc3QgMTQ2IGJ5dGVzRGVwb3NpdCBwYXlsb2FkIGxlbmd0aCBtaXNtYXRjaHNyYy9yZWFkX3dyaXRlLnJzAAAAAAAAYXR0ZW1wdCB0byBhZGQgd2l0aCBvdmVyZmxvdwAAAABhc3NlcnRpb24gZmFpbGVkOiBgYCBkb2VzIG5vdCBtYXRjaCBgYEFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbjo6Q3JlYXRlIHwKQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uOjpDcmVhdGVJZGVtcG90ZW50c3JjL2luc3RydWN0aW9uLnJzUmVjb3Zlck5lc3RlZENyZWF0ZQAAAAAAAGF0dGVtcHQgdG8gYWRkIHdpdGggb3ZlcmZsb3dzcmMvaW5zdHJ1Y3Rpb24ucnNzcmMvc3RhdGUucnN2YXJpYW50IGluZGV4IDAgPD0gaSA8IDRhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L2hvbWUvcnVubmVyL3dvcmsvcGxhdGZvcm0tdG9vbHMvcGxhdGZvcm0tdG9vbHMvb3V0L3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAAAAaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAAAAAAABhdHRlbXB0IHRvIGFkZCB3aXRoIG92ZXJmbG93c3JjL2JwZl93cml0ZXIucnNzcmMvY29tbW9uLnJzY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS4gRXJyb3IgQ29kZTogLiBFcnJvciBNZXNzYWdlOiAuUHJvZ3JhbUVycm9yIHRocm93biBpbiA6UHJvZ3JhbUVycm9yIG9jY3VycmVkLiBFcnJvciBDb2RlOiBMZWZ0OlJpZ2h0OkxlZnQ6IFJpZ2h0OiBBbmNob3JFcnJvciBjYXVzZWQgYnkgYWNjb3VudDogQW5jaG9yRXJyb3IgdGhyb3duIGluIEFuY2hvckVycm9yIG9jY3VycmVkLiBFcnJvciBDb2RlOiBEZXByZWNhdGVkVHJ5aW5nVG9Jbml0UGF5ZXJBc1Byb2dyYW1BY2NvdW50RGVjbGFyZWRQcm9ncmFtSWRNaXNtYXRjaEFjY291bnREdXBsaWNhdGVSZWFsbG9jc0FjY291bnRSZWFsbG9jRXhjZWVkc0xpbWl0QWNjb3VudFN5c3Zhck1pc21hdGNoQWNjb3VudE5vdFByb2dyYW1EYXRhQWNjb3VudE5vdEluaXRpYWxpemVkQWNjb3VudE5vdFN5c3RlbU93bmVkSW52YWxpZFByb2dyYW1FeGVjdXRhYmxlQWNjb3VudE93bmVkQnlXcm9uZ1Byb2dyYW1BY2NvdW50Tm90TXV0YWJsZUFjY291bnROb3RFbm91Z2hLZXlzQWNjb3VudERpZE5vdFNlcmlhbGl6ZUFjY291bnREaWROb3REZXNlcmlhbGl6ZUFjY291bnREaXNjcmltaW5hdG9yTWlzbWF0Y2hBY2NvdW50RGlzY3JpbWluYXRvck5vdEZvdW5kQWNjb3VudERpc2NyaW1pbmF0b3JBbHJlYWR5U2V0UmVxdWlyZUd0ZVZpb2xhdGVkUmVxdWlyZUd0VmlvbGF0ZWRSZXF1aXJlS2V5c05lcVZpb2xhdGVkUmVxdWlyZU5lcVZpb2xhdGVkUmVxdWlyZUtleXNFcVZpb2xhdGVkUmVxdWlyZUVxVmlvbGF0ZWRSZXF1aXJlVmlvbGF0ZWRDb25zdHJhaW50QXNzb2NpYXRlZFRva2VuVG9rZW5Qcm9ncmFtQ29uc3RyYWludE1pbnRUb2tlblByb2dyYW1Db25zdHJhaW50VG9rZW5Ub2tlblByb2dyYW1Db25zdHJhaW50QWNjb3VudElzTm9uZUNvbnN0cmFpbnRTcGFjZUNvbnN0cmFpbnRNaW50RGVjaW1hbHNDb25zdHJhaW50TWludEZyZWV6ZUF1dGhvcml0eUNvbnN0cmFpbnRNaW50TWludEF1dGhvcml0eUNvbnN0cmFpbnRUb2tlbk93bmVyQ29uc3RyYWludFRva2VuTWludENvbnN0cmFpbnRaZXJvQ29uc3RyYWludEFkZHJlc3NDb25zdHJhaW50Q2xvc2VDb25zdHJhaW50QXNzb2NpYXRlZEluaXRDb25zdHJhaW50QXNzb2NpYXRlZENvbnN0cmFpbnRTdGF0ZUNvbnN0cmFpbnRFeGVjdXRhYmxlQ29uc3RyYWludFNlZWRzQ29uc3RyYWludFJlbnRFeGVtcHRDb25zdHJhaW50T3duZXJDb25zdHJhaW50UmF3Q29uc3RyYWludE11dEV2ZW50SW5zdHJ1Y3Rpb25TdHViSWRsQWNjb3VudE5vdEVtcHR5SWRsSW5zdHJ1Y3Rpb25JbnZhbGlkUHJvZ3JhbUlkbEluc3RydWN0aW9uU3R1Ykluc3RydWN0aW9uRGlkTm90U2VyaWFsaXplSW5zdHJ1Y3Rpb25EaWROb3REZXNlcmlhbGl6ZUluc3RydWN0aW9uRmFsbGJhY2tOb3RGb3VuZEluc3RydWN0aW9uTWlzc2luZ1RoZSBBUEkgYmVpbmcgdXNlZCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWRZb3UgY2Fubm90L3Nob3VsZCBub3QgaW5pdGlhbGl6ZSB0aGUgcGF5ZXIgYWNjb3VudCBhcyBhIHByb2dyYW0gYWNjb3VudFRoZSBkZWNsYXJlZCBwcm9ncmFtIGlkIGRvZXMgbm90IG1hdGNoIHRoZSBhY3R1YWwgcHJvZ3JhbSBpZFRoZSBhY2NvdW50IHdhcyBkdXBsaWNhdGVkIGZvciBtb3JlIHRoYW4gb25lIHJlYWxsb2NhdGlvblRoZSBhY2NvdW50IHJlYWxsb2NhdGlvbiBleGNlZWRzIHRoZSBNQVhfUEVSTUlUVEVEX0RBVEFfSU5DUkVBU0UgbGltaXRUaGUgZ2l2ZW4gcHVibGljIGtleSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgc3lzdmFyVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IHRoZSBhc3NvY2lhdGVkIHRva2VuIGFjY291bnRUaGUgZ2l2ZW4gYWNjb3VudCBpcyBub3QgYSBwcm9ncmFtIGRhdGEgYWNjb3VudFRoZSBwcm9ncmFtIGV4cGVjdGVkIHRoaXMgYWNjb3VudCB0byBiZSBhbHJlYWR5IGluaXRpYWxpemVkVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IG93bmVkIGJ5IHRoZSBzeXN0ZW0gcHJvZ3JhbVRoZSBnaXZlbiBhY2NvdW50IGRpZCBub3Qgc2lnblByb2dyYW0gYWNjb3VudCBpcyBub3QgZXhlY3V0YWJsZVByb2dyYW0gSUQgd2FzIG5vdCBhcyBleHBlY3RlZFRoZSBnaXZlbiBhY2NvdW50IGlzIG93bmVkIGJ5IGEgZGlmZmVyZW50IHByb2dyYW0gdGhhbiBleHBlY3RlZE5vdCBlbm91Z2ggYWNjb3VudCBrZXlzIGdpdmVuIHRvIHRoZSBpbnN0cnVjdGlvbkZhaWxlZCB0byBzZXJpYWxpemUgdGhlIGFjY291bnRGYWlsZWQgdG8gZGVzZXJpYWxpemUgdGhlIGFjY291bnQ4IGJ5dGUgZGlzY3JpbWluYXRvciBkaWQgbm90IG1hdGNoIHdoYXQgd2FzIGV4cGVjdGVkTm8gOCBieXRlIGRpc2NyaW1pbmF0b3Igd2FzIGZvdW5kIG9uIHRoZSBhY2NvdW50VGhlIGFjY291bnQgZGlzY3JpbWluYXRvciB3YXMgYWxyZWFkeSBzZXQgb24gdGhpcyBhY2NvdW50QSByZXF1aXJlX2d0ZSBleHByZXNzaW9uIHdhcyB2aW9sYXRlZEEgcmVxdWlyZV9ndCBleHByZXNzaW9uIHdhcyB2aW9sYXRlZEEgcmVxdWlyZV9rZXlzX25lcSBleHByZXNzaW9uIHdhcyB2aW9sYXRlZEEgcmVxdWlyZV9uZXEgZXhwcmVzc2lvbiB3YXMgdmlvbGF0ZWRBIHJlcXVpcmVfa2V5c19lcSBleHByZXNzaW9uIHdhcyB2aW9sYXRlZEEgcmVxdWlyZV9lcSBleHByZXNzaW9uIHdhcyB2aW9sYXRlZEEgcmVxdWlyZSBleHByZXNzaW9uIHdhcyB2aW9sYXRlZEFuIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudCB0b2tlbiBwcm9ncmFtIGNvbnN0cmFpbnQgd2FzIHZpb2xhdGVkQSBtaW50IHRva2VuIHByb2dyYW0gY29uc3RyYWludCB3YXMgdmlvbGF0ZWRBIHRva2VuIGFjY291bnQgdG9rZW4gcHJvZ3JhbSBjb25zdHJhaW50IHdhcyB2aW9sYXRlZEEgcmVxdWlyZWQgYWNjb3VudCBmb3IgdGhlIGNvbnN0cmFpbnQgaXMgTm9uZUEgc3BhY2UgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRBIG1pbnQgZGVjaW1hbHMgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRBIG1pbnQgZnJlZXplIGF1dGhvcml0eSBjb25zdHJhaW50IHdhcyB2aW9sYXRlZEEgbWludCBtaW50IGF1dGhvcml0eSBjb25zdHJhaW50IHdhcyB2aW9sYXRlZEEgdG9rZW4gb3duZXIgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRBIHRva2VuIG1pbnQgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRFeHBlY3RlZCB6ZXJvIGFjY291bnQgZGlzY3JpbWluYW50QW4gYWRkcmVzcyBjb25zdHJhaW50IHdhcyB2aW9sYXRlZEEgY2xvc2UgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRBbiBhc3NvY2lhdGVkIGluaXQgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRBbiBhc3NvY2lhdGVkIGNvbnN0cmFpbnQgd2FzIHZpb2xhdGVkRGVwcmVjYXRlZCBFcnJvciwgZmVlbCBmcmVlIHRvIHJlcGxhY2Ugd2l0aCBzb21ldGhpbmcgZWxzZUFuIGV4ZWN1dGFibGUgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRBIHNlZWRzIGNvbnN0cmFpbnQgd2FzIHZpb2xhdGVkQSByZW50IGV4ZW1wdGlvbiBjb25zdHJhaW50IHdhcyB2aW9sYXRlZEEgcmF3IGNvbnN0cmFpbnQgd2FzIHZpb2xhdGVkQSBoYXMgb25lIGNvbnN0cmFpbnQgd2FzIHZpb2xhdGVkQSBtdXQgY29uc3RyYWludCB3YXMgdmlvbGF0ZWRUaGUgcHJvZ3JhbSB3YXMgY29tcGlsZWQgd2l0aG91dCBgZXZlbnQtY3BpYCBmZWF0dXJlSURMIGFjY291bnQgbXVzdCBiZSBlbXB0eSBpbiBvcmRlciB0byByZXNpemUsIHRyeSBjbG9zaW5nIGZpcnN0SW52YWxpZCBwcm9ncmFtIGdpdmVuIHRvIHRoZSBJREwgaW5zdHJ1Y3Rpb25UaGUgcHJvZ3JhbSB3YXMgY29tcGlsZWQgd2l0aG91dCBpZGwgaW5zdHJ1Y3Rpb25zVGhlIHByb2dyYW0gY291bGQgbm90IHNlcmlhbGl6ZSB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb25UaGUgcHJvZ3JhbSBjb3VsZCBub3QgZGVzZXJpYWxpemUgdGhlIGdpdmVuIGluc3RydWN0aW9uRmFsbGJhY2sgZnVuY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkOCBieXRlIGluc3RydWN0aW9uIGlkZW50aWZpZXIgbm90IHByb3ZpZGVkUHJvZ3JhbUVycm9yQW5jaG9yRXJyb3JQcm9ncmFtRXJyb3JXaXRoT3JpZ2lucHJvZ3JhbV9lcnJvcmVycm9yX29yaWdpbmNvbXBhcmVkX3ZhbHVlc1B1YmtleXNWYWx1ZXNBY2NvdW50TmFtZVNvdXJjZWVycm9yX25hbWVlcnJvcl9jb2RlX251bWJlcmVycm9yX21zZwBhdHRlbXB0IHRvIGFkZCB3aXRoIG92ZXJmbG93AAAAAGF0dGVtcHQgdG8gbXVsdGlwbHkgd2l0aCBvdmVyZmxvd/////////////////////////////////////////////////////////////////8AAQIDBAUGBwj/////////CQoLDA0ODxD/ERITFBX/FhcYGRobHB0eHyD///////8hIiMkJSYnKCkqK/8sLS4vMDEyMzQ1Njc4Of//////MTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5enNyYy9lbmNvZGUucnNjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlYWxyZWFkeSBtdXRhYmx5IGJvcnJvd2Vkc3JjL3Nlci9tb2QucnNzcmMvYWNjb3VudF9pbmZvLnJzc3JjL2VudHJ5cG9pbnQucnNzcmMvaW5zdHJ1Y3Rpb24ucnNVbnN1cHBvcnRlZCBQdWJrZXlFcnJvcnNyYy9wdWJrZXkucnNVbmFibGUgdG8gZmluZCBhIHZpYWJsZSBwcm9ncmFtIGFkZHJlc3MgYnVtcCBzZWVkc3JjL3JlbnQucnNCdWlsdGluUHJvZ3JhbXNNdXN0Q29uc3VtZUNvbXB1dGVVbml0c01heEluc3RydWN0aW9uVHJhY2VMZW5ndGhFeGNlZWRlZE1heEFjY291bnRzRGF0YUFsbG9jYXRpb25zRXhjZWVkZWRJbGxlZ2FsT3duZXJVbnN1cHBvcnRlZFN5c3ZhckFjY291bnROb3RSZW50RXhlbXB0Qm9yc2hJb0Vycm9ySW52YWxpZFJlYWxsb2NJbnZhbGlkU2VlZHNNYXhTZWVkTGVuZ3RoRXhjZWVkZWRDdXN0b21BY2NvdW50Qm9ycm93RmFpbGVkTm90RW5vdWdoQWNjb3VudEtleXNVbmluaXRpYWxpemVkQWNjb3VudEFjY291bnRBbHJlYWR5SW5pdGlhbGl6ZWRNaXNzaW5nUmVxdWlyZWRTaWduYXR1cmVJbmNvcnJlY3RQcm9ncmFtSWRJbnN1ZmZpY2llbnRGdW5kc0FjY291bnREYXRhVG9vU21hbGxJbnZhbGlkQWNjb3VudERhdGFJbnZhbGlkSW5zdHJ1Y3Rpb25EYXRhSW52YWxpZEFyZ3VtZW50QnVpbHRpbiBwcm9ncmFtcyBtdXN0IGNvbnN1bWUgY29tcHV0ZSB1bml0c0FjY291bnRzIGRhdGEgYWxsb2NhdGlvbnMgZXhjZWVkZWQgdGhlIG1heGltdW0gYWxsb3dlZCBwZXIgdHJhbnNhY3Rpb25Qcm92aWRlZCBvd25lciBpcyBub3QgYWxsb3dlZFVuc3VwcG9ydGVkIHN5c3ZhckFuIGFjY291bnQgZG9lcyBub3QgaGF2ZSBlbm91Z2ggbGFtcG9ydHMgdG8gYmUgcmVudC1leGVtcHRQcm92aWRlZCBzZWVkcyBkbyBub3QgcmVzdWx0IGluIGEgdmFsaWQgYWRkcmVzc0xlbmd0aCBvZiB0aGUgc2VlZCBpcyB0b28gbG9uZyBmb3IgYWRkcmVzcyBnZW5lcmF0aW9uAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAABAAAACAAAAADAAAAAAAAAAAAAAAAAAAASW5zdHJ1Y3Rpb24gdHJhY2UgbGVuZ3RoIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGFsbG93ZWQgcGVyIHRyYW5zYWN0aW9uQWNjb3VudCBkYXRhIHJlYWxsb2NhdGlvbiB3YXMgaW52YWxpZElPIEVycm9yOiBGYWlsZWQgdG8gYm9ycm93IGEgcmVmZXJlbmNlIHRvIGFjY291bnQgZGF0YSwgYWxyZWFkeSBib3Jyb3dlZFRoZSBpbnN0cnVjdGlvbiBleHBlY3RlZCBhZGRpdGlvbmFsIGFjY291bnQga2V5c0FuIGF0dGVtcHQgdG8gb3BlcmF0ZSBvbiBhbiBhY2NvdW50IHRoYXQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWRBbiBpbml0aWFsaXplIGluc3RydWN0aW9uIHdhcyBzZW50IHRvIGFuIGFjY291bnQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGluaXRpYWxpemVkQSBzaWduYXR1cmUgd2FzIHJlcXVpcmVkIGJ1dCBub3QgZm91bmRUaGUgYWNjb3VudCBkaWQgbm90IGhhdmUgdGhlIGV4cGVjdGVkIHByb2dyYW0gaWRBbiBhY2NvdW50J3MgYmFsYW5jZSB3YXMgdG9vIHNtYWxsIHRvIGNvbXBsZXRlIHRoZSBpbnN0cnVjdGlvbkFuIGFjY291bnQncyBkYXRhIHdhcyB0b28gc21hbGxBbiBhY2NvdW50J3MgZGF0YSBjb250ZW50cyB3YXMgaW52YWxpZEFuIGluc3RydWN0aW9uJ3MgZGF0YSBjb250ZW50cyB3YXMgaW52YWxpZFRoZSBhcmd1bWVudHMgcHJvdmlkZWQgdG8gYSBwcm9ncmFtIGluc3RydWN0aW9uIHdlcmUgaW52YWxpZEN1c3RvbSBwcm9ncmFtIGVycm9yOiBCdWZmZXJUb29TbWFsbEN1c3RvbVNlcXVlbmNlTXVzdEhhdmVMZW5ndGhTaXplTGltaXREZXNlcmlhbGl6ZUFueU5vdFN1cHBvcnRlZEludmFsaWRUYWdFbmNvZGluZ0ludmFsaWRDaGFyRW5jb2RpbmdJbnZhbGlkQm9vbEVuY29kaW5nSW52YWxpZFV0ZjhFbmNvZGluZ0lvAAAAAABieXRlIGFycmF5c3RydWN0IHZhcmlhbnR0dXBsZSB2YXJpYW50bmV3dHlwZSB2YXJpYW50dW5pdCB2YXJpYW50bWFwbmV3dHlwZSBzdHJ1Y3RPcHRpb24gdmFsdWV1bml0IHZhbHVlc3RyaW5nIGNoYXJhY3RlciBgYGludGVnZXIgYGJvb2xlYW4gYAAAAAB1bmNhdGVnb3JpemVkIGVycm9yb3RoZXIgZXJyb3JvdXQgb2YgbWVtb3J5dW5leHBlY3RlZCBlbmQgb2YgZmlsZXVuc3VwcG9ydGVkb3BlcmF0aW9uIGludGVycnVwdGVkYXJndW1lbnQgbGlzdCB0b28gbG9uZ3RvbyBtYW55IGxpbmtzY3Jvc3MtZGV2aWNlIGxpbmsgb3IgcmVuYW1lZXhlY3V0YWJsZSBmaWxlIGJ1c3lyZXNvdXJjZSBidXN5ZmlsZSB0b28gbGFyZ2VmaWxlc3lzdGVtIHF1b3RhIGV4Y2VlZGVkc2VlayBvbiB1bnNlZWthYmxlIGZpbGV3cml0ZSB6ZXJvdGltZWQgb3V0aW52YWxpZCBkYXRhaW52YWxpZCBpbnB1dCBwYXJhbWV0ZXJzdGFsZSBuZXR3b3JrIGZpbGUgaGFuZGxlZmlsZXN5c3RlbSBsb29wIG9yIGluZGlyZWN0aW9uIGxpbWl0IChlLmcuIHN5bWxpbmsgbG9vcClyZWFkLW9ubHkgZmlsZXN5c3RlbSBvciBzdG9yYWdlIG1lZGl1bWRpcmVjdG9yeSBub3QgZW1wdHlpcyBhIGRpcmVjdG9yeW5vdCBhIGRpcmVjdG9yeW9wZXJhdGlvbiB3b3VsZCBibG9ja2VudGl0eSBhbHJlYWR5IGV4aXN0c2Jyb2tlbiBwaXBlbmV0d29yayBkb3duYWRkcmVzcyBub3QgYXZhaWxhYmxlYWRkcmVzcyBpbiB1c2Vub3QgY29ubmVjdGVkY29ubmVjdGlvbiBhYm9ydGVkbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gcmVmdXNlZHBlcm1pc3Npb24gZGVuaWVkRXJyb3JtZXNzYWdlT3MgKG9zIGVycm9yIClVbnN1cHBvcnRlZEN1c3RvbWVycm9yVW5jYXRlZ29yaXplZE90aGVyT3V0T2ZNZW1vcnlVbmV4cGVjdGVkRW9mSW50ZXJydXB0ZWRBcmd1bWVudExpc3RUb29Mb25nSW52YWxpZEZpbGVuYW1lVG9vTWFueUxpbmtzQ3Jvc3Nlc0RldmljZXNFeGVjdXRhYmxlRmlsZUJ1c3lSZXNvdXJjZUJ1c3lGaWxlVG9vTGFyZ2VGaWxlc3lzdGVtUXVvdGFFeGNlZWRlZE5vdFNlZWthYmxlU3RvcmFnZUZ1bGxXcml0ZVplcm9JbnZhbGlkRGF0YUludmFsaWRJbnB1dFN0YWxlTmV0d29ya0ZpbGVIYW5kbGVGaWxlc3lzdGVtTG9vcFJlYWRPbmx5RmlsZXN5c3RlbURpcmVjdG9yeU5vdEVtcHR5SXNBRGlyZWN0b3J5Tm90QURpcmVjdG9yeVdvdWxkQmxvY2tBbHJlYWR5RXhpc3RzQnJva2VuUGlwZU5ldHdvcmtEb3duQWRkckluVXNlTm90Q29ubmVjdGVkQ29ubmVjdGlvbkFib3J0ZWROZXR3b3JrVW5yZWFjaGFibGVIb3N0VW5yZWFjaGFibGVDb25uZWN0aW9uUmVzZXRDb25uZWN0aW9uUmVmdXNlZEVycm9yOiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQsIG91dCBvZiBtZW1vcnkAAGxpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvd2EgZm9ybWF0dGluZyB0cmFpdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvcmxpYnJhcnkvYWxsb2Mvc3JjL2ZtdC5yc2J5dGVzZXJyb3JGcm9tVXRmOEVycm9yAGFzc2VydGlvbiBmYWlsZWQ6IGVkZWx0YSA+PSAwbGlicmFyeS9jb3JlL3NyYy9udW0vZGl5X2Zsb2F0LnJzAAABAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7AgAAABQAAADIAAAA0AcAACBOAABADQMAgIQeAAAtMQEAwusLAJQ1dwAAwW/yhiMAAAAAAIHvrIVbQW0t7gQAAAAAAAAAAAAAAR9qv2TtOG7tl6fa9Pk/6QNPGAAAAAAAAAAAAAAAAAAAAAAAAT6VLgmZ3wP9OBUPL+R0I+z1z9MI3ATE2rDNvBl/M6YDJh/pTgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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ZmFpbGVkOiAhYnVmLmlzX2VtcHR5KCljYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlYXNzZXJ0aW9uIGZhaWxlZDogZC5tYW50IDwgKDEgPDwgNjEpbGlicmFyeS9jb3JlL3NyYy9udW0vZmx0MmRlYy9tb2QucnNhc3NlcnRpb24gZmFpbGVkOiBidWZbMF0gPiBiXCcwXCdhc3NlcnRpb24gZmFpbGVkOiBwYXJ0cy5sZW4oKSA+PSA0MC4uLSswaW5mTmFOYXNzZXJ0aW9uIGZhaWxlZDogYnVmLmxlbigpID49IG1heGxlbikuLkJvcnJvd0Vycm9yQm9ycm93TXV0RXJyb3IgYnV0IHRoZSBpbmRleCBpcyA6cGFuaWNrZWQgYXQgJycsIG1hdGNoZXMhPT09YXNzZXJ0aW9uIGZhaWxlZDogYChsZWZ0ICByaWdodClgCiAgbGVmdDogYGAsCiByaWdodDogYGA6IGA6ICB7CiwKLCAgeyB9IH0oCigsCltdbGlicmFyeS9jb3JlL3NyYy9mbXQvbnVtLnJzMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OWxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5yczAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmYWxzZSgpcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgbGlicmFyeS9jb3JlL3NyYy9zdHIvdmFsaWRhdGlvbnMucnMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB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AAAAAADAcwgAAAAAAEUFCgAhAAAAAAAAAEwAAAAJAAAAAAAAAEUFCgAhAAAAAAAAAE4AAAAJAAAAAAAAAJAGCgAvAAAAAAAAAEMAAAAVAAAAAAAAAJAGCgAvAAAAAAAAAHUAAAAFAAAAAAAAAJAGCgAvAAAAAAAAAHYAAAAFAAAAAAAAAJAGCgAvAAAAAAAAAHcAAAAFAAAAAAAAAJAGCgAvAAAAAAAAAHgAAAAFAAAAAAAAAJAGCgAvAAAAAAAAAHkAAAAFAAAAAAAAAJAGCgAvAAAAAAAAAHoAAAAFAAAAAAAAAJAGCgAvAAAAAAAAAMEAAAAJAAAAAAAAAJAGCgAvAAAAAAAAAPkAAABUAAAAAAAAAJAGCgAvAAAAAAAAAPoAAAANAAAAAAAAAJAGCgAvAAAAAAAAAAEBAAAzAAAAAAAAAJAGCgAvAAAAAAAAAAoBAAAFAAAAAAAAAJAGCgAvAAAAAAAAAAsBAAAFAAAAAAAAAJAGCgAvAAAAAAAAAAwBAAAFAAAAAAAAAJAGCgAvAAAAAAAAAA0BAAAFAAAAAAAAAJAGCgAvAAAAAAAAAA4BAAAFAAAAAAAAAJAGCgAvAAAAAAAAAEsBAAAfAAAAAAAAAJAGCgAvAAAAAAAAAGUBAAANAAAAAAAAAJAGCgAvAAAAAAAAAHEBAAAkAAAAAAAAAJAGCgAvAAAAAAAAAHYBAABUAAAAAAAAAJAGCgAvAAAAAAAAAIMBAAAzAAAAAAAAAMAMCgAuAAAAAAAAAH0AAAAVAAAAAAAAAMAMCgAuAAAAAAAAAKkAAAAFAAAAAAAAAMAMCgAuAAAAAAAAAKoAAAAFAAAAAAAAAMAMCgAuAAAAAAAAAKsAAAAFAAAAAAAAAMAMCgAuAAAAAAAAAKwAAAAFAAAAAAAAAMAMCgAuAAAAAAAAAK0AAAAFAAAAAAAAAMAMCgAuAAAAAAAAAK4AAAAFAAAAAAAAAMAMCgAuAAAAAAAAAK8AAAAFAAAAAAAAAMAMCgAuAAAAAAAAAAoBAAARAAAAAAAAAMAMCgAuAAAAAAAAAA0BAAAJAAAAAAAAAMAMCgAuAAAAAAAAABYBAABCAAAAAAAAAMAMCgAuAAAAAAAAAEABAAAJAAAAAAAAAMAMCgAuAAAAAAAAANwBAAAFAAAAAAAAAMAMCgAuAAAAAAAAAN0BAAAFAAAAAAAA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ABjKBgAAAAAACAAAAAAAAACwzAYAAAAAAAgAAAAAAAAA+MwGAAAAAAAIAAAAAAAAADjNBgAAAAAACAAAAAAAAAB4zQYAAAAAAAgAAAAAAAAAsM0GAAAAAAAIAAAAAAAAAOjNBgAAAAAACAAAAAAAAAAgzgYAAAAAAAgAAAAAAAAAWM4GAAAAAAAIAAAAAAAAAIjOBgAAAAAACAAAAAAAAAC4zgYAAAAAAAgAAAAAAAAA6M4GAAAAAAAIAAAAAAAAABjPBgAAAAAACAAAAAAAAABIzwYAAAAAAAgAAAAAAAAAeM8GAAAAAAAIAAAAAAAAAKjPBgAAAAAACAAAAAAAAADYzwYAAAAAAAgAAAAAAAAAANAGAAAAAAAIAAAAAAAAACDQBgAAAAAACAAAAAAAAABI0AYAAAAAAAgAAAAAAAAAcNAGAAAAAAAIAAAAAAAAAJjQBgAAAAAACAAAAAAAAADA0AYAAAAAAAgAAAAAAAAA4NAGAAAAAAAIAAAAAAAAAAjRBgAAAAAACAAAAAAAAAAw0QYAAAAAAAgAAAAAAAAAUNEGAAAAAAAIAAAAAAAAAHDRBgAAAAAACAAAAAAAAACQ0QYAAAAAAAgAAAAAAAAAsNEGAAAAAAAIAAAAAAAAANDRBgAAAAAACAAAAAAAAADw0QYAAAAAAAgAAAAAAAAAENIGAAAAAAAIAAAAAAAAADDSBgAAAAAACAAAAAAAAABQ0gYAAAAAAAgAAAAAAAAAcNIGAAAAAAAIAAAAAAAAAIjSBgAAAAAACAAAAAAAAACo0gYAAAAAAAgAAAAAAAAAwNIGAAAAAAAIAAAAAAAAANjSBgAAAAAACAAAAAAAAAD40gYAAAAAAAgAAAAAAAAAGNMGAAAAAAAIAAAAAAAAADjTBgAAAAAACAAAAAAAAABY0wYAAAAAAAgAAAAAAAAAeNMGAAAAAAAIAAAAAAAAAJjTBgAAAAAACAAAAAAAAAC40wYAAAAAAAgAAAAAAAAA2NMGAAAAAAAIAAAAAAAAAPjTBgAAAAAACAAAAAAAAAAQ1AYAAAAAAAgAAAAAAAAAMNQGAAAAAAAIAAAAAAAAAFDUBgAAAAAACAAAAAAAAABw1AYAAAAAAAgAAAAAAAAAkNQGAAAAAAAIAAAAAAAAALDUBgAAAAAACAAAAAAAAADQ1AYAAAAAAAgAAAAAAAAA8NQG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AAAAAADwYAgAAAAAAAgAAAAAAAAAEGEIAAAAAAAIAAAAAAAAADBhCAAAAAAACAAAAAAAAABIYQgAAAAAAAgAAAAAAAAAaGEIAAAAAAAIAAAAAAAAAIhhCAAAAAAACAAAAAAAAACoYQgAAAAAAAgAAAAAAAAAwGEIAAAAAAAIAAAAAAAAAOBhCAAAAAAACAAAAAAAAAAAYggAAAAAAAgAAAAAAAAAIGIIAAAAAAAIAAAAAAAAAEBiCAAAAAAACAAAAAAAAABgYggAAAAAAAgAAAAAAAAAgGIIAAAAAAAIAAAAAAAAAKBiCAAAAAAACAAAAAAAAADAYggAAAAAAAgAAAAAAAAA4GIIAAAAAAAIAAAAAAAAAABkCAAAAAAACAAAAAAAAAAoZAgAAAAAAAgAAAAAAAAAQGQIAAAAAAAIAAAAAAAAAJBkCAAAAAAACAAAAAAAAACoZAgAAAAAAAgAAAAAAAAAGGUIAAAAAAAIAAAAAAAAAFBlCAAAAAAACAAAAAAAAACgZQgAAAAAAAgAAAAAAAAA2GUIAAAAAAAIAAAAAAAAAPBlCAAAAAAACAAAAAAAAAAQZggAAAAAAAgAAAAAAAAAMGYIAAAAAAAIAAAAAAAAAKBmCAAAAAAACAAAAAAAAADYZggAAAAAAAgAAAAAAAAA8GYIAAAAAAAIAAAAAAAAADBnCAAAAAAACAAAAAAAAABIZwgAAAAAAAgAAAAAAAAAIGgIAAAAAAAIAAAAAAAAADhoCAAAAAAACAAAAAAAAABAaQgAAAAAAAgAAAAAAAAAcGkIAAAAAAAIAAAAAAAAAAhrCAAAAAAACAAAAAAAAABYawgAAAAAAAgAAAAAAAAAiGsIAAAAAAAIAAAAAAAAAGhsCAAAAAAACAAAAAAAAACAbAgAAAAAAAgAAAAAAAAAwGwIAAAAAAAIAAAAAAAAAPhsCAAAAAAACAAAAAAAAAAobQgAAAAAAAgAAAAAAAAAYG0IAAAAAAAIAAAAAAAAAJBtCAAAAAAACAAAAAAAAADAbQgAAAAAAAgAAAAAAAAA8G0IAAAAAAAIAAAAAAAAACBuCAAAAAAACAAAAAAAAABQbggAAAAAAAgAAAAAAAAAgG4IAAAAAAAIAAAAAAAAALBuCAAAAAAACAAAAAAAAADgbggAAAAAAAgAAAAAAAAAEG8IAAAAAAAIAAAAAAAAAEBvCAAAAAAACAAAAAAAAABwbwgAAAAAAAgAAAAAAAAAkG8IAAAAAAAIAAAAAAAAALBvCAAAAAAACAAAAAAAAADIbwgAAAAAAAgAAAAAAAAA6G8IAAAAAAAIAAAAAAAAAAhwCAAAAAAACAAAAAAAAAAocAgAAAAAAAgAAAAAAAAASHAIAAAAAAAIAAAAAAAAAGhwCAAAAAAACAAAAAAAAACIcAgAAAAAAAgAAAAAAAAAqHAIAAAAAAAIAAAAAAAAAMhwCAAAAAAACAAAAAAAAADgcAgAAAAAAAgAAAAAAAAAAHEIAAAAAAAIAAAAAAAAACBxCAAAAAAACAAAAAAAAABAcQgAAAAAAAgAAAAAAAAAYHEIAAAAAAAIAAAAAAAAAIBxCAAAAAAACAAAAAAAAACgcQgAAAAAAAgAAAAAAAAAwHEIAAAAAAAIAAAAAAAAAOBxCAAAAAAACAAAAAAAAAAAcggAAAAAAAgAAAAAAAAAIHIIAAAAAAAIAAAAAAAAAEByCAAAAAAACAAAAAAAAABgcggAAAAAAAgAAAAAAAAA2HIIAAAAAAAIAAAAAAAAADh0CAAAAAAACAAAAAAAAAD4dAgAAAAAAAgAAAAAAAAAOHoIAAAAAAAIAAAAAAAAAFB6CAAAAAAACAAAAAAAAACQeggAAAAAAAgAAAAAAAAAqH0IAAAAAAAIAAAAAAAAADB+CAAAAAAACAAAAAAAAABIfggAAAAAAAgAAAAAAAAAWH4IAAAAAAAIAAAAAAAAADCCCAAAAAAACAAAAAAAAABIgggAAAAAAAgAAAAAAAAAYIIIAAAAAAAIAAAAAAAAALiCCAAAAAAACAAAAAAAAADQgggAAAAAAAgAAAAAAAAAUIMIAAAAAAAIAAAAAAAAAIiDCAAAAAAACAAAAAAAAACAhQgAAAAAAAgAAAAAAAAAwIUIAAAAAAAIAAAAAAAAAACGCAAAAAAACAAAAAAAAABAhggAAAAAAAgAAAAAAAAAeIYIAAAAAAAIAAAAAAAAALCGCAAAAAAACAAAAAAAAACgjwgAAAAAAAgAAAAAAAAAuI8IAAAAAAAIAAAAAAAAANiPCAAAAAAACAAAAAAAAADwjwgAAAAAAAgAAAAAAAAAEJAIAAAAAAAIAAAAAAAAACiQCAAAAAAACAAAAAAAAABIkAgAAAAAAAgAAAAAAAAAYJAIAAAAAAAIAAAAAAAAAICQCAAAAAAACAAAAAAAAACYkAgAAAAAAAgAAAAAAAAAuJAIAAAAAAAIAAAAAAAAANCQCAAAAAAACAAAAAAAAABIkwgAAAAAAAgAAAAAAAAA+KUIAAAAAAAIAAAAAAAAABCmCAAAAAAACAAAAAAAAABQpwgAAAAAAAgAAAAAAAAA2KcIAAAAAAAIAAAAAAAAAJipCAAAAAAACAAAAAAAAADIqQgAAAAAAAgAAAAAAAAA+KkIAAAAAAAIAAAAAAAAACiqCAAAAAAACAAAAAAAAABYqggAAAAAAAgAAAAAAAAAiKoIAAAAAAAIAAAAAAAAAACwCAAAAAAACAAAAAAAAABIsAgAAAAAAAgAAAAAAAAAKMQIAAAAAAAIAAAAAAAAAADGCAAAAAAACAAAAAAAAABgxggAAAAAAAgAAAAAAAAAoMYIAAAAAAAIAAAAAAAAAMjGCAAAAAAACAAAAAAAAAD4xggAAAAAAAgAAAAAAAAAGMcIAAAAAAAIAAAAAAAAADDHCAAAAAAACAAAAAAAAABQxwgAAAAAAAgAAAAAAAAAaMcIAAAAAAAIAAAAAAAAAIjHCAAAAAAACAAAAAAAAACgxwgAAAAAAAgAAAAAAAAAwMcIAAAAAAAIAAAAAAAAANjHCAAAAAAACAAAAAAAAAD4xwgAAAAAAAgAAAAAAAAAEMgIAAAAAAAIAAAAAAAAADDICAAAAAAACAAAAAAAAABQyAgAAAAAAAgAAAAAAAAAaMgIAAAAAAAIAAAAAAAAAJDICAAAAAAACAAAAAAAAADAyAgAAAAAAAgAAAAAAAAAEM0IAAAAAAAIAAAAAAAAAHjNCAAAAAAACAAAAAAAAAA42QgAAAAAAAgAAAAAAAAAIN4IAAAAAAAIAAAAAAAAAEDeCAAAAAAACAAAAAAAAABg3ggAAAAAAAgAAAAAAAAAeN4IAAAAAAAIAAAAAAAAAJjeCAAAAAAACAAAAAAAAACw3ggAAAAAAAgAAAAAAAAA0N4IAAAAAAAIAAAAAAAAAOjeCAAAAAAACAAAAAAAAAAI3wgAAAAAAAgAAAAAAAAAIN8IAAAAAAAIAAAAAAAAAEDfCAAAAAAACAAAAAAAAABY3wgAAAAAAAgAAAAAAAAAeN8IAAAAAAAIAAAAAAAAAJDfCAAAAAAACAAAAAAAAACw3wgAAAAA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AAgAAAAAAAAAeBwKAAAAAAAIAAAAAAAAAIAcCgAAAAAACAAAAAAAAACYHAoAAAAAAAgAAAAAAAAAoBwKAAAAAAAIAAAAAAAAAKgcCgAAAAAACAAAAAAAAACwHAoAAAAAAAgAAAAAAAAAuBwKAAAAAAAIAAAAAAAAAMAcCgAAAAAACAAAAAAAAADIHAoAAAAAAAgAAAAAAAAA0BwKAAAAAAAIAAAAAAAAANgcCgAAAAAACAAAAAAAAADwHAoAAAAAAAgAAAAAAAAACB0KAAAAAAAIAAAAAAAAACAdCgAAAAAACAAAAAAAAAA4HQoAAAAAAAgAAAAAAAAAUB0KAAAAAAAIAAAAAAAAAFgdCgAAAAAACAAAAAAAAABgHQoAAAAAAAgAAAAAAAAAaB0KAAAAAAAIAAAAAAAAAIAdCgAAAAAACAAAAAAAAACIHQoAAAAAAAgAAAAAAAAAoB0KAAAAAAAIAAAAAAAAALgdCgAAAAAACAAAAAAAAADAHQoAAAAAAAgAAAAAAAAAyB0KAAAAAAAIAAAAAAAAANAdCgAAAAAACAAAAAAAAADoHQoAAAAAAAgAAAAAAAAA8B0KAAAAAAAIAAAAAAAAAAgeCgAAAAAACAAAAAAAAAAQHgoAAAAAAAgAAAAAAAAAKB4KAAAAAAAIAAAAAAAAAEAeCgAAAAAACAAAAAAAAABQHgoAAAAAAAgAAAAAAAAAaB4KAAAAAAAIAAAAAAAAAIAeCgAAAAAACAAAAAAAAACYHgoAAAAAAAgAAAAAAAAAsB4KAAAAAAAIAAAAAAAAAMgeCgAAAAAACAAAAAAAAADgHgoAAAAAAAgAAAAAAAAA+B4KAAAAAAAIAAAAAAAAAAAfCgAAAAAACAAAAAAAAAAQHwoAAAAAAAgAAAAAAAAAIB8KAAAAAAAIAAAAAAAAADgfCgAAAAAACAAAAAAAAABAHwoAAAAAAAgAAAAAAAAAWB8KAAAAAAAIAAAAAAAAAHAfCgAAAAAACAAAAAAAAACAHwoAAAAAAAgAAAAAAAAAkB8KAAAAAAAIAAAAAAAAAKAfCgAAAAAACAAAAAAAAAC4HwoAAAAAAAgAAAAAAAAA0B8KAAAAAAAIAAAAAAAAAOgfCgAAAAAACAAAAAAAAAAAIAoAAAAAAAgAAAAAAAAACCAKAAAAAAAIAAAAAAAAACAgCgAAAAAACAAAAAAAAAA4IAoAAAAAAAgAAAAAAAAAQCAKAAAAAAAIAAAAAAAAAFggCgAAAAAACAAAAAAAAABwIAoAAAAAAAgAAAAAAAAAiCAKAAAAAAAIAAAAAAAAAKAgCgAAAAAACAAAAAAAAAC4IAoAAAAAAAgAAAAAAAAA0CAKAAAAAAAIAAAAAAAAAOggCgAAAAAACAAAAAAAAAAAIQoAAAAAAAgAAAAAAAAAGCEKAAAAAAAIAAAAAAAAADAhCgAAAAAACAAAAAAAAABAIQoAAAAAAAgAAAAAAAAAUCEKAAAAAAAIAAAAAAAAAGAhCgAAAAAACAAAAAAAAABwIQoAAAAAAAgAAAAAAAAAgCEKAAAAAAAIAAAAAAAAAJAhCgAAAAAACAAAAAAAAACgIQoAAAAAAAgAAAAAAAAAsCEKAAAAAAAIAAAAAAAAAMAhCgAAAAAACAAAAAAAAADQIQoAAAAAAAgAAAAAAAAA4CEKAAAAAAAIAAAAAAAAAPAhCgAAAAAACAAAAAAAAAAAIgoAAAAAAAgAAAAAAAAAECIKAAAAAAAIAAAAAAAAACAiCgAAAAAACAAAAAAAAAAwIgoAAAAAAAgAAAAAAAAAQCIKAAAAAAAIAAAAAAAAAFAiCgAAAAAACAAAAAAAAABgIgoAAAAAAAgAAAAAAAAAcCIKAAAAAAAIAAAAAAAAAIAiCgAAAAAACAAAAAAAAACQIgoAAAAAAAgAAAAAAAAAoCIKAAAAAAAIAAAAAAAAALAiCgAAAAAACAAAAAAAAADAIgoAAAAAAAgAAAAAAAAA0CIKAAAAAAAIAAAAAAAAAOAiCgAAAAAACAAAAAAAAADwIgoAAAAAAAgAAAAAAAAAACMKAAAAAAAIAAAAAAAAABgjCgAAAAAACAAAAAAAAAAwIwoAAAAAAAgAAAAAAAAAQCMKAAAAAAAIAAAAAAAAAFgjCgAAAAAACAAAAAAAAABwIwoAAAAAAAgAAAAAAAAAgCMKAAAAAAAIAAAAAAAAAJgjCgAAAAAACAAAAAAAAACgIwoAAAAAAAgAAAAAAAAAuCMKAAAAAAAIAAAAAAAAAMAjCgAAAAAACAAAAAAAAADIIwoAAAAAAAgAAAAAAAAA0CMKAAAAAAAIAAAAAAAAANgjCgAAAAAACAAAAAAAAADgIwoAAAAAAAgAAAAAAAAA6CMKAAAAAAAIAAAAAAAAAPAjCgAAAAAACAAAAAAAAAD4IwoAAAAAAAgAAAAAAAAAECQKAAAAAAAIAAAAAAAAACgkCgAAAAAACAAAAAAAAAAwJAoAAAAAAAgAAAAAAAAAOCQKAAAAAAAIAAAAAAAAAEAkCgAAAAAACAAAAAAAAABYJAoAAAAAAAgAAAAAAAAAYCQKAAAAAAAIAAAAAAAAAHgkCgAAAAAACAAAAAAAAACQJAoAAAAAAAgAAAAAAAAAmCQKAAAAAAAIAAAAAAAAAKAkCgAAAAAACAAAAAAAAACoJAoAAAAAAAgAAAAAAAAAuCQKAAAAAAAIAAAAAAAAANAkCgAAAAAACAAAAAAAAADoJAoAAAAAAAgAAAAAAAAAACUKAAAAAAAIAAAAAAAAABglCgAAAAAACAAAAAAAAAAwJQoAAAAAAAgAAAAAAAAAQCUKAAAAAAAIAAAAAAAAAFglCgAAAAAACAAAAAAAAABwJQoAAAAAAAgAAAAAAAAAiCUKAAAAAAAIAAAAAAAAAKAlCgAAAAAACAAAAAAAAACoJQoAAAAAAAgAAAAAAAAAwCUKAAAAAAAIAAAAAAAAANglCgAAAAAACAAAAAAAAADgJQoAAAAAAAgAAAAAAAAA+CUKAAAAAAAIAAAAAAAAABAmCgAAAAAACAAAAAAAAAAoJgoAAAAAAAgAAAAAAAAAMCYKAAAAAAAIAAAAAAAAADgmCgAAAAAACAAAAAAAAABAJgoAAAAAAAgAAAAAAAAAWCYKAAAAAAAIAAAAAAAAAGAmCgAAAAAACAAAAAAAAAB4JgoAAAAAAAgAAAAAAAAAkCYKAAAAAAAIAAAAAAAAAJgmCgAAAAAACAAAAAAAAACgJgoAAAAAAAgAAAAAAAAAqCYKAAAAAAAIAAAAAAAAALgmCgAAAAAACAAAAAAAAADIJgoAAAAAAAgAAAAAAAAA2CYKAAAAAAAIAAAAAAAAAOgmCgAAAAAACAAAAAAAAAD4JgoAAAAAAAgAAAAAAAAACCcKAAAAAAAIAAAAAAAAABgnCgAAAAAACAAAAAAAAAAwJwoAAAAAAAgAAAAAAAAAOCcKAAAAAAAIAAAAAAAAAFAnCgAAAAAACAAAAAAAAABYJwoAAAAAAAgAAAAAAAAAcCcKAAAAAAAIAAAAAAAAAHgnCgAAAAAACAAAAAAAAACAJwoAAAAAAAgAAAAAAAAAiCcKAAAAAAAIAAAAAAAAAJAnCgAAAAAACAAAAAAAAACYJwoAAAAAAAgAAAAAAAAAoCcKAAAAAAAIAAAAAAAAAKgnCgAAAAAACAAAAAAAAACwJwoAAAAAAAgAAAAAAAAAyCcKAAAAAAAIAAAAAAAAAOAnCgAAAAAACAAAAAAAAADoJwoAAAAAAAgAAAAAAAAA8CcKAAAAAAAIAAAAAAAAAPgnCgAAAAAACAAAAAAAAAAQKAoAAAAAAAgAAAAAAAAAGCgKAAAAAAAIAAAAAAAAADAoCgAAAAAACAAAAAAAAABIKAoAAAAAAAgAAAAAAAAAUCgKAAAAAAAIAAAAAAAAAFgoCgAAAAAACAAAAAAAAABgKAoAAAAAAAgAAAAAAAAAcCgKAAAAAAAIAAAAAAAAAIgoCgAAAAAACAAAAAAAAACQKAoAAAAAAAgAAAAAAAAAqCgKAAAAAAAIAAAAAAAAAMAoCgAAAAAACAAAAAAAAADYKAoAAAAAAAgAAAAAAAAA8CgKAAAAAAAIAAAAAAAAAAgpCgAAAAAACAAAAAAAAAAgKQoAAAAAAAgAAAAAAAAAOCkKAAAAAAAIAAAAAAAAAFApCgAAAAAACAAAAAAAAABoKQoAAAAAAAgAAAAAAAAAgCkKAAAAAAAIAAAAAAAAAJgpCgAAAAAACAAAAAAAAACwKQoAAAAAAAgAAAAAAAAAwCkKAAAAAAAIAAAAAAAAANApCgAAAAAACAAAAAAAAADgKQoAAAAAAAgAAAAAAAAA8CkKAAAAAAAIAAAAAAAAAAAqCgAAAAAACAAAAAAAAAAQKgoAAAAAAAgAAAAAAAAAICoKAAAAAAAIAAAAAAAAADAqCgAAAAAACAAAAAAAAABAKgoAAAAAAAgAAAAAAAAAUCoKAAAAAAAIAAAAAAAAAGAqCgAAAAAACAAAAAAAAABwKgoAAAAAAAgAAAAAAAAAgCoKAAAAAAAIAAAAAAAAAJAqCgAAAAAACAAAAAAAAACgKgoAAAAAAAgAAAAAAAAAsCoKAAAAAAAIAAAAAAAAAMAqCgAAAAAACAAAAAAAAADQKgoAAAAAAAgAAAAAAAAA4CoKAAAAAAAIAAAAAAAAAPAqCgAAAAAACAAAAAAAAAAAKwoAAAAAAAgAAAAAAAAAECsKAAAAAAAIAAAAAAAAACArCgAAAAAACAAAAAAAAAAwKwoAAAAAAAgAAAAAAAAAQCsKAAAAAAAIAAAAAAAAAFArCgAAAAAACAAAAAAAAABgKwoAAAAAAAgAAAAAAAAAcCsKAAAAAAAIAAAAAAAAAIArCgAAAAAACAAAAAAAAACQKwoAAAAAAAgAAAAAAAAAoCsKAAAAAAAIAAAAAAAAALArCgAAAAAACAAAAAAAAADAKwoAAAAAAAgAAAAAAAAA0CsKAAAAAAAIAAAAAAAAAOArCgAAAAAACAAAAAAAAADwKwoAAAAAAAgAAAAAAAAAACwKAAAAAAAIAAAAAAAAABAsCgAAAAAACAAAAAAAAAAgLAoAAAAAAAgAAAAAAAAAMCwKAAAAAAAIAAAAAAAAAEAsCgAAAAAACAAAAAAAAABQLAoAAAAAAAgAAAAAAAAAYCwKAAAAAAAIAAAAAAAAAHAsCgAAAAAACAAAAAAAAACALAoAAAAAAAgAAAAAAAAAkCwKAAAAAAAIAAAAAAAAAKAsCgAAAAAACAAAAAAAAACwLAoAAAAAAAgAAAAAAAAAwCwKAAAAAAAIAAAAAAAAANAsCgAAAAAACAAAAAAAAADgLAoAAAAAAAgAAAAAAAAA8CwKAAAAAAAIAAAAAAAAAAAtCgAAAAAACAAAAAAAAAAQLQoAAAAAAAgAAAAAAAAAIC0KAAAAAAAIAAAAAAAAADAtCgAAAAAACAAAAAAAAABALQoAAAAAAAgAAAAAAAAAWC0KAAAAAAAIAAAAAAAAAHAtCgAAAAAACAAAAAAAAACILQoAAAAAAAgAAAAAAAAAmC0KAAAAAAAIAAAAAAAAALAtCgAAAAAACAAAAAAAAADILQoAAAAAAAgAAAAAAAAA4C0KAAAAAAAIAAAAAAAAAPgtCgAAAAAACAAAAAAAAAAQLgoAAAAAAAgAAAAAAAAAKC4KAAAAAAAIAAAAAAAAAEAuCgAAAAAACAAAAAAAAABYLgoAAAAAAAgAAAAAAAAAaC4KAAAAAAAIAAAAAAAAAHguCgAAAAAACAAAAAAAAACILgoAAAAAAAgAAAAAAAAAmC4KAAAAAAAIAAAAAAAAALAuCgAAAAAACAAAAAAAAADILgoAAAAAAAgAAAAAAAAA4C4KAAAAAAAIAAAAAAAAAPguCgAAAAAACAAAAAAAAAAQLwoAAAAAAAgAAAAAAAAAGC8KAAAAAAAIAAAAAAAAADAvCgAAAAAACAAAAAAAAAA4LwoAAAAAAAgAAAAAAAAAQC8KAAAAAAAIAAAAAAAAAEgvCgAAAAAACAAAAAAAAABQLwoAAAAAAAgAAAAAAAAAWC8KAAAAAAAIAAAAAAAAAGAvCgAAAAAACAAAAAAAAABoLwoAAAAAAAgAAAAAAAAAcC8KAAAAAAAIAAAAAAAAAIAvCgAAAAAACAAAAAAAAACYLwoAAAAAAAgAAAAAAAAAoC8KAAAAAAAIAAAAAAAAALgvCgAAAAAACAAAAAAAAADALwoAAAAAAAgAAAAAAAAAyC8KAAAAAAAIAAAAAAAAANAvCgAAAAAACAAAAAAAAADoLwoAAAAAAAgAAAAAAAAA8C8KAAAAAAAIAAAAAAAAAAgwCgAAAAAACAAAAAAAAAAgMAoAAAAAAAgAAAAAAAAAKDAKAAAAAAAIAAAAAAAAADAwCgAAAAAACAAAAAAAAAA4MAoAAAAAAAgAAAAAAAAAUDAKAAAAAAAIAAAAAAAAAFgwCgAAAAAACAAAAAAAAABwMAoAAAAAAAgAAAAAAAAAeDAKAAAAAAAIAAAAAAAAAJAwCgAAAAAACAAAAAAAAACYMAoAAAAAAAgAAAAAAAAAqDAKAAAAAAAIAAAAAAAAALgwCgAAAAAACAAAAAAAAADQMAoAAAAAAAgAAAAAAAAA2DAKAAAAAAAIAAAAAAAAAPAwCgAAAAAACAAAAAAAAAD4MAoAAAAAAAgAAAAAAAAAEDEKAAAAAAAIAAAAAAAAACgxCgAAAAAACAAAAAAAAABAMQoAAAAAAAgAAAAAAAAAWDEKAAAAAAAIAAAAAAAAAGgxCgAAAAAACAAAAAAAAAB4MQoAAAAAAAgAAAAAAAAAiDEKAAAAAAAIAAAAAAAAAJgxCgAAAAAACAAAAAAAAACoMQoAAAAAAAgAAAAAAAAAuDEKAAAAAAAIAAAAAAAAAMgxCgAAAAAACAAAAAAAAADYMQoAAAAAAAgAAAAAAAAA6DEKAAAAAAAIAAAAAAAAAPgxCgAAAAAACAAAAAAAAAAIMgoAAAAAAAgAAAAAAAAAGDIKAAAAAAAIAAAAAAAAACgyCgAAAAAACAAAAAAAAAA4MgoAAAAAAAgAAAAAAAAASDIKAAAAAAAIAAAAAAAAAFgyCgAAAAAACAAAAAAAAABoMgoAAAAAAAgAAAAAAAAAeDIKAAAAAAAIAAAAAAAAAIgyCgAAAAAACAAAAAAAAACYMgoAAAAAAAgAAAAAAAAAqDIKAAAAAAAIAAAAAAAAALgyCgAAAAAACAAAAAAAAADIMgoAAAAAAAgAAAAAAAAA2DIKAAAAAAAIAAAAAAAAAOgyCgAAAAAACAAAAAAAAAD4MgoAAAAAAAgAAAAAAAAACDMKAAAAAAAIAAAAAAAAABgzCgAAAAAACAAAAAAAAAAoMwoAAAAAAAgAAAAAAAAAODMKAAAAAAAIAAAAAAAAAEgzCgAAAAAACAAAAAAAAABYMwoAAAAAAAgAAAAAAAAAaDMKAAAAAAAIAAAAAAAAAHgzCgAAAAAACAAAAAAAAACIMwoAAAAAAAgAAAAAAAAAmDMKAAAAAAAIAAAAAAAAAKgzCgAAAAAACAAAAAAAAAC4MwoAAAAAAAgAAAAAAAAAyDMKAAAAAAAIAAAAAAAAANgzCgAAAAAACAAAAAAAAADoMwoAAAAAAAgAAAAAAAAA+DMKAAAAAAAIAAAAAAAAAAg0CgAAAAAACAAAAAAAAAAYNAoAAAAAAAgAAAAAAAAAKDQKAAAAAAAIAAAAAAAAADg0CgAAAAAACAAAAAAAAABINAoAAAAAAAgAAAAAAAAAWDQKAAAAAAAIAAAAAAAAAGg0CgAAAAAACAAAAAAAAAB4NAoAAAAAAAgAAAAAAAAAiDQKAAAAAAAIAAAAAAAAAJg0CgAAAAAACAAAAAAAAACoNAoAAAAAAAgAAAAAAAAAuDQKAAAAAAAIAAAAAAAAAMg0CgAAAAAACAAAAAAAAADYNAoAAAAAAAgAAAAAAAAA6DQKAAAAAAAIAAAAAAAAAPg0CgAAAAAACAAAAAAAAAAINQoAAAAAAAgAAAAAAAAAGDUKAAAAAAAIAAAAAAAAACg1CgAAAAAACAAAAAAAAAA4NQoAAAAAAAgAAAAAAAAASDUKAAAAAAAIAAAAAAAAAFg1CgAAAAAACAAAAAAAAABoNQoAAAAAAAgAAAAAAAAAeDUKAAAAAAAIAAAAAAAAAIg1CgAAAAAACAAAAAAAAACYNQoAAAAAAAgAAAAAAAAAqDUKAAAAAAAIAAAAAAAAALg1CgAAAAAACAAAAAAAAADINQoAAAAAAAgAAAAAAAAA2DUKAAAAAAAIAAAAAAAAAOg1CgAAAAAACAAAAAAAAAD4NQoAAAAAAAgAAAAAAAAACDYKAAAAAAAIAAAAAAAAABg2CgAAAAAACAAAAAAAAAAoNgoAAAAAAAgAAAAAAAAAODYKAAAAAAAIAAAAAAAAAEg2CgAAAAAACAAAAAAAAABYNgoAAAAAAAgAAAAAAAAAaDYKAAAAAAAIAAAAAAAAAHg2CgAAAAAACAAAAAAAAACINgoAAAAAAAgAAAAAAAAAmDYKAAAAAAAIAAAAAAAAAKg2CgAAAAAACAAAAAAAAAC4NgoAAAAAAAgAAAAAAAAAyDYKAAAAAAAIAAAAAAAAANg2CgAAAAAACAAAAAAAAADoNgoAAAAAAAgAAAAAAAAA+DYKAAAAAAAIAAAAAAAAAAg3CgAAAAAACAAAAAAAAAAYNwoAAAAAAAgAAAAAAAAAMDcKAAAAAAAIAAAAAAAAADg3CgAAAAAACAAAAAAAAABQNwoAAAAAAAgAAAAAAAAAWDcKAAAAAAAIAAAAAAAAAHA3CgAAAAAACAAAAAAAAAB4NwoAAAAAAAgAAAAAAAAAkDcKAAAAAAAIAAAAAAAAAJg3CgAAAAAACAAAAAAAAACwNwoAAAAAAAgAAAAAAAAAuDcKAAAAAAAIAAAAAAAAANA3CgAAAAAACAAAAAAAAADYNwoAAAAAAAgAAAAAAAAA8DcKAAAAAAAIAAAAAAAAAPg3CgAAAAAACAAAAAAAAAAQOAoAAAAAAAgAAAAAAAAAGDgKAAAAAAAIAAAAAAAAADA4CgAAAAAACAAAAAAAAAA4OAoAAAAAAAgAAAAAAAAAUDgKAAAAAAAIAAAAAAAAAFg4CgAAAAAACAAAAAAAAABwOAoAAAAAAAgAAAAAAAAAiDgKAAAAAAAIAAAAAAAAAKA4CgAAAAAACAAAAAAAAAC4OAoAAAAAAAgAAAAAAAAA0DgKAAAAAAAIAAAAAAAAAOg4CgAAAAAACAAAAAAAAADwOAoAAAAAAAgAAAAAAAAACDkKAAAAAAAIAAAAAAAAACA5CgAAAAAACAAAAAAAAAAoOQoAAAAAAAgAAAAAAAAAODkKAAAAAAAIAAAAAAAAAFA5CgAAAAAACAAAAAAAAABYOQoAAAAAAAgAAAAAAAAAcDkKAAAAAAAIAAAAAAAAAIg5CgAAAAAACAAAAAAAAACgOQoAAAAAAAgAAAAAAAAAuDkKAAAAAAAIAAAAAAAAANA5CgAAAAAACAAAAAAAAADoOQoAAAAAAAgAAAAAAAAAADoKAAAAAAAIAAAAAAAAABg6CgAAAAAACAAAAAAAAAAwOgoAAAAAAAgAAAAAAAAASDoKAAAAAAAIAAAAAAAAAGA6CgAAAAAACAAAAAAAAAB4OgoAAAAAAAgAAAAAAAAAkDoKAAAAAAAIAAAAAAAAAKg6CgAAAAAACAAAAAAAAADAOgoAAAAAAAgAAAAAAAAA2DoKAAAAAAAIAAAAAAAAAPA6CgAAAAAACAAAAAAAAAAIOwoAAAAAAAgAAAAAAAAAIDsKAAAAAAAIAAAAAAAAADg7CgAAAAAACAAAAAAAAABQOwoAAAAAAAgAAAAAAAAAaDsKAAAAAAAIAAAAAAAAAIA7CgAAAAAACAAAAAAAAACIOwoAAAAAAAgAAAAAAAAAoDsKAAAAAAAIAAAAAAAAALA7CgAAAAAACAAAAAAAAADIOwoAAAAAAAgAAAAAAAAA2DsKAAAAAAAIAAAAAAAAAPA7CgAAAAAACAAAAAAAAAAIPAoAAAAAAAgAAAAAAAAAIDwKAAAAAAAIAAAAAAAAADg8CgAAAAAACAAAAAAAAABAPAoAAAAAAAgAAAAAAAAAWDwKAAAAAAAIAAAAAAAAAGA8CgAAAAAACAAAAAAAAABwPAoAAAAAAAgAAAAAAAAAgDwKAAAAAAAIAAAAAAAAAJA8CgAAAAAACAAAAAAAAACgPAoAAAAAAAgAAAAAAAAAsDwKAAAAAAAIAAAAAAAAAMA8CgAAAAAACAAAAAAAAADQPAoAAAAAAAgAAAAAAAAA4DwKAAAAAAAIAAAAAAAAAPA8CgAAAAAACAAAAAAAAAAAPQoAAAAAAAgAAAAAAAAAED0KAAAAAAAIAAAAAAAAACA9CgAAAAAACAAAAAAAAAAwPQoAAAAAAAgAAAAAAAAAQD0KAAAAAAAIAAAAAAAAAFA9CgAAAAAACAAAAAAAAABgPQoAAAAAAAgAAAAAAAAAcD0KAAAAAAAIAAAAAAAAAIA9CgAAAAAACAAAAAAAAACQPQoAAAAAAAgAAAAAAAAAoD0KAAAAAAAIAAAAAAAAALA9CgAAAAAACAAAAAAAAADAPQoAAAAAAAgAAAAAAAAA2D0KAAAAAAAIAAAAAAAAAOA9CgAAAAAACAAAAAAAAAD4PQoAAAAAAAgAAAAAAAAAAD4KAAAAAAAIAAAAAAAAABg+CgAAAAAACAAAAAAAAAAgPgoAAAAAAAgAAAAAAAAAOD4KAAAAAAAIAAAAAAAAAEA+CgAAAAAACAAAAAAAAABYPgoAAAAAAAgAAAAAAAAAYD4KAAAAAAAIAAAAAAAAAHA+CgAAAAAACAAAAAAAAACAPgoAAAAAAAgAAAAAAAAAkD4KAAAAAAAIAAAAAAAAAKA+CgAAAAAACAAAAAAAAACwPgoAAAAAAAgAAAAAAAAAwD4KAAAAAAAIAAAAAAAAANA+CgAAAAAACAAAAAAAAADgPgoAAAAAAAgAAAAAAAAA8D4KAAAAAAAIAAAAAAAAAAA/CgAAAAAACAAAAAAAAAAQPwoAAAAAAAgAAAAAAAAAID8KAAAAAAAIAAAAAAAAADA/CgAAAAAACAAAAAAAAABAPwoAAAAAAAgAAAAAAAAAUD8KAAAAAAAIAAAAAAAAAGA/CgAAAAAACAAAAAAAAABwPwoAAAAAAAgAAAAAAAAAgD8KAAAAAAAIAAAAAAAAAJA/CgAAAAAACAAAAAAAAACgPwoAAAAAAAgAAAAAAAAAuD8KAAAAAAAIAAAAAAAAAMA/CgAAAAAACAAAAAAAAADYPwoAAAAAAAgAAAAAAAAA4D8KAAAAAAAIAAAAAAAAAOg/CgAAAAAACAAAAAAAAADwPwoAAAAAAAgAAAAAAAAA+D8KAAAAAAAIAAAAAAAAAABACgAAAAAACAAAAAAAAAAIQAoAAAAAAAgAAAAAAAAAEEAKAAAAAAAIAAAAAAAAABhACgAAAAAACAAAAAAAAAAoQAoAAAAAAAgAAAAAAAAAQEAKAAAAAAAIAAAAAAAAAEhACgAAAAAACAAAAAAAAABgQAoAAAAAAAgAAAAAAAAAaEAKAAAAAAAIAAAAAAAAAIBACgAAAAAACAAAAAAAAACIQAoAAAAAAAgAAAAAAAAAoEAKAAAAAAAIAAAAAAAAAKhACgAAAAAACAAAAAAAAAC4QAoAAAAAAAgAAAAAAAAAyEAKAAAAAAAIAAAAAAAAANhACgAAAAAACAAAAAAAAADwQAoAAAAAAAgAAAAAAAAA+EAKAAAAAAAIAAAAAAAAABBBCgAAAAAACAAAAAAAAAAYQQoAAAAAAAgAAAAAAAAAMEEKAAAAAAAIAAAAAAAAADhBCgAAAAAACAAAAAAAAABAQQoAAAAAAAgAAAAAAAAASEEKAAAAAAAIAAAAAAAAAGBBCgAAAAAACAAAAAAAAABoQQoAAAAAAAgAAAAAAAAAeEEKAAAAAAAIAAAAAAAAAJBBCgAAAAAACAAAAAAAAACoQQoAAAAAAAgAAAAAAAAAsEEKAAAAAAAIAAAAAAAAAMhBCgAAAAAACAAAAAAAAADgQQoAAAAAAAgAAAAAAAAA6EEKAAAAAAAIAAAAAAAAAABCCgAAAAAACAAAAAAAAAAIQgoAAAAAAAgAAAAAAAAAIEIKAAAAAAAIAAAAAAAAADhCCgAAAAAACAAAAAAAAABQQgoAAAAAAAgAAAAAAAAAaEIKAAAAAAAIAAAAAAAAAIBCCgAAAAAACAAAAAAAAACYQgoAAAAAAAgAAAAAAAAAsEIKAAAAAAAIAAAAAAAAAMhCCgAAAAAACAAAAAAAAADgQgoAAAAAAAgAAAAAAAAA+EIKAAAAAAAIAAAAAAAAABBDCgAAAAAACAAAAAAAAAAoQwoAAAAAAAgAAAAAAAAAQEMKAAAAAAAIAAAAAAAAAFhDCgAAAAAACAAAAAAAAABwQwoAAAAAAAgAAAAAAAAAiEMKAAAAAAAIAAAAAAAAAKBDCgAAAAAACAAAAAAAAAC4QwoAAAAAAAgAAAAAAAAA0EMKAAAAAAAIAAAAAAAAAOhDCgAAAAAACAAAAAAAAAAARAoAAAAAAAgAAAAAAAAAGEQKAAAAAAAIAAAAAAAAADBECgAAAAAACAAAAAAAAABIRAoAAAAAAAgAAAAAAAAAYEQKAAAAAAAIAAAAAAAAAHhECgAAAAAACAAAAAAAAACQRAoAAAAAAAgAAAAAAAAAqEQKAAAAAAAIAAAAAAAAAMBECgAAAAAACAAAAAAAAADYRAoAAAAAAAgAAAAAAAAA8EQKAAAAAAAIAAAAAAAAAAhFCgAAAAAACAAAAAAAAAAgRQoAAAAAAAgAAAAAAAAAOEUKAAAAAAAIAAAAAAAAAFBFCgAAAAAACAAAAAAAAABoRQoAAAAAAAgAAAAAAAAAgEUKAAAAAAAIAAAAAAAAAJhFCgAAAAAACAAAAAAAAACwRQoAAAAAAAgAAAAAAAAAyEUKAAAAAAAIAAAAAAAAAOBFCgAAAAAACAAAAAAAAAD4RQoAAAAAAAgAAAAAAAAAEEYKAAAAAAAIAAAAAAAAAChGCgAAAAAACAAAAAAAAABARgoAAAAAAAgAAAAAAAAAWEYKAAAAAAAIAAAAAAAAAHBGCgAAAAAACAAAAAAAAACIRgoAAAAAAAgAAAAAAAAAmEYKAAAAAAAIAAAAAAAAAKhGCgAAAAAACAAAAAAAAAC4RgoAAAAAAAgAAAAAAAAAyEYKAAAAAAAIAAAAAAAAANhGCgAAAAAACAAAAAAAAADoRgoAAAAAAAgAAAAAAAAA+EYKAAAAAAAIAAAAAAAAAAhHCgAAAAAACAAAAAAAAAAgRwoAAAAAAAgAAAAAAAAAKEcKAAAAAAAIAAAAAAAAADhHCgAAAAAACAAAAAAAAABQRwoAAAAAAAgAAAAAAAAAWEcKAAAAAAAIAAAAAAAAAHBHCgAAAAAACAAAAAAAAAB4RwoAAAAAAAgAAAAAAAAAiEcKAAAAAAAIAAAAAAAAAJhHCgAAAAAACAAAAAAAAACoRwoAAAAAAAgAAAAAAAAAuEcKAAAAAAAIAAAAAAAAAMhHCgAAAAAACAAAAAAAAADYRwoAAAAAAAgAAAAAAAAA6EcKAAAAAAAIAAAAAAAAAPhHCgAAAAAACAAAAAAAAAAISAoAAAAAAAgAAAAAAAAAGEgKAAAAAAAIAAAAAAAAADBICgAAAAAACAAAAAAAAAA4SAoAAAAAAAgAAAAAAAAAQEgKAAAAAAAIAAAAAAAAAEhICgAAAAAACAAAAAAAAABgSAoAAAAAAAgAAAAAAAAAaEgKAAAAAAAIAAAAAAAAAIBICgAAAAAACAAAAAAAAACYSAoAAAAAAAgAAAAAAAAAoEgKAAAAAAAIAAAAAAAAAKhICgAAAAAACAAAAAAAAACwSAoAAAAAAAgAAAAAAAAAyEgKAAAAAAAIAAAAAAAAAOBICgAAAAAACAAAAAAAAAD4SAoAAAAAAAgAAAAAAAAAEEkKAAAAAAAIAAAAAAAAAChJCgAAAAAACAAAAAAAAAA4SQoAAAAAAAgAAAAAAAAASEkKAAAAAAAIAAAAAAAAAFhJCgAAAAAACAAAAAAAAABoSQoAAAAAAAgAAAAAAAAAeEkKAAAAAAAIAAAAAAAAAIhJCgAAAAAACAAAAAAAAACgSQoAAAAAAAgAAAAAAAAAsEkKAAAAAAAIAAAAAAAAAMBJCgAAAAAACAAAAAAAAADQSQoAAAAAAAgAAAAAAAAA4EkKAAAAAAAIAAAAAAAAAPBJCgAAAAAACAAAAAAAAAAASgoAAAAA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AAAAAACwAAAAAAAAAAYAAAAAAAAACAAAAAAAAAAQAAAAAAAAACUAAAALAAAAAgAAAAAAAADgSwoAAAAAAOBLCgAAAAAAaAEAAAAAAAAGAAAAAQAAAAgAAAAAAAAAGAAAAAAAAAAHAAAAAwAAAAIAAAAAAAAASE0KAAAAAABITQoAAAAAANkAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAHAAAAAkAAAACAAAAAAAAAChOCgAAAAAAKE4KAAAAAADgwQAAAAAAAAUAAAAAAAAACAAAAAAAAAAQAAAAAAAAADYAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAgQCwAAAAAASAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "base64" + ], + "owner": "BPFLoaderUpgradeab1e11111111111111111111111", + "executable": false, + "rentEpoch": 18446744073709552000, + "space": 1451341 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/arbitrum_remote_token_messenger.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/arbitrum_remote_token_messenger.json new file mode 100644 index 000000000..d08336e2b --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/arbitrum_remote_token_messenger.json @@ -0,0 +1,14 @@ +{ + "pubkey": "REzxi9nX3Eqseha5fBiaJhTC6SFJx4qJhP83U4UCrtc", + "account": { + "lamports": 1197120, + "data": [ + "aXOuIl/pivwDAAAAAAAAAAAAAAAAAAAAGTMNENnMh1Ehjq9R6IhdBYZC4Io=", + "base64" + ], + "owner": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 44 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/ethereum_remote_token_messenger.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/ethereum_remote_token_messenger.json new file mode 100644 index 000000000..c941623d0 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/ethereum_remote_token_messenger.json @@ -0,0 +1,14 @@ +{ + "pubkey": "Hazwi3jFQtLKc2ughi7HFXPkpDeso7DQaMR9Ks4afh3j", + "account": { + "lamports": 1197120, + "data": [ + "aXOuIl/pivwAAAAAAAAAAAAAAAAAAAAAvT+oG1i6kqghNgOLJa3scGavMVU=", + "base64" + ], + "owner": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 44 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/misconfigured_remote_token_messenger.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/misconfigured_remote_token_messenger.json new file mode 100644 index 000000000..88e7d81b2 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/misconfigured_remote_token_messenger.json @@ -0,0 +1,14 @@ +{ + "pubkey": "BWyFzH6LsnmDAaDWbGsriQ9SiiKq1CF6pbH4Ye3kzSBV", + "account": { + "lamports": 1197120, + "data": [ + "aXOuIl/pivwAAAAAAAAAAAAAAAAAAAAA0MPaWPVTWBQrjT4GwcMMXGEU7+g=", + "base64" + ], + "owner": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 44 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/token_messenger.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/token_messenger.json new file mode 100644 index 000000000..62200a351 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/token_messenger.json @@ -0,0 +1,14 @@ +{ + "pubkey": "Afgq3BHEfCE7d78D2XE9Bfyu2ieDqvE24xX8KDwreBms", + "account": { + "lamports": 1649520, + "data": [ + "ogTyNJPz3WCAxc+QtIgKaKCt4UH53aPJt3kR23C3Hek9+WiJv/bN7B85CA8gikw2ifivStUw7tLLV9S1TFCZ1TETnU45u+E6pl/JidtfXUJ1nzpUYFjvzc3AvzwYmActjrRd0dgFCM4AAAAA/Q==", + "base64" + ], + "owner": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 109 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/token_minter.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/token_minter.json new file mode 100644 index 000000000..bca4334b6 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/token_minter.json @@ -0,0 +1,14 @@ +{ + "pubkey": "DBD8hAwLDRQkTsu6EqviaYNGKPnsAMmQonxf7AH8ZcFY", + "account": { + "lamports": 1405920, + "data": [ + "eoVUPzmfq86Axc+QtIgKaKCt4UH53aPJt3kR23C3Hek9+WiJv/bN7IDFz5C0iApooK3hQfndo8m3eRHbcLcd6T35aIm/9s3sAP0=", + "base64" + ], + "owner": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 74 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_custody_token.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_custody_token.json new file mode 100644 index 000000000..cdf85245a --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_custody_token.json @@ -0,0 +1,14 @@ +{ + "pubkey": "FSxJ85FXVsXSr51SeWf9ciJWTcRnqKFSmBgRDeL3KyWw", + "account": { + "lamports": 2039280, + "data": [ + "xvp6877brTo9ZfNqq8l0MbG75MLS9uDkfKYCA0UvXWG06cUFm0yAK1JhEHKELuHdBTqROz8nrg0RaRNBnQEQ50z48TPzLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "base64" + ], + "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 165 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_local_token.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_local_token.json new file mode 100644 index 000000000..3c327d6a9 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_local_token.json @@ -0,0 +1,14 @@ +{ + "pubkey": "72bvEFk2Usi2uYc1SnaTNhBcQPc6tiJWXr9oKk7rkd4C", + "account": { + "lamports": 1795680, + "data": [ + "n4M6qsFUgLbWqajhGAScPd+PLCmG/7q4c+v9bJKeja8GCPmRo4QduMb6evO+2606PWXzaqvJdDGxu+TC0vbg5HymAgNFL11hABCl1OgAAACbOAAAAAAAAP8oAAAAAAAAcuTt4iFhAAAAAAAAAAAAAKClHaPafQAAAAAAAAAAAAD9/w==", + "base64" + ], + "owner": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 130 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_token_pair.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_token_pair.json new file mode 100644 index 000000000..b98a2bbaa --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/token_messenger_minter/usdc_token_pair.json @@ -0,0 +1,14 @@ +{ + "pubkey": "8d1jdvvMFhJfxSzPXcDGtifcGMTvUxc2EpWFstbNzcTL", + "account": { + "lamports": 1426800, + "data": [ + "EdYtsOWVxUcAAAAAAAAAAAAAAAAAAAAAoLhpkcYhizbB0Z1KLp6wzjYG60hZjy8Y6Y4jOy9QMTMaodmv8oz5ObYth/BStPTxPbusEf8=", + "base64" + ], + "owner": "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 77 + } +} \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/usdc_mint.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/usdc_mint.json new file mode 100644 index 000000000..c586fa26d --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/usdc_mint.json @@ -0,0 +1,14 @@ +{ + "pubkey": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "account": { + "lamports": 14801671630, + "data": [ + "AQAAAAwaWIb+EJPfn8Q4wpb59ydbdxi2vA4VbY0zbFjwg5ltAICAaSIj9QAGAQEAAACoBjP/Bn2I36XUNXv0TibOzM8IZmiBA8a6YJ+kTBjSCA==", + "base64" + ], + "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 82 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/accounts/usdc_payer_token.json b/solana/modules/matching-engine-testing/tests/fixtures/accounts/usdc_payer_token.json new file mode 100644 index 000000000..74bbf063c --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/accounts/usdc_payer_token.json @@ -0,0 +1,14 @@ +{ + "pubkey": "4tKtuvtQ4TzkkrkESnRpbfSXCEZPkZe3eL5tCFUdpxtf", + "account": { + "lamports": 2039280, + "data": [ + "xvp6877brTo9ZfNqq8l0MbG75MLS9uDkfKYCA0UvXWEMGliG/hCT35/EOMKW+fcnW3cYtrwOFW2NM2xY8IOZbQC0AoadfgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "base64" + ], + "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 165 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/lut.json b/solana/modules/matching-engine-testing/tests/fixtures/lut.json new file mode 100644 index 000000000..1b4276513 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/lut.json @@ -0,0 +1,14 @@ +{ + "pubkey": "4z6pDbpKnNKiJDkzoDwWR4SDaeaDPTF1MCL8u6Lu7Rkn", + "account": { + "lamports": 6625920, + "data": [ + "AQAAAP//////////ZwAAAAAAAAAAAQwaWIb+EJPfn8Q4wpb59ydbdxi2vA4VbY0zbFjwg5ltAAAFRe+GGewO2VKzStvwOwoGh7W8TVM/hNbddYuA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAHJDQ3mV6t58cUpJ+e822LIcsUBTOwpHm0T5sODcq4FbHu0eVxx0uu/r+QqBA1tYR7/7xa2jK7vFhiVvxRPJ/jTTtSU8tEXZLkYEjl2BoT0kyuPidN/QEq+eBjzXGnJl7h1UtVWgROY6CpYMKGKtGfo9cAxspQVJzsHCn2swzhWjgprV4q1nmfSHUucDrc+OACq5BjhLX9VWyouVLOq2KnF/o3+x53xyAJe+5QVbhccDMFHEzIKCwTfpu66xBpC5fA4KWJpBpV+9ZsUqR18tkqbT3JtHRxFMua+CWpi1RdPOj6JJeW4cIvS98Dhl14FT/fCHBvqF+xGjP9dPer8WxCq06cUFm0yAK1JhEHKELuHdBTqROz8nrg0RaRNBnQEQ5we06MQBcetUkHocfo1RGNuNGIyzUmh4EhPtaA2C4NNspl/JQ0GaWtWQBC/WfJeR/QFaz1OlTMgj7bj/gbntci6nQTuZ1lLRTGfai+GjjmjQFZ50USufXWKA1yzXnYtGdZw7LbJZvgmkN8rBDfVp1SnURDXYd4NYAkL4wrbvHlTCpl/JidtfXUJ1nzpUYFjvzc3AvzwYmActjrRd0dgFCM4G3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8Aqcb6evO+2606PWXzaqvJdDGxu+TC0vbg5HymAgNFL11hWY8vGOmOIzsvUDEzGqHZr/KM+Tm2LYfwUrT08T27rBHWqajhGAScPd+PLCmG/7q4c+v9bJKeja8GCPmRo4QduKj9WbEVEBTPp58Fhfe3fdnFMpoofnmBBeY8i9FkblYcVaI8JrNieKvtNPeEfTCZZMEckEBqdSSJdUX3pBmGcOM=", + "base64" + ], + "owner": "AddressLookupTab1e1111111111111111111111111", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 824 + } + } \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/fixtures/mainnet_cctp_message_transmitter.so b/solana/modules/matching-engine-testing/tests/fixtures/mainnet_cctp_message_transmitter.so new file mode 100644 index 000000000..b80bb0598 Binary files /dev/null and b/solana/modules/matching-engine-testing/tests/fixtures/mainnet_cctp_message_transmitter.so differ diff --git a/solana/modules/matching-engine-testing/tests/fixtures/mainnet_cctp_token_messenger_minter.so b/solana/modules/matching-engine-testing/tests/fixtures/mainnet_cctp_token_messenger_minter.so new file mode 100644 index 000000000..0ccfbe2c5 Binary files /dev/null and b/solana/modules/matching-engine-testing/tests/fixtures/mainnet_cctp_token_messenger_minter.so differ diff --git a/solana/modules/matching-engine-testing/tests/fixtures/mainnet_core_bridge.so b/solana/modules/matching-engine-testing/tests/fixtures/mainnet_core_bridge.so new file mode 100644 index 000000000..ef0a0bd62 Binary files /dev/null and b/solana/modules/matching-engine-testing/tests/fixtures/mainnet_core_bridge.so differ diff --git a/solana/modules/matching-engine-testing/tests/fixtures/token_router.so b/solana/modules/matching-engine-testing/tests/fixtures/token_router.so new file mode 100755 index 000000000..38030b710 Binary files /dev/null and b/solana/modules/matching-engine-testing/tests/fixtures/token_router.so differ diff --git a/solana/modules/matching-engine-testing/tests/fixtures/upgrade_manager.so b/solana/modules/matching-engine-testing/tests/fixtures/upgrade_manager.so new file mode 100755 index 000000000..e675b885e Binary files /dev/null and b/solana/modules/matching-engine-testing/tests/fixtures/upgrade_manager.so differ diff --git a/solana/modules/matching-engine-testing/tests/fixtures/usdc_mint.json b/solana/modules/matching-engine-testing/tests/fixtures/usdc_mint.json new file mode 100644 index 000000000..c586fa26d --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/usdc_mint.json @@ -0,0 +1,14 @@ +{ + "pubkey": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", + "account": { + "lamports": 14801671630, + "data": [ + "AQAAAAwaWIb+EJPfn8Q4wpb59ydbdxi2vA4VbY0zbFjwg5ltAICAaSIj9QAGAQEAAACoBjP/Bn2I36XUNXv0TibOzM8IZmiBA8a6YJ+kTBjSCA==", + "base64" + ], + "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 82 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/usdc_mint_devnet.json b/solana/modules/matching-engine-testing/tests/fixtures/usdc_mint_devnet.json new file mode 100644 index 000000000..d07d64825 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/usdc_mint_devnet.json @@ -0,0 +1,14 @@ +{ + "pubkey": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU", + "account": { + "lamports": 14801671630, + "data": [ + "AQAAAAwaWIb+EJPfn8Q4wpb59ydbdxi2vA4VbY0zbFjwg5ltAICAaSIj9QAGAQEAAACoBjP/Bn2I36XUNXv0TibOzM8IZmiBA8a6YJ+kTBjSCA==", + "base64" + ], + "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 82 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/usdt_mint.json b/solana/modules/matching-engine-testing/tests/fixtures/usdt_mint.json new file mode 100644 index 000000000..6ffcd4c0d --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/fixtures/usdt_mint.json @@ -0,0 +1,14 @@ +{ + "pubkey": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", + "account": { + "lamports": 14801671630, + "data": [ + "AQAAAAXqnPFs5BGY8aSZN8iMNwqU1K//ibW6y470XmMku3j3wYJlUqF9CAAGAQEAAAAF6pzxbOQRmPGkmTfIjDcKlNSv/4m1usuO9F5jJLt49w==", + "base64" + ], + "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + "executable": false, + "rentEpoch": 18446744073709551615, + "space": 82 + } +} diff --git a/solana/modules/matching-engine-testing/tests/fixtures/wormhole_post_message_shim.so b/solana/modules/matching-engine-testing/tests/fixtures/wormhole_post_message_shim.so new file mode 100755 index 000000000..a27941bdd Binary files /dev/null and b/solana/modules/matching-engine-testing/tests/fixtures/wormhole_post_message_shim.so differ diff --git a/solana/modules/matching-engine-testing/tests/fixtures/wormhole_verify_vaa_shim.so b/solana/modules/matching-engine-testing/tests/fixtures/wormhole_verify_vaa_shim.so new file mode 100755 index 000000000..340b873e8 Binary files /dev/null and b/solana/modules/matching-engine-testing/tests/fixtures/wormhole_verify_vaa_shim.so differ diff --git a/solana/modules/matching-engine-testing/tests/keys/pFCBP4bhqdSsrWUVTgqhPsLrfEdChBK17vgFM7TxjxQ.json b/solana/modules/matching-engine-testing/tests/keys/pFCBP4bhqdSsrWUVTgqhPsLrfEdChBK17vgFM7TxjxQ.json new file mode 100644 index 000000000..3e28fb443 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/keys/pFCBP4bhqdSsrWUVTgqhPsLrfEdChBK17vgFM7TxjxQ.json @@ -0,0 +1 @@ +[112,55,233,99,229,91,68,85,207,63,10,46,103,0,49,250,22,189,30,167,157,146,26,148,175,155,212,104,86,182,185,192,12,26,88,134,254,16,147,223,159,196,56,194,150,249,247,39,91,119,24,182,188,14,21,109,141,51,108,88,240,131,153,109] \ No newline at end of file diff --git a/solana/modules/matching-engine-testing/tests/mod.rs b/solana/modules/matching-engine-testing/tests/mod.rs new file mode 100644 index 000000000..021ffd057 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/mod.rs @@ -0,0 +1,8 @@ +#![allow(clippy::expect_used)] +#![allow(clippy::panic)] + +mod shimful; +mod shimless; +mod test_scenarios; +mod testing_engine; +mod utils; diff --git a/solana/modules/matching-engine-testing/tests/shimful/README.md b/solana/modules/matching-engine-testing/tests/shimful/README.md new file mode 100644 index 000000000..580799c32 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/README.md @@ -0,0 +1,10 @@ +# Shimful Tests + +This directory contains tests that use the fallback entrypoint of the matching engine program. + +## Files + +- `fast_market_order_shim.rs` - A function that creates a fast market order account and one that closes it +- `shims_make_offer.rs` - A function that places an initial offer and one that improves an offer +- `shims_execute_order.rs` - A function that executes an order +- `shims_prepare_order_response.rs` - A function that prepares an order response diff --git a/solana/modules/matching-engine-testing/tests/shimful/fast_market_order_shim.rs b/solana/modules/matching-engine-testing/tests/shimful/fast_market_order_shim.rs new file mode 100644 index 000000000..44932106b --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/fast_market_order_shim.rs @@ -0,0 +1,290 @@ +use crate::testing_engine::config::{ + ExpectedError, InitializeFastMarketOrderShimInstructionConfig, +}; +use crate::testing_engine::state::{ + FastMarketOrderAccountCreatedState, GuardianSetState, TestingEngineState, +}; + +use super::verify_shim::{create_guardian_signatures, GuardianSignatureInfo}; +use crate::testing_engine::setup::TestingContext; +use crate::utils; +use common::messages::FastMarketOrder; +use matching_engine::fallback::close_fast_market_order::{ + CloseFastMarketOrder as CloseFastMarketOrderFallback, + CloseFastMarketOrderAccounts as CloseFastMarketOrderFallbackAccounts, +}; +use matching_engine::fallback::initialize_fast_market_order::{ + InitializeFastMarketOrder as InitializeFastMarketOrderFallback, + InitializeFastMarketOrderAccounts as InitializeFastMarketOrderFallbackAccounts, + InitializeFastMarketOrderData as InitializeFastMarketOrderFallbackData, +}; +use utils::constants::*; + +use matching_engine::state::{FastMarketOrder as FastMarketOrderState, FastMarketOrderParams}; +use solana_program_test::ProgramTestContext; +use solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer, transaction::Transaction}; +use std::rc::Rc; +use wormhole_io::TypePrefixedPayload; + +/// Initialize the fast market order account +/// +/// This function initializes the fast market order account +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The program test context +/// * `expected_error` - The expected error +/// * `current_state` - The current testing engine state +/// * `config` - The initialization configuration +/// +/// # Returns +/// +/// * `TestingEngineState` - The updated testing engine state +pub async fn initialize_fast_market_order_shimful( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + expected_error: Option<&ExpectedError>, + current_state: &TestingEngineState, + config: &InitializeFastMarketOrderShimInstructionConfig, +) -> TestingEngineState { + let program_id = &testing_context.get_matching_engine_program_id(); + let test_vaa_pair = current_state.get_test_vaa_pair(config.vaa_index); + let fast_transfer_vaa = test_vaa_pair.fast_transfer_vaa.clone(); + let fast_market_order = create_fast_market_order_state_from_vaa_data( + &fast_transfer_vaa.vaa_data, + config + .close_account_refund_recipient + .unwrap_or_else(|| testing_context.testing_actors.solvers[0].pubkey()), + ); + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let guardian_signature_info = create_guardian_signatures( + testing_context, + test_context, + &payer_signer, + &fast_transfer_vaa.vaa_data, + &testing_context.get_wormhole_program_id(), + None, + ) + .await + .expect("Failed to create guardian signatures"); + + let (fast_market_order_account, fast_market_order_bump) = Pubkey::find_program_address( + &[ + FastMarketOrderState::SEED_PREFIX, + &fast_market_order.digest(), + &fast_market_order.close_account_refund_recipient.as_ref(), + ], + program_id, + ); + let initialize_fast_market_order_ix = initialize_fast_market_order_shimful_instruction( + &payer_signer, + program_id, + fast_market_order, + &guardian_signature_info, + ); + let transaction = testing_context + .create_transaction( + test_context, + &[initialize_fast_market_order_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + None, + None, + ) + .await; + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; + if config.expected_error.is_none() { + TestingEngineState::FastMarketOrderAccountCreated { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().cloned(), + fast_market_order: FastMarketOrderAccountCreatedState { + fast_market_order_address: fast_market_order_account, + fast_market_order_bump, + fast_market_order, + close_account_refund_recipient: fast_market_order.close_account_refund_recipient, + }, + guardian_set_state: GuardianSetState { + guardian_set_address: guardian_signature_info.guardian_set_pubkey, + guardian_signatures_address: guardian_signature_info.guardian_signatures_pubkey, + }, + auction_state: current_state.auction_state().clone(), + auction_accounts: current_state.auction_accounts().cloned(), + order_prepared: current_state.order_prepared().cloned(), + } + } else { + current_state.clone() + } +} + +/// Creates the initialize fast market order fallback instruction +/// +/// This function creates the initialize fast market order fallback instruction +/// +/// # Arguments +/// +/// * `payer_signer` - The payer signer keypair +/// * `program_id` - The program id +/// * `fast_market_order` - The fast market order state +/// * `guardian_signature_info` - Information about guardian signatures +/// +/// # Returns +/// +/// * `Instruction` - The initialize fast market order fallback instruction +pub fn initialize_fast_market_order_shimful_instruction( + payer_signer: &Rc, + program_id: &Pubkey, + fast_market_order: FastMarketOrderState, + guardian_signature_info: &GuardianSignatureInfo, +) -> solana_program::instruction::Instruction { + let fast_market_order_account = Pubkey::find_program_address( + &[ + FastMarketOrderState::SEED_PREFIX, + &fast_market_order.digest(), + &fast_market_order.close_account_refund_recipient.as_ref(), + ], + program_id, + ) + .0; + + let create_fast_market_order_accounts = InitializeFastMarketOrderFallbackAccounts { + signer: &payer_signer.pubkey(), + fast_market_order_account: &fast_market_order_account, + guardian_set: &guardian_signature_info.guardian_set_pubkey, + guardian_set_signatures: &guardian_signature_info.guardian_signatures_pubkey, + verify_vaa_shim_program: &WORMHOLE_VERIFY_VAA_SHIM_PID, + system_program: &solana_program::system_program::ID, + }; + + InitializeFastMarketOrderFallback { + program_id, + accounts: create_fast_market_order_accounts, + data: InitializeFastMarketOrderFallbackData::new( + fast_market_order, + guardian_signature_info.guardian_set_bump, + ), + } + .instruction() +} + +/// Close the fast market order account +/// +/// This function closes the fast market order account +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The program test context +/// * `refund_recipient_keypair` - The refund recipient keypair that will receive the refund +/// * `fast_market_order_address` - The fast market order account address +/// * `expected_error` - The expected error +/// +/// # Asserts +/// +/// * The expected error, if any, is reached when executing the instruction +pub async fn close_fast_market_order_fallback( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + refund_recipient_keypair: &Rc, + fast_market_order_address: &Pubkey, + expected_error: Option<&ExpectedError>, +) { + let program_id = &testing_context.get_matching_engine_program_id(); + let recent_blockhash = testing_context + .get_new_latest_blockhash(test_context) + .await + .expect("Failed to get new blockhash"); + let close_fast_market_order_ix = CloseFastMarketOrderFallback { + program_id, + accounts: CloseFastMarketOrderFallbackAccounts { + fast_market_order: fast_market_order_address, + close_account_refund_recipient: &refund_recipient_keypair.pubkey(), + }, + } + .instruction(); + + let transaction = Transaction::new_signed_with_payer( + &[close_fast_market_order_ix], + Some(&refund_recipient_keypair.pubkey()), + &[refund_recipient_keypair], + recent_blockhash, + ); + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; +} + +/// Create the fast market order state from the vaa data +/// +/// This function creates the fast market order state from the vaa data +/// +/// # Arguments +/// +/// * `vaa_data` - The vaa data +/// * `close_account_refund_recipient` - The close account refund recipient +/// +/// # Returns +/// +/// * `fast_market_order_state` - The fast market order state +pub fn create_fast_market_order_state_from_vaa_data( + vaa_data: &utils::vaa::PostedVaaData, + close_account_refund_recipient: Pubkey, +) -> FastMarketOrderState { + let vaa_message = matching_engine::fallback::place_initial_offer::VaaMessageBodyHeader::new( + vaa_data.consistency_level, + vaa_data.vaa_time, + vaa_data.sequence, + vaa_data.emitter_chain, + vaa_data.emitter_address, + ); + + let order: FastMarketOrder = TypePrefixedPayload::<1>::read_slice(&vaa_data.payload).unwrap(); + + let redeemer_message_fixed_length = { + let mut fixed_array = [0u8; 512]; // Initialize with zeros (automatic padding) + + if !order.redeemer_message.is_empty() { + // Calculate how many bytes to copy (min of message length and array size) + let copy_len = std::cmp::min(order.redeemer_message.len(), 512); + + // Copy the bytes from the message to the fixed array + fixed_array[..copy_len].copy_from_slice(&order.redeemer_message[..copy_len]); + } + + fixed_array + }; + let fast_market_order = FastMarketOrderState::new(FastMarketOrderParams { + amount_in: order.amount_in, + min_amount_out: order.min_amount_out, + deadline: order.deadline, + target_chain: order.target_chain, + redeemer_message_length: u16::try_from(order.redeemer_message.len()).unwrap(), + redeemer: order.redeemer, + sender: order.sender, + refund_address: order.refund_address, + max_fee: order.max_fee, + init_auction_fee: order.init_auction_fee, + redeemer_message: redeemer_message_fixed_length, + close_account_refund_recipient, + vaa_sequence: vaa_data.sequence, + vaa_timestamp: vaa_data.vaa_time, + vaa_nonce: vaa_data.nonce, + vaa_emitter_chain: vaa_data.emitter_chain, + vaa_consistency_level: vaa_data.consistency_level, + vaa_emitter_address: vaa_data.emitter_address, + }); + + assert_eq!(fast_market_order.redeemer, order.redeemer); + assert_eq!( + vaa_message.digest(&fast_market_order).as_ref(), + vaa_data.digest().as_ref() + ); + + fast_market_order +} diff --git a/solana/modules/matching-engine-testing/tests/shimful/mod.rs b/solana/modules/matching-engine-testing/tests/shimful/mod.rs new file mode 100644 index 000000000..2985cf942 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/mod.rs @@ -0,0 +1,8 @@ +#![allow(clippy::expect_used)] +pub mod fast_market_order_shim; +pub mod post_message; +pub mod shims_execute_order; +pub mod shims_make_offer; +pub mod shims_prepare_order_response; +pub mod shims_settle_auction_none_cctp; +pub mod verify_shim; diff --git a/solana/modules/matching-engine-testing/tests/shimful/post_message.rs b/solana/modules/matching-engine-testing/tests/shimful/post_message.rs new file mode 100644 index 000000000..a80109339 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/post_message.rs @@ -0,0 +1,191 @@ +use crate::testing_engine::setup::TestingContext; +use crate::utils::constants::*; + +use solana_program_test::ProgramTestContext; +use solana_sdk::{ + compute_budget::ComputeBudgetInstruction, + hash::Hash, + message::{v0::Message, VersionedMessage}, + signature::{Keypair, Signer}, + transaction::VersionedTransaction, +}; + +use std::rc::Rc; +use wormhole_svm_definitions::{ + find_emitter_sequence_address, find_shim_message_address, solana::Finality, +}; +use wormhole_svm_shim::post_message; + +/// Bump costs +/// +/// This struct contains the bump costs for the message and sequence +/// +/// # Fields +/// +/// * `message` - The bump cost for the message +/// * `sequence` - The bump cost for the sequence +pub struct BumpCosts { + pub message: u64, + pub sequence: u64, +} + +impl BumpCosts { + fn from_message_and_sequence_bump(message_bump: u8, sequence_bump: u8) -> Self { + Self { + message: Self::bump_cu_cost(message_bump), + sequence: Self::bump_cu_cost(sequence_bump), + } + } + + fn bump_cu_cost(bump: u8) -> u64 { + 1_500_u64.saturating_mul(255_u64.saturating_sub(u64::from(bump))) + } +} + +/// Set up post message transaction test +/// +/// This function executes a post message transaction and asserts the correct logs are emitted +/// +/// # Arguments +/// +/// * `test_ctx` - The test context +/// * `payer_signer` - The payer signer keypair +/// * `emitter_signer` - The emitter signer keypair +pub async fn set_up_post_message_transaction_test( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + payer_signer: &Rc, + emitter_signer: &Rc, +) { + let recent_blockhash = testing_context + .get_new_latest_blockhash(test_context) + .await + .expect("Could not get last blockhash"); + let (transaction, _bump_costs) = set_up_post_message_transaction( + b"All your base are belong to us", + &payer_signer.clone().to_owned(), + &emitter_signer.clone().to_owned(), + recent_blockhash, + ); + let details = { + let out = test_context + .banks_client + .simulate_transaction(transaction) + .await + .unwrap(); + assert!(out.result.clone().unwrap().is_ok(), "{:?}", out.result); + out.simulation_details.unwrap() + }; + let logs = details.logs; + let is_core_bridge_cpi_log = + |line: &String| line.contains(format!("Program {} invoke [2]", CORE_BRIDGE_PID).as_str()); + // CPI to Core Bridge. + assert_eq!( + logs.iter() + .filter(|line| { + line.contains(format!("Program {} invoke [2]", CORE_BRIDGE_PID).as_str()) + }) + .count(), + 1 + ); + assert_eq!( + logs.iter() + .filter(|line| { line.contains("Program log: Sequence: 0") }) + .count(), + 1 + ); + let core_bridge_log_index = logs.iter().position(is_core_bridge_cpi_log).unwrap(); + + // Self CPI. + assert_eq!( + logs.iter() + .skip(core_bridge_log_index) + .filter(|line| { + line.contains( + format!("Program {} invoke [2]", WORMHOLE_POST_MESSAGE_SHIM_PID).as_str(), + ) + }) + .count(), + 1 + ); +} + +/// Set up post message transaction +/// +/// This function sets up a post message transaction +/// +/// # Arguments +/// +/// * `payload` - The payload to post +/// * `payer_signer` - The payer signer +/// * `emitter_signer` - The emitter signer +/// * `recent_blockhash` - The recent blockhash +/// +/// # Returns +/// +/// * `VersionedTransaction` - The versioned transaction that can be executed to post the message +/// * `BumpCosts` - The bump costs for the message and sequence +fn set_up_post_message_transaction( + payload: &[u8], + payer_signer: &Keypair, + emitter_signer: &Keypair, + recent_blockhash: Hash, +) -> (VersionedTransaction, BumpCosts) { + let emitter = emitter_signer.pubkey(); + let payer = payer_signer.pubkey(); + + // Use an invalid message if provided. + let (message, message_bump) = + find_shim_message_address(&emitter, &WORMHOLE_POST_MESSAGE_SHIM_PID); + + // Use an invalid core bridge program if provided. + let core_bridge_program = CORE_BRIDGE_PID; + + let (sequence, sequence_bump) = find_emitter_sequence_address(&emitter, &core_bridge_program); + + let transfer_fee_ix = + solana_sdk::system_instruction::transfer(&payer, &CORE_BRIDGE_FEE_COLLECTOR, 100); + let post_message_ix = post_message::PostMessage { + program_id: &WORMHOLE_POST_MESSAGE_SHIM_PID, + accounts: post_message::PostMessageAccounts { + emitter: &emitter, + payer: &payer, + wormhole_program_id: &core_bridge_program, + derived: post_message::PostMessageDerivedAccounts { + message: Some(&message), + sequence: Some(&sequence), + ..Default::default() + }, + }, + data: post_message::PostMessageData::new(420, Finality::Finalized, payload).unwrap(), + } + .instruction(); + + // Adding compute budget instructions to ensure all instructions fit into + // one transaction. + // + // NOTE: Invoking the compute budget costs in total 300 CU. + let message = Message::try_compile( + &payer, + &[ + transfer_fee_ix, + post_message_ix, + ComputeBudgetInstruction::set_compute_unit_price(420), + ComputeBudgetInstruction::set_compute_unit_limit(100_000), + ], + &[], + recent_blockhash, + ) + .unwrap(); + + let transaction = VersionedTransaction::try_new( + VersionedMessage::V0(message), + &[payer_signer, emitter_signer], + ) + .unwrap(); + + ( + transaction, + BumpCosts::from_message_and_sequence_bump(message_bump, sequence_bump), + ) +} diff --git a/solana/modules/matching-engine-testing/tests/shimful/shims_execute_order.rs b/solana/modules/matching-engine-testing/tests/shimful/shims_execute_order.rs new file mode 100644 index 000000000..9fb3c6d49 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/shims_execute_order.rs @@ -0,0 +1,388 @@ +use crate::testing_engine::config::{ExecuteOrderInstructionConfig, InstructionConfig}; +use crate::testing_engine::setup::{TestingContext, TransferDirection}; +use crate::testing_engine::state::{OrderExecutedState, TestingEngineState}; + +use super::super::utils; +use anchor_spl::token::spl_token; +use common::wormhole_cctp_solana::cctp::{ + MESSAGE_TRANSMITTER_PROGRAM_ID, TOKEN_MESSENGER_MINTER_PROGRAM_ID, +}; +use matching_engine::accounts::CctpDepositForBurn; +use matching_engine::fallback::execute_order::{ExecuteOrderCctpShim, ExecuteOrderShimAccounts}; +use solana_program_test::ProgramTestContext; +use solana_sdk::{pubkey::Pubkey, signer::Signer, sysvar::SysvarId}; +use utils::constants::*; +use wormhole_svm_definitions::solana::CORE_BRIDGE_PROGRAM_ID; +use wormhole_svm_definitions::{ + solana::{ + CORE_BRIDGE_CONFIG, CORE_BRIDGE_FEE_COLLECTOR, POST_MESSAGE_SHIM_EVENT_AUTHORITY, + POST_MESSAGE_SHIM_PROGRAM_ID, + }, + EVENT_AUTHORITY_SEED, +}; + +/// Execute an order using the shim +/// +/// # Arguments +/// +/// * `testing_context` - The testing context of the testing engine +/// * `test_context` - Mutable reference to the test context +/// * `current_state` - The current state of the testing engine +/// * `config` - The execute order instruction config +/// +/// # Returns +/// +/// The new state of the testing engine +pub async fn execute_order_shimful( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &ExecuteOrderInstructionConfig, +) -> TestingEngineState { + let expected_error = config.expected_error(); + let fixture_accounts = testing_context + .get_fixture_accounts() + .expect("Pre-made fixture accounts not found"); + + let execute_order_fallback_accounts = ExecuteOrderShimfulAccounts::new( + testing_context, + current_state, + config, + &fixture_accounts, + config.fast_market_order_address, + ); + let program_id = &testing_context.get_matching_engine_program_id(); + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + + let clock_id = solana_program::clock::Clock::id(); + let execute_order_ix_accounts = + create_execute_order_shim_accounts(&execute_order_fallback_accounts, &clock_id); + + let execute_order_ix = ExecuteOrderCctpShim { + program_id, + accounts: execute_order_ix_accounts, + } + .instruction(); + + let slots_to_fast_forward = config.fast_forward_slots; + if slots_to_fast_forward > 0 { + crate::testing_engine::engine::fast_forward_slots(test_context, slots_to_fast_forward) + .await; + } + let transaction = testing_context + .create_transaction( + test_context, + &[execute_order_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + None, + None, + ) + .await; + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; + if config.expected_error.is_none() { + let auction_accounts = current_state + .auction_accounts() + .expect("Auction accounts not found"); + let order_executed_state = + create_order_executed_state(config, &execute_order_fallback_accounts); + TestingEngineState::OrderExecuted { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + auction_state: current_state.auction_state().clone(), + order_executed: order_executed_state, + auction_accounts: auction_accounts.clone(), + order_prepared: current_state.order_prepared().cloned(), + } + } else { + current_state.clone() + } +} + +/// A helper struct for the accounts for the execute order shimful instruction that disregards the lifetime +struct ExecuteOrderShimfulAccounts { + pub signer: Pubkey, + pub custodian: Pubkey, + pub fast_market_order_address: Pubkey, + pub active_auction: Pubkey, + pub active_auction_custody_token: Pubkey, + pub active_auction_config: Pubkey, + pub active_auction_best_offer_token: Pubkey, + pub initial_offer_token: Pubkey, + pub initial_participant: Pubkey, + pub to_router_endpoint: Pubkey, + pub remote_token_messenger: Pubkey, + pub token_messenger: Pubkey, + pub local_token: Pubkey, + pub token_messenger_minter_sender_authority: Pubkey, + pub token_messenger_minter_event_authority: Pubkey, + pub messenger_transmitter_config: Pubkey, + pub token_minter: Pubkey, + pub executor_token: Pubkey, + pub cctp_message: Pubkey, + pub post_message_sequence: Pubkey, + pub post_message_message: Pubkey, +} + +impl ExecuteOrderShimfulAccounts { + pub fn new( + testing_context: &TestingContext, + current_state: &TestingEngineState, + config: &ExecuteOrderInstructionConfig, + fixture_accounts: &utils::account_fixtures::FixtureAccounts, + override_fast_market_order_address: Option, + ) -> Self { + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let transfer_direction = current_state.base().transfer_direction; + let auction_accounts = current_state.auction_accounts().unwrap(); + let active_auction_state = current_state.auction_state().get_active_auction().unwrap(); + let initial_participant = active_auction_state.initial_offer.participant; + let active_auction = active_auction_state.auction_address; + let custodian = auction_accounts.custodian; + let fast_market_order_address = override_fast_market_order_address.unwrap_or_else(|| { + current_state + .fast_market_order() + .unwrap() + .fast_market_order_address + }); + let remote_token_messenger = match transfer_direction { + TransferDirection::FromEthereumToArbitrum => { + fixture_accounts.arbitrum_remote_token_messenger + } + TransferDirection::FromArbitrumToEthereum => { + fixture_accounts.ethereum_remote_token_messenger + } + _ => panic!("Unsupported transfer direction"), + }; + let program_id = &testing_context.get_matching_engine_program_id(); + let cctp_message = Pubkey::find_program_address( + &[common::CCTP_MESSAGE_SEED_PREFIX, &active_auction.to_bytes()], + program_id, + ) + .0; + let token_messenger_minter_sender_authority = Pubkey::find_program_address( + &[b"sender_authority"], + &TOKEN_MESSENGER_MINTER_PROGRAM_ID, + ) + .0; + let messenger_transmitter_config = Pubkey::find_program_address( + &[b"message_transmitter"], + &MESSAGE_TRANSMITTER_PROGRAM_ID, + ) + .0; + let token_messenger = + Pubkey::find_program_address(&[b"token_messenger"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID) + .0; + assert_eq!(token_messenger, fixture_accounts.token_messenger); + let token_minter = + Pubkey::find_program_address(&[b"token_minter"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let local_token = Pubkey::find_program_address( + &[b"local_token", &USDC_MINT.to_bytes()], + &TOKEN_MESSENGER_MINTER_PROGRAM_ID, + ) + .0; + let token_messenger_minter_event_authority = Pubkey::find_program_address( + &[EVENT_AUTHORITY_SEED], + &TOKEN_MESSENGER_MINTER_PROGRAM_ID, + ) + .0; + let post_message_sequence = wormhole_svm_definitions::find_emitter_sequence_address( + &custodian, + &CORE_BRIDGE_PROGRAM_ID, + ) + .0; + let post_message_message = wormhole_svm_definitions::find_shim_message_address( + &custodian, + &POST_MESSAGE_SHIM_PROGRAM_ID, + ) + .0; + let solver = config.actor_enum.get_actor(&testing_context.testing_actors); + let executor_token = solver.token_account_address(&config.token_enum).unwrap(); + + Self { + signer: payer_signer.pubkey(), + custodian: auction_accounts.custodian, + fast_market_order_address, + active_auction: active_auction_state.auction_address, + active_auction_custody_token: active_auction_state.auction_custody_token_address, + active_auction_config: auction_accounts.auction_config, + active_auction_best_offer_token: auction_accounts.offer_token, + initial_offer_token: auction_accounts.offer_token, + initial_participant, + to_router_endpoint: auction_accounts.to_router_endpoint, + remote_token_messenger, + token_messenger, + local_token, + token_messenger_minter_sender_authority, + token_messenger_minter_event_authority, + messenger_transmitter_config, + token_minter, + executor_token, + cctp_message, + post_message_sequence, + post_message_message, + } + } +} + +fn create_order_executed_state( + config: &ExecuteOrderInstructionConfig, + execute_order_fallback_accounts: &ExecuteOrderShimfulAccounts, +) -> OrderExecutedState { + OrderExecutedState { + cctp_message: execute_order_fallback_accounts.cctp_message, + post_message_sequence: Some(execute_order_fallback_accounts.post_message_sequence), + post_message_message: Some(execute_order_fallback_accounts.post_message_message), + actor_enum: config.actor_enum, + } +} + +/// Create the execute order shim accounts +/// +/// # Arguments +/// +/// * `execute_order_fallback_accounts` - The execute order fallback accounts +/// * `execute_order_fallback_fixture` - The execute order fallback fixture +/// * `clock_id` - The clock id +/// +/// # Returns +/// +/// The execute order shim accounts +fn create_execute_order_shim_accounts<'ix>( + execute_order_fallback_accounts: &'ix ExecuteOrderShimfulAccounts, + clock_id: &'ix Pubkey, +) -> ExecuteOrderShimAccounts<'ix> { + ExecuteOrderShimAccounts { + signer: &execute_order_fallback_accounts.signer, // 0 + cctp_message: &execute_order_fallback_accounts.cctp_message, // 1 + custodian: &execute_order_fallback_accounts.custodian, // 2 + fast_market_order: &execute_order_fallback_accounts.fast_market_order_address, // 3 + active_auction: &execute_order_fallback_accounts.active_auction, // 4 + active_auction_custody_token: &execute_order_fallback_accounts.active_auction_custody_token, // 5 + active_auction_config: &execute_order_fallback_accounts.active_auction_config, // 6 + active_auction_best_offer_token: &execute_order_fallback_accounts + .active_auction_best_offer_token, // 7 + executor_token: &execute_order_fallback_accounts.executor_token, // 8 + initial_offer_token: &execute_order_fallback_accounts.initial_offer_token, // 9 + initial_participant: &execute_order_fallback_accounts.initial_participant, // 10 + to_router_endpoint: &execute_order_fallback_accounts.to_router_endpoint, // 11 + post_message_shim_program: &POST_MESSAGE_SHIM_PROGRAM_ID, // 12 + core_bridge_emitter_sequence: &execute_order_fallback_accounts.post_message_sequence, // 13 + post_shim_message: &execute_order_fallback_accounts.post_message_message, // 14 + cctp_deposit_for_burn_mint: &USDC_MINT, // 15 + cctp_deposit_for_burn_token_messenger_minter_sender_authority: + &execute_order_fallback_accounts.token_messenger_minter_sender_authority, // 16 + cctp_deposit_for_burn_message_transmitter_config: &execute_order_fallback_accounts + .messenger_transmitter_config, // 17 + cctp_deposit_for_burn_token_messenger: &execute_order_fallback_accounts.token_messenger, // 18 + cctp_deposit_for_burn_remote_token_messenger: &execute_order_fallback_accounts + .remote_token_messenger, // 19 + cctp_deposit_for_burn_token_minter: &execute_order_fallback_accounts.token_minter, // 20 + cctp_deposit_for_burn_local_token: &execute_order_fallback_accounts.local_token, // 21 + cctp_deposit_for_burn_token_messenger_minter_event_authority: + &execute_order_fallback_accounts.token_messenger_minter_event_authority, // 22 + cctp_deposit_for_burn_token_messenger_minter_program: &TOKEN_MESSENGER_MINTER_PROGRAM_ID, // 23 + cctp_deposit_for_burn_message_transmitter_program: &MESSAGE_TRANSMITTER_PROGRAM_ID, // 24 + core_bridge_program: &CORE_BRIDGE_PROGRAM_ID, // 25 + core_bridge_config: &CORE_BRIDGE_CONFIG, // 26 + core_bridge_fee_collector: &CORE_BRIDGE_FEE_COLLECTOR, // 27 + post_message_shim_event_authority: &POST_MESSAGE_SHIM_EVENT_AUTHORITY, // 28 + system_program: &solana_program::system_program::ID, // 29 + token_program: &spl_token::ID, // 30 + clock: clock_id, // 31 + } +} + +pub struct CctpAccounts { + pub mint: Pubkey, + pub token_messenger: Pubkey, + pub token_messenger_minter_sender_authority: Pubkey, + pub token_messenger_minter_event_authority: Pubkey, + pub message_transmitter_config: Pubkey, + pub token_minter: Pubkey, + pub local_token: Pubkey, + pub remote_token_messenger: Pubkey, + pub token_messenger_minter_program: Pubkey, + pub message_transmitter_program: Pubkey, +} + +impl From for CctpDepositForBurn { + fn from(cctp_accounts: CctpAccounts) -> Self { + Self { + mint: cctp_accounts.mint, + local_token: cctp_accounts.local_token, + token_messenger_minter_sender_authority: cctp_accounts + .token_messenger_minter_sender_authority, + message_transmitter_config: cctp_accounts.message_transmitter_config, + token_messenger: cctp_accounts.token_messenger, + remote_token_messenger: cctp_accounts.remote_token_messenger, + token_minter: cctp_accounts.token_minter, + token_messenger_minter_event_authority: cctp_accounts + .token_messenger_minter_event_authority, + message_transmitter_program: cctp_accounts.message_transmitter_program, + token_messenger_minter_program: cctp_accounts.token_messenger_minter_program, + } + } +} + +pub fn create_cctp_accounts( + current_state: &TestingEngineState, + testing_context: &TestingContext, +) -> CctpAccounts { + let transfer_direction = current_state.base().transfer_direction; + let fixture_accounts = testing_context.get_fixture_accounts().unwrap(); + let remote_token_messenger = match transfer_direction { + TransferDirection::FromEthereumToArbitrum => { + fixture_accounts.arbitrum_remote_token_messenger + } + TransferDirection::FromArbitrumToEthereum => { + fixture_accounts.ethereum_remote_token_messenger + } + _ => panic!("Unsupported transfer direction"), + }; + let token_messenger_minter_sender_authority = + Pubkey::find_program_address(&[b"sender_authority"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let message_transmitter_config = + Pubkey::find_program_address(&[b"message_transmitter"], &MESSAGE_TRANSMITTER_PROGRAM_ID).0; + let token_messenger = + Pubkey::find_program_address(&[b"token_messenger"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let token_minter = + Pubkey::find_program_address(&[b"token_minter"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let local_token = Pubkey::find_program_address( + &[b"local_token", &USDC_MINT.to_bytes()], + &TOKEN_MESSENGER_MINTER_PROGRAM_ID, + ) + .0; + let token_messenger_minter_event_authority = + Pubkey::find_program_address(&[EVENT_AUTHORITY_SEED], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + CctpAccounts { + mint: utils::constants::USDC_MINT, + token_messenger, + token_messenger_minter_sender_authority, + token_messenger_minter_event_authority, + message_transmitter_config, + token_minter, + local_token, + remote_token_messenger, + token_messenger_minter_program: TOKEN_MESSENGER_MINTER_PROGRAM_ID, + message_transmitter_program: MESSAGE_TRANSMITTER_PROGRAM_ID, + } +} + +pub fn create_cctp_deposit_for_burn( + current_state: &TestingEngineState, + testing_context: &TestingContext, +) -> CctpDepositForBurn { + let cctp_accounts = create_cctp_accounts(current_state, testing_context); + cctp_accounts.into() +} diff --git a/solana/modules/matching-engine-testing/tests/shimful/shims_make_offer.rs b/solana/modules/matching-engine-testing/tests/shimful/shims_make_offer.rs new file mode 100644 index 000000000..8f830fb8c --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/shims_make_offer.rs @@ -0,0 +1,357 @@ +use crate::testing_engine::config::{ + ExpectedError, InstructionConfig, PlaceInitialOfferInstructionConfig, +}; +use crate::testing_engine::state::{InitialOfferPlacedState, TestingEngineState}; +use crate::utils::auction::AuctionAccounts; + +use super::super::utils; +use crate::testing_engine::setup::TestingContext; +use matching_engine::fallback::place_initial_offer::{ + PlaceInitialOfferCctpShim as PlaceInitialOfferCctpShimFallback, + PlaceInitialOfferCctpShimAccounts as PlaceInitialOfferCctpShimFallbackAccounts, + PlaceInitialOfferCctpShimData as PlaceInitialOfferCctpShimFallbackData, +}; +use matching_engine::state::Auction; +use solana_program_test::ProgramTestContext; + +use super::fast_market_order_shim::create_fast_market_order_state_from_vaa_data; +use solana_sdk::{pubkey::Pubkey, signer::Signer}; + +/// Places an initial offer using the fallback program. The vaa is constructed from a passed in PostedVaaData struct. The nonce is forced to 0. +/// +/// # Arguments +/// +/// * `testing_context` - The testing context of the testing engine +/// * `test_context` - Mutable reference to the test context +/// * `current_state` - The current state of the testing engine +/// * `config` - The config of the place initial offer instruction +/// * `expected_error` - The expected error of the place initial offer instruction +/// +/// # Returns +/// +/// * `TestingEngineState` - The state of the testing engine after the place initial offer instruction +/// +/// # Asserts +/// +/// * The expected error is reached +/// * If successful, the solver's USDC balance should decrease by the offer price +pub async fn place_initial_offer_shimful( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PlaceInitialOfferInstructionConfig, + expected_error: Option<&ExpectedError>, +) -> TestingEngineState { + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let place_initial_offer_accounts = + PlaceInitialOfferShimfulAccounts::new(testing_context, current_state, config); + + let offer_actor = config.actor.get_actor(&testing_context.testing_actors); + + let actor_usdc_balance_before = offer_actor + .get_token_account_balance(test_context, &config.spl_token_enum) + .await; + + let place_initial_offer_ix = place_initial_offer_shimful_instruction( + testing_context, + test_context, + current_state, + config, + ) + .await; + + let transaction = testing_context + .create_transaction( + test_context, + &[place_initial_offer_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + None, + None, + ) + .await; + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; + evaluate_place_initial_offer_shimful_state( + testing_context, + test_context, + current_state, + config, + actor_usdc_balance_before, + &place_initial_offer_accounts, + ) + .await +} + +/// Evaluate the place initial offer shimful state +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The test context +/// * `current_state` - The current state +/// * `config` - The config +/// * `actor_usdc_balance_before` - The actor USDC balance before +/// * `place_initial_offer_accounts` - The place initial offer shimful accounts +/// +/// # Returns +/// +/// The testing engine state after the place initial offer shimful instruction +pub async fn evaluate_place_initial_offer_shimful_state( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PlaceInitialOfferInstructionConfig, + actor_usdc_balance_before: u64, + place_initial_offer_accounts: &PlaceInitialOfferShimfulAccounts, +) -> TestingEngineState { + let expected_error = config.expected_error(); + let offer_actor = config.actor.get_actor(&testing_context.testing_actors); + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + if expected_error.is_none() { + let actor_usdc_balance_after = offer_actor + .get_token_account_balance(test_context, &config.spl_token_enum) + .await; + assert!( + actor_usdc_balance_after < actor_usdc_balance_before, + "Solver USDC balance should have decreased" + ); + let new_active_auction_state = utils::auction::ActiveAuctionState { + auction_address: place_initial_offer_accounts.auction, + auction_custody_token_address: place_initial_offer_accounts.auction_custody_token, + auction_config_address: place_initial_offer_accounts.auction_config, + initial_offer: utils::auction::AuctionOffer { + actor: config.actor, + participant: payer_signer.pubkey(), + offer_token: place_initial_offer_accounts.offer_token, + offer_price: config.offer_price, + }, + best_offer: utils::auction::AuctionOffer { + actor: config.actor, + participant: payer_signer.pubkey(), + offer_token: place_initial_offer_accounts.offer_token, + offer_price: config.offer_price, + }, + spl_token_enum: config.spl_token_enum.clone(), + }; + let new_auction_state = + utils::auction::AuctionState::Active(Box::new(new_active_auction_state)); + let initial_offer_placed_state = InitialOfferPlacedState { + auction_state: new_auction_state, + auction_accounts: AuctionAccounts::new( + None, + offer_actor.clone(), + current_state.close_account_refund_recipient(), + place_initial_offer_accounts.auction_config, + ¤t_state + .router_endpoints() + .expect("Router endpoints are not created") + .endpoints, + place_initial_offer_accounts.custodian, + config.spl_token_enum.clone(), + current_state.base().transfer_direction, + ), + }; + let active_auction_state = initial_offer_placed_state + .auction_state + .get_active_auction() + .unwrap(); + active_auction_state + .verify_auction(testing_context, test_context) + .await + .expect("Could not verify auction"); + let auction_accounts = initial_offer_placed_state.auction_accounts; + return TestingEngineState::InitialOfferPlaced { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + auction_state: initial_offer_placed_state.auction_state, + auction_accounts, + order_prepared: current_state.order_prepared().cloned(), + }; + } + current_state.clone() +} + +/// Place the initial offer shimful instruction +/// +/// Creates the place initial offer shimful instruction +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The test context +/// * `current_state` - The current state +/// * `config` - The config +/// +/// # Returns +/// +/// The place initial offer shimful instruction +pub async fn place_initial_offer_shimful_instruction( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PlaceInitialOfferInstructionConfig, +) -> solana_program::instruction::Instruction { + let place_initial_offer_accounts = + PlaceInitialOfferShimfulAccounts::new(testing_context, current_state, config); + + let offer_actor = config.actor.get_actor(&testing_context.testing_actors); + + offer_actor + .approve_spl_token( + test_context, + &place_initial_offer_accounts.transfer_authority, + 420_000__000_000, + &config.spl_token_enum, + ) + .await; + + let place_initial_offer_ix_data = PlaceInitialOfferCctpShimFallbackData { + offer_price: config.offer_price, + }; + + let place_initial_offer_ix_accounts = PlaceInitialOfferCctpShimFallbackAccounts { + signer: &place_initial_offer_accounts.signer, + transfer_authority: &place_initial_offer_accounts.transfer_authority, + custodian: &place_initial_offer_accounts.custodian, + auction_config: &place_initial_offer_accounts.auction_config, + from_endpoint: &place_initial_offer_accounts.from_endpoint, + to_endpoint: &place_initial_offer_accounts.to_endpoint, + fast_market_order: &place_initial_offer_accounts.fast_market_order, + auction: &place_initial_offer_accounts.auction, + offer_token: &place_initial_offer_accounts.offer_token, + auction_custody_token: &place_initial_offer_accounts.auction_custody_token, + usdc: &place_initial_offer_accounts.usdc, + system_program: &place_initial_offer_accounts.system_program, + token_program: &place_initial_offer_accounts.token_program, + }; + PlaceInitialOfferCctpShimFallback { + program_id: &testing_context.get_matching_engine_program_id(), + accounts: place_initial_offer_ix_accounts, + data: place_initial_offer_ix_data, + } + .instruction() +} + +pub struct PlaceInitialOfferShimfulAccounts { + pub signer: Pubkey, + pub transfer_authority: Pubkey, + pub custodian: Pubkey, + pub auction_config: Pubkey, + pub from_endpoint: Pubkey, + pub to_endpoint: Pubkey, + pub fast_market_order: Pubkey, + pub auction: Pubkey, + pub offer_token: Pubkey, + pub auction_custody_token: Pubkey, + pub usdc: Pubkey, + pub system_program: Pubkey, + pub token_program: Pubkey, +} + +impl PlaceInitialOfferShimfulAccounts { + pub fn new( + testing_context: &TestingContext, + current_state: &TestingEngineState, + config: &PlaceInitialOfferInstructionConfig, + ) -> Self { + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let close_account_refund_recipient = + config.close_account_refund_recipient.unwrap_or_else(|| { + current_state + .fast_market_order() + .unwrap() + .close_account_refund_recipient + }); + let fast_market_order = match &config.fast_market_order_address { + Some(fast_market_order_address) => *fast_market_order_address, + None => { + current_state + .fast_market_order() + .expect("Fast market order is not created") + .fast_market_order_address + } + }; + let auction_config = current_state.auction_config_address().unwrap(); + let custodian = current_state.custodian_address().unwrap(); + let program_id = testing_context.get_matching_engine_program_id(); + let fast_transfer_vaa = ¤t_state + .base() + .vaas + .get(config.test_vaa_pair_index) + .expect("Failed to get vaa pair") + .fast_transfer_vaa; + let vaa_data = fast_transfer_vaa.get_vaa_data(); + let fast_market_order_state = + create_fast_market_order_state_from_vaa_data(vaa_data, close_account_refund_recipient); + let offer_actor = config.actor.get_actor(&testing_context.testing_actors); + let offer_token = match &config.custom_accounts { + Some(custom_accounts) => match custom_accounts.offer_token_address { + Some(offer_token_address) => offer_token_address, + None => offer_actor + .token_account_address(&config.spl_token_enum) + .unwrap(), + }, + None => offer_actor + .token_account_address(&config.spl_token_enum) + .unwrap(), + }; + let auction = Pubkey::find_program_address( + &[Auction::SEED_PREFIX, &fast_market_order_state.digest()], + &program_id, + ) + .0; + let auction_custody_token = Pubkey::find_program_address( + &[ + matching_engine::AUCTION_CUSTODY_TOKEN_SEED_PREFIX, + auction.as_ref(), + ], + &program_id, + ) + .0; + let transfer_authority = Pubkey::find_program_address( + &[ + common::TRANSFER_AUTHORITY_SEED_PREFIX, + &auction.to_bytes(), + &config.offer_price.to_be_bytes(), + ], + &program_id, + ) + .0; + let (from_endpoint, to_endpoint) = config.get_from_and_to_router_endpoints(current_state); + let usdc = match &config.custom_accounts { + Some(custom_accounts) => match custom_accounts.mint_address { + Some(usdc_mint_address) => usdc_mint_address, + None => testing_context.get_usdc_mint_address(), + }, + None => testing_context.get_usdc_mint_address(), + }; + Self { + signer: payer_signer.pubkey(), + transfer_authority, + custodian, + auction_config, + from_endpoint, + to_endpoint, + fast_market_order, + auction, + offer_token, + auction_custody_token, + usdc, + system_program: solana_program::system_program::ID, + token_program: anchor_spl::token::spl_token::ID, + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/shimful/shims_prepare_order_response.rs b/solana/modules/matching-engine-testing/tests/shimful/shims_prepare_order_response.rs new file mode 100644 index 000000000..a97fefb12 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/shims_prepare_order_response.rs @@ -0,0 +1,430 @@ +use crate::testing_engine::config::{InstructionConfig, PrepareOrderResponseInstructionConfig}; +use crate::testing_engine::setup::{TestingContext, TransferDirection}; +use crate::testing_engine::state::{OrderPreparedState, TestingEngineState}; + +use super::super::utils; +use super::verify_shim::GuardianSignatureInfo; +use anchor_lang::prelude::*; +use anchor_spl::token::spl_token; +use common::wormhole_cctp_solana::cctp::{ + MESSAGE_TRANSMITTER_PROGRAM_ID, TOKEN_MESSENGER_MINTER_PROGRAM_ID, +}; +use common::wormhole_cctp_solana::utils::CctpMessage; +use matching_engine::fallback::prepare_order_response::{ + FinalizedVaaMessageArgs, PrepareOrderResponseCctpShim as PrepareOrderResponseCctpShimIx, + PrepareOrderResponseCctpShimAccounts, PrepareOrderResponseCctpShimData, +}; +use matching_engine::state::{FastMarketOrder as FastMarketOrderState, PreparedOrderResponse}; +use matching_engine::CCTP_MINT_RECIPIENT; +use solana_program_test::ProgramTestContext; +use solana_sdk::signer::Signer; +use solana_sdk::transaction::Transaction; +use utils::cctp_message::{CctpMessageDecoded, UsedNonces}; +use wormhole_svm_definitions::EVENT_AUTHORITY_SEED; + +/// Prepare order response cctp shimful +/// +/// Executes the prepare order response instruction in a testing context +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The test context +/// * `config` - The prepare order response instruction config +/// * `current_state` - The current state +/// +/// # Returns +/// +/// The prepare order response shim fixture (none if failed) +pub async fn prepare_order_response_cctp_shimful( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + config: &PrepareOrderResponseInstructionConfig, + current_state: &TestingEngineState, +) -> TestingEngineState { + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let data = PrepareOrderResponseShimDataHelper::new( + testing_context, + test_context, + current_state, + config, + ) + .await; + let cctp_message_decoded = data.decode_cctp_message(); + let accounts = PrepareOrderResponseShimAccountsHelper::new( + testing_context, + config, + current_state, + &cctp_message_decoded, + &data, + ); + + let ix_accounts = PrepareOrderResponseCctpShimAccounts { + signer: &accounts.signer, + custodian: &accounts.custodian, + fast_market_order: &accounts.fast_market_order, + from_endpoint: &accounts.from_endpoint, + to_endpoint: &accounts.to_endpoint, + prepared_order_response: &accounts.prepared_order_response, + prepared_custody_token: &accounts.prepared_custody_token, + base_fee_token: &accounts.base_fee_token, + usdc: &accounts.usdc, + cctp_mint_recipient: &accounts.cctp_mint_recipient, + cctp_message_transmitter_authority: &accounts.cctp_message_transmitter_authority, + cctp_message_transmitter_config: &accounts.cctp_message_transmitter_config, + cctp_used_nonces: &accounts.cctp_used_nonces, + cctp_message_transmitter_event_authority: &accounts + .cctp_message_transmitter_event_authority, + cctp_token_messenger: &accounts.cctp_token_messenger, + cctp_remote_token_messenger: &accounts.cctp_remote_token_messenger, + cctp_token_minter: &accounts.cctp_token_minter, + cctp_local_token: &accounts.cctp_local_token, + cctp_token_pair: &accounts.cctp_token_pair, + cctp_token_messenger_minter_event_authority: &accounts + .cctp_token_messenger_minter_event_authority, + cctp_token_messenger_minter_custody_token: &accounts + .cctp_token_messenger_minter_custody_token, + cctp_token_messenger_minter_program: &accounts.cctp_token_messenger_minter_program, + cctp_message_transmitter_program: &accounts.cctp_message_transmitter_program, + guardian_set: &accounts.guardian_set, + guardian_set_signatures: &accounts.guardian_set_signatures, + verify_shim_program: &wormhole_svm_definitions::solana::VERIFY_VAA_SHIM_PROGRAM_ID, + token_program: &spl_token::ID, + system_program: &solana_program::system_program::ID, + }; + + let finalized_vaa_message_args = data.finalized_vaa_message_args; + let data = PrepareOrderResponseCctpShimData { + encoded_cctp_message: data.encoded_cctp_message, + cctp_attestation: data.cctp_attestation, + finalized_vaa_message_args, + }; + let program_id = &testing_context.get_matching_engine_program_id(); + let prepare_order_response_cctp_shim_ix = PrepareOrderResponseCctpShimIx { + program_id, + accounts: ix_accounts, + data, + } + .instruction(); + + let recent_blockhash = testing_context + .get_new_latest_blockhash(test_context) + .await + .expect("Failed to get new latest blockhash"); + let transaction = Transaction::new_signed_with_payer( + &[prepare_order_response_cctp_shim_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + recent_blockhash, + ); + + let expected_error = config.expected_error(); + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; + if config.expected_error.is_none() { + let auction_accounts = config + .overwrite_auction_accounts + .as_ref() + .unwrap_or_else(|| { + current_state + .auction_accounts() + .expect("Auction accounts not found") + }); + + let order_prepared_state = OrderPreparedState { + prepared_order_response_address: accounts.prepared_order_response, + prepared_custody_token: accounts.prepared_custody_token, + base_fee_token: accounts.base_fee_token, + actor_enum: config.actor_enum, + prepared_by: payer_signer.pubkey(), + }; + TestingEngineState::OrderPrepared { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + auction_state: current_state.auction_state().clone(), + order_prepared: order_prepared_state, + auction_accounts: auction_accounts.clone(), + } + } else { + current_state.clone() + } +} + +/// Prepare order response shim data helper +/// +/// This struct is a helper struct used to create the data for the prepare order response instruction +/// +/// # Fields +/// +/// * `encoded_cctp_message` - The encoded CCTP message +/// * `cctp_attestation` - The CCTP attestation +/// * `finalized_vaa_message_args` - The finalized VAA message args +/// * `fast_market_order` - The fast market order +struct PrepareOrderResponseShimDataHelper { + pub encoded_cctp_message: Vec, + pub cctp_attestation: Vec, + pub finalized_vaa_message_args: FinalizedVaaMessageArgs, + pub fast_market_order: FastMarketOrderState, + pub guardian_signature_info: GuardianSignatureInfo, +} + +/// A helper struct for the data for the prepare order response shimful instruction that disregards the lifetime +impl PrepareOrderResponseShimDataHelper { + /// Create a new prepare order response shim data helper + /// + /// # Arguments + /// + /// * `encoded_cctp_message` - The encoded CCTP message + /// * `cctp_attestation` - The CCTP attestation + /// * `consistency_level` - The consistency level + /// * `base_fee` - The base fee + /// * `fast_market_order` - The fast market order + /// * `guardian_set_bump` - The guardian set bump + /// + /// # Returns + /// + /// The prepare order response shim data helper + pub async fn new( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PrepareOrderResponseInstructionConfig, + ) -> Self { + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let deposit_vaa = current_state + .get_test_vaa_pair(config.vaa_index) + .deposit_vaa + .clone(); + let deposit_vaa_data = deposit_vaa.get_vaa_data(); + let deposit = deposit_vaa + .payload_deserialized + .clone() + .unwrap() + .get_deposit() + .unwrap(); + let finalized_vaa_data = current_state + .get_test_vaa_pair(config.vaa_index) + .get_finalized_vaa_data() + .clone(); + + let fast_market_order_state = current_state + .fast_market_order() + .expect("could not find fast market order") + .fast_market_order; + + let cctp_token_burn_message = utils::cctp_message::craft_cctp_token_burn_message( + testing_context, + test_context, + current_state, + config.vaa_index, + ) + .await + .unwrap(); + cctp_token_burn_message + .verify_cctp_message(&fast_market_order_state) + .unwrap(); + + let deposit_base_fee = utils::cctp_message::get_deposit_base_fee(&deposit); + + let core_bridge_program_id = &testing_context.get_wormhole_program_id(); + + let guardian_signature_info = super::verify_shim::create_guardian_signatures( + testing_context, + test_context, + &payer_signer, + &finalized_vaa_data, + core_bridge_program_id, + None, + ) + .await + .unwrap(); + + Self { + encoded_cctp_message: cctp_token_burn_message.encoded_cctp_burn_message, + cctp_attestation: cctp_token_burn_message.cctp_attestation, + finalized_vaa_message_args: FinalizedVaaMessageArgs { + consistency_level: deposit_vaa_data.consistency_level, + base_fee: deposit_base_fee, + guardian_set_bump: guardian_signature_info.guardian_set_bump, + }, + fast_market_order: fast_market_order_state, + guardian_signature_info, + } + } + pub fn decode_cctp_message(&self) -> CctpMessageDecoded { + let cctp_message_decoded = CctpMessage::parse(&self.encoded_cctp_message[..]).unwrap(); + CctpMessageDecoded { + nonce: cctp_message_decoded.nonce(), + source_domain: cctp_message_decoded.source_domain(), + } + } +} + +/// Prepare order response shim accounts helper +/// +/// A helper struct for the accounts for the prepare order response shimful instruction that disregards the lifetime +/// +/// Fields are equivalent to the PrepareOrderResponseCctpShimAccounts struct +struct PrepareOrderResponseShimAccountsHelper { + pub signer: Pubkey, + pub custodian: Pubkey, + pub fast_market_order: Pubkey, + pub from_endpoint: Pubkey, + pub to_endpoint: Pubkey, + pub base_fee_token: Pubkey, + pub usdc: Pubkey, + pub cctp_mint_recipient: Pubkey, + pub cctp_message_transmitter_authority: Pubkey, + pub cctp_message_transmitter_config: Pubkey, + pub cctp_used_nonces: Pubkey, + pub cctp_message_transmitter_event_authority: Pubkey, + pub cctp_token_messenger: Pubkey, + pub cctp_remote_token_messenger: Pubkey, + pub cctp_token_minter: Pubkey, + pub cctp_local_token: Pubkey, + pub cctp_token_messenger_minter_custody_token: Pubkey, + pub cctp_token_messenger_minter_program: Pubkey, + pub cctp_message_transmitter_program: Pubkey, + pub cctp_token_pair: Pubkey, + pub cctp_token_messenger_minter_event_authority: Pubkey, + pub guardian_set: Pubkey, + pub guardian_set_signatures: Pubkey, + pub prepared_order_response: Pubkey, + pub prepared_custody_token: Pubkey, +} + +impl PrepareOrderResponseShimAccountsHelper { + /// Create a new prepare order response shim accounts helper + /// + /// # Arguments + /// + /// * `testing_context` - The testing context + /// * `config` - The prepare order response instruction config + /// * `current_state` - The current state + /// * `cctp_message_decoded` - The CCTP message decoded + /// * `data` - The prepare order response shim data helper + pub fn new( + testing_context: &TestingContext, + config: &PrepareOrderResponseInstructionConfig, + current_state: &TestingEngineState, + cctp_message_decoded: &CctpMessageDecoded, + data: &PrepareOrderResponseShimDataHelper, + ) -> Self { + let guardian_signature_info = &data.guardian_signature_info; + let signer = &config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let usdc_mint_address = testing_context.get_usdc_mint_address(); + let auction_accounts = config + .overwrite_auction_accounts + .as_ref() + .unwrap_or_else(|| { + current_state + .auction_accounts() + .expect("Auction accounts not found") + }); + let to_endpoint = auction_accounts.to_router_endpoint; + let from_endpoint = auction_accounts.from_router_endpoint; + let fast_market_order = current_state + .fast_market_order() + .expect("could not find fast market order") + .fast_market_order_address; + let base_fee_token = config + .actor_enum + .get_actor(&testing_context.testing_actors) + .token_account_address(&config.token_enum) + .unwrap(); + let fixture_accounts = testing_context + .fixture_accounts + .clone() + .expect("Fixture accounts not found"); + let custodian = current_state + .custodian_address() + .expect("Custodian address not found"); + let cctp_message_transmitter_event_authority = + Pubkey::find_program_address(&[EVENT_AUTHORITY_SEED], &MESSAGE_TRANSMITTER_PROGRAM_ID) + .0; + let cctp_message_transmitter_authority = Pubkey::find_program_address( + &[ + b"message_transmitter_authority", + &TOKEN_MESSENGER_MINTER_PROGRAM_ID.as_ref(), + ], + &MESSAGE_TRANSMITTER_PROGRAM_ID, + ) + .0; + let token_messenger_minter_event_authority = Pubkey::find_program_address( + &[EVENT_AUTHORITY_SEED], + &TOKEN_MESSENGER_MINTER_PROGRAM_ID, + ) + .0; + let (cctp_used_nonces_pda, _cctp_used_nonces_bump) = UsedNonces::address( + cctp_message_decoded.source_domain, + cctp_message_decoded.nonce, + ); + let cctp_remote_token_messenger = match testing_context.transfer_direction { + TransferDirection::FromEthereumToArbitrum => { + fixture_accounts.ethereum_remote_token_messenger + } + TransferDirection::FromArbitrumToEthereum => { + fixture_accounts.arbitrum_remote_token_messenger + } + _ => panic!("Unsupported transfer direction"), + }; + let matching_engine_program_id = &testing_context.get_matching_engine_program_id(); + let fast_market_order_digest = data.fast_market_order.digest(); + let prepared_order_response_seeds = [ + PreparedOrderResponse::SEED_PREFIX, + &fast_market_order_digest, + ]; + + let (prepared_order_response_pda, _prepared_order_response_bump) = + Pubkey::find_program_address( + &prepared_order_response_seeds, + matching_engine_program_id, + ); + + let prepared_custody_token_seeds = [ + matching_engine::PREPARED_CUSTODY_TOKEN_SEED_PREFIX, + prepared_order_response_pda.as_ref(), + ]; + let (prepared_custody_token_pda, _prepared_custody_token_bump) = + Pubkey::find_program_address(&prepared_custody_token_seeds, matching_engine_program_id); + Self { + signer: signer.pubkey(), + custodian, + fast_market_order, + from_endpoint, + to_endpoint, + base_fee_token, + usdc: usdc_mint_address, + cctp_mint_recipient: CCTP_MINT_RECIPIENT, + cctp_message_transmitter_authority, + cctp_message_transmitter_config: fixture_accounts.message_transmitter_config, + cctp_used_nonces: cctp_used_nonces_pda, + cctp_message_transmitter_event_authority, + cctp_token_messenger: fixture_accounts.token_messenger, + cctp_remote_token_messenger, + cctp_token_minter: fixture_accounts.token_minter, + cctp_local_token: fixture_accounts.usdc_local_token, + cctp_token_pair: fixture_accounts.usdc_token_pair, + cctp_token_messenger_minter_custody_token: fixture_accounts.usdc_custody_token, + cctp_token_messenger_minter_program: TOKEN_MESSENGER_MINTER_PROGRAM_ID, + cctp_message_transmitter_program: MESSAGE_TRANSMITTER_PROGRAM_ID, + cctp_token_messenger_minter_event_authority: token_messenger_minter_event_authority, + guardian_set: guardian_signature_info.guardian_set_pubkey, + guardian_set_signatures: guardian_signature_info.guardian_signatures_pubkey, + prepared_order_response: prepared_order_response_pda, + prepared_custody_token: prepared_custody_token_pda, + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/shimful/shims_settle_auction_none_cctp.rs b/solana/modules/matching-engine-testing/tests/shimful/shims_settle_auction_none_cctp.rs new file mode 100644 index 000000000..ace5dddcf --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/shims_settle_auction_none_cctp.rs @@ -0,0 +1,239 @@ +use anchor_lang::prelude::*; +use anchor_spl::token::spl_token; +use matching_engine::{ + fallback::settle_auction_none_cctp::{ + SettleAuctionNoneCctpShim, SettleAuctionNoneCctpShimAccounts, SettleAuctionNoneCctpShimData, + }, + state::Auction, +}; +use solana_program_test::ProgramTestContext; +use solana_sdk::{signature::Signer, sysvar::SysvarId, transaction::Transaction}; +use wormhole_svm_definitions::solana::{ + CORE_BRIDGE_PROGRAM_ID, POST_MESSAGE_SHIM_EVENT_AUTHORITY, POST_MESSAGE_SHIM_PROGRAM_ID, +}; + +use crate::{ + testing_engine::{ + config::{InstructionConfig, SettleAuctionNoneInstructionConfig}, + setup::TestingContext, + state::{OrderPreparedState, TestingEngineState}, + }, + utils::{ + auction::AuctionState, token_account::SplTokenEnum, CORE_BRIDGE_CONFIG, + CORE_BRIDGE_FEE_COLLECTOR, + }, +}; + +use super::shims_execute_order::{create_cctp_accounts, CctpAccounts}; + +pub async fn settle_auction_none_shimful( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &SettleAuctionNoneInstructionConfig, +) -> AuctionState { + let payer_signer = &config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + + let settle_auction_none_cctp_accounts = + create_settle_auction_none_cctp_shimful_accounts(testing_context, current_state, config); + let settle_auction_none_cctp_data = settle_auction_none_cctp_accounts.bumps; + + let settle_auction_none_cctp_ix = SettleAuctionNoneCctpShim { + program_id: &testing_context.get_matching_engine_program_id(), + accounts: settle_auction_none_cctp_accounts.as_ref(), + data: settle_auction_none_cctp_data, + } + .instruction(); + let last_blockhash = test_context.get_new_latest_blockhash().await.unwrap(); + let tx = Transaction::new_signed_with_payer( + &[settle_auction_none_cctp_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + last_blockhash, + ); + testing_context + .execute_and_verify_transaction(test_context, tx, config.expected_error()) + .await; + if config.expected_error().is_some() { + return current_state.auction_state().clone(); + } + + AuctionState::Settled(None) +} + +struct SettleAuctionNoneCctpShimAccountsOwned { + pub payer: Pubkey, + pub post_message_message: Pubkey, + pub post_message_sequence: Pubkey, + pub post_message_shim_event_authority: Pubkey, + pub post_message_shim_program: Pubkey, + pub cctp_message: Pubkey, + pub custodian: Pubkey, + pub fee_recipient_token: Pubkey, + pub closed_prepared_order_response_actor: Pubkey, + pub closed_prepared_order_response: Pubkey, + pub closed_prepared_order_response_custody_token: Pubkey, + pub auction: Pubkey, + pub cctp_mint: Pubkey, + pub cctp_local_token: Pubkey, + pub cctp_token_messenger_minter_event_authority: Pubkey, + pub cctp_remote_token_messenger: Pubkey, + pub cctp_token_messenger: Pubkey, + pub cctp_token_messenger_minter_sender_authority: Pubkey, + pub cctp_token_minter: Pubkey, + pub cctp_token_messenger_minter_program: Pubkey, + pub cctp_message_transmitter_config: Pubkey, + pub cctp_message_transmitter_program: Pubkey, + pub core_bridge_program: Pubkey, + pub core_bridge_fee_collector: Pubkey, + pub core_bridge_config: Pubkey, + pub token_program: Pubkey, + pub system_program: Pubkey, + pub clock: Pubkey, + pub rent: Pubkey, + pub bumps: SettleAuctionNoneCctpShimData, +} + +impl SettleAuctionNoneCctpShimAccountsOwned { + pub fn as_ref(&self) -> SettleAuctionNoneCctpShimAccounts { + SettleAuctionNoneCctpShimAccounts { + payer: &self.payer, + post_shim_message: &self.post_message_message, + core_bridge_emitter_sequence: &self.post_message_sequence, + post_message_shim_event_authority: &self.post_message_shim_event_authority, + post_message_shim_program: &self.post_message_shim_program, + cctp_message: &self.cctp_message, + custodian: &self.custodian, + fee_recipient_token: &self.fee_recipient_token, + closed_prepared_order_response_actor: &self.closed_prepared_order_response_actor, + closed_prepared_order_response: &self.closed_prepared_order_response, + closed_prepared_order_response_custody_token: &self + .closed_prepared_order_response_custody_token, + auction: &self.auction, + cctp_mint: &self.cctp_mint, + cctp_local_token: &self.cctp_local_token, + cctp_token_messenger_minter_event_authority: &self + .cctp_token_messenger_minter_event_authority, + cctp_remote_token_messenger: &self.cctp_remote_token_messenger, + cctp_token_messenger: &self.cctp_token_messenger, + cctp_token_messenger_minter_sender_authority: &self + .cctp_token_messenger_minter_sender_authority, + cctp_token_minter: &self.cctp_token_minter, + cctp_token_messenger_minter_program: &self.cctp_token_messenger_minter_program, + cctp_message_transmitter_config: &self.cctp_message_transmitter_config, + cctp_message_transmitter_program: &self.cctp_message_transmitter_program, + core_bridge_program: &self.core_bridge_program, + core_bridge_fee_collector: &self.core_bridge_fee_collector, + core_bridge_config: &self.core_bridge_config, + token_program: &self.token_program, + system_program: &self.system_program, + clock: &self.clock, + rent: &self.rent, + } + } +} + +fn create_settle_auction_none_cctp_shimful_accounts( + testing_context: &TestingContext, + current_state: &TestingEngineState, + config: &SettleAuctionNoneInstructionConfig, +) -> SettleAuctionNoneCctpShimAccountsOwned { + let payer_signer = &config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + + let order_prepared_state = current_state.order_prepared().unwrap(); + let OrderPreparedState { + prepared_order_response_address, + prepared_custody_token, + base_fee_token: _, + actor_enum: _, + prepared_by, + } = *order_prepared_state; + + let custodian = current_state + .custodian_address() + .expect("Custodian address not found"); + println!("Settle auction custodian address: {:?}", custodian); + + let fast_market_order = current_state.fast_market_order().unwrap().fast_market_order; + let fast_vaa_hash = fast_market_order.digest(); + let (auction, auction_bump) = Pubkey::find_program_address( + &[Auction::SEED_PREFIX, fast_vaa_hash.as_ref()], + &testing_context.get_matching_engine_program_id(), + ); + + let (cctp_message, cctp_message_bump) = Pubkey::find_program_address( + &[common::CCTP_MESSAGE_SEED_PREFIX, &auction.to_bytes()], + &testing_context.get_matching_engine_program_id(), + ); + + let post_message_sequence = wormhole_svm_definitions::find_emitter_sequence_address( + &custodian, + &CORE_BRIDGE_PROGRAM_ID, + ) + .0; + let post_message_message = wormhole_svm_definitions::find_shim_message_address( + &custodian, + &POST_MESSAGE_SHIM_PROGRAM_ID, + ) + .0; + + let fee_recipient_token = testing_context + .testing_actors + .fee_recipient + .token_account_address(&SplTokenEnum::Usdc) + .unwrap(); + + let CctpAccounts { + mint, + local_token, + token_messenger_minter_event_authority, + remote_token_messenger, + token_messenger, + token_messenger_minter_sender_authority, + token_minter, + token_messenger_minter_program, + message_transmitter_config, + message_transmitter_program, + } = create_cctp_accounts(current_state, testing_context); + SettleAuctionNoneCctpShimAccountsOwned { + payer: payer_signer.pubkey(), + post_message_message, + post_message_sequence, + post_message_shim_event_authority: POST_MESSAGE_SHIM_EVENT_AUTHORITY, + post_message_shim_program: POST_MESSAGE_SHIM_PROGRAM_ID, + cctp_message, + custodian, + fee_recipient_token, + closed_prepared_order_response_actor: prepared_by, + closed_prepared_order_response: prepared_order_response_address, + closed_prepared_order_response_custody_token: prepared_custody_token, + auction, + cctp_mint: mint, + cctp_local_token: local_token, + cctp_token_messenger_minter_event_authority: token_messenger_minter_event_authority, + cctp_remote_token_messenger: remote_token_messenger, + cctp_token_messenger: token_messenger, + cctp_token_messenger_minter_sender_authority: token_messenger_minter_sender_authority, + cctp_token_minter: token_minter, + cctp_token_messenger_minter_program: token_messenger_minter_program, + cctp_message_transmitter_config: message_transmitter_config, + cctp_message_transmitter_program: message_transmitter_program, + core_bridge_program: CORE_BRIDGE_PROGRAM_ID, + core_bridge_fee_collector: CORE_BRIDGE_FEE_COLLECTOR, + core_bridge_config: CORE_BRIDGE_CONFIG, + token_program: spl_token::ID, + system_program: solana_program::system_program::ID, + clock: solana_program::clock::Clock::id(), + rent: solana_program::rent::Rent::id(), + bumps: SettleAuctionNoneCctpShimData { + cctp_message_bump, + auction_bump, + }, + } +} diff --git a/solana/modules/matching-engine-testing/tests/shimful/verify_shim.rs b/solana/modules/matching-engine-testing/tests/shimful/verify_shim.rs new file mode 100644 index 000000000..81cd80b22 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimful/verify_shim.rs @@ -0,0 +1,179 @@ +use crate::testing_engine::setup::TestingContext; +use crate::utils; +use crate::utils::constants::*; +use anchor_lang::prelude::*; +use anyhow::Result as AnyhowResult; + +use solana_program_test::ProgramTestContext; +use solana_sdk::{ + compute_budget::ComputeBudgetInstruction, + hash::Hash, + message::{v0::Message, VersionedMessage}, + signature::{Keypair, Signer}, + transaction::VersionedTransaction, +}; + +use std::rc::Rc; +use std::str::FromStr; +use wormhole_svm_definitions::GUARDIAN_SIGNATURE_LENGTH; +use wormhole_svm_shim::verify_vaa; + +/// Guardian signature info +/// +/// # Fields +/// +/// * `guardian_set_pubkey` - The guardian set pubkey +/// * `guardian_signatures_pubkey` - The guardian signatures pubkey +/// * `guardian_set_bump` - The guardian set bump +pub struct GuardianSignatureInfo { + pub guardian_set_pubkey: Pubkey, + pub guardian_signatures_pubkey: Pubkey, + pub guardian_set_bump: u8, +} + +/// Create guardian signatures for a given vaa data +/// +/// This also creates the account holding the signatures and posts the signatures to the guardian signatures account +/// +/// # Arguments +/// +/// * `test_ctx` - The test context +/// * `payer_signer` - The payer signer +/// * `vaa_data` - The vaa data +/// * `wormhole_program_id` - The wormhole program id +/// * `guardian_signature_signer` - The guardian signature signer keypair. If None, a new keypair is created. +/// +/// # Returns +/// +/// * `(guardian_set_pubkey, guardian_signatures_pubkey, guardian_set_bump)` - The guardian set pubkey, the guardian signatures pubkey and the guardian set bump +pub async fn create_guardian_signatures( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + payer_signer: &Rc, + vaa_data: &utils::vaa::PostedVaaData, + wormhole_program_id: &Pubkey, + guardian_signature_signer: Option<&Rc>, +) -> AnyhowResult { + let new_keypair = Rc::new(Keypair::new()); + let guardian_signature_signer = guardian_signature_signer.unwrap_or_else(|| &new_keypair); + let (guardian_set_pubkey, guardian_set_bump) = + wormhole_svm_definitions::find_guardian_set_address( + 0_u32.to_be_bytes(), + wormhole_program_id, + ); + let guardian_secret_key = secp256k1::SecretKey::from_str(GUARDIAN_SECRET_KEY)?; + let guardian_set_signatures = vaa_data.sign_with_guardian_key(&guardian_secret_key, 0); + let guardian_signatures_pubkey = add_guardian_signatures_account( + testing_context, + test_context, + payer_signer, + guardian_signature_signer, + vec![guardian_set_signatures], + 0, + ) + .await?; + Ok(GuardianSignatureInfo { + guardian_set_pubkey, + guardian_signatures_pubkey, + guardian_set_bump, + }) +} + +/// Add a guardian signatures account +/// +/// This creates a new guardian signatures account and posts the signatures to it +/// +/// # Arguments +/// +/// * `test_ctx` - The test context +/// * `payer_signer` - The payer signer +/// * `signatures_signer` - The signatures signer keypair. If None, a new keypair is created. +/// * `guardian_signatures` - The guardian signatures +/// * `guardian_set_index` - The guardian set index +/// +/// # Returns +/// +/// * `guardian_signatures_pubkey` - The guardian signatures pubkey +async fn add_guardian_signatures_account( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + payer_signer: &Rc, + signatures_signer: &Rc, + guardian_signatures: Vec<[u8; GUARDIAN_SIGNATURE_LENGTH]>, + guardian_set_index: u32, +) -> AnyhowResult { + let new_blockhash = testing_context + .get_new_latest_blockhash(test_context) + .await?; + let transaction = post_signatures_transaction( + payer_signer, + signatures_signer, + guardian_set_index, + u8::try_from(guardian_signatures.len())?, + &guardian_signatures, + new_blockhash, + ); + testing_context + .process_transaction(test_context, transaction) + .await?; + + Ok(signatures_signer.pubkey()) +} + +/// Post signatures transaction +/// +/// Creates the transaction to post the signatures to the guardian signatures account +/// +/// # Arguments +/// +/// * `payer_signer` - The payer signer +/// * `guardian_signatures_signer` - The guardian signatures signer +/// * `guardian_set_index` - The guardian set index +/// * `total_signatures` - The total signatures +/// * `guardian_signatures_vec` - The guardian signatures +/// * `recent_blockhash` - The recent blockhash +/// +/// # Returns +/// +/// * `VersionedTransaction` - The versioned transaction that can be executed to post the signatures +fn post_signatures_transaction( + payer_signer: &Rc, + guardian_signatures_signer: &Rc, + guardian_set_index: u32, + total_signatures: u8, + guardian_signatures_vec: &Vec<[u8; wormhole_svm_definitions::GUARDIAN_SIGNATURE_LENGTH]>, + recent_blockhash: Hash, +) -> VersionedTransaction { + let post_signatures_ix = verify_vaa::PostSignatures { + program_id: &WORMHOLE_VERIFY_VAA_SHIM_PID, + accounts: verify_vaa::PostSignaturesAccounts { + payer: &payer_signer.pubkey(), + guardian_signatures: &guardian_signatures_signer.pubkey(), + }, + data: verify_vaa::PostSignaturesData::new( + guardian_set_index, + total_signatures, + guardian_signatures_vec.as_slice(), + ), + } + .instruction(); + + let message = Message::try_compile( + &payer_signer.pubkey(), + &[ + post_signatures_ix, + ComputeBudgetInstruction::set_compute_unit_price(69), + // NOTE: CU limit is higher than needed to resolve errors in test. + ComputeBudgetInstruction::set_compute_unit_limit(25_000), + ], + &[], + recent_blockhash, + ) + .unwrap(); + + VersionedTransaction::try_new( + VersionedMessage::V0(message), + &[payer_signer, guardian_signatures_signer], + ) + .unwrap() +} diff --git a/solana/modules/matching-engine-testing/tests/shimless/README.md b/solana/modules/matching-engine-testing/tests/shimless/README.md new file mode 100644 index 000000000..c636365d9 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/README.md @@ -0,0 +1,12 @@ +# Shimless Tests + +This directory contains tests that do not use the fallback program. + +## Files + +- `place_initial_offer.rs` - A function that places an initial offer +- `make_offer.rs` - A function that places an initial offer and one that improves an offer +- `execute_order.rs` - A function that executes an order +- `prepare_order_response.rs` - A function that prepares an order response +- `settle_auction.rs` - A function that settles an auction + diff --git a/solana/modules/matching-engine-testing/tests/shimless/execute_order.rs b/solana/modules/matching-engine-testing/tests/shimless/execute_order.rs new file mode 100644 index 000000000..19923ba03 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/execute_order.rs @@ -0,0 +1,259 @@ +use std::rc::Rc; + +use crate::testing_engine::config::{ExecuteOrderInstructionConfig, InstructionConfig}; +use crate::testing_engine::setup::{TestingContext, TransferDirection}; +use crate::testing_engine::state::{OrderExecutedState, TestingEngineState}; +use crate::utils::auction::{AuctionAccounts, AuctionState}; +use anchor_lang::prelude::*; +use anchor_lang::{InstructionData, ToAccountMetas}; +use common::wormhole_cctp_solana::cctp::{ + MESSAGE_TRANSMITTER_PROGRAM_ID, TOKEN_MESSENGER_MINTER_PROGRAM_ID, +}; +use matching_engine::accounts::{CctpDepositForBurn, WormholePublishMessage}; +use matching_engine::accounts::{ + ExecuteFastOrderCctp as ExecuteOrderShimlessAccounts, LiquidityLayerVaa, LiveRouterEndpoint, + RequiredSysvars, +}; +use matching_engine::instruction::ExecuteFastOrderCctp as ExecuteOrderShimlessInstruction; +use solana_program_test::ProgramTestContext; +use solana_sdk::instruction::Instruction; +use solana_sdk::signature::{Keypair, Signer}; +use solana_sdk::sysvar::SysvarId; +use solana_sdk::transaction::Transaction; +use wormhole_svm_definitions::EVENT_AUTHORITY_SEED; + +/// Execute order shimless +/// +/// Helper function to execute an order using the shimless method +/// +/// # Arguments +/// +/// * `testing_context`: The testing context of the testing engine +/// * `test_context`: A mutable reference to the test context +/// * `current_state`: The current state of the testing engine +/// * `config`: The execute order instruction config +/// * `auction_accounts`: The auction accounts +/// +/// # Returns +/// +/// The new state of the testing engine +pub async fn execute_order_shimless( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &ExecuteOrderInstructionConfig, + auction_accounts: &AuctionAccounts, +) -> TestingEngineState { + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let auction_state = current_state.auction_state(); + let slots_to_fast_forward = config.fast_forward_slots; + if slots_to_fast_forward > 0 { + crate::testing_engine::engine::fast_forward_slots(test_context, slots_to_fast_forward) + .await; + } + let execute_order_accounts: ExecuteOrderShimlessAccounts = + create_execute_order_shimless_accounts( + testing_context, + auction_accounts, + &payer_signer, + auction_state, + config, + ); + let execute_order_instruction_data = ExecuteOrderShimlessInstruction {}.data(); + let execute_order_ix = Instruction { + program_id: testing_context.get_matching_engine_program_id(), + accounts: execute_order_accounts.to_account_metas(None), + data: execute_order_instruction_data, + }; + let tx = Transaction::new_signed_with_payer( + &[execute_order_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + testing_context + .get_new_latest_blockhash(test_context) + .await + .unwrap(), + ); + let expected_error = config.expected_error(); + testing_context + .execute_and_verify_transaction(test_context, tx, expected_error) + .await; + if config.expected_error.is_none() { + let order_executed_state = OrderExecutedState { + cctp_message: execute_order_accounts.cctp_message, + post_message_sequence: None, + post_message_message: None, + actor_enum: config.actor_enum, + }; + TestingEngineState::OrderExecuted { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + auction_state: current_state.auction_state().clone(), + order_executed: order_executed_state, + auction_accounts: auction_accounts.clone(), + order_prepared: current_state.order_prepared().cloned(), + } + } else { + current_state.clone() + } +} + +/// Create execute order shimless accounts +/// +/// Helper function to create the accounts needed for the execute order instruction +/// +/// # Arguments +/// +/// * `testing_context`: The testing context +/// * `auction_accounts`: The auction accounts +/// * `payer_signer`: The payer signer +/// * `auction_state`: The auction state +/// * `config`: The execute order instruction config +/// +/// # Returns +/// +/// The execute order shimless accounts +fn create_execute_order_shimless_accounts( + testing_context: &TestingContext, + auction_accounts: &AuctionAccounts, + payer_signer: &Rc, + auction_state: &AuctionState, + config: &ExecuteOrderInstructionConfig, +) -> ExecuteOrderShimlessAccounts { + let fixture_accounts = testing_context + .get_fixture_accounts() + .expect("Fixture accounts not found"); + let executor_token = config + .actor_enum + .get_actor(&testing_context.testing_actors) + .token_account_address(&config.token_enum) + .unwrap_or_else(|| { + auction_state + .get_active_auction() + .unwrap() + .best_offer + .offer_token + }); + let active_auction_state = auction_state.get_active_auction().unwrap(); + let active_auction_address = active_auction_state.auction_address; + let active_auction_custody_token = active_auction_state.auction_custody_token_address; + let cctp_message = Pubkey::find_program_address( + &[ + common::CCTP_MESSAGE_SEED_PREFIX, + &active_auction_address.to_bytes(), + ], + &testing_context.get_matching_engine_program_id(), + ) + .0; + let to_router_endpoint = LiveRouterEndpoint { + endpoint: auction_accounts.to_router_endpoint, + }; + // TODO: FIGURE out how to get this + let emitter_sequence = wormhole_svm_definitions::find_emitter_sequence_address( + &auction_accounts.custodian, + &wormhole_svm_definitions::solana::CORE_BRIDGE_PROGRAM_ID, + ) + .0; + let checked_custodian = matching_engine::accounts::CheckedCustodian { + custodian: auction_accounts.custodian, + }; + let wormhole_publish_message = WormholePublishMessage { + config: wormhole_svm_definitions::solana::CORE_BRIDGE_CONFIG, + emitter_sequence, + fee_collector: wormhole_svm_definitions::solana::CORE_BRIDGE_FEE_COLLECTOR, + core_bridge_program: wormhole_svm_definitions::solana::CORE_BRIDGE_PROGRAM_ID, + }; + let fast_vaa = LiquidityLayerVaa { + vaa: auction_accounts.posted_fast_vaa.unwrap(), + }; + let active_auction = matching_engine::accounts::ActiveAuction { + auction: active_auction_address, + custody_token: active_auction_custody_token, + config: auction_accounts.auction_config, + best_offer_token: active_auction_state.best_offer.offer_token, + }; + let execute_order = matching_engine::accounts::ExecuteOrder { + fast_vaa, + active_auction, + executor_token, + initial_participant: active_auction_state.initial_offer.participant, + initial_offer_token: active_auction_state.initial_offer.offer_token, + }; + let core_message = Pubkey::find_program_address( + &[ + common::CORE_MESSAGE_SEED_PREFIX, + &active_auction_address.to_bytes(), + ], + &testing_context.get_matching_engine_program_id(), + ) + .0; + let sysvars = RequiredSysvars { + clock: Clock::id(), + rent: Rent::id(), + }; + let token_messenger_minter_event_authority = + Pubkey::find_program_address(&[EVENT_AUTHORITY_SEED], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let local_token = Pubkey::find_program_address( + &[ + b"local_token", + &testing_context.get_usdc_mint_address().to_bytes(), + ], + &TOKEN_MESSENGER_MINTER_PROGRAM_ID, + ) + .0; + let token_messenger_minter_sender_authority = + Pubkey::find_program_address(&[b"sender_authority"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let message_transmitter_config = + Pubkey::find_program_address(&[b"message_transmitter"], &MESSAGE_TRANSMITTER_PROGRAM_ID).0; + let token_messenger = + Pubkey::find_program_address(&[b"token_messenger"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let remote_token_messenger = match testing_context.transfer_direction { + TransferDirection::FromEthereumToArbitrum => { + fixture_accounts.arbitrum_remote_token_messenger + } + TransferDirection::FromArbitrumToEthereum => { + fixture_accounts.ethereum_remote_token_messenger + } + _ => panic!("Unsupported transfer direction"), + }; + let token_minter = + Pubkey::find_program_address(&[b"token_minter"], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + let cctp = CctpDepositForBurn { + mint: testing_context.get_usdc_mint_address(), + local_token, + token_messenger_minter_sender_authority, + message_transmitter_config, + token_messenger, + remote_token_messenger, + token_minter, + token_messenger_minter_event_authority, + message_transmitter_program: MESSAGE_TRANSMITTER_PROGRAM_ID, + token_messenger_minter_program: TOKEN_MESSENGER_MINTER_PROGRAM_ID, + }; + + let event_authority = Pubkey::find_program_address( + &[EVENT_AUTHORITY_SEED], + &testing_context.get_matching_engine_program_id(), + ) + .0; + ExecuteOrderShimlessAccounts { + payer: payer_signer.pubkey(), + core_message, + cctp_message, + to_router_endpoint, + custodian: checked_custodian, + execute_order, + wormhole: wormhole_publish_message, + cctp, + system_program: solana_program::system_program::ID, + token_program: anchor_spl::token::spl_token::ID, + event_authority, + program: testing_context.get_matching_engine_program_id(), + sysvars, + } +} diff --git a/solana/modules/matching-engine-testing/tests/shimless/initialize.rs b/solana/modules/matching-engine-testing/tests/shimless/initialize.rs new file mode 100644 index 000000000..24234dd3a --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/initialize.rs @@ -0,0 +1,340 @@ +use solana_program_test::ProgramTestContext; +use solana_sdk::{ + instruction::Instruction, pubkey::Pubkey, signature::Signer, transaction::VersionedTransaction, +}; + +use anchor_lang::AccountDeserialize; +use anchor_spl::{associated_token::spl_associated_token_account, token::spl_token}; +use solana_program::{bpf_loader_upgradeable, system_program}; + +use crate::{ + testing_engine::{ + config::{InitializeInstructionConfig, InstructionConfig}, + setup::TestingActors, + state::{InitializedState, TestingEngineState}, + }, + utils::token_account::SplTokenEnum, +}; + +use crate::testing_engine::setup::TestingContext; +use anchor_lang::{InstructionData, ToAccountMetas}; +use matching_engine::{ + accounts::Initialize, + state::{AuctionConfig, AuctionParameters, Custodian}, + InitializeArgs, +}; + +/// Initialize the program +/// +/// Initialize the program with the given configuration +/// +/// # Arguments +/// +/// * `testing_context`: The testing context of the testing engine +/// * `test_context`: Mutable reference to the program test context +/// * `initial_state`: The initial state of the testing engine +/// * `config`: The configuration for the initialize instruction +/// +/// # Returns +/// +/// The state of the testing engine after the initialize instruction +pub async fn initialize_program( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + initial_state: &TestingEngineState, + config: &InitializeInstructionConfig, +) -> TestingEngineState { + let auction_parameters_config = config.auction_parameters_config.clone(); + let expected_error = config.expected_error(); + let expected_log_messages = config.expected_log_messages(); + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + // Create the initialize addresses + let initialize_addresses = + InitializeAddresses::new(testing_context, &auction_parameters_config); + // Create the initialize instruction + let instruction = initialize_program_instruction(testing_context, &auction_parameters_config); + // Create and sign transaction + let transaction = testing_context + .create_transaction( + test_context, + &[instruction], + Some(&payer_signer.pubkey()), + &[ + &payer_signer, + &testing_context.testing_actors.owner.keypair(), + ], + None, + None, + ) + .await; + // Process transaction + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; + + if let Some(expected_log_messages) = expected_log_messages { + // Recreate the instruction + let instruction = + initialize_program_instruction(testing_context, &auction_parameters_config); + let transaction = testing_context + .create_transaction( + test_context, + &[instruction], + Some(&payer_signer.pubkey()), + &[ + &payer_signer, + &testing_context.testing_actors.owner.keypair(), + ], + None, + None, + ) + .await; + let versioned_transaction = VersionedTransaction::from(transaction); + + // Simulate and verify logs + testing_context + .simulate_and_verify_logs(test_context, versioned_transaction, expected_log_messages) + .await + .expect("Failed to verify logs"); + } + + if expected_error.is_none() { + // Verify the results + let custodian_account = test_context + .banks_client + .get_account(initialize_addresses.custodian_address) + .await + .expect("Failed to get custodian account") + .expect("Custodian account not found"); + + let custodian = Custodian::try_deserialize(&mut custodian_account.data.as_slice()).unwrap(); + verify_custodian(&custodian, &testing_context.testing_actors); + + TestingEngineState::Initialized { + base: initial_state.base().clone(), + initialized: InitializedState { + auction_config_address: initialize_addresses.auction_config_address, + custodian_address: initialize_addresses.custodian_address, + }, + } + } else { + initial_state.clone() + } +} + +/// Initialize program instruction +/// +/// Create the initialize instruction for the program +/// +/// # Arguments +/// +/// * `testing_context`: The testing context of the testing engine +/// * `auction_parameters_config`: The configuration for the auction parameters +/// +/// # Returns +/// +/// The initialize instruction for the program +pub fn initialize_program_instruction( + testing_context: &TestingContext, + auction_parameters_config: &AuctionParametersConfig, +) -> Instruction { + let program_id = testing_context.get_matching_engine_program_id(); + let usdc_mint_address = testing_context.get_usdc_mint_address(); + let initialize_addresses = InitializeAddresses::new(testing_context, auction_parameters_config); + let InitializeAddresses { + custodian_address: custodian, + auction_config_address: auction_config, + cctp_mint_recipient, + } = initialize_addresses; + // Create AuctionParameters + let auction_params: AuctionParameters = auction_parameters_config.into(); + + // Create the instruction data + let ix_data = matching_engine::instruction::Initialize { + args: InitializeArgs { auction_params }, + }; + + // Get account metas + let accounts = Initialize { + owner: testing_context.testing_actors.owner.pubkey(), + custodian, + auction_config, + owner_assistant: testing_context.testing_actors.owner_assistant.pubkey(), + fee_recipient: testing_context.testing_actors.fee_recipient.pubkey(), + fee_recipient_token: testing_context + .testing_actors + .fee_recipient + .token_account_address(&SplTokenEnum::Usdc) + .unwrap(), + cctp_mint_recipient, + usdc: matching_engine::accounts::Usdc { + mint: usdc_mint_address, + }, + program_data: testing_context.program_data_account, + upgrade_manager_authority: common::UPGRADE_MANAGER_AUTHORITY, + upgrade_manager_program: common::UPGRADE_MANAGER_PROGRAM_ID, + bpf_loader_upgradeable_program: bpf_loader_upgradeable::id(), + system_program: system_program::id(), + token_program: spl_token::id(), + associated_token_program: spl_associated_token_account::id(), + }; + + // Create the instruction + Instruction { + program_id, + accounts: accounts.to_account_metas(None), + data: ix_data.data(), + } +} + +/// Initialize addresses +/// +/// All the addresses created by the initialize instruction +#[derive(Clone)] +pub struct InitializeAddresses { + pub custodian_address: Pubkey, + pub auction_config_address: Pubkey, + pub cctp_mint_recipient: Pubkey, +} + +impl InitializeAddresses { + pub fn new( + testing_context: &TestingContext, + auction_parameters_config: &AuctionParametersConfig, + ) -> Self { + let program_id = testing_context.get_matching_engine_program_id(); + let cctp_mint_recipient = testing_context.get_cctp_mint_recipient(); + let (custodian, _custodian_bump) = + Pubkey::find_program_address(&[Custodian::SEED_PREFIX], &program_id); + + let (auction_config, _auction_config_bump) = Pubkey::find_program_address( + &[ + AuctionConfig::SEED_PREFIX, + &auction_parameters_config.config_id.to_be_bytes(), + ], + &program_id, + ); + + Self { + custodian_address: custodian, + auction_config_address: auction_config, + cctp_mint_recipient, + } + } +} + +/// Test custodian +/// +/// A test custodian for verifying the initialized custodian +#[derive(Debug, PartialEq, Eq)] +struct TestCustodian { + owner: Pubkey, + pending_owner: Option, + paused: bool, + paused_set_by: Pubkey, + owner_assistant: Pubkey, + fee_recipient_token: Pubkey, + auction_config_id: u32, + next_proposal_id: u64, +} + +impl From<&Custodian> for TestCustodian { + fn from(c: &Custodian) -> Self { + Self { + owner: c.owner, + pending_owner: c.pending_owner, + paused: c.paused, + paused_set_by: c.paused_set_by, + owner_assistant: c.owner_assistant, + fee_recipient_token: c.fee_recipient_token, + auction_config_id: c.auction_config_id, + next_proposal_id: c.next_proposal_id, + } + } +} + +/// Verify custodian +/// +/// Verify the initialized custodian +/// +/// # Arguments +/// +/// * `custodian`: The initialized custodian +/// * `testing_actors`: The testing actors of the testing context of the testing engine +/// +/// # Returns +/// +/// The initialized custodian +fn verify_custodian(custodian: &Custodian, testing_actors: &TestingActors) { + let expected_custodian = TestCustodian { + owner: testing_actors.owner.pubkey(), + pending_owner: None, + paused: false, + paused_set_by: testing_actors.owner.pubkey(), + owner_assistant: testing_actors.owner_assistant.pubkey(), + fee_recipient_token: testing_actors + .fee_recipient + .token_account_address(&SplTokenEnum::Usdc) + .unwrap(), + auction_config_id: 0, + next_proposal_id: 0, + }; + + let actual_custodian = TestCustodian::from(custodian); + assert_eq!(actual_custodian, expected_custodian); +} + +/// Auction parameters config +/// +/// The configuration for the auction parameters +#[derive(Clone)] +pub struct AuctionParametersConfig { + // Auction config iid used for seeding the auction config account + pub config_id: u32, + // Fields in the auction parameters account + pub user_penalty_reward_bps: u32, + pub initial_penalty_bps: u32, + pub duration: u16, + pub grace_period: u16, + pub penalty_period: u16, + pub min_offer_delta_bps: u32, + pub security_deposit_base: u64, + pub security_deposit_bps: u32, +} + +impl Default for AuctionParametersConfig { + fn default() -> Self { + Self { + config_id: 0, + user_penalty_reward_bps: 250_000, // 25% + initial_penalty_bps: 250_000, // 25% + duration: 2, + grace_period: 5, + penalty_period: 10, + min_offer_delta_bps: 20_000, // 2% + security_deposit_base: 4_200_000, + security_deposit_bps: 5_000, // 0.5% + } + } +} + +/// Convert auction parameters config to auction parameters +/// +/// Convert the auction parameters config to an auction parameters account +impl From<&AuctionParametersConfig> for AuctionParameters { + fn from(val: &AuctionParametersConfig) -> Self { + AuctionParameters { + user_penalty_reward_bps: val.user_penalty_reward_bps, + initial_penalty_bps: val.initial_penalty_bps, + duration: val.duration, + grace_period: val.grace_period, + penalty_period: val.penalty_period, + min_offer_delta_bps: val.min_offer_delta_bps, + security_deposit_base: val.security_deposit_base, + security_deposit_bps: val.security_deposit_bps, + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/shimless/make_offer.rs b/solana/modules/matching-engine-testing/tests/shimless/make_offer.rs new file mode 100644 index 000000000..ce7823668 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/make_offer.rs @@ -0,0 +1,430 @@ +use crate::testing_engine::config::ImproveOfferInstructionConfig; +use crate::testing_engine::config::InstructionConfig; +use crate::testing_engine::config::PlaceInitialOfferInstructionConfig; +use crate::testing_engine::state::TestingEngineState; +use crate::utils::auction::AuctionAccounts; + +use super::super::utils; +use anchor_lang::prelude::*; +use anchor_lang::InstructionData; + +use crate::testing_engine::setup::TestingContext; +use common::TRANSFER_AUTHORITY_SEED_PREFIX; +use matching_engine::accounts::ImproveOffer as ImproveOfferAccounts; +use matching_engine::accounts::{ + ActiveAuction, CheckedCustodian, FastOrderPath, LiquidityLayerVaa, LiveRouterEndpoint, + LiveRouterPath, PlaceInitialOfferCctp as PlaceInitialOfferCctpAccounts, Usdc, +}; +use matching_engine::instruction::{ + ImproveOffer as ImproveOfferIx, PlaceInitialOfferCctp as PlaceInitialOfferCctpIx, +}; +use matching_engine::state::Auction; +use solana_program_test::ProgramTestContext; +use solana_sdk::instruction::Instruction; +use solana_sdk::signature::Signer; +use solana_sdk::transaction::Transaction; +use utils::auction::{ActiveAuctionState, AuctionOffer, AuctionState}; + +/// Place an initial offer (shimless) +/// +/// Place an initial offer by providing a price. +/// +/// # Arguments +/// +/// * `testing_context`: The testing context of the testing engine +/// * `test_context`: Mutable reference to the program test context +/// * `current_state`: The current state of the testing engine +/// * `config`: The configuration for the place initial offer instruction +/// +/// # Returns +/// +/// The new state of the testing engine (if successful), otherwise the old state. +pub async fn place_initial_offer_shimless( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PlaceInitialOfferInstructionConfig, +) -> TestingEngineState { + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let offer_actor = config.actor.get_actor(&testing_context.testing_actors); + let offer_token = offer_actor + .token_account_address(&config.spl_token_enum) + .unwrap(); + let expected_error = config.expected_error(); + let fast_vaa = ¤t_state + .base() + .vaas + .get(config.test_vaa_pair_index) + .expect("Failed to get vaa pair") + .fast_transfer_vaa; + let auction_config_address = current_state + .initialized() + .expect("Testing state is not initialized") + .auction_config_address; + let custodian_address = current_state + .initialized() + .expect("Testing state is not initialized") + .custodian_address; + let program_id = testing_context.get_matching_engine_program_id(); + let auction_address = Pubkey::find_program_address( + &[Auction::SEED_PREFIX, &fast_vaa.vaa_data.digest()], + &program_id, + ) + .0; + let auction_custody_token_address = Pubkey::find_program_address( + &[ + matching_engine::AUCTION_CUSTODY_TOKEN_SEED_PREFIX, + auction_address.as_ref(), + ], + &program_id, + ) + .0; + let initial_offer_ix = PlaceInitialOfferCctpIx { + offer_price: config.offer_price, + }; + let (from_router_endpoint, to_router_endpoint) = match &config.custom_accounts { + Some(custom_accounts) => { + let from_router_endpoint = match custom_accounts.from_router_endpoint { + Some(from_router_endpoint) => from_router_endpoint, + None => { + current_state + .router_endpoints() + .expect("Router endpoints are not initialized") + .endpoints + .get_from_and_to_endpoint_addresses(current_state.base().transfer_direction) + .0 + } + }; + let to_router_endpoint = match custom_accounts.to_router_endpoint { + Some(to_router_endpoint) => to_router_endpoint, + None => { + current_state + .router_endpoints() + .expect("Router endpoints are not initialized") + .endpoints + .get_from_and_to_endpoint_addresses(current_state.base().transfer_direction) + .1 + } + }; + (from_router_endpoint, to_router_endpoint) + } + None => current_state + .router_endpoints() + .expect("Router endpoints are not initialized") + .endpoints + .get_from_and_to_endpoint_addresses(current_state.base().transfer_direction), + }; + let fast_order_path = FastOrderPath { + fast_vaa: LiquidityLayerVaa { + vaa: fast_vaa.vaa_pubkey, + }, + path: LiveRouterPath { + from_endpoint: LiveRouterEndpoint { + endpoint: from_router_endpoint, + }, + to_endpoint: LiveRouterEndpoint { + endpoint: to_router_endpoint, + }, + }, + }; + + let event_authority = Pubkey::find_program_address(&[b"__event_authority"], &program_id).0; + let transfer_authority = Pubkey::find_program_address( + &[ + TRANSFER_AUTHORITY_SEED_PREFIX, + &auction_address.to_bytes(), + &initial_offer_ix.offer_price.to_be_bytes(), + ], + &program_id, + ) + .0; + { + // Check if solver has already approved usdc + let usdc_account = offer_actor + .token_account_address(&config.spl_token_enum) + .unwrap(); + let usdc_account_info = test_context + .banks_client + .get_account(usdc_account) + .await + .unwrap() + .unwrap(); + let token_account_info = anchor_spl::token::TokenAccount::try_deserialize( + &mut usdc_account_info.data.as_slice(), + ) + .expect("Failed to deserialize usdc account"); + if token_account_info.delegate.is_none() { + offer_actor + .approve_spl_token( + test_context, + &transfer_authority, + 420_000__000_000, + &config.spl_token_enum, + ) + .await; + } else { + let delegate = token_account_info.delegate.unwrap(); + if delegate != transfer_authority { + offer_actor + .approve_spl_token( + test_context, + &transfer_authority, + 420_000__000_000, + &config.spl_token_enum, + ) + .await; + } + } + } + + let custodian = CheckedCustodian { + custodian: custodian_address, + }; + let usdc_mint_address = match &config.custom_accounts { + Some(custom_accounts) => match custom_accounts.mint_address { + Some(usdc_mint_address) => usdc_mint_address, + None => testing_context.get_usdc_mint_address(), + }, + None => testing_context.get_usdc_mint_address(), + }; + let initial_offer_accounts = PlaceInitialOfferCctpAccounts { + payer: payer_signer.pubkey(), + transfer_authority, + custodian, + auction_config: auction_config_address, + fast_order_path, + auction: auction_address, + offer_token: offer_actor + .token_account_address(&config.spl_token_enum) + .unwrap(), + auction_custody_token: auction_custody_token_address, + usdc: Usdc { + mint: usdc_mint_address, + }, + system_program: anchor_lang::system_program::ID, + token_program: anchor_spl::token::ID, + program: program_id, + event_authority, + }; + + let mut account_metas = initial_offer_accounts.to_account_metas(None); + for meta in account_metas.iter_mut() { + if meta.pubkey == offer_token { + meta.is_writable = true; + } + } + + let initial_offer_ix_anchor = Instruction { + program_id, + accounts: account_metas, + data: initial_offer_ix.data(), + }; + + let tx = Transaction::new_signed_with_payer( + &[initial_offer_ix_anchor], + Some(&payer_signer.pubkey()), + &[&payer_signer], + testing_context + .get_new_latest_blockhash(test_context) + .await + .unwrap(), + ); + + testing_context + .execute_and_verify_transaction(test_context, tx, expected_error) + .await; + + // If the transaction failed and we expected it to pass, we would not get here + if expected_error.is_none() { + let auction_state = AuctionState::Active(Box::new(ActiveAuctionState { + auction_address, + auction_custody_token_address, + auction_config_address, + initial_offer: AuctionOffer { + actor: config.actor, + participant: payer_signer.pubkey(), + offer_token, + offer_price: initial_offer_ix.offer_price, + }, + best_offer: AuctionOffer { + actor: config.actor, + participant: payer_signer.pubkey(), + offer_token, + offer_price: initial_offer_ix.offer_price, + }, + spl_token_enum: config.spl_token_enum.clone(), + })); + + let auction_accounts = AuctionAccounts::new( + Some(fast_vaa.get_vaa_pubkey()), + offer_actor.clone(), + current_state.close_account_refund_recipient(), + auction_config_address, + ¤t_state + .router_endpoints() + .expect("Router endpoints are not created") + .endpoints, + custodian_address, + config.spl_token_enum.clone(), + current_state.base().transfer_direction, + ); + + auction_state + .get_active_auction() + .unwrap() + .verify_auction(testing_context, test_context) + .await + .expect("Could not verify auction state"); + return TestingEngineState::InitialOfferPlaced { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + auction_state, + auction_accounts, + order_prepared: current_state.order_prepared().cloned(), + }; + } + current_state.clone() +} + +/// Improve an offer (shimless) +/// +/// Improve an offer by providing a new price. +/// +/// # Arguments +/// +/// * `testing_context`: The testing context of the testing engine +/// * `test_context`: Mutable reference to the program test context +/// * `current_state`: The current state of the testing engine +/// * `config`: The configuration for the improve offer instruction +/// +/// # Returns +/// +/// The new state of the testing engine +pub async fn improve_offer( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &ImproveOfferInstructionConfig, +) -> TestingEngineState { + let initial_auction_state = current_state.auction_state(); + let actor = config.actor.get_actor(&testing_context.testing_actors); + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let program_id = testing_context.get_matching_engine_program_id(); + let active_auction_state = initial_auction_state.get_active_auction().unwrap(); + let auction_config = active_auction_state.auction_config_address; + let auction_address = active_auction_state.auction_address; + let auction_custody_token_address = active_auction_state.auction_custody_token_address; + let offer_price = config.offer_price; + let improve_offer_ix = ImproveOfferIx { offer_price }; + + let event_authority = Pubkey::find_program_address(&[b"__event_authority"], &program_id).0; + let transfer_authority = Pubkey::find_program_address( + &[ + TRANSFER_AUTHORITY_SEED_PREFIX, + &auction_address.to_bytes(), + &improve_offer_ix.offer_price.to_be_bytes(), + ], + &program_id, + ) + .0; + let spl_token_enum = &active_auction_state.spl_token_enum; + actor + .approve_spl_token( + test_context, + &transfer_authority, + 420_000__000_000, + spl_token_enum, + ) + .await; + let offer_token = actor.token_account_address(spl_token_enum).unwrap(); + + let active_auction = ActiveAuction { + auction: auction_address, + custody_token: auction_custody_token_address, + config: auction_config, + best_offer_token: active_auction_state.best_offer.offer_token, + }; + let improve_offer_accounts = ImproveOfferAccounts { + transfer_authority, + active_auction, + offer_token, + token_program: anchor_spl::token::ID, + event_authority, + program: program_id, + }; + + let mut account_metas = improve_offer_accounts.to_account_metas(None); + for meta in account_metas.iter_mut() { + if meta.pubkey == active_auction_state.best_offer.offer_token { + meta.is_writable = true; + } + } + + // TODO: Figure out better name for this + let improve_offer_ix_anchor = Instruction { + program_id, + accounts: account_metas, + data: improve_offer_ix.data(), + }; + + let tx = Transaction::new_signed_with_payer( + &[improve_offer_ix_anchor], + Some(&payer_signer.pubkey()), + &[&payer_signer], + testing_context + .get_new_latest_blockhash(test_context) + .await + .unwrap(), + ); + + let expected_error = config.expected_error(); + testing_context + .execute_and_verify_transaction(test_context, tx, expected_error) + .await; + + // If the transaction failed and we expected it to pass, we would not get here + if expected_error.is_none() { + let initial_offer = &initial_auction_state + .get_active_auction() + .unwrap() + .initial_offer; + let new_auction_state = AuctionState::Active(Box::new(ActiveAuctionState { + auction_address, + auction_custody_token_address, + auction_config_address: auction_config, + initial_offer: initial_offer.clone(), + best_offer: AuctionOffer { + actor: config.actor, + participant: payer_signer.pubkey(), + offer_token, + offer_price, + }, + spl_token_enum: spl_token_enum.clone(), + })); + + new_auction_state + .get_active_auction() + .unwrap() + .verify_auction(testing_context, test_context) + .await + .expect("Could not verify auction state"); + return TestingEngineState::OfferImproved { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + auction_state: new_auction_state, + auction_accounts: current_state.auction_accounts().cloned(), + order_prepared: current_state.order_prepared().cloned(), + }; + } + current_state.clone() +} diff --git a/solana/modules/matching-engine-testing/tests/shimless/mod.rs b/solana/modules/matching-engine-testing/tests/shimless/mod.rs new file mode 100644 index 000000000..862f95894 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/mod.rs @@ -0,0 +1,9 @@ +#![allow(clippy::expect_used)] + +pub mod execute_order; +pub mod initialize; +pub mod make_offer; +pub mod pause_custodian; +pub mod prepare_order_response; +pub mod settle_auction; +pub mod settle_auction_none_cctp; diff --git a/solana/modules/matching-engine-testing/tests/shimless/pause_custodian.rs b/solana/modules/matching-engine-testing/tests/shimless/pause_custodian.rs new file mode 100644 index 000000000..d3646cfe9 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/pause_custodian.rs @@ -0,0 +1,71 @@ +use std::rc::Rc; + +use crate::testing_engine::config::ExpectedError; + +use crate::testing_engine::state::TestingEngineState; + +use anchor_lang::prelude::*; +use anchor_lang::InstructionData; +use matching_engine::accounts::AdminMut; + +use crate::testing_engine::setup::TestingContext; + +use matching_engine::accounts::SetPause as SetPauseAccounts; +use matching_engine::instruction::SetPause as SetPauseIx; +use solana_program_test::ProgramTestContext; +use solana_sdk::instruction::Instruction; +use solana_sdk::signature::Keypair; +use solana_sdk::signature::Signer; +use solana_sdk::transaction::Transaction; + +/// Pause the custodian +/// +/// # Arguments +/// +/// * `test_context` - The test context +/// * `current_state` - The current state +/// * `config` - The config +/// +/// # Returns +/// +/// The new paused state +pub async fn set_pause( + test_context: &mut ProgramTestContext, + testing_context: &TestingContext, + current_state: &TestingEngineState, + owner_or_assistant: &Rc, + expected_error: Option<&ExpectedError>, + is_paused: bool, +) -> TestingEngineState { + let custodian_address = current_state.initialized().unwrap().custodian_address; + let admin_mut = AdminMut { + owner_or_assistant: owner_or_assistant.pubkey(), + custodian: custodian_address, + }; + let accounts = SetPauseAccounts { admin: admin_mut }; + let instruction_data = SetPauseIx { pause: is_paused }.data(); + let instruction = Instruction { + program_id: testing_context.get_matching_engine_program_id(), + accounts: accounts.to_account_metas(None), + data: instruction_data, + }; + let transaction = Transaction::new_signed_with_payer( + &[instruction], + Some(&owner_or_assistant.pubkey()), + &[&owner_or_assistant], + test_context.last_blockhash, + ); + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; + + let new_auction_state = current_state.auction_state().set_pause(is_paused); + + let expect_msg = format!( + "Failed to set {} auction state", + if is_paused { "pause" } else { "unpause" } + ); + current_state + .set_auction_state(new_auction_state) + .expect(&expect_msg) +} diff --git a/solana/modules/matching-engine-testing/tests/shimless/prepare_order_response.rs b/solana/modules/matching-engine-testing/tests/shimless/prepare_order_response.rs new file mode 100644 index 000000000..9478ab72a --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/prepare_order_response.rs @@ -0,0 +1,298 @@ +use crate::testing_engine::config::{InstructionConfig, PrepareOrderResponseInstructionConfig}; +use crate::testing_engine::setup::{TestingContext, TransferDirection}; +use crate::testing_engine::state::{OrderPreparedState, TestingEngineState}; +use crate::utils; +use crate::utils::cctp_message::UsedNonces; +use anchor_lang::InstructionData; +use anchor_lang::{prelude::*, system_program}; +use anchor_spl::token::spl_token; +use common::wormhole_cctp_solana::cctp::{ + MESSAGE_TRANSMITTER_PROGRAM_ID, TOKEN_MESSENGER_MINTER_PROGRAM_ID, +}; +use matching_engine::accounts::{ + CctpMintRecipientMut, CctpReceiveMessage, CheckedCustodian, FastOrderPath, LiquidityLayerVaa, + LiveRouterEndpoint, LiveRouterPath, + PrepareOrderResponseCctp as PrepareOrderResponseCctpAccounts, Usdc, +}; +use matching_engine::instruction::PrepareOrderResponseCctp as PrepareOrderResponseCctpIx; +use matching_engine::state::PreparedOrderResponse; +use matching_engine::CctpMessageArgs; +use solana_program_test::ProgramTestContext; +use solana_sdk::instruction::Instruction; +use solana_sdk::signature::Signer; +use solana_sdk::transaction::Transaction; +use wormhole_svm_definitions::EVENT_AUTHORITY_SEED; + +/// Prepare an order response (shimless) +/// +/// Prepare an order response by providing a fast market order. +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The test context +/// * `config` - The prepare order response instruction config +/// * `current_state` - The current state +/// * `base_fee_token_address` - The base fee token address +/// +/// # Returns +/// +/// The new state after the prepare order response instruction is executed +pub async fn prepare_order_response( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + config: &PrepareOrderResponseInstructionConfig, + current_state: &TestingEngineState, +) -> TestingEngineState { + let auction_accounts = config + .overwrite_auction_accounts + .as_ref() + .unwrap_or_else(|| { + current_state + .auction_accounts() + .expect("Auction accounts not found") + }); + + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let (prepare_order_response_ix, order_prepared_state) = + prepare_order_response_shimless_instruction( + testing_context, + test_context, + config, + current_state, + ) + .await; + + let transaction = Transaction::new_signed_with_payer( + &[prepare_order_response_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + testing_context + .get_new_latest_blockhash(test_context) + .await + .expect("Failed to get new blockhash"), + ); + let expected_error = config.expected_error(); + let expected_log_messages = config.expected_log_messages(); + if let Some(expected_log_messages) = expected_log_messages { + testing_context + .simulate_and_verify_logs(test_context, transaction, expected_log_messages) + .await + .unwrap(); + } else { + testing_context + .execute_and_verify_transaction(test_context, transaction, expected_error) + .await; + } + if config.expected_error.is_none() { + TestingEngineState::OrderPrepared { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + auction_state: current_state.auction_state().clone(), + order_prepared: order_prepared_state, + auction_accounts: auction_accounts.clone(), + } + } else { + current_state.clone() + } +} + +/// Create the prepare order response instruction and order prepared state +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The test context +/// * `config` - The prepare order response instruction config +/// * `current_state` - The current state +/// +/// # Returns +/// +/// The prepare order response instruction and order prepared state +pub async fn prepare_order_response_shimless_instruction( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + config: &PrepareOrderResponseInstructionConfig, + current_state: &TestingEngineState, +) -> (Instruction, OrderPreparedState) { + let auction_accounts = config + .overwrite_auction_accounts + .as_ref() + .unwrap_or_else(|| { + current_state + .auction_accounts() + .expect("Auction accounts not found") + }); + let base_fee_token_address = config + .actor_enum + .get_actor(&testing_context.testing_actors) + .token_account_address(&config.token_enum) + .expect("Token account does not exist for solver at index"); + let to_endpoint_address = &auction_accounts.to_router_endpoint; + let from_endpoint_address = &auction_accounts.from_router_endpoint; + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + + let matching_engine_program_id = &testing_context.get_matching_engine_program_id(); + let usdc_mint_address = &testing_context.get_usdc_mint_address(); + let cctp_mint_recipient = &testing_context.get_cctp_mint_recipient(); + let fixture_accounts = testing_context + .fixture_accounts + .clone() + .expect("Fixture accounts not found"); + + let vaa_pair = current_state.get_test_vaa_pair(config.vaa_index); + let posted_fast_transfer_vaa = vaa_pair.clone().fast_transfer_vaa; + let posted_fast_transfer_vaa_address = posted_fast_transfer_vaa.vaa_pubkey; + let cctp_nonce = vaa_pair + .deposit_vaa + .get_payload_deserialized() + .unwrap() + .get_deposit() + .unwrap() + .cctp_nonce; + let custodian_address = current_state + .custodian_address() + .expect("Custodian address not found"); + // TODO: Make checks to see if fast market order sender matches cctp message sender ... + let cctp_token_burn_message = utils::cctp_message::craft_cctp_token_burn_message( + testing_context, + test_context, + current_state, + config.vaa_index, + ) + .await + .unwrap(); + let checked_custodian = CheckedCustodian { + custodian: custodian_address, + }; + let fast_transfer_liquidity_layer_vaa = LiquidityLayerVaa { + vaa: posted_fast_transfer_vaa_address, + }; + let fast_order_path = FastOrderPath { + fast_vaa: fast_transfer_liquidity_layer_vaa, + path: LiveRouterPath { + to_endpoint: LiveRouterEndpoint { + endpoint: *to_endpoint_address, + }, + from_endpoint: LiveRouterEndpoint { + endpoint: *from_endpoint_address, + }, + }, + }; + let finalized_vaa = LiquidityLayerVaa { + vaa: vaa_pair.deposit_vaa.vaa_pubkey, + }; + let fast_transfer_digest = posted_fast_transfer_vaa.get_vaa_data().digest(); + let prepared_order_response_seeds = [ + PreparedOrderResponse::SEED_PREFIX, + fast_transfer_digest.as_ref(), + ]; + let (prepared_order_response_pda, _prepared_order_response_bump) = + Pubkey::find_program_address(&prepared_order_response_seeds, matching_engine_program_id); + let prepared_custody_token_seeds = [ + matching_engine::PREPARED_CUSTODY_TOKEN_SEED_PREFIX, + prepared_order_response_pda.as_ref(), + ]; + let (prepared_custody_token_pda, _prepared_custody_token_bump) = + Pubkey::find_program_address(&prepared_custody_token_seeds, matching_engine_program_id); + + let usdc = Usdc { + mint: *usdc_mint_address, + }; + + let remote_token_messenger = testing_context + .get_remote_token_messenger(test_context) + .await; + + let (used_nonces_pda, _used_nonces_bump) = + UsedNonces::address(remote_token_messenger.domain, cctp_nonce); + let cctp_message_transmitter_authority = Pubkey::find_program_address( + &[ + b"message_transmitter_authority", + &TOKEN_MESSENGER_MINTER_PROGRAM_ID.as_ref(), + ], + &MESSAGE_TRANSMITTER_PROGRAM_ID, + ) + .0; + let token_messenger_minter_event_authority = + Pubkey::find_program_address(&[EVENT_AUTHORITY_SEED], &TOKEN_MESSENGER_MINTER_PROGRAM_ID).0; + + let cctp_mint_recipient = CctpMintRecipientMut { + mint_recipient: *cctp_mint_recipient, + }; + let cctp_message_transmitter_event_authority = + Pubkey::find_program_address(&[EVENT_AUTHORITY_SEED], &MESSAGE_TRANSMITTER_PROGRAM_ID).0; + let cctp_remote_token_messenger = match testing_context.transfer_direction { + TransferDirection::FromEthereumToArbitrum => { + fixture_accounts.ethereum_remote_token_messenger + } + TransferDirection::FromArbitrumToEthereum => { + fixture_accounts.arbitrum_remote_token_messenger + } + _ => panic!("Unsupported transfer direction"), + }; + let fixture_accounts = testing_context + .fixture_accounts + .clone() + .expect("Fixture accounts not found"); + let message_transmitter_config_pubkey = fixture_accounts.message_transmitter_config; + let cctp = CctpReceiveMessage { + mint_recipient: cctp_mint_recipient, + message_transmitter_authority: cctp_message_transmitter_authority, + message_transmitter_config: message_transmitter_config_pubkey, + used_nonces: used_nonces_pda, + message_transmitter_event_authority: cctp_message_transmitter_event_authority, + token_messenger: fixture_accounts.token_messenger, + remote_token_messenger: cctp_remote_token_messenger, + token_minter: fixture_accounts.token_minter, + local_token: fixture_accounts.usdc_local_token, + token_pair: fixture_accounts.usdc_token_pair, + token_messenger_minter_custody_token: fixture_accounts.usdc_custody_token, + token_messenger_minter_event_authority, + token_messenger_minter_program: TOKEN_MESSENGER_MINTER_PROGRAM_ID, + message_transmitter_program: MESSAGE_TRANSMITTER_PROGRAM_ID, + }; + let prepared_order_response_accounts = PrepareOrderResponseCctpAccounts { + payer: payer_signer.pubkey(), + custodian: checked_custodian, + fast_order_path, + finalized_vaa, + prepared_order_response: prepared_order_response_pda, + prepared_custody_token: prepared_custody_token_pda, + base_fee_token: base_fee_token_address, + usdc, + cctp, + token_program: spl_token::ID, + system_program: system_program::ID, + }; + + let prepare_order_response_ix_data = PrepareOrderResponseCctpIx { + args: CctpMessageArgs { + encoded_cctp_message: cctp_token_burn_message.encoded_cctp_burn_message, + cctp_attestation: cctp_token_burn_message.cctp_attestation, + }, + } + .data(); + + let ix = Instruction { + program_id: *matching_engine_program_id, + accounts: prepared_order_response_accounts.to_account_metas(None), + data: prepare_order_response_ix_data, + }; + let order_prepared_state = OrderPreparedState { + prepared_order_response_address: prepared_order_response_pda, + prepared_custody_token: prepared_custody_token_pda, + base_fee_token: base_fee_token_address, + actor_enum: config.actor_enum, + prepared_by: payer_signer.pubkey(), + }; + (ix, order_prepared_state) +} diff --git a/solana/modules/matching-engine-testing/tests/shimless/settle_auction.rs b/solana/modules/matching-engine-testing/tests/shimless/settle_auction.rs new file mode 100644 index 000000000..1eb999834 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/settle_auction.rs @@ -0,0 +1,119 @@ +use crate::testing_engine::config::ExpectedError; +use crate::testing_engine::config::SettleAuctionInstructionConfig; +use crate::testing_engine::setup::TestingContext; +use crate::testing_engine::state::OrderPreparedState; +use crate::testing_engine::state::TestingEngineState; +use crate::utils::auction::AuctionState; + +use anchor_lang::prelude::*; +use anchor_lang::InstructionData; +use anchor_spl::token::spl_token; +use matching_engine::accounts::SettleAuctionComplete as SettleAuctionCompleteCpiAccounts; +use matching_engine::instruction::SettleAuctionComplete; +use solana_program_test::ProgramTestContext; +use solana_sdk::instruction::Instruction; +use solana_sdk::signature::Signer; +use solana_sdk::transaction::Transaction; +use wormhole_svm_definitions::EVENT_AUTHORITY_SEED; + +/// Settle an auction (shimless) +/// +/// Settle an auction by providing a prepare order response address, prepared custody token, and expected error. +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The test context +/// * `payer_signer` - The payer signer +/// * `auction_state` - The auction state +/// * `prepare_order_response_address` - The prepare order response address +/// * `prepared_custody_token` - The prepared custody token +/// * `expected_error` - The expected error +/// +/// # Returns +/// +/// The new auction state if successful, otherwise the old auction state +pub async fn settle_auction_complete( + testing_context: &TestingContext, + current_state: &TestingEngineState, + test_context: &mut ProgramTestContext, + config: &SettleAuctionInstructionConfig, + expected_error: Option<&ExpectedError>, +) -> TestingEngineState { + let payer_signer = &config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + let active_auction = config + .overwrite_active_auction_state + .as_ref() + .unwrap_or_else(|| { + current_state + .auction_state() + .get_active_auction() + .expect("Failed to get active auction") + }); + + let order_prepared_state = current_state + .order_prepared() + .expect("Order prepared not found"); + let OrderPreparedState { + prepared_order_response_address, + prepared_custody_token, + base_fee_token, + actor_enum: _, + prepared_by: _, + } = *order_prepared_state; + + let matching_engine_program_id = testing_context.get_matching_engine_program_id(); + let event_seeds = EVENT_AUTHORITY_SEED; + let event_authority = + Pubkey::find_program_address(&[event_seeds], &matching_engine_program_id).0; + let settle_auction_accounts = SettleAuctionCompleteCpiAccounts { + beneficiary: payer_signer.pubkey(), + base_fee_token, + prepared_order_response: prepared_order_response_address, + prepared_custody_token, + auction: active_auction.auction_address, + best_offer_token: active_auction.best_offer.offer_token, + token_program: spl_token::ID, + event_authority, + program: matching_engine_program_id, + }; + + let settle_auction_complete_cpi = SettleAuctionComplete {}; + + let settle_auction_complete_ix = Instruction { + program_id: matching_engine_program_id, + accounts: settle_auction_accounts.to_account_metas(Some(false)), + data: settle_auction_complete_cpi.data(), + }; + + let tx = Transaction::new_signed_with_payer( + &[settle_auction_complete_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + testing_context + .get_new_latest_blockhash(test_context) + .await + .unwrap(), + ); + + testing_context + .execute_and_verify_transaction(test_context, tx, expected_error) + .await; + if expected_error.is_none() { + TestingEngineState::AuctionSettled { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + auction_state: AuctionState::Settled(Some(Box::new(active_auction.clone()))), + fast_market_order: current_state.fast_market_order().cloned(), + order_prepared: current_state.order_prepared().unwrap().clone(), + auction_accounts: current_state.auction_accounts().cloned(), + order_executed: current_state.order_executed().cloned(), + } + } else { + current_state.clone() + } +} diff --git a/solana/modules/matching-engine-testing/tests/shimless/settle_auction_none_cctp.rs b/solana/modules/matching-engine-testing/tests/shimless/settle_auction_none_cctp.rs new file mode 100644 index 000000000..f3ab49c13 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/shimless/settle_auction_none_cctp.rs @@ -0,0 +1,174 @@ +use crate::testing_engine::config::{InstructionConfig, SettleAuctionNoneInstructionConfig}; +use crate::testing_engine::setup::TestingContext; +use crate::testing_engine::state::{OrderPreparedState, TestingEngineState}; +use crate::utils::auction::AuctionState; +use crate::utils::token_account::SplTokenEnum; +use anchor_lang::prelude::*; +use anchor_lang::{InstructionData, ToAccountMetas}; +use anchor_spl::token::spl_token; +use matching_engine::accounts::RequiredSysvars; +use matching_engine::accounts::{ + CheckedCustodian, ClosePreparedOrderResponse, + SettleAuctionNoneCctp as SettleAuctionNoneCctpAccounts, WormholePublishMessage, +}; +use matching_engine::instruction::SettleAuctionNoneCctp as SettleAuctionNoneCctpIx; +use matching_engine::state::{Auction, PreparedOrderResponse}; +use solana_program_test::ProgramTestContext; +use solana_sdk::instruction::Instruction; +use solana_sdk::signature::Signer; +use solana_sdk::sysvar::SysvarId; +use solana_sdk::transaction::Transaction; +use wormhole_svm_definitions::EVENT_AUTHORITY_SEED; + +use crate::shimful::shims_execute_order::create_cctp_deposit_for_burn; + +/// Settle an auction none shimless +pub async fn settle_auction_none_shimless( + testing_context: &TestingContext, + current_state: &TestingEngineState, + test_context: &mut ProgramTestContext, + config: &SettleAuctionNoneInstructionConfig, +) -> AuctionState { + let payer_signer = &config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + + let settle_auction_none_cctp_accounts = create_settle_auction_none_cctp_shimless_accounts( + test_context, + testing_context, + current_state, + config, + ) + .await; + let settle_auction_none_ix = Instruction { + program_id: testing_context.get_matching_engine_program_id(), + accounts: settle_auction_none_cctp_accounts.to_account_metas(None), + data: SettleAuctionNoneCctpIx {}.data(), + }; + let tx = Transaction::new_signed_with_payer( + &[settle_auction_none_ix], + Some(&payer_signer.pubkey()), + &[&payer_signer], + testing_context + .get_new_latest_blockhash(test_context) + .await + .unwrap(), + ); + + testing_context + .execute_and_verify_transaction(test_context, tx, config.expected_error()) + .await; + if config.expected_error().is_some() { + return current_state.auction_state().clone(); + } + + AuctionState::Settled(None) +} + +async fn create_settle_auction_none_cctp_shimless_accounts( + test_context: &mut ProgramTestContext, + testing_context: &TestingContext, + current_state: &TestingEngineState, + config: &SettleAuctionNoneInstructionConfig, +) -> SettleAuctionNoneCctpAccounts { + let payer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_context.testing_actors.payer_signer.clone()); + + let order_prepared_state = current_state.order_prepared().unwrap(); + let OrderPreparedState { + prepared_order_response_address, + prepared_custody_token, + base_fee_token: _, + prepared_by, + actor_enum: _, + } = *order_prepared_state; + + let checked_custodian = CheckedCustodian { + custodian: current_state.custodian_address().unwrap(), + }; + + let prepared_order_response_data = test_context + .banks_client + .get_account(prepared_order_response_address) + .await + .unwrap() + .unwrap() + .data; + let prepared_order = + PreparedOrderResponse::try_deserialize(&mut &prepared_order_response_data[..]).unwrap(); + let auction_seeds = &[ + Auction::SEED_PREFIX, + &prepared_order.seeds.fast_vaa_hash.as_ref(), + ]; + let (auction, _bump) = Pubkey::find_program_address( + auction_seeds, + &testing_context.get_matching_engine_program_id(), + ); + let (core_message, _bump) = Pubkey::find_program_address( + &[common::CORE_MESSAGE_SEED_PREFIX, &auction.as_ref()], + &testing_context.get_matching_engine_program_id(), + ); + + let (cctp_message, _bump) = Pubkey::find_program_address( + &[common::CCTP_MESSAGE_SEED_PREFIX, &auction.to_bytes()], + &testing_context.get_matching_engine_program_id(), + ); + let close_prepare_order_response = ClosePreparedOrderResponse { + by: prepared_by, + custody_token: prepared_custody_token, + order_response: prepared_order_response_address, + }; + let emitter_sequence = wormhole_svm_definitions::find_emitter_sequence_address( + &checked_custodian.custodian, + &wormhole_svm_definitions::solana::CORE_BRIDGE_PROGRAM_ID, + ) + .0; + let wormhole_publish_message = WormholePublishMessage { + config: wormhole_svm_definitions::solana::CORE_BRIDGE_CONFIG, + emitter_sequence, + fee_collector: wormhole_svm_definitions::solana::CORE_BRIDGE_FEE_COLLECTOR, + core_bridge_program: wormhole_svm_definitions::solana::CORE_BRIDGE_PROGRAM_ID, + }; + + let cctp = create_cctp_deposit_for_burn(current_state, testing_context); + + let sysvars = RequiredSysvars { + clock: Clock::id(), + rent: Rent::id(), + }; + + let event_authority = Pubkey::find_program_address( + &[EVENT_AUTHORITY_SEED], + &testing_context.get_matching_engine_program_id(), + ) + .0; + + let spl_token_enum = current_state + .spl_token_enum() + .unwrap_or_else(|| SplTokenEnum::Usdc); + let fee_recipient_token = testing_context + .testing_actors + .fee_recipient + .token_account_address(&spl_token_enum) + .unwrap(); + + SettleAuctionNoneCctpAccounts { + payer: payer.pubkey(), + custodian: checked_custodian, + fee_recipient_token, + core_message, + cctp_message, + prepared: close_prepare_order_response, + auction, + wormhole: wormhole_publish_message, + cctp, + token_program: spl_token::ID, + system_program: solana_program::system_program::ID, + event_authority, + program: testing_context.get_matching_engine_program_id(), + sysvars, + } +} diff --git a/solana/modules/matching-engine-testing/tests/test_scenarios/create_and_close_fast_market_order.rs b/solana/modules/matching-engine-testing/tests/test_scenarios/create_and_close_fast_market_order.rs new file mode 100644 index 000000000..0adf5f10b --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/test_scenarios/create_and_close_fast_market_order.rs @@ -0,0 +1,400 @@ +//! # Create and close fast market order instruction testing +//! +//! This module contains tests for the create and close fast market order instructions. +//! +//! ## Test Cases +//! +//! ### Happy path tests +//! +//! - `test_initialize_fast_market_order_fallback` - Test that the fast market order is initialized correctly +//! - `test_close_fast_market_order_fallback` - Test that the fast market order is closed correctly +//! - `test_close_fast_market_order_fallback_with_custom_refund_recipient` - Test that the fast market order is closed correctly with a custom refund recipient +//! +//! ### Sad path tests +//! +//! - `test_fast_market_order_cannot_be_refunded_by_someone_who_did_not_initialize_it` - Test that the fast market order cannot be refunded by someone who did not initialize it +//! +//! ### Edge case tests +//! +use crate::testing_engine; +use crate::utils; +use matching_engine::error::MatchingEngineError; +use solana_program_test::tokio; +use testing_engine::config::*; +use testing_engine::engine::{InstructionTrigger, TestingEngine}; +use testing_engine::setup::{setup_environment, ShimMode, TransferDirection}; +use utils::vaa::VaaArgs; + +/* + Happy path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** * * ** +** ** ** ** + ** **** **** ** + ** ** ** ** + ** *** *** ** + *** **** **** *** + ** ****** ****** ** + *** *************** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the create fast market order account works correctly for the fallback instruction +#[tokio::test] +pub async fn test_initialize_fast_market_order_fallback() { + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + TransferDirection::FromArbitrumToEthereum, + Some(vaa_args), + ) + .await; + + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + ]; + + let testing_engine = TestingEngine::new(testing_context).await; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that the close fast market order account works correctly for the fallback instruction +#[tokio::test] +pub async fn test_close_fast_market_order_fallback() { + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + TransferDirection::FromArbitrumToEthereum, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::CloseFastMarketOrderShim( + CloseFastMarketOrderShimInstructionConfig::default(), + ), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that the close fast market order account works correctly for the fallback instruction +#[tokio::test] +pub async fn test_close_fast_market_order_fallback_with_custom_refund_recipient() { + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + TransferDirection::FromArbitrumToEthereum, + Some(vaa_args), + ) + .await; + let solver_1 = &testing_context.testing_actors.solvers[1].clone(); + let solver_1_balance_before = solver_1.get_lamport_balance(&mut test_context).await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + close_account_refund_recipient: Some(solver_1.pubkey()), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + InstructionTrigger::CloseFastMarketOrderShim(CloseFastMarketOrderShimInstructionConfig { + close_account_refund_recipient_keypair: Some(solver_1.keypair()), + ..CloseFastMarketOrderShimInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + let solver_1_balance_after = solver_1.get_lamport_balance(&mut test_context).await; + assert!( + solver_1_balance_after > solver_1_balance_before, + "Solver 1 balance after is not greater than balance before" + ); +} + +/* + Sad path tests Section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** ** +** ** +** ** + ** ************ ** + ** ****** ****** ** + *** ***** ***** *** + ** *** *** ** + *** ** ** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the fast market order cannot be refunded by someone who did not initialize it +#[tokio::test] +pub async fn test_fast_market_order_cannot_be_refunded_by_someone_who_did_not_initialize_it() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let solver_0 = testing_context.testing_actors.solvers.first().unwrap(); + let solver_1 = testing_context.testing_actors.solvers.last().unwrap(); + + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + close_account_refund_recipient: Some(solver_0.pubkey()), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + InstructionTrigger::CloseFastMarketOrderShim(CloseFastMarketOrderShimInstructionConfig { + close_account_refund_recipient_keypair: Some(solver_1.keypair()), + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: u32::from(MatchingEngineError::MismatchingCloseAccountRefundRecipient), + error_string: "Fast market order account owner is invalid".to_string(), + }), + ..CloseFastMarketOrderShimInstructionConfig::default() + }), + ]; + + let testing_engine = TestingEngine::new(testing_context).await; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that the same fast market order cannot be closed twice +#[tokio::test] +pub async fn test_fast_market_order_cannot_be_closed_twice() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::CloseFastMarketOrderShim( + CloseFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::CloseFastMarketOrderShim(CloseFastMarketOrderShimInstructionConfig { + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: 3001, + error_string: "Fast market order account is already closed".to_string(), + }), + ..CloseFastMarketOrderShimInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} +/* + Edge case tests section + 88 + 88 + 88 + ,adPPYba, ,adPPYba, 8b,dPPYba, ,adPPYba, ,adPPYba, 8b,dPPYba, ,adPPYba, ,adPPYb,88 +a8" "" a8P_____88 88P' `"8a I8[ "" a8" "8a 88P' "Y8 a8P_____88 a8" `Y88 +8b 8PP""""""" 88 88 `"Y8ba, 8b d8 88 8PP""""""" 8b 88 +"8a, ,aa "8b, ,aa 88 88 aa ]8I "8a, ,a8" 88 "8b, ,aa "8a, ,d88 + `"Ybbd8"' `"Ybbd8"' 88 88 `"YbbdP"' `"YbbdP"' 88 `"Ybbd8"' `"8bbdP"Y8 +*/ + +/// Test that fast market order can be opened after being closed by the same solver +#[tokio::test] +pub async fn test_fast_market_order_can_be_opened_after_being_closed_by_the_same_solver() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::CloseFastMarketOrderShim( + CloseFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that multiple fast market orders can be opened and closed by different solvers in arbitrary order +#[tokio::test] +pub async fn test_multiple_fast_market_orders_can_be_opened_and_closed_by_different_solvers_in_arbitrary_order( +) { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let solver_1 = testing_context.testing_actors.solvers[1].clone(); + let solver_2 = testing_context.testing_actors.solvers[2].clone(); + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 0, + close_account_refund_recipient: None, // Solver 0 + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + ]; + let current_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + let fast_market_order_0_pubkey = current_state + .fast_market_order() + .unwrap() + .fast_market_order_address; + let instruction_triggers_1 = vec![InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 1, + close_account_refund_recipient: Some(solver_1.pubkey()), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + )]; + let current_state = testing_engine + .execute( + &mut test_context, + instruction_triggers_1, + Some(current_state), + ) + .await; + let fast_market_order_1_pubkey = current_state + .fast_market_order() + .unwrap() + .fast_market_order_address; + let instruction_triggers_2 = vec![ + InstructionTrigger::CloseFastMarketOrderShim(CloseFastMarketOrderShimInstructionConfig { + fast_market_order_address: Some(fast_market_order_0_pubkey), + ..CloseFastMarketOrderShimInstructionConfig::default() + }), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 2, + close_account_refund_recipient: Some(solver_2.pubkey()), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + ]; + let current_state = testing_engine + .execute( + &mut test_context, + instruction_triggers_2, + Some(current_state), + ) + .await; + let fast_market_order_2_pubkey = current_state + .fast_market_order() + .unwrap() + .fast_market_order_address; + let instruction_triggers_3 = vec![ + InstructionTrigger::CloseFastMarketOrderShim(CloseFastMarketOrderShimInstructionConfig { + close_account_refund_recipient_keypair: Some(solver_2.keypair()), + fast_market_order_address: Some(fast_market_order_2_pubkey), + ..CloseFastMarketOrderShimInstructionConfig::default() + }), + InstructionTrigger::CloseFastMarketOrderShim(CloseFastMarketOrderShimInstructionConfig { + close_account_refund_recipient_keypair: Some(solver_1.keypair()), + fast_market_order_address: Some(fast_market_order_1_pubkey), + ..CloseFastMarketOrderShimInstructionConfig::default() + }), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers_3, + Some(current_state), + ) + .await; +} diff --git a/solana/modules/matching-engine-testing/tests/test_scenarios/execute_order.rs b/solana/modules/matching-engine-testing/tests/test_scenarios/execute_order.rs new file mode 100644 index 000000000..672f5c40f --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/test_scenarios/execute_order.rs @@ -0,0 +1,1182 @@ +//! # Execute order instruction testing +//! +//! This module contains tests for the execute order instruction. +//! +//! ## Test Cases +//! +//! ### Happy path tests +//! - `test_execute_order_fallback` - Test that the execute order fallback instruction works correctly +//! - `test_execute_order_shimless` - Test that the execute order shimless instruction works correctly +//! + +use std::collections::HashSet; + +use crate::test_scenarios::make_offer::place_initial_offer_shimless; +use crate::testing_engine; +use crate::testing_engine::config::{ + InitializeInstructionConfig, PlaceInitialOfferInstructionConfig, +}; +use crate::testing_engine::engine::{ExecutionChain, ExecutionTrigger, VerificationTrigger}; +use crate::testing_engine::state::TestingEngineState; +use crate::utils::public_keys::ChainAddress; +use crate::utils::token_account::SplTokenEnum; +use crate::utils::{self, Chain}; + +use anchor_lang::error::ErrorCode; +use matching_engine::error::MatchingEngineError; +use solana_program_test::{tokio, ProgramTestContext}; +use testing_engine::config::*; +use testing_engine::engine::{InstructionTrigger, TestingEngine}; +use testing_engine::setup::{setup_environment, ShimMode, TransferDirection}; +use utils::vaa::VaaArgs; + +use super::make_offer::place_initial_offer_shim; + +/// Test that the execute order shim instruction works correctly +#[tokio::test] +// TODO: Flesh out this test to see if the message was posted correctly +pub async fn test_execute_order_shim() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + Box::pin(execute_order_helper( + ExecuteOrderInstructionConfig::default(), + ShimExecutionMode::Shim, + None, + transfer_direction, + )) + .await; +} + +/// Test that the execute order shimless instruction works correctly +#[tokio::test] +pub async fn test_execute_order_shimless() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + Box::pin(execute_order_helper( + ExecuteOrderInstructionConfig::default(), + ShimExecutionMode::Shimless, + None, + transfer_direction, + )) + .await; +} + +/// Test that reopening fast market order account and then executing order succeeds +#[tokio::test] +pub async fn test_execute_order_after_reopening_fast_market_order_account() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let testing_actors = &testing_engine.testing_context.testing_actors; + // Get the second solver because the first one was used to set up the initial fast market order account + let close_account_refund_recipient = testing_actors.solvers.get(1).unwrap().pubkey(); + let instruction_triggers = vec![ + InstructionTrigger::CloseFastMarketOrderShim( + CloseFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 1, + close_account_refund_recipient: Some(close_account_refund_recipient), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + ]; + let mut execution_chain = ExecutionChain::from(instruction_triggers); + execution_chain.push(ExecutionTrigger::Verification(Box::new( + VerificationTrigger::VerifyAuctionState(true), + ))); + let _ = testing_engine + .execute( + &mut test_context, + execution_chain, + Some(place_initial_offer_state), + ) + .await; +} + +/// Test execute order shim after placing initial offer with shimless instruction +#[tokio::test] +pub async fn test_execute_order_shim_after_placing_initial_offer_with_shimless() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + ]; + let mut execution_chain = ExecutionChain::from(instruction_triggers); + execution_chain.push(ExecutionTrigger::Verification(Box::new( + VerificationTrigger::VerifyAuctionState(true), + ))); + let _ = testing_engine + .execute( + &mut test_context, + execution_chain, + Some(place_initial_offer_state), + ) + .await; +} + +/// Test execute order shimless after placing initial offer with shim instruction +#[tokio::test] +pub async fn test_execute_order_shimless_after_placing_initial_offer_with_shim() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + Some(vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]), + transfer_direction, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + ExecuteOrderInstructionConfig::default(), + )]; + let mut execution_chain = ExecutionChain::from(instruction_triggers); + execution_chain.push(ExecutionTrigger::Verification(Box::new( + VerificationTrigger::VerifyAuctionState(true), + ))); + let _ = testing_engine + .execute( + &mut test_context, + execution_chain, + Some(place_initial_offer_state), + ) + .await; +} + +/// Test executing order shim after grace period +#[tokio::test] +pub async fn test_execute_order_shim_after_grace_period() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_grace_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after grace period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim(execute_order_config)]; + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test executing order shimless after grace period +#[tokio::test] +pub async fn test_execute_order_shimless_after_grace_period() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_grace_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after grace period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + execute_order_config, + )]; + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let mut execution_chain = ExecutionChain::from(instruction_triggers); + execution_chain.push(ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))); + let _ = testing_engine + .execute( + &mut test_context, + execution_chain, + Some(place_initial_offer_state), + ) + .await; +} + +/// Test executing order shim after grace period with different executor +#[tokio::test] +pub async fn test_execute_order_shim_after_grace_period_with_different_executor() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_grace_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after grace period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + actor_enum: TestingActorEnum::Solver(1), + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim(execute_order_config)]; + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test executing order shimless after grace period with different executor +#[tokio::test] +pub async fn test_execute_order_shimless_after_grace_period_with_different_executor() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_grace_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after grace period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + actor_enum: TestingActorEnum::Solver(1), + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + execute_order_config, + )]; + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test executing order shim after grace period with initial offer token closed +#[tokio::test] +pub async fn test_execute_order_shim_after_grace_period_with_initial_offer_token_closed() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_grace_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after grace period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + actor_enum: TestingActorEnum::Solver(1), + ..ExecuteOrderInstructionConfig::default() + }; + testing_engine + .close_token_account( + &mut test_context, + &TestingActorEnum::Solver(0), + &SplTokenEnum::Usdc, + ) + .await; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim(execute_order_config)]; + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: Some(HashSet::from([TestingActorEnum::Solver(0)])), + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test executing order shim after grace period with initial offer token closed +#[tokio::test] +pub async fn test_execute_order_shimless_after_grace_period_with_initial_offer_token_closed() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_grace_period(&mut test_context, &place_initial_offer_state, 1) // 1 slots after grace period + .await; + // Close the token account of the initial offer + testing_engine + .close_token_account( + &mut test_context, + &TestingActorEnum::Solver(0), + &SplTokenEnum::Usdc, + ) + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + actor_enum: TestingActorEnum::Solver(1), + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + execute_order_config, + )]; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: Some(HashSet::from([TestingActorEnum::Solver(0)])), + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test execute order shim after auction passed penalty period +#[tokio::test] +pub async fn test_execute_order_shim_after_auction_passed_penalty_period() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_penalty_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after penalty period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim(execute_order_config)]; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test execute order shimless after auction passed penalty period +#[tokio::test] +pub async fn test_execute_order_shimless_after_auction_passed_penalty_period() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_penalty_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after penalty period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + execute_order_config, + )]; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test execute order shimless after auction passed penalty period, and executor != best offer +#[tokio::test] +pub async fn test_execute_order_shimless_after_auction_passed_penalty_period_and_executor_not_best_offer( +) { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_penalty_period(&mut test_context, &place_initial_offer_state, 1) // 1 slot after penalty period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + actor_enum: TestingActorEnum::Solver(1), + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let custodian_token_previous_balance = place_initial_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + execute_order_config, + )]; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test execute order shimless initial offer token != best offer token +#[tokio::test] +pub async fn test_execute_order_shimless_after_penalty_period_initial_offer_token_not_best_offer_token( +) { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::ImproveOfferShimless( + ImproveOfferInstructionConfig { + actor: TestingActorEnum::Solver(1), + ..Default::default() + }, + )]; + let improve_offer_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + testing_engine + .make_auction_passed_penalty_period(&mut test_context, &improve_offer_state, 1) // 1 slot after penalty period + .await; + let previous_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let execute_order_config = ExecuteOrderInstructionConfig { + actor_enum: TestingActorEnum::Solver(0), + ..ExecuteOrderInstructionConfig::default() + }; + let executor_actor = execute_order_config + .actor_enum + .get_actor(&testing_engine.testing_context.testing_actors); + let custodian_token_previous_balance = improve_offer_state + .auction_state() + .get_active_auction() + .unwrap() + .get_auction_custody_token_balance(&mut test_context) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + execute_order_config, + )]; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(improve_offer_state), + ) + .await; + let verification_trigger = + VerificationTrigger::VerifyBalances(Box::new(VerifyBalancesConfig { + previous_state_balances, + balance_changes_config: BalanceChangesConfig { + actor: executor_actor, + spl_token_enum: SplTokenEnum::Usdc, + custodian_token_previous_balance, + }, + closed_token_account_enums: None, + })); + let execution_chain = ExecutionChain::new(vec![ExecutionTrigger::Verification(Box::new( + verification_trigger, + ))]); + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(execute_order_state), + ) + .await; +} + +/// Test executing order shim after custodian is paused after initial offer +#[tokio::test] +pub async fn test_execute_order_shim_after_custodian_is_paused_after_initial_offer() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::SetPauseCustodian( + SetPauseCustodianInstructionConfig { + is_paused: true, + ..Default::default() + }, + )]; + let paused_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim( + ExecuteOrderInstructionConfig::default(), + )]; + testing_engine + .execute(&mut test_context, instruction_triggers, Some(paused_state)) + .await; +} + +/// Test executing order shimless after custodian is paused after initial offer +#[tokio::test] +pub async fn test_execute_order_shimless_after_custodian_is_paused_after_initial_offer() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::SetPauseCustodian( + SetPauseCustodianInstructionConfig { + is_paused: true, + ..Default::default() + }, + )]; + let paused_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShimless( + ExecuteOrderInstructionConfig::default(), + )]; + testing_engine + .execute(&mut test_context, instruction_triggers, Some(paused_state)) + .await; +} + +/* + Sad path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** ** +** ** +** ** + ** ************ ** + ** ****** ****** ** + *** ***** ***** *** + ** *** *** ** + *** ** ** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the execute order shim instruction blocks the shimless instruction +#[tokio::test] +pub async fn test_execute_order_shim_blocks_shimless() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShimless(ExecuteOrderInstructionConfig { + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: 3012, + error_string: "AccountNotInitialized".to_string(), + }), + ..ExecuteOrderInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that execute order shim after close fast market order fails +#[tokio::test] +pub async fn test_execute_order_shim_after_close_fast_market_order_fails() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![ + InstructionTrigger::CloseFastMarketOrderShim( + CloseFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::ImproveOfferShimless(ImproveOfferInstructionConfig::default()), + ]; + let close_engines_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let expected_error = ExpectedError { + instruction_index: 2, + error_code: 3001, // Account Discriminator not found + error_string: "AccountDiscriminatorNotFound.".to_string(), + }; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim( + ExecuteOrderInstructionConfig { + expected_error: Some(expected_error), + ..ExecuteOrderInstructionConfig::default() + }, + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(close_engines_state), + ) + .await; +} + +/// Cannot improve offer after executing order +#[tokio::test] +pub async fn test_execute_order_cannot_improve_offer_after_executing_order() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![ + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::ImproveOfferShimless(ImproveOfferInstructionConfig { + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: u32::from(ErrorCode::AccountNotInitialized), + error_string: "AccountNotInitialized".to_string(), + }), + ..ImproveOfferInstructionConfig::default() + }), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +/// Cannot execute order with incorrect emitter chain +#[tokio::test] +pub async fn test_execute_order_shim_emitter_chain_mismatch() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![ + VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }, + VaaArgs { + post_vaa: false, + override_emitter_chain_and_address: Some(ChainAddress::from_registered_token_router( + Chain::Arbitrum, + )), + ..VaaArgs::default() + }, + ]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let initialize_first_fast_market_order_instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + ]; + let initialize_first_fast_market_order_state = testing_engine + .execute( + &mut test_context, + initialize_first_fast_market_order_instruction_triggers, + None, + ) + .await; + let initialize_second_fast_market_order_instruction_triggers = vec![ + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 1, + vaa_index: 1, + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + ]; + let initialize_second_fast_market_order_state = testing_engine + .execute( + &mut test_context, + initialize_second_fast_market_order_instruction_triggers, + Some(initialize_first_fast_market_order_state), + ) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim( + ExecuteOrderInstructionConfig { + vaa_index: 1, + expected_error: Some(ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::VaaMismatch), + error_string: "AccountNotInitialized".to_string(), + }), + ..ExecuteOrderInstructionConfig::default() + }, + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(initialize_second_fast_market_order_state), + ) + .await; +} + +/// Cannot execute order shim before auction duration is over +#[tokio::test] +pub async fn test_execute_order_shim_before_auction_duration_is_over() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim( + ExecuteOrderInstructionConfig { + fast_forward_slots: 0, + expected_error: Some(ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::AuctionPeriodNotExpired), + error_string: "AuctionPeriodNotExpired".to_string(), + }), + ..ExecuteOrderInstructionConfig::default() + }, + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +/* +Helper code + */ +pub enum ShimExecutionMode { + Shim, + Shimless, +} + +pub async fn execute_order_helper( + config: ExecuteOrderInstructionConfig, + shim_execution_mode: ShimExecutionMode, + vaa_args: Option>, // If none, then defaults for shimexecutionmode are used + transfer_direction: TransferDirection, +) -> (TestingEngineState, ProgramTestContext, TestingEngine) { + let (place_initial_offer_state, mut test_context, testing_engine) = match shim_execution_mode { + ShimExecutionMode::Shim => { + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + vaa_args, + transfer_direction, + )) + .await + } + ShimExecutionMode::Shimless => { + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + vaa_args, + transfer_direction, + )) + .await + } + }; + let instruction_triggers = match shim_execution_mode { + ShimExecutionMode::Shim => vec![InstructionTrigger::ExecuteOrderShim(config)], + ShimExecutionMode::Shimless => vec![InstructionTrigger::ExecuteOrderShimless(config)], + }; + let mut execution_chain = ExecutionChain::from(instruction_triggers); + execution_chain.push(ExecutionTrigger::Verification(Box::new( + VerificationTrigger::VerifyAuctionState(true), + ))); + ( + testing_engine + .execute( + &mut test_context, + execution_chain, + Some(place_initial_offer_state), + ) + .await, + test_context, + testing_engine, + ) +} diff --git a/solana/modules/matching-engine-testing/tests/test_scenarios/initialize_and_misc.rs b/solana/modules/matching-engine-testing/tests/test_scenarios/initialize_and_misc.rs new file mode 100644 index 000000000..c93101997 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/test_scenarios/initialize_and_misc.rs @@ -0,0 +1,268 @@ +//! # Initialize and misc instruction testing +//! +//! This module contains tests for the initialize and some other miscellaneous setup test scenarios. +//! +//! ## Test Cases +//! +//! ### Happy path tests +//! +//! - `test_initialize_program` - Test that the program is initialized correctly +//! - `test_cctp_token_router_endpoint_creation` - Test that a CCTP token router endpoint is created for the arbitrum and ethereum chains +//! - `test_local_token_router_endpoint_creation` - Test that a local token router endpoint is created for the arbitrum and ethereum chains +//! - `test_setup_vaas` - Test that the vaas are setup correctly +//! - `test_post_message_shims` - Test that the post message shims work correctly +//! - `test_approve_usdc` - Test that the approve usdc helper function works correctly + +use crate::shimful; +use crate::shimless; +use crate::testing_engine; +use crate::testing_engine::config::InitializeInstructionConfig; +use crate::utils; +use crate::utils::token_account::SplTokenEnum; +use anchor_lang::AccountDeserialize; +use anchor_spl::token::TokenAccount; +use matching_engine::ID as PROGRAM_ID; +use shimful::post_message::set_up_post_message_transaction_test; +use shimless::initialize::initialize_program; +use solana_program_test::tokio; +use solana_sdk::pubkey::Pubkey; +use testing_engine::config::*; +use testing_engine::engine::{InstructionTrigger, TestingEngine}; +use testing_engine::setup::{setup_environment, ShimMode, TransferDirection}; +use utils::router::add_local_router_endpoint_ix; +use utils::vaa::VaaArgs; +use wormhole_svm_definitions::solana::CORE_BRIDGE_PROGRAM_ID; + +/* + Happy path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** * * ** +** ** ** ** + ** **** **** ** + ** ** ** ** + ** *** *** ** + *** **** **** *** + ** ****** ****** ** + *** *************** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the program is initialized correctly +#[tokio::test] +pub async fn test_initialize_program() { + let (testing_context, mut test_context) = setup_environment( + ShimMode::None, + TransferDirection::FromArbitrumToEthereum, + None, // Vaa args for creating vaas + ) + .await; + + let initialize_config = InitializeInstructionConfig::default(); + + let testing_engine = TestingEngine::new(testing_context).await; + + testing_engine + .execute( + &mut test_context, + vec![InstructionTrigger::InitializeProgram(initialize_config)], + None, + ) + .await; +} + +/// Test that a CCTP token router endpoint is created for the arbitrum and ethereum chains +#[tokio::test] +pub async fn test_cctp_token_router_endpoint_creation() { + let (testing_context, mut test_context) = setup_environment( + ShimMode::None, // Shim mode + TransferDirection::FromArbitrumToEthereum, // Transfer direction + None, // Vaa args + ) + .await; + + let initialize_config = InitializeInstructionConfig::default(); + + let testing_engine = TestingEngine::new(testing_context).await; + + testing_engine + .execute( + &mut test_context, + vec![InstructionTrigger::InitializeProgram(initialize_config)], + None, + ) + .await; +} + +/// Test that a local token router endpoint is created for the arbitrum and ethereum chains +#[tokio::test] +pub async fn test_local_token_router_endpoint_creation() { + let (testing_context, mut test_context) = setup_environment( + ShimMode::None, + TransferDirection::FromArbitrumToEthereum, + None, + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let config = InitializeInstructionConfig::default(); + let initial_state = testing_engine.create_initial_state(); + let payer_signer = testing_engine + .testing_context + .testing_actors + .payer_signer + .clone(); + let initialize_state = initialize_program( + &testing_engine.testing_context, + &mut test_context, + &initial_state, + &config, + ) + .await; + let custodian = initialize_state.initialized().unwrap().custodian_address; + let owner = &testing_engine.testing_context.testing_actors.owner; + let _local_token_router_endpoint = add_local_router_endpoint_ix( + &testing_engine.testing_context, + &mut test_context, + &payer_signer, + owner.pubkey(), + custodian, + owner.keypair().as_ref(), + ) + .await; +} + +/// Test setting up vaas +/// Vaa is from arbitrum to ethereum +#[tokio::test] +pub async fn test_setup_vaas() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifySignature, + transfer_direction, + Some(vaa_args), + ) + .await; + + testing_context.verify_vaas(&mut test_context).await; + + let testing_engine = TestingEngine::new(testing_context).await; + testing_engine + .execute( + &mut test_context, + vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + ], + None, + ) + .await; +} + +/// Test that the post message shims work correctly +#[tokio::test] +pub async fn test_post_message_shims() { + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + TransferDirection::FromArbitrumToEthereum, + None, + ) + .await; + let actors = &testing_context.testing_actors; + let emitter_signer = actors.owner.keypair(); + let payer_signer = actors.solvers[0].keypair(); + set_up_post_message_transaction_test( + &testing_context, + &mut test_context, + &payer_signer, + &emitter_signer, + ) + .await; +} + +/// Test that the approve usdc helper function works correctly +#[tokio::test] +pub async fn test_approve_usdc() { + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + TransferDirection::FromArbitrumToEthereum, + Some(vaa_args), + ) + .await; + let first_test_ft = testing_context.get_vaa_pair(0).unwrap().fast_transfer_vaa; + let vaa_data = first_test_ft.vaa_data; + + let actors = &testing_context.testing_actors; + let solver = actors.solvers[0].clone(); + let offer_price: u64 = 1__000_000; + let program_id = PROGRAM_ID; + let new_pubkey = Pubkey::new_unique(); + + let transfer_authority = Pubkey::find_program_address( + &[ + common::TRANSFER_AUTHORITY_SEED_PREFIX, + &new_pubkey.to_bytes(), + &offer_price.to_be_bytes(), + ], + &program_id, + ) + .0; + solver + .approve_spl_token( + &mut test_context, + &transfer_authority, + offer_price, + &SplTokenEnum::Usdc, + ) + .await; + + let usdc_balance = solver + .get_token_account_balance(&mut test_context, &SplTokenEnum::Usdc) + .await; + + // TODO: Create an issue based on this bug. So this function will transfer the ownership of whatever the guardian signatures signer is set to to the verify shim program. This means that the argument to this function MUST be ephemeral and cannot be used until the close signatures instruction has been executed. + let _guardian_signature_info = shimful::verify_shim::create_guardian_signatures( + &testing_context, + &mut test_context, + &actors.owner.keypair(), + &vaa_data, + &CORE_BRIDGE_PROGRAM_ID, + None, + ) + .await + .expect("Failed to create guardian signatures"); + + println!("Solver USDC balance: {:?}", usdc_balance); + let solver_token_account_address = solver.token_account_address().unwrap(); + let solver_token_account_info = test_context + .banks_client + .get_account(solver_token_account_address) + .await + .expect("Failed to query banks client for solver token account info") + .expect("Failed to get solver token account info"); + let solver_token_account = + TokenAccount::try_deserialize(&mut solver_token_account_info.data.as_ref()).unwrap(); + assert!(solver_token_account.delegate.is_some()); +} diff --git a/solana/modules/matching-engine-testing/tests/test_scenarios/make_offer.rs b/solana/modules/matching-engine-testing/tests/test_scenarios/make_offer.rs new file mode 100644 index 000000000..244966d1f --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/test_scenarios/make_offer.rs @@ -0,0 +1,1131 @@ +#![allow(clippy::expect_used)] +#![allow(clippy::panic)] +// TODO: +// Test that auction is expired means that you cannot place offer or execute it + +//! # Place initial offer and improve offer instruction testing +//! +//! This module contains tests for the place initial offer and improve offer instructions. +//! +//! ## Test Cases +//! +//! ### Happy path tests +//! +//! - `test_place_initial_offer_fallback` - Test that the place initial offer fallback instruction works correctly +//! +//! ### Sad path tests +//! +//! - `test_place_initial_offer_fails_if_fast_market_order_not_created` - Test that the place initial offer fails if the fast market order is not created +//! +use crate::testing_engine; +use crate::testing_engine::config::{ + InitializeInstructionConfig, PlaceInitialOfferInstructionConfig, +}; +use crate::testing_engine::engine::CombinationTrigger; +use crate::testing_engine::state::TestingEngineState; +use crate::utils; +use crate::utils::auction::compare_auctions; +use crate::utils::token_account::SplTokenEnum; +use crate::utils::vaa::{ + CreateDepositAndFastTransferParams, CreateDepositParams, CreateFastTransferParams, +}; + +use anchor_lang::error::ErrorCode; +use anchor_lang::AccountDeserialize; +use matching_engine::error::MatchingEngineError; +use matching_engine::state::{Auction, AuctionParameters}; +use solana_program_test::{tokio, ProgramTestContext}; +use solana_sdk::transaction::TransactionError; +use testing_engine::config::*; +use testing_engine::engine::{InstructionTrigger, TestingEngine}; +use testing_engine::setup::{setup_environment, ShimMode, TransferDirection}; +use utils::vaa::VaaArgs; + +// Define a constant transfer direction for the tests +const TRANSFER_DIRECTION: TransferDirection = TransferDirection::FromEthereumToArbitrum; + +/* + Happy path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** * * ** +** ** ** ** + ** **** **** ** + ** ** ** ** + ** *** *** ** + *** **** **** *** + ** ****** ****** ** + *** *************** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the place initial offer shim instruction works correctly from arbitrum to ethereum +#[tokio::test] +pub async fn test_place_initial_offer_shimful() { + let config = PlaceInitialOfferInstructionConfig::default(); + let (final_state, _, _) = + Box::pin(place_initial_offer_shim(config, None, TRANSFER_DIRECTION)).await; + assert_eq!( + final_state + .fast_market_order() + .unwrap() + .fast_market_order + .digest(), + final_state + .base() + .vaas + .first() + .unwrap() + .fast_transfer_vaa + .get_vaa_data() + .digest() + ); +} + +/// Test that the place initial offer instruction works correctly without the shim instructions +#[tokio::test] +pub async fn test_place_initial_offer_shimless() { + let config = PlaceInitialOfferInstructionConfig::default(); + let (_final_state, _, _) = Box::pin(place_initial_offer_shimless( + config, + None, + TRANSFER_DIRECTION, + )) + .await; +} + +/// Test that auction account is exactly the same when using shimless and fallback instructions +#[tokio::test] +pub async fn test_place_initial_offer_shimless_and_shim_auctions_are_identical() { + let shimless_config = PlaceInitialOfferInstructionConfig { + actor: TestingActorEnum::Owner, + ..PlaceInitialOfferInstructionConfig::default() + }; + let shim_config = PlaceInitialOfferInstructionConfig { + actor: TestingActorEnum::Owner, + ..PlaceInitialOfferInstructionConfig::default() + }; + let (final_state_shimless, mut shimless_test_context, _) = Box::pin( + place_initial_offer_shimless(shimless_config, None, TRANSFER_DIRECTION), + ) + .await; + let (final_state_fallback, mut fallback_test_context, _) = Box::pin(place_initial_offer_shim( + shim_config, + None, + TRANSFER_DIRECTION, + )) + .await; + + let shimless_auction = { + let shimless_active_auction_address = final_state_shimless + .auction_state() + .get_active_auction() + .unwrap() + .auction_address; + let shimless_auction_account_data = shimless_test_context + .banks_client + .get_account(shimless_active_auction_address) + .await + .unwrap() + .unwrap() + .data; + Auction::try_deserialize(&mut &shimless_auction_account_data[..]).unwrap() + }; + let shimful_auction = { + let shimful_active_auction_address = final_state_fallback + .auction_state() + .get_active_auction() + .unwrap() + .auction_address; + let shimful_account_data = fallback_test_context + .banks_client + .get_account(shimful_active_auction_address) + .await + .unwrap() + .unwrap() + .data; + Auction::try_deserialize(&mut &shimful_account_data[..]).unwrap() + }; + compare_auctions(&shimless_auction, &shimful_auction).await; +} + +/// Test place initial offer shim and then improve the offer (shimless) +#[tokio::test] +pub async fn test_place_initial_offer_shim_and_improve_offer_shimless() { + let config = PlaceInitialOfferInstructionConfig::default(); + let (place_initial_offer_state, mut test_context, testing_engine) = Box::pin( + place_initial_offer_shimless(config, None, TRANSFER_DIRECTION), + ) + .await; + let improve_offer_config = ImproveOfferInstructionConfig::default(); + let instruction_triggers = vec![InstructionTrigger::ImproveOfferShimless( + improve_offer_config, + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +/// Test that place initial offer and create fast market order can be done in one transaction +#[tokio::test] +pub async fn test_place_initial_offer_and_create_fast_market_order_in_one_transaction() { + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + TransferDirection::FromArbitrumToEthereum, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let initialize_instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + ]; + let initial_state = testing_engine + .execute(&mut test_context, initialize_instruction_triggers, None) + .await; + let config = Box::new( + CombinedInstructionConfig::create_fast_market_order_and_place_initial_offer( + &testing_engine.testing_context.testing_actors, + &initial_state, + &testing_engine + .testing_context + .get_matching_engine_program_id(), + ), + ); + let instruction_triggers = + vec![CombinationTrigger::CreateFastMarketOrderAndPlaceInitialOffer(config)]; + testing_engine + .execute(&mut test_context, instruction_triggers, Some(initial_state)) + .await; +} +/* + Sad path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** ** +** ** +** ** + ** ************ ** + ** ****** ****** ** + *** ***** ***** *** + ** *** *** ** + *** ** ** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the shimless place initial offer instruction blocks the shim instruction +#[tokio::test] +pub async fn test_place_initial_offer_shimless_blocks_shim() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShimless(PlaceInitialOfferInstructionConfig { + actor: TestingActorEnum::Solver(0), + ..PlaceInitialOfferInstructionConfig::default() + }), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig { + actor: TestingActorEnum::Solver(1), + expected_error: Some(ExpectedError { + instruction_index: 2, + error_code: 0, + error_string: TransactionError::AccountInUse.to_string(), + }), + ..PlaceInitialOfferInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that the place initial offer shim blocks the non shim instruction +#[tokio::test] +pub async fn test_place_initial_offer_shim_blocks_shimless() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig { + actor: TestingActorEnum::Solver(0), + ..PlaceInitialOfferInstructionConfig::default() + }), + InstructionTrigger::PlaceInitialOfferShimless(PlaceInitialOfferInstructionConfig { + actor: TestingActorEnum::Solver(1), + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: 0, + error_string: TransactionError::AccountInUse.to_string(), + }), + ..PlaceInitialOfferInstructionConfig::default() + }), + ]; + + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test with usdt token account +#[tokio::test] +pub async fn test_place_initial_offer_shim_fails_usdt_token_account() { + let expected_error = ExpectedError { + instruction_index: 2, + error_code: 3, // Token spl transfer error code when mint does not match + error_string: "Invalid argument".to_string(), + }; + let config = PlaceInitialOfferInstructionConfig { + spl_token_enum: SplTokenEnum::Usdt, + expected_error: Some(expected_error), + ..PlaceInitialOfferInstructionConfig::default() + }; + Box::pin(place_initial_offer_shim(config, None, TRANSFER_DIRECTION)).await; +} + +/// Test with usdt token account as custom account +#[tokio::test] +pub async fn test_place_initial_shim_offer_fails_usdt_mint_address() { + let custom_accounts = PlaceInitialOfferCustomAccounts { + mint_address: Some(crate::utils::constants::USDT_MINT), + ..PlaceInitialOfferCustomAccounts::default() + }; + let expected_error = ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::InvalidMint), // Token spl transfer error code when mint does not match + error_string: "Invalid mint".to_string(), + }; + let config = PlaceInitialOfferInstructionConfig { + custom_accounts: Some(custom_accounts), + spl_token_enum: SplTokenEnum::Usdt, + expected_error: Some(expected_error), + ..PlaceInitialOfferInstructionConfig::default() + }; + Box::pin(place_initial_offer_shim(config, None, TRANSFER_DIRECTION)).await; +} + +/// Test that the place initial offer fails if the fast market order is not created +#[tokio::test] +pub async fn test_place_initial_offer_fails_if_fast_market_order_not_created() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let fake_fast_market_order_address = testing_context + .get_vaa_pair(0) + .unwrap() + .fast_transfer_vaa + .vaa_pubkey; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig { + fast_market_order_address: OverwriteCurrentState::Some(fake_fast_market_order_address), + expected_error: Some(ExpectedError { + instruction_index: 2, + error_code: u32::from(ErrorCode::AccountDiscriminatorMismatch), // TODO: Revisit? + error_string: "Fast market order account owner is invalid".to_string(), + }), + ..PlaceInitialOfferInstructionConfig::default() + }), + ]; + + let testing_engine = TestingEngine::new(testing_context).await; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Place initial offer shim fails when Offer > Max fee +#[tokio::test] +pub async fn test_place_initial_offer_shim_fails_when_offer_greater_than_max_fee() { + let amount_in = 123456789_u64; + let (vaa_args, mut initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from(111111111), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_add(1), + post_vaa: false, + } + .create_vaa_args_and_initial_offer_config(); + + let expected_error = ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::OfferPriceTooHigh), + error_string: "Offer price is greater than max fee".to_string(), + }; + initial_offer_config.expected_error = Some(expected_error); + Box::pin(place_initial_offer_shim( + initial_offer_config, + Some(vaa_args), + TRANSFER_DIRECTION, + )) + .await; +} + +/// Place initial offer shim fails when amount in is u64::max +#[tokio::test] +pub async fn test_place_initial_offer_shim_fails_when_amount_in_is_u64_max() { + let amount_in = u64::MAX; + let (vaa_args, mut initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from(i32::MAX), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_sub(1), + post_vaa: false, + } + .create_vaa_args_and_initial_offer_config(); + + let expected_error = ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::U64Overflow), + error_string: "U64Overflow".to_string(), + }; + initial_offer_config.expected_error = Some(expected_error); + Box::pin(place_initial_offer_shim( + initial_offer_config, + Some(vaa_args), + TRANSFER_DIRECTION, + )) + .await; +} + +/// Place initial offer shim fails when max fee and amount in sum to u64::max +#[tokio::test] +pub async fn test_place_initial_offer_shim_fails_when_max_fee_and_amount_in_sum_to_u64_max() { + let amount_in = u64::MAX.saturating_div(2).saturating_add(1); + let (vaa_args, mut initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(2), + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from(111111111), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_div(2), + post_vaa: false, + } + .create_vaa_args_and_initial_offer_config(); + + let expected_error = ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::U64Overflow), + error_string: "U64Overflow".to_string(), + }; + initial_offer_config.expected_error = Some(expected_error); + + Box::pin(place_initial_offer_shim( + initial_offer_config, + Some(vaa_args), + TRANSFER_DIRECTION, + )) + .await; +} + +/// Test place initial offer shim fails when vaa is expired +#[tokio::test] +pub async fn test_place_initial_offer_shim_fails_when_vaa_is_expired() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + ]; + let initialse_fast_market_order_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + testing_engine + .make_fast_transfer_vaa_expired(&mut test_context, 60) // 1 minute after expiry + .await; + + let place_initial_offer_config = PlaceInitialOfferInstructionConfig { + expected_error: Some(ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::FastMarketOrderExpired), + error_string: "Fast market order has expired".to_string(), + }), + ..PlaceInitialOfferInstructionConfig::default() + }; + + let instruction_triggers = vec![InstructionTrigger::PlaceInitialOfferShim( + place_initial_offer_config, + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(initialse_fast_market_order_state), + ) + .await; +} + +#[tokio::test] +pub async fn test_place_initial_offer_shim_fails_custodian_is_paused() { + let transfer_direction = TransferDirection::FromArbitrumToEthereum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + ]; + let initial_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + + let pause_custodian_config = SetPauseCustodianInstructionConfig { + is_paused: true, + ..Default::default() + }; + let instruction_triggers = vec![InstructionTrigger::SetPauseCustodian( + pause_custodian_config, + )]; + let paused_state = testing_engine + .execute(&mut test_context, instruction_triggers, Some(initial_state)) + .await; + + let place_initial_offer_config = PlaceInitialOfferInstructionConfig { + expected_error: Some(ExpectedError { + instruction_index: 2, + error_code: u32::from(MatchingEngineError::Paused), + error_string: "Fast market order account owner is invalid".to_string(), + }), + ..PlaceInitialOfferInstructionConfig::default() + }; + let instruction_triggers = vec![InstructionTrigger::PlaceInitialOfferShim( + place_initial_offer_config, + )]; + testing_engine + .execute(&mut test_context, instruction_triggers, Some(paused_state)) + .await; +} + +/// Test place initial offer shim fails back to back +#[tokio::test] +pub async fn test_place_initial_offer_shim_fails_back_to_back() { + let (initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + TRANSFER_DIRECTION, + )) + .await; + + let expected_error = ExpectedError { + instruction_index: 2, + error_code: 0, + error_string: "Already in use".to_string(), + }; + let place_initial_offer_config = PlaceInitialOfferInstructionConfig { + expected_error: Some(expected_error), + ..PlaceInitialOfferInstructionConfig::default() + }; + let instruction_triggers = vec![InstructionTrigger::PlaceInitialOfferShim( + place_initial_offer_config, + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(initial_offer_state), + ) + .await; +} + +/// Test place initial offer shim fails back to back +#[tokio::test] +pub async fn test_place_initial_offer_shimless_fails_back_to_back() { + let (initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shimless( + PlaceInitialOfferInstructionConfig::default(), + None, + TRANSFER_DIRECTION, + )) + .await; + + let expected_error = ExpectedError { + instruction_index: 0, + error_code: 0, + error_string: "Already in use".to_string(), + }; + let place_initial_offer_config = PlaceInitialOfferInstructionConfig { + expected_error: Some(expected_error), + ..PlaceInitialOfferInstructionConfig::default() + }; + let instruction_triggers = vec![InstructionTrigger::PlaceInitialOfferShimless( + place_initial_offer_config, + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(initial_offer_state), + ) + .await; +} + +/// Test that improved offer fails when improvement is too small +#[tokio::test] +pub async fn test_improve_offer_shim_fails_carping() { + let amount_in = 123456789_u64; + let (vaa_args, initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from(111111111), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_sub(1), + post_vaa: false, + } + .create_vaa_args_and_initial_offer_config(); + + let (initial_offer_state, mut test_context, testing_engine) = Box::pin( + place_initial_offer_shim(initial_offer_config, Some(vaa_args), TRANSFER_DIRECTION), + ) + .await; + + let expected_error = ExpectedError { + instruction_index: 0, + error_code: u32::from(MatchingEngineError::CarpingNotAllowed), + error_string: "Carping not allowed".to_string(), + }; + + let improve_offer_config = ImproveOfferInstructionConfig { + offer_price: amount_in.saturating_sub(1), + expected_error: Some(expected_error), + ..ImproveOfferInstructionConfig::default() + }; + let instruction_triggers = vec![InstructionTrigger::ImproveOfferShimless( + improve_offer_config, + )]; + + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(initial_offer_state), + ) + .await; +} + +/// Test that improved offer fails when improvement is too small after an allowed improvement +#[tokio::test] +pub async fn test_improve_offer_shim_fails_carping_second_improvement() { + let amount_in = 123456789_u64; + let (vaa_args, initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from(111111111), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_sub(1), + post_vaa: false, + } + .create_vaa_args_and_initial_offer_config(); + + let (initial_offer_state, mut test_context, testing_engine) = Box::pin( + place_initial_offer_shim(initial_offer_config, Some(vaa_args), TRANSFER_DIRECTION), + ) + .await; + let new_offer_price = amount_in.saturating_sub(1).saturating_div(2); + let improve_offer_config = ImproveOfferInstructionConfig { + offer_price: new_offer_price, + expected_error: None, + ..ImproveOfferInstructionConfig::default() + }; + let expected_error = ExpectedError { + instruction_index: 0, + error_code: u32::from(MatchingEngineError::CarpingNotAllowed), + error_string: "Carping not allowed".to_string(), + }; + let improve_offer_config_2 = ImproveOfferInstructionConfig { + offer_price: new_offer_price.saturating_sub(1), + expected_error: Some(expected_error), + ..ImproveOfferInstructionConfig::default() + }; + let instruction_triggers = vec![ + InstructionTrigger::ImproveOfferShimless(improve_offer_config), + InstructionTrigger::ImproveOfferShimless(improve_offer_config_2), + ]; + + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(initial_offer_state), + ) + .await; +} + +/* + Edge case tests section + 88 + 88 + 88 + ,adPPYba, ,adPPYba, 8b,dPPYba, ,adPPYba, ,adPPYba, 8b,dPPYba, ,adPPYba, ,adPPYb,88 +a8" "" a8P_____88 88P' `"8a I8[ "" a8" "8a 88P' "Y8 a8P_____88 a8" `Y88 +8b 8PP""""""" 88 88 `"Y8ba, 8b d8 88 8PP""""""" 8b 88 +"8a, ,aa "8b, ,aa 88 88 aa ]8I "8a, ,a8" 88 "8b, ,aa "8a, ,d88 + `"Ybbd8"' `"Ybbd8"' 88 88 `"YbbdP"' `"YbbdP"' 88 `"Ybbd8"' `"8bbdP"Y8 +*/ + +/// Test place initial offer shim when Offer == Max fee; Max fee == Amount in minus 1 +#[tokio::test] +pub async fn test_place_initial_offer_shim_when_offer_equals_max_fee() { + let amount_in = 123456789_u64; + let (vaa_args, initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), // Equal to amount in in minus 1 + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from(111111111), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_sub(1), // Equal to max fee + post_vaa: false, + } + .create_vaa_args_and_initial_offer_config(); + + Box::pin(place_initial_offer_shim( + initial_offer_config, + Some(vaa_args), + TRANSFER_DIRECTION, + )) + .await; +} + +/// Test place initial offer shimless when Offer == Max fee; Max fee == Amount in minus 1 +#[tokio::test] +pub async fn test_place_initial_offer_shimless_when_offer_equals_max_fee() { + let amount_in = 123456789_u64; + let (vaa_args, initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), // Equal to amount in in minus 1 + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from(111111111), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_sub(1), // Equal to max fee + post_vaa: true, + } + .create_vaa_args_and_initial_offer_config(); + + Box::pin(place_initial_offer_shimless( + initial_offer_config, + Some(vaa_args), + TRANSFER_DIRECTION, + )) + .await; +} + +/// Test place initial offer shim when deposit amount == u256::MAX +#[tokio::test] +pub async fn test_place_initial_offer_shim_when_deposit_amount_is_u256_max() { + let amount_in = 123456789_u64; + let be_deposit_bytes: [u8; 32] = [ + u64::MAX.to_be_bytes(), + u64::MAX.to_be_bytes(), + u64::MAX.to_be_bytes(), + u64::MAX.to_be_bytes(), + ] + .concat() + .try_into() + .unwrap(); + let (vaa_args, initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from_be_bytes(be_deposit_bytes), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_sub(1), + post_vaa: true, + } + .create_vaa_args_and_initial_offer_config(); + + Box::pin(place_initial_offer_shim( + initial_offer_config, + Some(vaa_args), + TRANSFER_DIRECTION, + )) + .await; +} + +/// Test place initial offer shimless when deposit amount == u256::MAX +#[tokio::test] +pub async fn test_place_initial_offer_shimless_when_deposit_amount_is_u256_max() { + let amount_in = 123456789_u64; + let be_deposit_bytes: [u8; 32] = [ + u64::MAX.to_be_bytes(), + u64::MAX.to_be_bytes(), + u64::MAX.to_be_bytes(), + u64::MAX.to_be_bytes(), + ] + .concat() + .try_into() + .unwrap(); + let (vaa_args, initial_offer_config) = TestAuctionSetup { + amount_in, + min_amount_out: amount_in.saturating_sub(5), + max_fee: amount_in.saturating_sub(1), + init_auction_fee: amount_in.saturating_div(3), + deposit_amount: ruint::aliases::U256::from_be_bytes(be_deposit_bytes), + deposit_base_fee: amount_in.saturating_div(4), + offer_price: amount_in.saturating_sub(1), + post_vaa: true, + } + .create_vaa_args_and_initial_offer_config(); + + Box::pin(place_initial_offer_shimless( + initial_offer_config, + Some(vaa_args), + TRANSFER_DIRECTION, + )) + .await; +} + +#[tokio::test] +pub async fn test_improve_offer_after_close_fast_market_order() { + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + TRANSFER_DIRECTION, + )) + .await; + let instruction_triggers = vec![ + InstructionTrigger::CloseFastMarketOrderShim( + CloseFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::ImproveOfferShimless(ImproveOfferInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +#[tokio::test] +pub async fn test_improve_offer_after_reopen_fast_market_order() { + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + TRANSFER_DIRECTION, + )) + .await; + let reopen_fast_market_order_state = Box::pin(reopen_fast_market_order_shim( + place_initial_offer_state, + &mut test_context, + &testing_engine, + None, + )) + .await; + let improve_offer_trigger = vec![InstructionTrigger::ImproveOfferShimless( + ImproveOfferInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + improve_offer_trigger, + Some(reopen_fast_market_order_state), + ) + .await; +} + +/* +================================================================================ +Helper structs and functions +================================================================================ +*/ + +pub async fn place_initial_offer_shim( + config: PlaceInitialOfferInstructionConfig, + vaa_args: Option>, + transfer_direction: TransferDirection, +) -> (TestingEngineState, ProgramTestContext, TestingEngine) { + let vaa_args = vaa_args.unwrap_or_else(|| { + vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }] + }); + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + + let testing_engine = TestingEngine::new(testing_context).await; + + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(config), + ]; + + ( + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await, + test_context, + testing_engine, + ) +} + +pub async fn place_initial_offer_shimless( + config: PlaceInitialOfferInstructionConfig, + vaa_args: Option>, + transfer_direction: TransferDirection, +) -> (TestingEngineState, ProgramTestContext, TestingEngine) { + let vaa_args = vaa_args.unwrap_or_else(|| { + vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }] + }); + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShimless(config), + ]; + ( + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await, + test_context, + testing_engine, + ) +} + +pub async fn reopen_fast_market_order_shim( + initial_state: TestingEngineState, + test_context: &mut ProgramTestContext, + testing_engine: &TestingEngine, + configs: Option<( + InitializeFastMarketOrderShimInstructionConfig, + CloseFastMarketOrderShimInstructionConfig, + )>, +) -> TestingEngineState { + // If no configs are provided, assume its the first reopening + let (reopen_config, close_config) = configs.unwrap_or_else(|| { + let correct_solver = &testing_engine + .testing_context + .testing_actors + .solvers + .get(1) + .unwrap() + .pubkey(); + ( + InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 1, + close_account_refund_recipient: Some(*correct_solver), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + CloseFastMarketOrderShimInstructionConfig::default(), + ) + }); + let instruction_triggers = vec![ + InstructionTrigger::CloseFastMarketOrderShim(close_config), + InstructionTrigger::InitializeFastMarketOrderShim(reopen_config), + ]; + + testing_engine + .execute(test_context, instruction_triggers, Some(initial_state)) + .await +} + +/// A struct representing the auction info and its valid state +// TODO: Use this or something similar to fuzz test over various initial offers. +#[derive(Clone)] +pub struct TestAuctionSetup { + pub amount_in: u64, // Must be small enough for security deposit to be less than u64::MAX + pub min_amount_out: u64, // Not used for anything can be any value + pub max_fee: u64, // Must be greater than or equal to offer price + pub init_auction_fee: u64, // Must be less than or equal to max fee + pub deposit_amount: ruint::aliases::U256, + pub deposit_base_fee: u64, + pub offer_price: u64, // Must be less than or equal to max fee + pub post_vaa: bool, // Must be true for shimless tests +} + +impl TestAuctionSetup { + #[allow(dead_code)] + pub fn calculate_security_deposit_notional(&self) -> u64 { + let test_auction_parameters = AuctionParameters { + user_penalty_reward_bps: 250000, + initial_penalty_bps: 250000, + duration: 2, + grace_period: 5, + penalty_period: 10, + min_offer_delta_bps: 20000, + security_deposit_base: 4200000, + security_deposit_bps: 5000, + }; + + matching_engine::utils::auction::compute_notional_security_deposit( + &test_auction_parameters, + self.amount_in, + ) + } + + pub fn create_vaa_args_and_initial_offer_config( + &self, + ) -> (Vec, PlaceInitialOfferInstructionConfig) { + let create_deposit_and_fast_transfer_params = CreateDepositAndFastTransferParams { + deposit_params: CreateDepositParams { + amount: self.deposit_amount, + base_fee: self.deposit_base_fee, + }, + fast_transfer_params: CreateFastTransferParams { + amount_in: self.amount_in, + min_amount_out: self.amount_in, + max_fee: self.max_fee, + init_auction_fee: self.init_auction_fee, + }, + }; + let vaa_args = vec![VaaArgs { + post_vaa: self.post_vaa, + create_deposit_and_fast_transfer_params, + ..Default::default() + }]; + let initial_offer_config = PlaceInitialOfferInstructionConfig { + offer_price: self.offer_price, + ..PlaceInitialOfferInstructionConfig::default() + }; + (vaa_args, initial_offer_config) + } +} diff --git a/solana/modules/matching-engine-testing/tests/test_scenarios/mod.rs b/solana/modules/matching-engine-testing/tests/test_scenarios/mod.rs new file mode 100644 index 000000000..412f26123 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/test_scenarios/mod.rs @@ -0,0 +1,6 @@ +pub mod create_and_close_fast_market_order; +pub mod execute_order; +pub mod initialize_and_misc; +pub mod make_offer; +pub mod prepare_order; +pub mod settle_auction; diff --git a/solana/modules/matching-engine-testing/tests/test_scenarios/prepare_order.rs b/solana/modules/matching-engine-testing/tests/test_scenarios/prepare_order.rs new file mode 100644 index 000000000..e832d8952 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/test_scenarios/prepare_order.rs @@ -0,0 +1,651 @@ +#![allow(clippy::expect_used)] +#![allow(clippy::panic)] + +//! # Prepare order response instruction testing +//! +//! This module contains tests for the prepare order response instructions. +//! +//! ## Test Cases +//! +//! ### Happy path tests +//! +//! - `test_prepare_order_shim_fallback` - Test that the prepare order shim fallback instruction works correctly +//! - `test_prepare_order_shimless` - Test that the prepare order shimless instruction works correctly +//! +//! ### Sad path tests +//! +//! - `test_prepare_order_response_shimless_blocks_shimful` - Test that the prepare order response shimless instruction blocks the shimful instruction +//! - `test_prepare_order_response_shimful_blocks_shimless` - Test that the prepare order response shimful instruction blocks the shimless instruction +//! + +use crate::test_scenarios::execute_order::{execute_order_helper, ShimExecutionMode}; +use crate::test_scenarios::make_offer::place_initial_offer_shim; +use crate::testing_engine; +use crate::testing_engine::config::{ + InitializeInstructionConfig, PlaceInitialOfferInstructionConfig, + PrepareOrderResponseInstructionConfig, +}; +use crate::utils::public_keys::ChainAddress; +use crate::utils::{self, Chain}; + +use matching_engine::error::MatchingEngineError; +use ruint::aliases::U256; +use solana_program_test::tokio; +use solana_sdk::pubkey::Pubkey; +use solana_sdk::transaction::TransactionError; +use testing_engine::config::*; +use testing_engine::engine::{InstructionTrigger, TestingEngine}; +use testing_engine::setup::{setup_environment, ShimMode, TransferDirection}; +use utils::vaa::VaaArgs; + +use super::make_offer::reopen_fast_market_order_shim; + +/* + Happy path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** * * ** +** ** ** ** + ** **** **** ** + ** ** ** ** + ** *** *** ** + *** **** **** *** + ** ****** ****** ** + *** *************** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the prepare order shim instruction works correctly (from ethereum to arbitrum) +#[tokio::test] +pub async fn test_prepare_order_shimful() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that the prepare order shimless instruction works correctly (from ethereum to arbitrum) +#[tokio::test] +pub async fn test_prepare_order_shimless() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShimless(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShimless(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShimless(PrepareOrderResponseInstructionConfig::default()), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that prepare order response shim works after executing order shimlessly +#[tokio::test] +pub async fn test_prepare_order_response_shim_after_execute_order_shimless() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (execute_order_state, mut test_context, testing_engine) = Box::pin(execute_order_helper( + ExecuteOrderInstructionConfig::default(), + ShimExecutionMode::Shimless, + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(execute_order_state), + ) + .await; +} + +/// Test that prepare order response shimless works after executing order shimlessly +#[tokio::test] +pub async fn test_prepare_order_response_shimless_after_execute_order_shim() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (execute_order_state, mut test_context, testing_engine) = Box::pin(execute_order_helper( + ExecuteOrderInstructionConfig::default(), + ShimExecutionMode::Shim, + Some(vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]), + transfer_direction, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::PrepareOrderShimless( + PrepareOrderResponseInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(execute_order_state), + ) + .await; +} + +/// Test prepare order response shim after reopening fast market order account in between offer and execute order +#[tokio::test] +pub async fn test_prepare_order_response_shim_after_reopening_fast_market_order_account() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let reopen_fast_market_order_state = Box::pin(reopen_fast_market_order_shim( + place_initial_offer_state, + &mut test_context, + &testing_engine, + None, + )) + .await; + let instruction_triggers = vec![ + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(reopen_fast_market_order_state), + ) + .await; +} + +/// Test that prepare order response shim works after reopening fast market order after place initial offer AND execute order +#[tokio::test] +pub async fn test_prepare_order_response_shim_after_reopening_fast_market_order_account_after_execute_order_and_place_initial_offer( +) { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let reopen_fast_market_order_state = Box::pin(reopen_fast_market_order_shim( + place_initial_offer_state, + &mut test_context, + &testing_engine, + None, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::ExecuteOrderShim( + ExecuteOrderInstructionConfig::default(), + )]; + let execute_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(reopen_fast_market_order_state), + ) + .await; + let second_solver_keypair = testing_engine + .testing_context + .testing_actors + .solvers + .get(1) + .unwrap() + .clone() + .keypair(); + let third_solver_pubkey = &testing_engine + .testing_context + .testing_actors + .solvers + .get(2) + .unwrap() + .pubkey(); + let reopen_config = InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 2, + close_account_refund_recipient: Some(*third_solver_pubkey), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }; + let close_config = CloseFastMarketOrderShimInstructionConfig { + close_account_refund_recipient_keypair: Some(second_solver_keypair), + ..CloseFastMarketOrderShimInstructionConfig::default() + }; + let double_reopen_fast_market_order_state = Box::pin(reopen_fast_market_order_shim( + execute_order_state, + &mut test_context, + &testing_engine, + Some((reopen_config, close_config)), + )) + .await; + let instruction_triggers = vec![InstructionTrigger::PrepareOrderShim( + PrepareOrderResponseInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(double_reopen_fast_market_order_state), + ) + .await; +} + +/// Test prepare order response shim after custodian is paused after initial offer +#[tokio::test] +pub async fn test_prepare_order_response_shim_after_custodian_is_paused_after_initial_offer() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![ + InstructionTrigger::SetPauseCustodian(SetPauseCustodianInstructionConfig { + is_paused: true, + ..Default::default() + }), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +/// Prepare order response shim for completed auction after grace period +#[tokio::test] +pub async fn test_prepare_order_response_shim_for_completed_auction_after_grace_period() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + testing_engine + .make_auction_passed_grace_period(&mut test_context, &place_initial_offer_state, 1) + .await; + let instruction_triggers = vec![ + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +/// Prepare order response shim for active auction +#[tokio::test] +pub async fn test_prepare_order_response_shim_within_auction_period() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + let instruction_triggers = vec![InstructionTrigger::PrepareOrderShim( + PrepareOrderResponseInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +/* + Sad path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** ** +** ** +** ** + ** ************ ** + ** ****** ****** ** + *** ***** ***** *** + ** *** *** ** + *** ** ** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the prepare order response shimless instruction blocks the shimful instruction +#[tokio::test] +pub async fn test_prepare_order_response_shimless_blocks_shimful() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShimless(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShimless(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShimless(PrepareOrderResponseInstructionConfig::default()), + // TODO: Figure out why this is failing on account already in use rather than the what happens the other way around above + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig { + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: 0, + error_string: TransactionError::AccountInUse.to_string(), + }), + ..PrepareOrderResponseInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test that the prepare order response shimful instruction blocks the shimless instruction +#[tokio::test] +pub async fn test_prepare_order_response_shimful_blocks_shimless() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + InstructionTrigger::PrepareOrderShimless(PrepareOrderResponseInstructionConfig { + expected_log_messages: Some(vec![ExpectedLog { + log_message: "Already prepared".to_string(), + count: 1, + }]), + ..PrepareOrderResponseInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Cannot prepare order response with emitter chain mismatch +#[tokio::test] +pub async fn test_prepare_order_response_shim_emitter_chain_mismatch() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![ + VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }, + VaaArgs { + post_vaa: false, + override_emitter_chain_and_address: Some(ChainAddress::from_registered_token_router( + Chain::Arbitrum, + )), + ..VaaArgs::default() + }, + ]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig { + vaa_index: 0, + ..ExecuteOrderInstructionConfig::default() + }), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig { + vaa_index: 1, + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: 0, + error_string: "".to_string(), + }), + ..PrepareOrderResponseInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +#[tokio::test] +pub async fn test_prepare_order_response_shimless_emitter_chain_mismatch() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![ + VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }, + VaaArgs { + post_vaa: true, + override_emitter_chain_and_address: Some(ChainAddress::from_registered_token_router( + Chain::Arbitrum, + )), + ..VaaArgs::default() + }, + ]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShimless(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShimless(ExecuteOrderInstructionConfig { + vaa_index: 0, + ..ExecuteOrderInstructionConfig::default() + }), + InstructionTrigger::PrepareOrderShimless(PrepareOrderResponseInstructionConfig { + vaa_index: 1, + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: u32::from(MatchingEngineError::InvalidSourceRouter), + error_string: "Invalid source router".to_string(), + }), + ..PrepareOrderResponseInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Cannot prepare order response with deposit cctp nonce mismatch +#[tokio::test] +pub async fn test_prepare_order_response_shim_deposit_cctp_nonce_mismatch() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![ + VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }, + VaaArgs { + post_vaa: false, + sequence: Some(69), + cctp_nonce: Some(16), + create_deposit_and_fast_transfer_params: + utils::vaa::CreateDepositAndFastTransferParams { + deposit_params: utils::vaa::CreateDepositParams { + amount: U256::from(10000), + base_fee: 10, + }, + fast_transfer_params: utils::vaa::CreateFastTransferParams { + ..utils::vaa::CreateFastTransferParams { + amount_in: 100, + max_fee: 12, + init_auction_fee: 1, + ..utils::vaa::CreateFastTransferParams::default() + } + }, + }, + ..VaaArgs::default() + }, + ]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig { + vaa_index: 0, + ..ExecuteOrderInstructionConfig::default() + }), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + fast_market_order_id: 1, + vaa_index: 1, + close_account_refund_recipient: Some(Pubkey::new_unique()), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + // TODO: Figure out if this is wrong. The cctp message is + // It currently fails because no auction has been created on this account so therefore the custodian is not the authority + // and therefore cannot prepare the order at the transfer instruction + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig { + vaa_index: 1, + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: 0, + error_string: "".to_string(), + }), + ..PrepareOrderResponseInstructionConfig::default() + }), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} diff --git a/solana/modules/matching-engine-testing/tests/test_scenarios/settle_auction.rs b/solana/modules/matching-engine-testing/tests/test_scenarios/settle_auction.rs new file mode 100644 index 000000000..1f2a7d47f --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/test_scenarios/settle_auction.rs @@ -0,0 +1,757 @@ +//! # Settle auction instruction testing +//! +//! This module contains tests for the settle auction instruction. +//! +//! ## Test Cases +//! +//! ### Happy path tests +//! +//! - `test_settle_auction_complete` - Test that the settle auction instruction works correctly +//! +use crate::test_scenarios::make_offer::{place_initial_offer_shim, reopen_fast_market_order_shim}; +use crate::testing_engine; +use crate::testing_engine::config::{ + InitializeInstructionConfig, PlaceInitialOfferInstructionConfig, +}; +use crate::utils; +use crate::utils::auction::{ActiveAuctionState, AuctionAccounts}; + +use anchor_lang::error::ErrorCode; +use solana_program_test::tokio; +use testing_engine::config::*; +use testing_engine::engine::{InstructionTrigger, TestingEngine}; +use testing_engine::setup::{setup_environment, ShimMode, TransferDirection}; +use utils::vaa::VaaArgs; + +/* + Happy path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** * * ** +** ** ** ** + ** **** **** ** + ** ** ** ** + ** *** *** ** + *** **** **** *** + ** ****** ****** ** + *** *************** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test that the settle auction instruction works correctly +#[tokio::test] +pub async fn test_settle_auction_complete() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + + let testing_engine = TestingEngine::new(testing_context).await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + InstructionTrigger::SettleAuction(SettleAuctionInstructionConfig::default()), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; +} + +/// Test settle auction works when custodian is paused +#[tokio::test] +pub async fn test_settle_auction_custodian_paused() { + let (initial_state, mut test_context, testing_engine) = Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + TransferDirection::FromEthereumToArbitrum, + )) + .await; + + let instruction_triggers = vec![ + InstructionTrigger::SetPauseCustodian(SetPauseCustodianInstructionConfig { + is_paused: true, + ..Default::default() + }), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + InstructionTrigger::SettleAuction(SettleAuctionInstructionConfig::default()), + ]; + testing_engine + .execute(&mut test_context, instruction_triggers, Some(initial_state)) + .await; +} + +/// Test that the settle auction instruction works with reopened fast market order +#[tokio::test] +pub async fn test_settle_auction_reopened_fast_market_order() { + let (initial_state, mut test_context, testing_engine) = Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + Some(vec![VaaArgs::default()]), + TransferDirection::FromEthereumToArbitrum, + )) + .await; + + let reopen_fast_market_order_state = Box::pin(reopen_fast_market_order_shim( + initial_state, + &mut test_context, + &testing_engine, + None, + )) + .await; + + let instruction_triggers = vec![ + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + InstructionTrigger::SettleAuction(SettleAuctionInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(reopen_fast_market_order_state), + ) + .await; +} + +/// Test that the settle auction instruction results in the same balance changes for shim as non shim +#[tokio::test] +pub async fn test_settle_auction_balance_changes() { + // Run both tests and compare results + let balance_changes_shim = Box::pin(helpers::balance_changes_shim()).await; + let balance_changes_shimless = Box::pin(helpers::balance_changes_shimless()).await; + + // Compare results + helpers::compare_balance_changes(&balance_changes_shim, &balance_changes_shimless); +} + +/// Test settle auction prepare order before active auction +#[tokio::test] +pub async fn test_settle_auction_prepare_order_before_active_auction() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vec![VaaArgs::default()]), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + ]; + let create_cctp_router_endpoints_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + + // This is just needed to get the router endpoint accounts when prepare order happens before place initial offer, it is not used for anything else + let fake_auction_accounts = AuctionAccounts::fake_auction_accounts( + &create_cctp_router_endpoints_state, + &testing_engine.testing_context, + ); + let instruction_triggers = vec![ + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig { + overwrite_auction_accounts: Some(fake_auction_accounts), + ..Default::default() + }), + ]; + let prepared_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(create_cctp_router_endpoints_state), + ) + .await; + + let instruction_triggers = vec![ + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::SettleAuction(SettleAuctionInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(prepared_order_state), + ) + .await; +} + +/// Test settle auction with base_fee_token != best offer actor +#[tokio::test] +pub async fn test_settle_auction_base_fee_token_not_best_offer_actor() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (place_initial_offer_state, mut test_context, testing_engine) = + Box::pin(place_initial_offer_shim( + PlaceInitialOfferInstructionConfig::default(), + None, + transfer_direction, + )) + .await; + + let instruction_triggers = vec![ + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig { + actor_enum: TestingActorEnum::Solver(2), + ..Default::default() + }), + InstructionTrigger::SettleAuction(SettleAuctionInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; +} + +/// Test settle auction none shim +#[tokio::test] +pub async fn test_settle_auction_none_shimful() { + let (mut test_context, prepared_order_state, testing_engine, _initial_balances) = + Box::pin(helpers::prepare_settle_auction_none_shimful()).await; + let instruction_triggers = vec![InstructionTrigger::SettleAuctionNoneShim( + SettleAuctionNoneInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(prepared_order_state), + ) + .await; +} + +/// Test settle auction none shimless +#[tokio::test] +pub async fn test_settle_auction_none_shimless() { + let (mut test_context, prepared_order_state, testing_engine, _initial_balances) = + Box::pin(helpers::prepare_settle_auction_none_cctp_shimless()).await; + let instruction_triggers = vec![InstructionTrigger::SettleAuctionNoneShimless( + SettleAuctionNoneInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(prepared_order_state), + ) + .await; +} + +/// Test that balance changes are comparable between shim and shimless +#[tokio::test] +pub async fn test_settle_auction_none_balance_changes_comparable() { + let balance_changes_shimful = { + let (mut test_context, prepared_order_state, testing_engine, initial_balances) = + Box::pin(helpers::prepare_settle_auction_none_shimful()).await; + let instruction_triggers = vec![InstructionTrigger::SettleAuctionNoneShim( + SettleAuctionNoneInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(prepared_order_state), + ) + .await; + let final_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + BalanceChanges::from((&initial_balances, &final_balances)) + }; + let balance_changes_shimless = { + let (mut test_context, prepared_order_state, testing_engine, initial_balances) = + Box::pin(helpers::prepare_settle_auction_none_cctp_shimless()).await; + let instruction_triggers = vec![InstructionTrigger::SettleAuctionNoneShimless( + SettleAuctionNoneInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(prepared_order_state), + ) + .await; + let final_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + BalanceChanges::from((&initial_balances, &final_balances)) + }; + helpers::compare_balance_changes(&balance_changes_shimful, &balance_changes_shimless); +} + +/* + Sad path tests section + + ***************** + ****** ****** + **** **** + **** *** + *** *** + ** *** *** ** + ** ******* ******* *** + ** ******* ******* ** + ** ******* ******* ** + ** *** *** ** +** ** +** ** +** ** +** ** + ** ************ ** + ** ****** ****** ** + *** ***** ***** *** + ** *** *** ** + *** ** ** *** + **** **** + **** **** + ****** ****** + ***************** +*/ + +/// Test cannot settle non-existent auction +#[tokio::test] +pub async fn test_settle_auction_non_existent() { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vec![VaaArgs::default()]), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + ]; + let create_cctp_router_endpoints_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + + let fake_auction_accounts = AuctionAccounts::fake_auction_accounts( + &create_cctp_router_endpoints_state, + &testing_engine.testing_context, + ); + let fake_active_auction_state = + ActiveAuctionState::fake_active_auction_state(&fake_auction_accounts); + let instruction_triggers = vec![ + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig { + overwrite_auction_accounts: Some(fake_auction_accounts), + ..Default::default() + }), + InstructionTrigger::SettleAuction(SettleAuctionInstructionConfig { + overwrite_active_auction_state: Some(fake_active_auction_state), + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: u32::from(ErrorCode::AccountNotInitialized), + error_string: "AccountNotInitialized".to_string(), + }), + ..SettleAuctionInstructionConfig::default() + }), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(create_cctp_router_endpoints_state), + ) + .await; +} + +/// Test cannot settle auction none if place initial offer is made +#[tokio::test] +pub async fn test_cannot_settle_auction_none_shim_after_place_initial_offer() { + let (mut test_context, prepared_order_state, testing_engine, _initial_balances) = + Box::pin(helpers::prepare_settle_auction_none_shimful()).await; + let instruction_triggers = vec![ + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + InstructionTrigger::SettleAuctionNoneShim(SettleAuctionNoneInstructionConfig { + expected_error: Some(ExpectedError { + instruction_index: 0, + error_code: 0, + error_string: "Account In Use".to_string(), + }), + ..SettleAuctionNoneInstructionConfig::default() + }), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(prepared_order_state), + ) + .await; +} + +/* +Helper code +*/ +mod helpers { + use solana_program_test::ProgramTestContext; + + use crate::testing_engine::{setup::Balances, state::TestingEngineState}; + + use super::*; + + pub async fn balance_changes_shim() -> BalanceChanges { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![VaaArgs { + post_vaa: false, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + + let testing_engine = TestingEngine::new(testing_context).await; + let initial_state_balances_shim = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig { + close_account_refund_recipient: Some( + testing_engine.testing_context.testing_actors.owner.pubkey(), + ), + ..InitializeFastMarketOrderShimInstructionConfig::default() + }, + ), + InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), + ]; + let place_initial_offer_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + let place_initial_offer_balances_shim = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + println!( + "place_initial_offer_balances_shim: {:?}", + place_initial_offer_balances_shim + .get(&TestingActorEnum::Solver(0)) + .unwrap() + .lamports + ); + let instruction_triggers = vec![ + InstructionTrigger::ExecuteOrderShim(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig::default()), + ]; + let prepare_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let prepare_order_balances_shim = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + println!( + "prepare_order_balances_shim: {:?}", + prepare_order_balances_shim + .get(&TestingActorEnum::Solver(0)) + .unwrap() + .lamports + ); + let instruction_triggers = vec![InstructionTrigger::CloseFastMarketOrderShim( + CloseFastMarketOrderShimInstructionConfig { + close_account_refund_recipient_keypair: Some( + testing_engine + .testing_context + .testing_actors + .owner + .keypair(), + ), + ..CloseFastMarketOrderShimInstructionConfig::default() + }, + )]; + let close_fast_market_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(prepare_order_state), + ) + .await; + let close_fast_market_order_balances_shim = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + println!( + "close_fast_market_order_balances_shim: {:?}", + close_fast_market_order_balances_shim + .get(&TestingActorEnum::Solver(0)) + .unwrap() + .lamports + ); + let instruction_triggers = vec![InstructionTrigger::SettleAuction( + SettleAuctionInstructionConfig::default(), + )]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(close_fast_market_order_state), + ) + .await; + let final_state_balances_shim = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + + BalanceChanges::from((&initial_state_balances_shim, &final_state_balances_shim)) + } + + pub async fn balance_changes_shimless() -> BalanceChanges { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let vaa_args = vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vaa_args), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + let initial_state_balances_shimless = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + InstructionTrigger::PlaceInitialOfferShimless( + PlaceInitialOfferInstructionConfig::default(), + ), + ]; + let place_initial_offer_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + let place_initial_offer_balances_shimless = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + println!( + "place_initial_offer_balances_shimless: {:?}", + place_initial_offer_balances_shimless + .get(&TestingActorEnum::Owner) + .unwrap() + .lamports + ); + let instruction_triggers = vec![ + InstructionTrigger::ExecuteOrderShimless(ExecuteOrderInstructionConfig::default()), + InstructionTrigger::PrepareOrderShimless( + PrepareOrderResponseInstructionConfig::default(), + ), + InstructionTrigger::SettleAuction(SettleAuctionInstructionConfig::default()), + ]; + testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(place_initial_offer_state), + ) + .await; + let final_state_balances_shimless = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + BalanceChanges::from(( + &initial_state_balances_shimless, + &final_state_balances_shimless, + )) + } + + pub fn compare_balance_changes(shim: &BalanceChanges, shimless: &BalanceChanges) { + let shimless_owner_balance_change = + shimless.get(&TestingActorEnum::Owner).unwrap().lamports; + let shim_owner_balance_change = shim.get(&TestingActorEnum::Owner).unwrap().lamports; + let avg_cost_of_posting_vaa = 10_000_000; + + assert!( + shim_owner_balance_change >= shimless_owner_balance_change.saturating_sub(avg_cost_of_posting_vaa), + "Shim owner balance change should be greater than or equal to shimless owner balance change. Shim: {:?}, Shimless {:?}", + shim_owner_balance_change, + shimless_owner_balance_change + ); + assert_eq!( + shimless.get(&TestingActorEnum::Solver(0)).unwrap().usdc, + shim.get(&TestingActorEnum::Solver(0)).unwrap().usdc, + "Solver 0 balance change should be the same for both shim and shimless" + ); + } + + /// Prepares testing engine state for settle auction none shimful + /// Returns: + /// - ProgramTestContext + /// - TestingEngineState + /// - TestingEngine + /// - Initial balances + pub async fn prepare_settle_auction_none_shimful() -> ( + ProgramTestContext, + TestingEngineState, + TestingEngine, + Balances, + ) { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (testing_context, mut test_context) = setup_environment( + ShimMode::VerifyAndPostSignature, + transfer_direction, + Some(vec![VaaArgs::default()]), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + ]; + let initial_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let create_cctp_router_endpoints_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + + // This is just needed to get the router endpoint accounts when prepare order happens before place initial offer, it is not used for anything else + let fake_auction_accounts = AuctionAccounts::fake_auction_accounts( + &create_cctp_router_endpoints_state, + &testing_engine.testing_context, + ); + let instruction_triggers = vec![ + InstructionTrigger::InitializeFastMarketOrderShim( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + InstructionTrigger::PrepareOrderShim(PrepareOrderResponseInstructionConfig { + overwrite_auction_accounts: Some(fake_auction_accounts), + ..Default::default() + }), + ]; + let prepare_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(create_cctp_router_endpoints_state), + ) + .await; + ( + test_context, + prepare_order_state, + testing_engine, + initial_state_balances, + ) + } + + pub async fn prepare_settle_auction_none_cctp_shimless() -> ( + ProgramTestContext, + TestingEngineState, + TestingEngine, + Balances, + ) { + let transfer_direction = TransferDirection::FromEthereumToArbitrum; + let (testing_context, mut test_context) = setup_environment( + ShimMode::None, + transfer_direction, + Some(vec![VaaArgs { + post_vaa: true, + ..VaaArgs::default() + }]), + ) + .await; + let testing_engine = TestingEngine::new(testing_context).await; + + let instruction_triggers = vec![ + InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), + InstructionTrigger::CreateCctpRouterEndpoints( + CreateCctpRouterEndpointsInstructionConfig::default(), + ), + ]; + let initial_state_balances = testing_engine + .testing_context + .get_balances(&mut test_context) + .await; + let create_cctp_router_endpoints_state = testing_engine + .execute(&mut test_context, instruction_triggers, None) + .await; + let fake_auction_accounts = AuctionAccounts::fake_auction_accounts( + &create_cctp_router_endpoints_state, + &testing_engine.testing_context, + ); + let instruction_triggers = vec![InstructionTrigger::PrepareOrderShimless( + PrepareOrderResponseInstructionConfig { + overwrite_auction_accounts: Some(fake_auction_accounts), + ..Default::default() + }, + )]; + let prepare_order_state = testing_engine + .execute( + &mut test_context, + instruction_triggers, + Some(create_cctp_router_endpoints_state), + ) + .await; + ( + test_context, + prepare_order_state, + testing_engine, + initial_state_balances, + ) + } +} diff --git a/solana/modules/matching-engine-testing/tests/testing_engine/config.rs b/solana/modules/matching-engine-testing/tests/testing_engine/config.rs new file mode 100644 index 000000000..f2a7c63d1 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/testing_engine/config.rs @@ -0,0 +1,685 @@ +//! # Testing Engine Config +//! +//! This module contains the configuration arguments for the testing engine. +//! +//! ## Examples +//! +//! ``` +//! use crate::testing_engine::config::*; +//! +//! let initialize_instruction_config = InitializeInstructionConfig::default(); +//! +//! let instruction_triggers = vec![ +//! InstructionTrigger::InitializeProgram(initialize_instruction_config), +//! ]; +//! ``` + +use std::{ + collections::{HashMap, HashSet}, + ops::Deref, + rc::Rc, +}; + +use crate::{ + shimful::fast_market_order_shim::create_fast_market_order_state_from_vaa_data, + shimless::initialize::AuctionParametersConfig, + utils::{ + auction::{ActiveAuctionState, AuctionAccounts}, + token_account::SplTokenEnum, + Chain, + }, +}; +use anchor_lang::prelude::*; +use matching_engine::state::FastMarketOrder as FastMarketOrderState; +use solana_program_test::ProgramTestContext; +use solana_sdk::signature::Keypair; + +use super::{ + setup::{Balance, Balances, TestingActor, TestingActors}, + state::TestingEngineState, +}; + +/// An instruction config contains the configuration arguments for an instruction as well as the expected error +pub trait InstructionConfig: Default { + fn expected_error(&self) -> Option<&ExpectedError>; + fn expected_log_messages(&self) -> Option<&Vec>; +} + +/// A type alias for an optional value that overwrites the current state +pub type OverwriteCurrentState = Option; + +/// A struct representing an expected error +/// +/// # Fields +/// +/// * `instruction_index` - The index of the instruction that is expected to error. Because of how the transaction is built in the testing engine, the instruction index is always at least 2. +/// * `error_code` - The error code that is expected to be returned +/// * `error_string` - A description of the error that is expected to be returned for debugging purposes +// TODO: Change the error string to either be checked for or change the field name AND make it optional +#[derive(Clone)] +pub struct ExpectedError { + pub instruction_index: u8, + pub error_code: u32, + pub error_string: String, +} + +/// A struct representing an expected log +/// +/// # Fields +/// +/// * `log_message` - The log message that is expected to be returned +/// * `count` - The number of times the log message is expected to appear +#[derive(Clone)] +pub struct ExpectedLog { + pub log_message: String, + pub count: usize, +} + +#[derive(Clone, Default)] +pub struct InitializeInstructionConfig { + pub auction_parameters_config: AuctionParametersConfig, + pub payer_signer: Option>, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl InstructionConfig for InitializeInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} +pub struct CreateCctpRouterEndpointsInstructionConfig { + pub chains: HashSet, + pub payer_signer: Option>, + pub admin_owner_or_assistant: Option>, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl Default for CreateCctpRouterEndpointsInstructionConfig { + fn default() -> Self { + Self { + chains: HashSet::from([Chain::Ethereum, Chain::Arbitrum, Chain::Solana]), + payer_signer: None, + admin_owner_or_assistant: None, + expected_error: None, + expected_log_messages: None, + } + } +} + +impl InstructionConfig for CreateCctpRouterEndpointsInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +#[derive(Clone, Default)] +pub struct InitializeFastMarketOrderShimInstructionConfig { + pub fast_market_order_id: u32, + pub close_account_refund_recipient: Option, // If none defaults to solver 0 pubkey, + pub vaa_index: usize, // If none defaults to 0 + pub payer_signer: Option>, // If none defaults to owner keypair + pub expected_error: Option, // If none, will not check for an error + pub expected_log_messages: Option>, // If none, will not check for logs +} + +impl InstructionConfig for InitializeFastMarketOrderShimInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +#[derive(Clone, Default)] +pub struct SetPauseCustodianInstructionConfig { + pub payer_signer: Option>, + pub is_paused: bool, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl InstructionConfig for SetPauseCustodianInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +#[derive(Clone, Default)] +pub struct PrepareOrderResponseInstructionConfig { + pub fast_market_order_address: OverwriteCurrentState, + pub overwrite_auction_accounts: OverwriteCurrentState, + pub actor_enum: TestingActorEnum, + pub token_enum: SplTokenEnum, + pub vaa_index: usize, + pub payer_signer: Option>, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl InstructionConfig for PrepareOrderResponseInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +#[derive(Clone)] +pub struct ExecuteOrderInstructionConfig { + pub fast_market_order_address: OverwriteCurrentState, + pub actor_enum: TestingActorEnum, + pub token_enum: SplTokenEnum, + pub vaa_index: usize, + pub fast_forward_slots: u64, // Number of slots to fast forward, defaults to 3 in Default impl + pub payer_signer: Option>, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl Default for ExecuteOrderInstructionConfig { + fn default() -> Self { + Self { + fast_forward_slots: 3, + actor_enum: TestingActorEnum::default(), + fast_market_order_address: None, + token_enum: SplTokenEnum::default(), + vaa_index: 0, + payer_signer: None, + expected_error: None, + expected_log_messages: None, + } + } +} + +impl InstructionConfig for ExecuteOrderInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +#[derive(Clone, Default)] +pub struct SettleAuctionInstructionConfig { + pub overwrite_active_auction_state: OverwriteCurrentState, + pub payer_signer: Option>, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl InstructionConfig for SettleAuctionInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +#[derive(Clone, Default)] +pub struct CloseFastMarketOrderShimInstructionConfig { + pub close_account_refund_recipient_keypair: Option>, // If none, will use the solver 0 keypair + pub fast_market_order_address: OverwriteCurrentState, // If none, will use the fast market order address from the current state + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl InstructionConfig for CloseFastMarketOrderShimInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +#[derive(Clone, PartialEq, Eq, Hash, Debug, Copy)] +pub enum TestingActorEnum { + Solver(usize), + Owner, + OwnerAssistant, + FeeRecipient, + Relayer, + Liquidator, +} + +impl TestingActorEnum { + pub fn get_actor(&self, testing_actors: &TestingActors) -> TestingActor { + match self { + Self::Solver(index) => testing_actors.solvers[*index].actor.clone(), + Self::Owner => testing_actors.owner.clone(), + Self::OwnerAssistant => testing_actors.owner_assistant.clone(), + Self::FeeRecipient => testing_actors.fee_recipient.clone(), + Self::Relayer => testing_actors.relayer.clone(), + Self::Liquidator => testing_actors.liquidator.clone(), + } + } +} + +impl Default for TestingActorEnum { + fn default() -> Self { + Self::Solver(0) + } +} + +#[derive(Clone, Default)] +pub struct PlaceInitialOfferCustomAccounts { + pub fast_market_order_address: Option, + pub offer_token_address: Option, + pub auction_config_address: Option, + pub from_router_endpoint: Option, + pub to_router_endpoint: Option, + pub custodian_address: Option, + pub mint_address: Option, + pub system_program_address: Option, + pub token_program_address: Option, +} + +pub struct PlaceInitialOfferInstructionConfig { + pub actor: TestingActorEnum, + pub test_vaa_pair_index: usize, + pub offer_price: u64, + pub payer_signer: Option>, + pub close_account_refund_recipient: Option, + pub fast_market_order_address: OverwriteCurrentState, + pub custom_accounts: OverwriteCurrentState, + pub spl_token_enum: SplTokenEnum, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl PlaceInitialOfferInstructionConfig { + pub fn get_from_and_to_router_endpoints( + &self, + current_state: &TestingEngineState, + ) -> (Pubkey, Pubkey) { + match &self.custom_accounts { + Some(custom_accounts) => { + let from_router_endpoint = match custom_accounts.from_router_endpoint { + Some(from_router_endpoint) => from_router_endpoint, + None => { + current_state + .router_endpoints() + .expect("Router endpoints are not initialized") + .endpoints + .get_from_and_to_endpoint_addresses( + current_state.base().transfer_direction, + ) + .0 + } + }; + let to_router_endpoint = match custom_accounts.to_router_endpoint { + Some(to_router_endpoint) => to_router_endpoint, + None => { + current_state + .router_endpoints() + .expect("Router endpoints are not initialized") + .endpoints + .get_from_and_to_endpoint_addresses( + current_state.base().transfer_direction, + ) + .1 + } + }; + (from_router_endpoint, to_router_endpoint) + } + None => current_state + .router_endpoints() + .expect("Router endpoints are not initialized") + .endpoints + .get_from_and_to_endpoint_addresses(current_state.base().transfer_direction), + } + } +} + +impl Default for PlaceInitialOfferInstructionConfig { + fn default() -> Self { + Self { + actor: TestingActorEnum::Solver(0), + test_vaa_pair_index: 0, + offer_price: 1__000_000, + payer_signer: None, + close_account_refund_recipient: None, + fast_market_order_address: None, + custom_accounts: None, + spl_token_enum: SplTokenEnum::Usdc, + expected_error: None, + expected_log_messages: None, + } + } +} + +impl InstructionConfig for PlaceInitialOfferInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +pub struct ImproveOfferInstructionConfig { + pub actor: TestingActorEnum, + pub offer_price: u64, + pub payer_signer: Option>, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl Default for ImproveOfferInstructionConfig { + fn default() -> Self { + Self { + actor: TestingActorEnum::Solver(0), + offer_price: 500_000, + payer_signer: None, + expected_error: None, + expected_log_messages: None, + } + } +} + +impl InstructionConfig for ImproveOfferInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} +#[derive(Default)] +pub struct SettleAuctionNoneInstructionConfig { + pub payer_signer: Option>, + pub expected_error: Option, + pub expected_log_messages: Option>, +} + +impl InstructionConfig for SettleAuctionNoneInstructionConfig { + fn expected_error(&self) -> Option<&ExpectedError> { + self.expected_error.as_ref() + } + fn expected_log_messages(&self) -> Option<&Vec> { + self.expected_log_messages.as_ref() + } +} + +pub struct VerifyBalancesConfig { + pub previous_state_balances: Balances, + pub balance_changes_config: BalanceChangesConfig, + pub closed_token_account_enums: Option>, +} + +pub struct BalanceChangesConfig { + pub actor: TestingActor, + pub spl_token_enum: SplTokenEnum, + pub custodian_token_previous_balance: u64, +} + +impl VerifyBalancesConfig { + pub async fn get_balance_changes( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + ) -> BalanceChanges { + BalanceChanges::execute_order_changes( + test_context, + current_state, + &self.balance_changes_config, + ) + .await + } +} + +pub struct ExecuteOrderActorEnums { + pub executor: TestingActorEnum, + pub best_offer: TestingActorEnum, + pub initial_offer: TestingActorEnum, +} + +impl ExecuteOrderActorEnums { + pub fn from_state(state: &TestingEngineState) -> Self { + Self { + executor: state.execute_order_actor().unwrap(), + best_offer: state.best_offer_actor().unwrap(), + initial_offer: state.initial_offer_placed_actor().unwrap(), + } + } +} + +#[derive(PartialEq, Eq, Debug, Clone)] +pub struct BalanceChanges(HashMap); + +impl Deref for BalanceChanges { + type Target = HashMap; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl From<(&Balances, &Balances)> for BalanceChanges { + fn from((initial_balances, final_balances): (&Balances, &Balances)) -> Self { + let mut balance_changes = HashMap::new(); + + let all_actors: HashSet<_> = initial_balances + .keys() + .chain(final_balances.keys()) + .collect(); + + for actor in all_actors { + let initial = initial_balances + .get(actor) + .cloned() + .unwrap_or_else(|| Balance { + lamports: 0, + usdc: 0, + usdt: 0, + }); + + let final_bal = final_balances + .get(actor) + .cloned() + .unwrap_or_else(|| Balance { + lamports: 0, + usdc: 0, + usdt: 0, + }); + + let balance_change = BalanceChange { + lamports: i32::try_from( + i64::try_from(final_bal.lamports) + .unwrap() + .saturating_sub(i64::try_from(initial.lamports).unwrap()), + ) + .unwrap(), + usdc: i32::try_from( + i64::try_from(final_bal.usdc) + .unwrap() + .saturating_sub(i64::try_from(initial.usdc).unwrap()), + ) + .unwrap(), + usdt: i32::try_from( + i64::try_from(final_bal.usdt) + .unwrap() + .saturating_sub(i64::try_from(initial.usdt).unwrap()), + ) + .unwrap(), + }; + + balance_changes.insert(*actor, balance_change); + } + + Self(balance_changes) + } +} + +impl BalanceChanges { + pub async fn execute_order_changes( + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + balance_changes_config: &BalanceChangesConfig, + ) -> Self { + let executor = &balance_changes_config.actor; + let spl_token_enum = &balance_changes_config.spl_token_enum; + let executor_testing_actor_enum = ExecuteOrderActorEnums::from_state(current_state); + let ExecuteOrderActorEnums { + executor: executor_testing_actor_enum, + best_offer: best_offer_testing_actor_enum, + initial_offer: initial_offer_testing_actor_enum, + } = executor_testing_actor_enum; + let active_auction_state = current_state + .auction_state() + .get_active_auction() + .expect("Active auction is not initialized"); + // TODO: Make this dynamic so that it does not depend on the first vaa pair + let fast_market_order = current_state + .base() + .get_fast_market_order(0) + .expect("Fast market order is not initialized"); + let init_auction_fee = fast_market_order.init_auction_fee; + let executor_token_address = executor.token_account_address(spl_token_enum).unwrap(); + let auction_calculations = active_auction_state + .get_auction_calculations( + test_context, + executor_token_address, + balance_changes_config.custodian_token_previous_balance, + init_auction_fee, + ) + .await; + + let mut balance_changes = HashMap::new(); + balance_changes.insert( + executor_testing_actor_enum, + BalanceChange { + lamports: 0, + usdc: match spl_token_enum { + SplTokenEnum::Usdc => { + auction_calculations + .expected_token_balance_changes + .executor_token_balance_change + } + SplTokenEnum::Usdt => 0, + }, + usdt: match spl_token_enum { + SplTokenEnum::Usdc => 0, + SplTokenEnum::Usdt => { + auction_calculations + .expected_token_balance_changes + .executor_token_balance_change + } + }, + }, + ); + + balance_changes.insert( + best_offer_testing_actor_enum, + BalanceChange { + lamports: 0, + usdc: match spl_token_enum { + SplTokenEnum::Usdc => { + auction_calculations + .expected_token_balance_changes + .best_offer_token_balance_change + } + SplTokenEnum::Usdt => 0, + }, + usdt: match spl_token_enum { + SplTokenEnum::Usdc => 0, + SplTokenEnum::Usdt => { + auction_calculations + .expected_token_balance_changes + .best_offer_token_balance_change + } + }, + }, + ); + + balance_changes.insert( + initial_offer_testing_actor_enum, + BalanceChange { + lamports: 0, + usdc: match spl_token_enum { + SplTokenEnum::Usdc => { + auction_calculations + .expected_token_balance_changes + .initial_offer_token_balance_change + } + SplTokenEnum::Usdt => 0, + }, + usdt: match spl_token_enum { + SplTokenEnum::Usdc => 0, + SplTokenEnum::Usdt => { + auction_calculations + .expected_token_balance_changes + .initial_offer_token_balance_change + } + }, + }, + ); + Self(balance_changes) + } +} +#[derive(Default, Debug, Clone, PartialEq, Eq)] +pub struct BalanceChange { + pub lamports: i32, + pub usdc: i32, + pub usdt: i32, +} + +#[derive(Default)] +pub struct CombinedInstructionConfig { + pub create_fast_market_order_config: Option, + pub place_initial_offer_config: Option, + pub execute_order_config: Option, + pub settle_auction_config: Option, + pub close_fast_market_order_config: Option, + pub improve_offer_config: Option, +} + +impl CombinedInstructionConfig { + pub fn create_fast_market_order_and_place_initial_offer( + testing_actors: &TestingActors, + current_state: &TestingEngineState, + program_id: &Pubkey, + ) -> Self { + let test_vaa_pair = current_state.get_test_vaa_pair(0); + let fast_transfer_vaa = test_vaa_pair.fast_transfer_vaa.clone(); + let fast_market_order = create_fast_market_order_state_from_vaa_data( + &fast_transfer_vaa.vaa_data, + testing_actors.solvers[0].pubkey(), + ); + let (fast_market_order_address, _fast_market_order_bump) = Pubkey::find_program_address( + &[ + FastMarketOrderState::SEED_PREFIX, + &fast_market_order.digest(), + &fast_market_order.close_account_refund_recipient.as_ref(), + ], + program_id, + ); + + Self { + create_fast_market_order_config: Some( + InitializeFastMarketOrderShimInstructionConfig::default(), + ), + place_initial_offer_config: Some(PlaceInitialOfferInstructionConfig { + close_account_refund_recipient: Some(testing_actors.solvers[0].actor.pubkey()), + fast_market_order_address: Some(fast_market_order_address), + ..PlaceInitialOfferInstructionConfig::default() + }), + ..Default::default() + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/testing_engine/engine.rs b/solana/modules/matching-engine-testing/tests/testing_engine/engine.rs new file mode 100644 index 000000000..d194ab75c --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/testing_engine/engine.rs @@ -0,0 +1,1070 @@ +//! # Testing Engine +//! +//! This module contains the testing engine for the matching engine program. +//! It is used to test the matching engine program with a functional style. +//! +//! ## Features +//! +//! - Testing engine struct (TestingEngine struct) +//! - Execute instructions (impl TestingEngine) +//! - Fast forward slots (fn fast_forward_slots) +//! +//! ## Examples +//! +//! ``` +//! use crate::testing_engine::engine::*; +//! +//! let testing_context = setup_testing_context(//arguments); +//! let testing_engine = TestingEngine::new(testing_context).await; +//! let instruction_triggers = vec![ +//! InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), +//! ]; +//! testing_engine.execute(instruction_triggers).await; +//! ``` + +use std::ops::{Deref, DerefMut}; + +use matching_engine::state::FastMarketOrder; +use solana_program_test::ProgramTestContext; +use solana_sdk::signer::Signer; +use solana_sdk::transaction::Transaction; + +use super::setup::TestingContext; +use super::{config::*, state::*}; +use crate::shimful; +use crate::shimful::fast_market_order_shim::{ + create_fast_market_order_state_from_vaa_data, initialize_fast_market_order_shimful, + initialize_fast_market_order_shimful_instruction, +}; +use crate::shimful::shims_make_offer::{ + evaluate_place_initial_offer_shimful_state, place_initial_offer_shimful_instruction, + PlaceInitialOfferShimfulAccounts, +}; +use crate::shimful::verify_shim::create_guardian_signatures; +use crate::shimless; +use crate::shimless::initialize::initialize_program; +use crate::testing_engine::setup::ShimMode; +use crate::utils::auction::AuctionState; +use crate::utils::token_account::SplTokenEnum; +use crate::utils::vaa::TestVaaPairs; +use crate::utils::{auction::AuctionAccounts, router::create_all_router_endpoints_test}; +use anchor_lang::prelude::*; + +pub enum InstructionTrigger { + InitializeProgram(InitializeInstructionConfig), + CreateCctpRouterEndpoints(CreateCctpRouterEndpointsInstructionConfig), + InitializeFastMarketOrderShim(InitializeFastMarketOrderShimInstructionConfig), + SetPauseCustodian(SetPauseCustodianInstructionConfig), + PlaceInitialOfferShimless(PlaceInitialOfferInstructionConfig), + PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig), + ImproveOfferShimless(ImproveOfferInstructionConfig), + ExecuteOrderShimless(ExecuteOrderInstructionConfig), + ExecuteOrderShim(ExecuteOrderInstructionConfig), + PrepareOrderShimless(PrepareOrderResponseInstructionConfig), + PrepareOrderShim(PrepareOrderResponseInstructionConfig), + SettleAuction(SettleAuctionInstructionConfig), + CloseFastMarketOrderShim(CloseFastMarketOrderShimInstructionConfig), + SettleAuctionNoneShim(SettleAuctionNoneInstructionConfig), + SettleAuctionNoneShimless(SettleAuctionNoneInstructionConfig), +} + +pub enum VerificationTrigger { + // Verify that the auction state is as expected (bool is expected to succeed) + VerifyAuctionState(bool), + // Verify that the execute order math is correct + VerifyBalances(Box), +} + +pub enum CombinationTrigger { + CreateFastMarketOrderAndPlaceInitialOffer(Box), +} + +pub enum ExecutionTrigger { + Instruction(Box), + Verification(Box), + CombinationTrigger(Box), +} + +impl From for ExecutionTrigger { + fn from(trigger: InstructionTrigger) -> Self { + ExecutionTrigger::Instruction(Box::new(trigger)) + } +} + +impl From for ExecutionTrigger { + fn from(trigger: VerificationTrigger) -> Self { + ExecutionTrigger::Verification(Box::new(trigger)) + } +} + +impl From for ExecutionTrigger { + fn from(trigger: CombinationTrigger) -> Self { + ExecutionTrigger::CombinationTrigger(Box::new(trigger)) + } +} + +pub struct ExecutionChain(Vec); + +impl Deref for ExecutionChain { + type Target = Vec; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl DerefMut for ExecutionChain { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +impl ExecutionChain { + pub fn new(triggers: Vec) -> Self { + Self(triggers) + } + + pub fn instruction_triggers(&self) -> Vec<&InstructionTrigger> { + self.iter() + .filter_map(|trigger| { + if let ExecutionTrigger::Instruction(boxed_trigger) = trigger { + Some(boxed_trigger.as_ref()) + } else { + None + } + }) + .collect() + } +} +impl From> for ExecutionChain { + fn from(triggers: Vec) -> Self { + Self(triggers.into_iter().map(|trigger| trigger.into()).collect()) + } +} + +impl From> for ExecutionChain { + fn from(triggers: Vec) -> Self { + Self(triggers.into_iter().map(|trigger| trigger.into()).collect()) + } +} + +impl From> for ExecutionChain { + fn from(triggers: Vec) -> Self { + Self(triggers.into_iter().map(|trigger| trigger.into()).collect()) + } +} + +impl InstructionTrigger { + pub fn is_shim(&self) -> bool { + matches!( + self, + Self::PlaceInitialOfferShim(_) + | Self::ExecuteOrderShim(_) + | Self::PrepareOrderShim(_) + | Self::InitializeFastMarketOrderShim(_) + | Self::CloseFastMarketOrderShim(_) + ) + } +} +// Implement InstructionConfig for InstructionTrigger +impl InstructionConfig for InstructionTrigger { + fn expected_error(&self) -> Option<&ExpectedError> { + match self { + Self::InitializeProgram(config) => config.expected_error(), + Self::CreateCctpRouterEndpoints(config) => config.expected_error(), + Self::InitializeFastMarketOrderShim(config) => config.expected_error(), + Self::SetPauseCustodian(config) => config.expected_error(), + Self::PlaceInitialOfferShimless(config) => config.expected_error(), + Self::PlaceInitialOfferShim(config) => config.expected_error(), + Self::ImproveOfferShimless(config) => config.expected_error(), + Self::ExecuteOrderShimless(config) => config.expected_error(), + Self::ExecuteOrderShim(config) => config.expected_error(), + Self::PrepareOrderShimless(config) => config.expected_error(), + Self::PrepareOrderShim(config) => config.expected_error(), + Self::SettleAuction(config) => config.expected_error(), + Self::CloseFastMarketOrderShim(config) => config.expected_error(), + Self::SettleAuctionNoneShim(config) => config.expected_error(), + Self::SettleAuctionNoneShimless(config) => config.expected_error(), + } + } + fn expected_log_messages(&self) -> Option<&Vec> { + match self { + Self::InitializeProgram(config) => config.expected_log_messages(), + Self::CreateCctpRouterEndpoints(config) => config.expected_log_messages(), + Self::InitializeFastMarketOrderShim(config) => config.expected_log_messages(), + Self::SetPauseCustodian(config) => config.expected_log_messages(), + Self::PlaceInitialOfferShimless(config) => config.expected_log_messages(), + Self::PlaceInitialOfferShim(config) => config.expected_log_messages(), + Self::ImproveOfferShimless(config) => config.expected_log_messages(), + Self::ExecuteOrderShim(config) => config.expected_log_messages(), + Self::ExecuteOrderShimless(config) => config.expected_log_messages(), + Self::PrepareOrderShim(config) => config.expected_log_messages(), + Self::PrepareOrderShimless(config) => config.expected_log_messages(), + Self::SettleAuction(config) => config.expected_log_messages(), + Self::CloseFastMarketOrderShim(config) => config.expected_log_messages(), + Self::SettleAuctionNoneShim(config) => config.expected_log_messages(), + Self::SettleAuctionNoneShimless(config) => config.expected_log_messages(), + } + } +} + +// If you need a default implementation +impl Default for InstructionTrigger { + fn default() -> Self { + Self::InitializeProgram(InitializeInstructionConfig::default()) + } +} + +/// Functional style testing engine for the matching engine program +/// +/// This engine is used to test the matching engine program with a functional style. +/// Instruction triggers are enums that compose instructions to be executed. +/// Instruction triggers are executed in the order they are provided. +/// The engine is stateful and will track the state of the program. +/// The engine will return the updated state after each instruction trigger. +/// If an instruction trigger fails, the engine will return the previous state. +/// +/// Instruction triggers (enums) take a configuration struct as an argument. +/// Each instruction config implements the InstructionConfig trait. +/// The configuration struct contains fields for the expected error, and for +/// providing test specific configuration. +/// +/// Each instruction config struct implements a default constructor. These will expect no errors. +/// +/// Example usage: +/// ```rust +/// // Create a testing context +/// let testing_context = setup_testing_context(//arguments); +/// let testing_engine = TestingEngine::new(testing_context).await; +/// let instruction_triggers = vec![ +/// InstructionTrigger::InitializeProgram(InitializeInstructionConfig::default()), +/// InstructionTrigger::CreateCctpRouterEndpoints(CreateCctpRouterEndpointsInstructionConfig::default()), +/// InstructionTrigger::InitializeFastMarketOrderShim(InitializeFastMarketOrderShimInstructionConfig::default()), +/// InstructionTrigger::PlaceInitialOfferShim(PlaceInitialOfferInstructionConfig::default()), +/// InstructionTrigger::ImproveOfferShimless(ImproveOfferInstructionConfig::default()), +/// InstructionTrigger::PlaceInitialOfferShimless(PlaceInitialOfferInstructionConfig{ +/// expected_error: Some(ExpectedError{ +/// instruction_index: 0, +/// error_code: 1337, +/// error_message: String::from("LEET error message"), +/// }), +/// }), +/// ]; +/// testing_engine.execute(instruction_triggers).await; +/// ``` +pub struct TestingEngine { + pub testing_context: TestingContext, +} + +impl TestingEngine { + pub async fn new(testing_context: TestingContext) -> Self { + Self { testing_context } + } + + /// Executes a chain of instruction triggers + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `instruction_chain` - The chain of instruction triggers to execute + pub async fn execute( + &self, + test_context: &mut ProgramTestContext, + execution_chain: impl Into, + initial_state: Option, + ) -> TestingEngineState { + let mut current_state = initial_state.unwrap_or_else(|| self.create_initial_state()); + let execution_chain = execution_chain.into(); + self.verify_triggers(&execution_chain); + + for trigger in execution_chain.iter() { + current_state = self + .execute_trigger(test_context, ¤t_state, trigger) + .await; + } + current_state + } + + /// Verifies that the shimmode corresponds to the instruction chain + fn verify_triggers(&self, execution_chain: &ExecutionChain) { + // If any shim instructions are present, make sure that shim mode is set to VerifyAndPostSignature + if execution_chain + .instruction_triggers() + .iter() + .any(|trigger| trigger.is_shim()) + { + assert_eq!( + self.testing_context.shim_mode, + ShimMode::VerifyAndPostSignature, + "Shim mode is not set to VerifyAndPostSignature, and a shim instruction trigger is present" + ); + } + } + + /// Executes an instruction trigger and returns the updated testing engine state + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `current_state` - The current state of the testing engine + /// * `trigger` - The instruction trigger to execute + async fn execute_trigger( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + trigger: &ExecutionTrigger, + ) -> TestingEngineState { + match trigger { + ExecutionTrigger::Instruction(trigger) => match **trigger { + InstructionTrigger::InitializeProgram(ref config) => { + self.initialize_program(test_context, current_state, config) + .await + } + InstructionTrigger::CreateCctpRouterEndpoints(ref config) => { + self.create_cctp_router_endpoints(test_context, current_state, config) + .await + } + InstructionTrigger::InitializeFastMarketOrderShim(ref config) => { + self.create_fast_market_order_account(test_context, current_state, config) + .await + } + InstructionTrigger::CloseFastMarketOrderShim(ref config) => { + self.close_fast_market_order_account(test_context, current_state, config) + .await + } + InstructionTrigger::SetPauseCustodian(ref config) => { + self.set_pause_custodian(test_context, current_state, config) + .await + } + InstructionTrigger::PlaceInitialOfferShimless(ref config) => { + self.place_initial_offer_shimless(test_context, current_state, config) + .await + } + InstructionTrigger::PlaceInitialOfferShim(ref config) => { + self.place_initial_offer_shimful(test_context, current_state, config) + .await + } + InstructionTrigger::ImproveOfferShimless(ref config) => { + self.improve_offer_shimless(test_context, current_state, config) + .await + } + InstructionTrigger::ExecuteOrderShim(ref config) => { + self.execute_order_shimful(test_context, current_state, config) + .await + } + InstructionTrigger::ExecuteOrderShimless(ref config) => { + self.execute_order_shimless(test_context, current_state, config) + .await + } + InstructionTrigger::PrepareOrderShim(ref config) => { + self.prepare_order_shim(test_context, current_state, config) + .await + } + InstructionTrigger::PrepareOrderShimless(ref config) => { + self.prepare_order_shimless(test_context, current_state, config) + .await + } + InstructionTrigger::SettleAuction(ref config) => { + self.settle_auction(test_context, current_state, config) + .await + } + InstructionTrigger::SettleAuctionNoneShim(ref config) => { + self.settle_auction_none_shim(test_context, current_state, config) + .await + } + InstructionTrigger::SettleAuctionNoneShimless(ref config) => { + self.settle_auction_none_shimless(test_context, current_state, config) + .await + } + }, + ExecutionTrigger::Verification(trigger) => match **trigger { + VerificationTrigger::VerifyAuctionState(expected_to_succeed) => { + self.verify_auction_state(test_context, current_state, expected_to_succeed) + .await + } + VerificationTrigger::VerifyBalances(ref config) => { + self.verify_balances(test_context, current_state, config) + .await + } + }, + ExecutionTrigger::CombinationTrigger(trigger) => match **trigger { + CombinationTrigger::CreateFastMarketOrderAndPlaceInitialOffer(ref configs) => { + let create_fast_market_order_config = + configs.create_fast_market_order_config.as_ref().unwrap(); + let place_initial_offer_config = + configs.place_initial_offer_config.as_ref().unwrap(); + self.create_fast_market_order_and_place_initial_offer( + test_context, + current_state, + create_fast_market_order_config, + place_initial_offer_config, + ) + .await + } + }, + } + } + + // -------------------------------------------------------------------------------------------- + // Instruction trigger functions + // -------------------------------------------------------------------------------------------- + + /// Creates the initial state for the testing engine + pub fn create_initial_state(&self) -> TestingEngineState { + let fixture_accounts = self + .testing_context + .fixture_accounts + .clone() + .expect("Failed to get fixture accounts"); + let vaas: TestVaaPairs = self.testing_context.vaa_pairs.clone(); + let transfer_direction = self.testing_context.transfer_direction; + TestingEngineState::Uninitialized(BaseState { + fixture_accounts, + vaas, + transfer_direction, + }) + } + + /// Instruction trigger function for initializing the program + async fn initialize_program( + &self, + test_context: &mut ProgramTestContext, + initial_state: &TestingEngineState, + config: &InitializeInstructionConfig, + ) -> TestingEngineState { + initialize_program(&self.testing_context, test_context, initial_state, config).await + } + + /// Instruction trigger function for creating cctp router endpoints + async fn create_cctp_router_endpoints( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &CreateCctpRouterEndpointsInstructionConfig, + ) -> TestingEngineState { + // Make sure testing state is at least initialized + let initialized_state = current_state + .initialized() + .expect("Testing state is not initialized"); + let custodian_address = initialized_state.custodian_address; + let testing_actors = &self.testing_context.testing_actors; + let payer_signer = config + .payer_signer + .clone() + .unwrap_or_else(|| testing_actors.owner.keypair()); + let admin_owner_or_assistant = config + .admin_owner_or_assistant + .clone() + .unwrap_or_else(|| testing_actors.owner.keypair()); + let result = create_all_router_endpoints_test( + &self.testing_context, + test_context, + &payer_signer, + custodian_address, + admin_owner_or_assistant, + config.chains.clone(), + ) + .await; + TestingEngineState::RouterEndpointsCreated { + base: current_state.base().clone(), + initialized: initialized_state.clone(), + router_endpoints: RouterEndpointsState { endpoints: result }, + } + } + + /// Instruction trigger function for creating a fast market order account + async fn create_fast_market_order_account( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &InitializeFastMarketOrderShimInstructionConfig, + ) -> TestingEngineState { + initialize_fast_market_order_shimful( + &self.testing_context, + test_context, + config.expected_error(), + current_state, + config, + ) + .await + } + + /// Instruction trigger function for pausing the custodian + async fn set_pause_custodian( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &SetPauseCustodianInstructionConfig, + ) -> TestingEngineState { + let owner_or_assistant = config.payer_signer.clone().unwrap_or_else(|| { + self.testing_context + .testing_actors + .owner_assistant + .keypair() + }); + let is_paused = config.is_paused; + let testing_context = &self.testing_context; + shimless::pause_custodian::set_pause( + test_context, + testing_context, + current_state, + &owner_or_assistant, + config.expected_error(), + is_paused, + ) + .await + } + + /// Instruction trigger function for closing a fast market order account + async fn close_fast_market_order_account( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &CloseFastMarketOrderShimInstructionConfig, + ) -> TestingEngineState { + // Get the fast market order account from the current state. If it is not present, panic + let fast_market_order_account = config.fast_market_order_address.unwrap_or_else(|| { + current_state + .fast_market_order() + .expect("Fast market order account not found") + .fast_market_order_address + }); + let close_account_refund_recipient = config + .close_account_refund_recipient_keypair + .clone() + .unwrap_or_else(|| self.testing_context.testing_actors.solvers[0].keypair()); + + shimful::fast_market_order_shim::close_fast_market_order_fallback( + &self.testing_context, + test_context, + &close_account_refund_recipient, + &fast_market_order_account, + config.expected_error(), + ) + .await; + + TestingEngineState::FastMarketOrderClosed { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().cloned(), + auction_state: current_state.auction_state().clone(), + fast_market_order: current_state.fast_market_order().cloned(), + order_prepared: current_state.order_prepared().cloned(), + auction_accounts: current_state.auction_accounts().cloned(), + order_executed: current_state.order_executed().cloned(), + } + } + + /// Instruction trigger function for placing an initial offer + async fn place_initial_offer_shimless( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PlaceInitialOfferInstructionConfig, + ) -> TestingEngineState { + assert!( + current_state.router_endpoints().is_some(), + "Router endpoints are not created" + ); + shimless::make_offer::place_initial_offer_shimless( + &self.testing_context, + test_context, + current_state, + config, + ) + .await + } + + /// Instruction trigger function for improving an offer + async fn improve_offer_shimless( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &ImproveOfferInstructionConfig, + ) -> TestingEngineState { + shimless::make_offer::improve_offer( + &self.testing_context, + test_context, + current_state, + config, + ) + .await + } + + /// Instruction trigger function for placing an initial offer + async fn place_initial_offer_shimful( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PlaceInitialOfferInstructionConfig, + ) -> TestingEngineState { + shimful::shims_make_offer::place_initial_offer_shimful( + &self.testing_context, + test_context, + current_state, + config, + config.expected_error(), + ) + .await + } + + /// Instruction trigger function for executing an order + async fn execute_order_shimful( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &ExecuteOrderInstructionConfig, + ) -> TestingEngineState { + shimful::shims_execute_order::execute_order_shimful( + &self.testing_context, + test_context, + current_state, + config, + ) + .await + } + + /// Instruction trigger function for executing an order + async fn execute_order_shimless( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &ExecuteOrderInstructionConfig, + ) -> TestingEngineState { + let auction_config_address = current_state + .auction_config_address() + .expect("Auction config address not found"); + let router_endpoints = current_state + .router_endpoints() + .expect("Router endpoints are not created"); + let actor = config + .actor_enum + .get_actor(&self.testing_context.testing_actors); + let custodian_address = current_state + .custodian_address() + .expect("Custodian address not found"); + let auction_accounts = AuctionAccounts::new( + Some( + current_state + .get_test_vaa_pair(config.vaa_index) + .fast_transfer_vaa + .get_vaa_pubkey(), + ), + actor.clone(), + current_state.close_account_refund_recipient(), + auction_config_address, + &router_endpoints.endpoints, + custodian_address, + current_state.spl_token_enum().unwrap(), + current_state.base().transfer_direction, + ); + shimless::execute_order::execute_order_shimless( + &self.testing_context, + test_context, + current_state, + config, + &auction_accounts, + ) + .await + } + + /// Instruction trigger function for preparing an order + async fn prepare_order_shim( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PrepareOrderResponseInstructionConfig, + ) -> TestingEngineState { + shimful::shims_prepare_order_response::prepare_order_response_cctp_shimful( + &self.testing_context, + test_context, + config, + current_state, + ) + .await + } + + /// Instruction trigger function for preparing an order + async fn prepare_order_shimless( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &PrepareOrderResponseInstructionConfig, + ) -> TestingEngineState { + shimless::prepare_order_response::prepare_order_response( + &self.testing_context, + test_context, + config, + current_state, + ) + .await + } + + /// Instruction trigger function for settling an auction + async fn settle_auction( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &SettleAuctionInstructionConfig, + ) -> TestingEngineState { + shimless::settle_auction::settle_auction_complete( + &self.testing_context, + current_state, + test_context, + config, + config.expected_error(), + ) + .await + } + /// Instruction trigger function for settling an auction none shim + async fn settle_auction_none_shim( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &SettleAuctionNoneInstructionConfig, + ) -> TestingEngineState { + let auction_state = shimful::shims_settle_auction_none_cctp::settle_auction_none_shimful( + &self.testing_context, + test_context, + current_state, + config, + ) + .await; + match auction_state { + AuctionState::Settled(auction_state) => TestingEngineState::AuctionSettled { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + auction_state: AuctionState::Settled(auction_state.clone()), + fast_market_order: current_state.fast_market_order().cloned(), + order_prepared: current_state.order_prepared().unwrap().clone(), + auction_accounts: current_state.auction_accounts().cloned(), + order_executed: current_state.order_executed().cloned(), + }, + _ => current_state.clone(), + } + } + + /// Instruction trigger function for settling an auction none shimless + async fn settle_auction_none_shimless( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &SettleAuctionNoneInstructionConfig, + ) -> TestingEngineState { + let auction_state = shimless::settle_auction_none_cctp::settle_auction_none_shimless( + &self.testing_context, + current_state, + test_context, + config, + ) + .await; + match auction_state { + AuctionState::Settled(auction_state) => TestingEngineState::AuctionSettled { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().unwrap().clone(), + auction_state: AuctionState::Settled(auction_state.clone()), + fast_market_order: current_state.fast_market_order().cloned(), + order_prepared: current_state.order_prepared().unwrap().clone(), + auction_accounts: current_state.auction_accounts().cloned(), + order_executed: current_state.order_executed().cloned(), + }, + _ => current_state.clone(), + } + } + + // -------------------------------------------------------------------------------------------- + // Verification trigger functions + // -------------------------------------------------------------------------------------------- + + async fn verify_auction_state( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + expected_to_succeed: bool, + ) -> TestingEngineState { + let auction_state = current_state + .auction_state() + .get_active_auction() + .expect("Active auction state expected"); + let was_success = auction_state + .verify_auction(&self.testing_context, test_context) + .await + .is_ok(); + assert_eq!(was_success, expected_to_succeed); + current_state.clone() + } + + /// Verify the balances after an instruction has been executed. Currently only used for execute order instruction + async fn verify_balances( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + config: &VerifyBalancesConfig, + ) -> TestingEngineState { + let previous_state_balances = &config.previous_state_balances; + let balances = self.testing_context.get_balances(test_context).await; + let balance_changes = config + .get_balance_changes(test_context, current_state) + .await; + let mut is_error = false; + for (actor, balance_change) in balance_changes.iter() { + if let Some(closed_token_account_enums) = &config.closed_token_account_enums { + if closed_token_account_enums.contains(actor) { + continue; + } + } + let balance = balances.get(actor).unwrap(); + let previous_balance = previous_state_balances.get(actor).unwrap(); + if balance.usdc != saturating_add_signed(previous_balance.usdc, balance_change.usdc) { + is_error = true; + println!("USDC balance mismatch for actor {:?}", actor); + println!("Expected balance change: {:?}", balance_change.usdc); + println!( + "Actual balance change: {:?}", + balance.usdc.saturating_sub(previous_balance.usdc) + ); + } + if balance.usdt != saturating_add_signed(previous_balance.usdt, balance_change.usdt) { + is_error = true; + println!("USDT balance mismatch for actor {:?}", actor); + println!("Expected balance change: {:?}", balance_change.usdt); + println!( + "Actual balance change: {:?}", + balance.usdt.saturating_sub(previous_balance.usdt) + ); + } + } + if is_error { + panic!("Balance mismatch"); + } + current_state.clone() + } + + // -------------------------------------------------------------------------------------------- + // Combination trigger functions + // -------------------------------------------------------------------------------------------- + + /// A transaction that combines the instructions for creating a fast market order and placing an initial offer + async fn create_fast_market_order_and_place_initial_offer( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + create_fast_market_order_config: &InitializeFastMarketOrderShimInstructionConfig, + place_initial_offer_config: &PlaceInitialOfferInstructionConfig, + ) -> TestingEngineState { + let program_id = &self.testing_context.get_matching_engine_program_id(); + let test_vaa_pair = + current_state.get_test_vaa_pair(create_fast_market_order_config.vaa_index); + let fast_transfer_vaa = test_vaa_pair.fast_transfer_vaa.clone(); + let fast_market_order = create_fast_market_order_state_from_vaa_data( + &fast_transfer_vaa.vaa_data, + create_fast_market_order_config + .close_account_refund_recipient + .unwrap_or_else(|| self.testing_context.testing_actors.solvers[0].pubkey()), + ); + let create_fast_market_order_payer_signer = create_fast_market_order_config + .payer_signer + .clone() + .unwrap_or_else(|| self.testing_context.testing_actors.payer_signer.clone()); + let guardian_signature_info = create_guardian_signatures( + &self.testing_context, + test_context, + &create_fast_market_order_payer_signer, + &fast_transfer_vaa.vaa_data, + &self.testing_context.get_wormhole_program_id(), + None, + ) + .await + .expect("Failed to create guardian signatures"); + let (fast_market_order_account, fast_market_order_bump) = Pubkey::find_program_address( + &[ + FastMarketOrder::SEED_PREFIX, + &fast_market_order.digest(), + &fast_market_order.close_account_refund_recipient.as_ref(), + ], + program_id, + ); + let create_fast_market_order_instruction = initialize_fast_market_order_shimful_instruction( + &create_fast_market_order_payer_signer, + program_id, + fast_market_order, + &guardian_signature_info, + ); + + let place_initial_offer_instruction = place_initial_offer_shimful_instruction( + &self.testing_context, + test_context, + current_state, + place_initial_offer_config, + ) + .await; + let place_initial_offer_payer_signer = place_initial_offer_config + .payer_signer + .clone() + .unwrap_or_else(|| self.testing_context.testing_actors.payer_signer.clone()); + let transaction = self + .testing_context + .create_transaction( + test_context, + &[ + create_fast_market_order_instruction, + place_initial_offer_instruction, + ], + Some(&place_initial_offer_payer_signer.pubkey()), + &[&place_initial_offer_payer_signer], + None, + None, + ) + .await; + let actor_usdc_balance_before = place_initial_offer_config + .actor + .get_actor(&self.testing_context.testing_actors) + .get_token_account_balance(test_context, &place_initial_offer_config.spl_token_enum) + .await; + let place_initial_offer_accounts = &PlaceInitialOfferShimfulAccounts::new( + &self.testing_context, + current_state, + place_initial_offer_config, + ); + self.testing_context + .execute_and_verify_transaction(test_context, transaction, None) + .await; + let fast_market_order_created_state = TestingEngineState::FastMarketOrderAccountCreated { + base: current_state.base().clone(), + initialized: current_state.initialized().unwrap().clone(), + router_endpoints: current_state.router_endpoints().cloned(), + fast_market_order: FastMarketOrderAccountCreatedState { + fast_market_order_address: fast_market_order_account, + fast_market_order_bump, + fast_market_order, + close_account_refund_recipient: fast_market_order.close_account_refund_recipient, + }, + guardian_set_state: GuardianSetState { + guardian_set_address: guardian_signature_info.guardian_set_pubkey, + guardian_signatures_address: guardian_signature_info.guardian_signatures_pubkey, + }, + auction_state: current_state.auction_state().clone(), + auction_accounts: current_state.auction_accounts().cloned(), + order_prepared: current_state.order_prepared().cloned(), + }; + evaluate_place_initial_offer_shimful_state( + &self.testing_context, + test_context, + &fast_market_order_created_state, + place_initial_offer_config, + actor_usdc_balance_before, + place_initial_offer_accounts, + ) + .await + } + + // -------------------------------------------------------------------------------------------- + // Helper functions for manipulating the state + // -------------------------------------------------------------------------------------------- + + pub async fn make_auction_passed_penalty_period( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + slots_after_expiry: u64, + ) { + let active_auction_state = current_state + .auction_state() + .get_active_auction() + .expect("Active auction state expected"); + let auction_expiration_slot = active_auction_state + .get_auction_expiration_slot(test_context) + .await; + let target_slot = auction_expiration_slot + slots_after_expiry; + fast_forward_slots(test_context, target_slot).await; + } + + pub async fn make_auction_passed_grace_period( + &self, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + slots_after_grace_period: u64, + ) { + let active_auction_state = current_state + .auction_state() + .get_active_auction() + .expect("Active auction state expected"); + let auction_grace_period_slot = active_auction_state + .get_auction_grace_period_slot(test_context) + .await; + let target_slot = auction_grace_period_slot + slots_after_grace_period; + fast_forward_slots(test_context, target_slot).await; + } + + pub async fn make_fast_transfer_vaa_expired( + &self, + test_context: &mut ProgramTestContext, + seconds_after_expiry: i64, + ) { + self.testing_context + .make_fast_transfer_vaa_expired(test_context, seconds_after_expiry) + .await; + } + + pub async fn close_token_account( + &self, + test_context: &mut ProgramTestContext, + actor_enum: &TestingActorEnum, + spl_token_enum: &SplTokenEnum, + ) { + self.testing_context + .testing_actors + .get_actor(actor_enum) + .close_token_account(test_context, spl_token_enum) + .await; + } +} + +/// Fast forwards the slot in the test context +/// +/// # Arguments +/// +/// * `test_context` - The test context +/// * `num_slots` - The number of slots to fast forward +pub async fn fast_forward_slots(test_context: &mut ProgramTestContext, num_slots: u64) { + // Get the current slot + let mut current_slot = test_context.banks_client.get_root_slot().await.unwrap(); + + let target_slot = current_slot.saturating_add(num_slots); + while current_slot < target_slot { + // Warp to the next slot - note we need to borrow_mut() here + test_context + .warp_to_slot(current_slot.saturating_add(1)) + .expect("Failed to warp to slot"); + current_slot = current_slot.saturating_add(1); + } + + // Optionally, process a transaction to ensure the new slot is recognized + let recent_blockhash = test_context.last_blockhash; + let payer = test_context.payer.pubkey(); + let tx = Transaction::new_signed_with_payer( + &[], + Some(&payer), + &[&test_context.payer], + recent_blockhash, + ); + + test_context + .banks_client + .process_transaction(tx) + .await + .expect("Failed to process transaction after warping"); + + println!("Fast forwarded {} slots", num_slots); +} + +#[allow(clippy::cast_sign_loss)] +fn saturating_add_signed(unsigned: u64, signed: i32) -> u64 { + if signed >= 0 { + unsigned.saturating_add(signed as u64) + } else { + unsigned.saturating_sub(signed.unsigned_abs() as u64) + } +} diff --git a/solana/modules/matching-engine-testing/tests/testing_engine/mod.rs b/solana/modules/matching-engine-testing/tests/testing_engine/mod.rs new file mode 100644 index 000000000..ccf788b02 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/testing_engine/mod.rs @@ -0,0 +1,6 @@ +#![allow(clippy::expect_used)] + +pub mod config; +pub mod engine; +pub mod setup; +pub mod state; diff --git a/solana/modules/matching-engine-testing/tests/testing_engine/setup.rs b/solana/modules/matching-engine-testing/tests/testing_engine/setup.rs new file mode 100644 index 000000000..c913bbd53 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/testing_engine/setup.rs @@ -0,0 +1,1305 @@ +//! # Testing Engine Setup +//! +//! This module contains the setup for the testing engine. +//! It is used to create the pre-testing context and the testing context. +//! +//! ## Examples +//! +//! ``` +//! use crate::testing_engine::setup::*; +//! +//! let testing_context = setup_testing_context(//arguments); +//! let testing_engine = TestingEngine::new(testing_context).await; +//! ``` + +use crate::testing_engine::config::{ExpectedError, ExpectedLog}; +use crate::utils::account_fixtures::FixtureAccounts; +use crate::utils::airdrop::{airdrop, airdrop_spl_token}; +use crate::utils::cctp_message::CctpRemoteTokenMessenger; +use crate::utils::mint::MintFixture; +use crate::utils::program_fixtures::{ + initialize_cctp_message_transmitter, initialize_cctp_token_messenger_minter, + initialize_local_token_router, initialize_post_message_shims, initialize_upgrade_manager, + initialize_verify_shims, initialize_wormhole_core_bridge, +}; +use crate::utils::token_account::{ + create_token_account, read_keypair_from_file, SplTokenEnum, TokenAccountFixture, +}; +use crate::utils::vaa::{ + create_vaas_test_with_chain_and_address, ChainAndAddress, TestVaaPair, TestVaaPairs, VaaArgs, +}; +use crate::utils::{Chain, REGISTERED_TOKEN_ROUTERS}; +use anchor_lang::AccountDeserialize; +use anchor_spl::token::{ + spl_token::{self, instruction::approve}, + TokenAccount, +}; +use anyhow::Result as AnyhowResult; +use matching_engine::{CCTP_MINT_RECIPIENT, ID as PROGRAM_ID}; +use solana_program_test::{BanksClientError, ProgramTest, ProgramTestContext}; +use solana_sdk::clock::Clock; +use solana_sdk::compute_budget::ComputeBudgetInstruction; +use solana_sdk::instruction::{Instruction, InstructionError}; +use solana_sdk::transaction::{TransactionError, VersionedTransaction}; +use solana_sdk::{ + pubkey::Pubkey, + signature::{Keypair, Signer}, + transaction::Transaction, +}; +use std::collections::HashMap; +use std::ops::Deref; +use std::rc::Rc; + +use super::config::TestingActorEnum; + +// Configures the program ID and CCTP mint recipient based on the environment +cfg_if::cfg_if! { + if #[cfg(feature = "mainnet")] { + //const PROGRAM_ID : Pubkey = solana_sdk::pubkey!("5BsCKkzuZXLygduw6RorCqEB61AdzNkxp5VzQrFGzYWr"); + //const CCTP_MINT_RECIPIENT: Pubkey = solana_sdk::pubkey!("HUXc7MBf55vWrrkevVbmJN8HAyfFtjLcPLBt9yWngKzm"); + const USDC_MINT_ADDRESS: Pubkey = solana_sdk::pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"); + const USDT_MINT_ADDRESS: Pubkey = solana_sdk::pubkey!("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"); + const USDC_MINT_FIXTURE_PATH: &str = "tests/fixtures/usdc_mint.json"; + const USDT_MINT_FIXTURE_PATH: &str = "tests/fixtures/usdt_mint.json"; + } else if #[cfg(feature = "testnet")] { + //const PROGRAM_ID : Pubkey = solana_sdk::pubkey!("mPydpGUWxzERTNpyvTKdvS7v8kvw5sgwfiP8WQFrXVS"); + //const CCTP_MINT_RECIPIENT: Pubkey = solana_sdk::pubkey!("6yKmqWarCry3c8ntYKzM4WiS2fVypxLbENE2fP8onJje"); + const USDC_MINT_ADDRESS: Pubkey = solana_sdk::pubkey!("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"); + const USDT_MINT_ADDRESS: Pubkey = solana_sdk::pubkey!("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"); + const USDC_MINT_FIXTURE_PATH: &str = "tests/fixtures/usdc_mint_devnet.json"; + const USDT_MINT_FIXTURE_PATH: &str = "tests/fixtures/usdt_mint.json"; + } else if #[cfg(feature = "localnet")] { + //const PROGRAM_ID : Pubkey = solana_sdk::pubkey!("MatchingEngine11111111111111111111111111111"); + // const CCTP_MINT_RECIPIENT: Pubkey = solana_sdk::pubkey!("35iwWKi7ebFyXNaqpswd1g9e9jrjvqWPV39nCQPaBbX1"); + const USDC_MINT_ADDRESS: Pubkey = solana_sdk::pubkey!("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"); + const USDT_MINT_ADDRESS: Pubkey = solana_sdk::pubkey!("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"); + const USDC_MINT_FIXTURE_PATH: &str = "tests/fixtures/usdc_mint_devnet.json"; + const USDT_MINT_FIXTURE_PATH: &str = "tests/fixtures/usdt_mint.json"; + } +} +const OWNER_KEYPAIR_PATH: &str = "tests/keys/pFCBP4bhqdSsrWUVTgqhPsLrfEdChBK17vgFM7TxjxQ.json"; + +/// The pre-testing context struct stores data that for the program before the solana-program-test context is created +/// +/// # Fields +/// +/// * `program_test` - The program test +/// * `testing_actors` - The testing actors +/// * `program_data_pubkey` - The pubkey of the program data account +/// * `account_fixtures` - The account fixtures +pub struct PreTestingContext { + pub program_test: ProgramTest, + pub testing_actors: TestingActors, + pub program_data_pubkey: Pubkey, + pub account_fixtures: FixtureAccounts, +} + +impl PreTestingContext { + /// Setup the pre-test context + /// + /// # Returns + /// + /// A PreTestingContext struct containing the program data account, testing actors, test context, and fixture accounts + pub fn new(program_id: Pubkey, owner_keypair_path: &str) -> Self { + let mut program_test = ProgramTest::new( + "matching_engine", // Replace with your program name + program_id, + None, + ); + + program_test.set_compute_max_units(1000000000); + program_test.set_transaction_account_lock_limit(1000); + + // Setup Testing Actors + let testing_actors = TestingActors::new(owner_keypair_path); + println!("Testing actors: {:?}", testing_actors); + // Initialize Upgrade Manager + let program_data_pubkey = initialize_upgrade_manager( + &mut program_test, + &program_id, + testing_actors.owner.pubkey(), + ); + + // Initialize CCTP Token Messenger Minter + initialize_cctp_token_messenger_minter(&mut program_test); + + // Initialize Wormhole Core Bridge + initialize_wormhole_core_bridge(&mut program_test); + + // Initialize CCTP Message Transmitter + initialize_cctp_message_transmitter(&mut program_test); + + // Initialize Local Token Router + initialize_local_token_router(&mut program_test); + + // Initialize Account Fixtures + let account_fixtures = FixtureAccounts::new(&mut program_test); + + // Add lookup table accounts + FixtureAccounts::add_lookup_table_hack(&mut program_test); + + PreTestingContext { + program_test, + testing_actors, + program_data_pubkey, + account_fixtures, + } + } + + /// Adds the post message shims to the program test + pub fn add_post_message_shims(&mut self) { + initialize_post_message_shims(&mut self.program_test); + } + + /// Adds the verify shims to the program test + pub fn add_verify_shims(&mut self) { + initialize_verify_shims(&mut self.program_test); + } +} + +// TODO: Move the testing context to a different module + +/// Testing Context struct that stores common data needed to run tests +/// +/// # Fields +/// +/// * `program_data_account` - The pubkey of the program data account created by the Upgrade Manager +/// * `testing_actors` - The testing actors, including solvers and the owner +/// * `fixture_accounts` - The accounts that are loaded from files under the `tests/fixtures` directory +/// * `vaa_pairs` - The Vaas that were created in the pre-testing context setup stage +pub struct TestingContext { + pub program_data_account: Pubkey, + pub testing_actors: TestingActors, + pub fixture_accounts: Option, + pub vaa_pairs: TestVaaPairs, + pub transfer_direction: TransferDirection, + pub shim_mode: ShimMode, +} + +impl TestingContext { + /// Creates a new TestingContext + /// + /// # Arguments + /// + /// * `pre_testing_context` - The pre-testing context + /// * `transfer_direction` - The transfer direction + /// * `vaas_test` - The Vaas that were created in the pre-testing context setup stage + /// + /// # Returns + /// + /// A tuple containing the new TestingContext and the test context from the solana-program-test crate + pub async fn new( + mut pre_testing_context: PreTestingContext, + transfer_direction: TransferDirection, + vaas_test: Option, + shim_mode: ShimMode, + ) -> (Self, ProgramTestContext) { + let mut test_context = pre_testing_context.program_test.start_with_context().await; + + // Airdrop to all actors + pre_testing_context + .testing_actors + .airdrop_all(&mut test_context) + .await; + + // Create USDC mint + let _usdc_mint_fixture = + MintFixture::new_from_file(&mut test_context, USDC_MINT_FIXTURE_PATH); + let _usdt_mint_fixture = + MintFixture::new_from_file(&mut test_context, USDT_MINT_FIXTURE_PATH); + + // Create USDC ATAs for all actors that need them + pre_testing_context + .testing_actors + .create_usdc_atas(&mut test_context, USDC_MINT_ADDRESS) + .await; + + pre_testing_context + .testing_actors + .create_usdt_atas(&mut test_context, USDT_MINT_ADDRESS) + .await; + let vaa_pairs = match vaas_test { + Some(vaas_test) => vaas_test, + None => TestVaaPairs::new(), + }; + ( + TestingContext { + program_data_account: pre_testing_context.program_data_pubkey, + testing_actors: pre_testing_context.testing_actors, + fixture_accounts: Some(pre_testing_context.account_fixtures), + vaa_pairs, + transfer_direction, + shim_mode, + }, + test_context, + ) + } + + /// Verifies the posted VAA pairs + /// + /// # Arguments + /// + /// * `test_context` - The test context + pub async fn verify_vaas(&self, test_context: &mut ProgramTestContext) { + self.vaa_pairs.verify_posted_vaas(test_context).await; + } + + /// Gets the VAA pair at the given index + /// + /// # Arguments + /// + /// * `index` - The index of the VAA pair + pub fn get_vaa_pair(&self, index: usize) -> Option { + if index < self.vaa_pairs.len() { + Some(self.vaa_pairs[index].clone()) + } else { + None + } + } + + /// Gets the fixture accounts + /// + /// # Returns + /// + /// The fixture accounts + pub fn get_fixture_accounts(&self) -> Option { + self.fixture_accounts.clone() + } + + /// Gets the matching engine program ID + /// + /// # Returns + /// + /// The matching engine program ID + pub fn get_matching_engine_program_id(&self) -> Pubkey { + PROGRAM_ID + } + + /// Gets the USDC mint address + /// + /// # Returns + /// + /// The USDC mint address + pub fn get_usdc_mint_address(&self) -> Pubkey { + USDC_MINT_ADDRESS + } + + /// Gets the CCTP mint recipient + /// + /// # Returns + /// + /// The CCTP mint recipient + pub fn get_cctp_mint_recipient(&self) -> Pubkey { + CCTP_MINT_RECIPIENT + } + + /// Gets the Wormhole program ID + /// + /// # Returns + /// + /// The Wormhole program ID + pub fn get_wormhole_program_id(&self) -> Pubkey { + wormhole_svm_definitions::solana::CORE_BRIDGE_PROGRAM_ID + } + + /// Gets the new latest blockhash + /// + /// # Arguments + /// + /// * `test_context` - The test context + pub async fn get_new_latest_blockhash( + &self, + test_context: &mut ProgramTestContext, + ) -> AnyhowResult { + let handle = test_context.get_new_latest_blockhash(); + let hash = handle.await?; + Ok(hash) + } + + /// Processes a transaction + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `transaction` - The transaction to process + pub async fn process_transaction( + &self, + test_context: &mut ProgramTestContext, + transaction: impl Into, + ) -> Result<(), BanksClientError> { + let handle = test_context.banks_client.process_transaction(transaction); + handle.await + } + + /// Simulates a transaction and verifies that the logs contain the expected lines + /// + /// # Arguments + /// + /// * `transaction` - The transaction to simulate + /// * `expected_logs` - A vector of strings that should be present in the logs + /// + /// # Returns + /// + /// The simulation details if the transaction was successful and all expected logs were found + pub async fn simulate_and_verify_logs( + &self, + test_context: &mut ProgramTestContext, + transaction: impl Into, + expected_logs: &Vec, + ) -> AnyhowResult<()> { + let simulation_result = test_context + .banks_client + .simulate_transaction(transaction) + .await?; + // Verify the transaction succeeded + assert!( + simulation_result.result.clone().unwrap().is_ok(), + "Transaction simulation failed: {:?}", + simulation_result.result + ); + + let details = simulation_result + .simulation_details + .expect("No simulation details available"); + + // Verify all expected logs are present + for expected_log in expected_logs { + let expected_log_count = expected_log.count; + let expected_log_message = &expected_log.log_message; + let found = details + .logs + .iter() + .filter(|log| log.contains(expected_log_message)) + .count(); + assert!( + found == expected_log_count, + "Expected log {} not found in program logs", + expected_log.log_message + ); + } + Ok(()) + } + + /// Creates a transaction + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `instructions` - The instructions to include in the transaction + /// * `payer` - The payer of the transaction + /// * `signers` - The signers of the transaction + /// * `compute_unit_price` - The compute unit price of the transaction + /// * `compute_unit_limit` - The compute unit limit of the transaction + /// + /// # Returns + /// + /// The transaction + pub async fn create_transaction( + &self, + test_context: &mut ProgramTestContext, + instructions: &[Instruction], + payer: Option<&Pubkey>, + signers: &[&Keypair], + compute_unit_price: Option, + compute_unit_limit: Option, + ) -> Transaction { + let compute_unit_price = compute_unit_price.unwrap_or_else(|| 1000000000); + let compute_unit_limit = compute_unit_limit.unwrap_or_else(|| 1000000000); + let last_blockhash = self.get_new_latest_blockhash(test_context).await.unwrap(); + let compute_budget_price = + ComputeBudgetInstruction::set_compute_unit_price(compute_unit_price); + let compute_budget_limit = + ComputeBudgetInstruction::set_compute_unit_limit(compute_unit_limit); + let mut all_instructions = Vec::with_capacity(instructions.len() + 2); + all_instructions.push(compute_budget_price.clone()); + all_instructions.push(compute_budget_limit.clone()); + all_instructions.extend_from_slice(instructions); + Transaction::new_signed_with_payer(&all_instructions, payer, signers, last_blockhash) + } + + /// Executes a transaction and verifies that the transaction either succeeds or fails as expected + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `transaction` - The transaction to execute + /// * `expected_error` - The expected error + pub async fn execute_and_verify_transaction( + &self, + test_context: &mut ProgramTestContext, + transaction: impl Into, + expected_error: Option<&ExpectedError>, + ) { + let tx_result = self.process_transaction(test_context, transaction).await; + if let Some(expected_error) = expected_error { + let tx_error = tx_result.expect_err(&format!( + "Expected error {:?}, but transaction succeeded", + expected_error.error_string + )); + + match tx_error { + BanksClientError::TransactionError(TransactionError::InstructionError( + instruction_index, + ref instruction_error, + )) => { + assert_eq!( + instruction_index, expected_error.instruction_index, + "Expected error on instruction {}, but got: {:?}", + expected_error.instruction_index, tx_error + ); + match instruction_error { + InstructionError::Custom(error_code) => { + assert_eq!( + error_code, &expected_error.error_code, + "Program returned error code {}, expected {} ({:?})", + error_code, expected_error.error_code, expected_error.error_string + ); + } + // TODO; Catch custom instruction errors or smth + _ => { + assert_eq!( + 0, expected_error.error_code, + "This is a non custom instruction error, and if expected, error code should be 0" + ); + } + } + } + _ => { + panic!( + "Expected program error {:?}, but got: {:?}", + expected_error.error_string, tx_error + ); + } + } + } else { + assert!( + tx_result.is_ok(), + "Transaction failed but no error was expected: {:?}", + tx_result.err().unwrap() + ); + } + } + + /// Gets the balances of all the test actors + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// + /// # Returns + /// + /// The balances of all the test actors + pub async fn get_balances(&self, test_context: &mut ProgramTestContext) -> Balances { + Balances::new(&self.testing_actors, test_context).await + } + + /// Gets the current timestamp + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// + /// # Returns + /// + /// The current timestamp as an i64 + pub async fn get_current_timestamp(&self, test_context: &mut ProgramTestContext) -> i64 { + let clock = test_context + .banks_client + .get_sysvar::() + .await + .expect("Failed to get clock sysvar"); + clock.unix_timestamp + } + + /// Fast forwards the clock to the given timestamp + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `target_timestamp` - The timestamp to fast forward to + pub async fn fast_forward_to_timestamp( + &self, + test_context: &mut ProgramTestContext, + target_timestamp: i64, + ) { + let new_clock = Clock { + unix_timestamp: target_timestamp, + ..Default::default() + }; + test_context.set_sysvar(&new_clock); + let current_timestamp = self.get_current_timestamp(test_context).await; + assert!(current_timestamp >= target_timestamp); + } + + /// Makes the fast transfer VAA expired + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `seconds_after_expiry` - The number of seconds after the VAA expiration time to make the VAA expired + pub async fn make_fast_transfer_vaa_expired( + &self, + test_context: &mut ProgramTestContext, + seconds_after_expiry: i64, // Make this negative if you want it slightly before expiry + ) { + let vaa_expiration_time = i64::from( + self.get_vaa_pair(0) + .unwrap() + .get_fast_transfer_vaa_expiration_time(), + ); + let target_timestamp = vaa_expiration_time + seconds_after_expiry; + self.fast_forward_to_timestamp(test_context, target_timestamp) + .await; + } + + /// Gets the remote token messenger + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// + /// # Returns + /// + /// The remote token messenger as a CctpRemoteTokenMessenger + pub async fn get_remote_token_messenger( + &self, + test_context: &mut ProgramTestContext, + ) -> CctpRemoteTokenMessenger { + let fixture_accounts = self.get_fixture_accounts().unwrap(); + match self.transfer_direction { + TransferDirection::FromEthereumToArbitrum => { + crate::utils::router::get_remote_token_messenger( + test_context, + fixture_accounts.ethereum_remote_token_messenger, + ) + .await + .into() + } + TransferDirection::FromArbitrumToEthereum => { + crate::utils::router::get_remote_token_messenger( + test_context, + fixture_accounts.arbitrum_remote_token_messenger, + ) + .await + .into() + } + TransferDirection::Other => { + panic!("Unsupported transfer direction"); + } + } + } +} + +/// A struct representing a solver +/// +/// # Fields +/// +/// * `actor` - The testing actor +#[derive(Clone)] +pub struct Solver { + pub actor: TestingActor, +} + +impl Solver { + pub fn new( + keypair: Rc, + usdc_token_account: Option, + usdt_token_account: Option, + ) -> Self { + Self { + actor: TestingActor::new(keypair, usdc_token_account, usdt_token_account), + } + } + + /// Gets the keypair + /// + /// # Returns + /// + /// The keypair as an Rc + pub fn keypair(&self) -> Rc { + self.actor.keypair.clone() + } + + /// Gets the pubkey + /// + /// # Returns + /// + /// The pubkey as a Pubkey + pub fn pubkey(&self) -> Pubkey { + self.actor.keypair.pubkey() + } + + /// Gets the token account address + /// + /// # Returns + /// + /// The token account address as an Option + pub fn token_account_address(&self) -> Option { + self.actor.usdc_token_account.as_ref().map(|t| t.address) + } + + /// Approves the USDC mint for the given delegate + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `delegate` - The delegate to approve the USDC mint to + /// * `amount` - The amount of USDC to approve + pub async fn approve_spl_token( + &self, + test_context: &mut ProgramTestContext, + delegate: &Pubkey, + amount: u64, + spl_token_enum: &SplTokenEnum, + ) { + self.actor + .approve_spl_token(test_context, delegate, amount, spl_token_enum) + .await; + } + + /// Gets the balance of the token account + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `spl_token_enum` - The SPL token enum + /// + /// # Returns + /// + /// The balance of the token account as a u64 + pub async fn get_token_account_balance( + &self, + test_context: &mut ProgramTestContext, + spl_token_enum: &SplTokenEnum, + ) -> u64 { + self.actor + .get_token_account_balance(test_context, spl_token_enum) + .await + } + + /// Gets the balance of the actor's lamports + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// + /// # Returns + /// + /// The balance of the actor's lamports as a u64 + pub async fn get_lamport_balance(&self, test_context: &mut ProgramTestContext) -> u64 { + self.actor.get_lamport_balance(test_context).await + } +} + +/// A struct representing a testing actor +/// +/// # Fields +/// +/// * `keypair` - The keypair of the actor +/// * `token_account` - The token account of the actor (if it exists) +#[derive(Clone)] +pub struct TestingActor { + pub keypair: Rc, + pub usdc_token_account: Option, + pub usdt_token_account: Option, +} + +impl std::fmt::Debug for TestingActor { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "TestingActor {{ pubkey: {:?}, token_account: {:?} }}", + self.keypair.pubkey(), + self.usdc_token_account + ) + } +} + +impl TestingActor { + pub fn new( + keypair: Rc, + usdc_token_account: Option, + usdt_token_account: Option, + ) -> Self { + Self { + keypair, + usdc_token_account, + usdt_token_account, + } + } + + /// Gets the pubkey + /// + /// # Returns + /// + /// The pubkey as a Pubkey + pub fn pubkey(&self) -> Pubkey { + self.keypair.pubkey() + } + + /// Gets the keypair + /// + /// # Returns + /// + /// The keypair as an Rc + pub fn keypair(&self) -> Rc { + self.keypair.clone() + } + + /// Gets the token account address + /// + /// # Arguments + /// + /// * `spl_token_enum` - The SPL token enum + /// + /// # Returns + /// + /// The token account address if it exists, otherwise None + pub fn token_account_address(&self, spl_token_enum: &SplTokenEnum) -> Option { + match spl_token_enum { + SplTokenEnum::Usdc => self.usdc_token_account.as_ref().map(|t| t.address), + SplTokenEnum::Usdt => self.usdt_token_account.as_ref().map(|t| t.address), + } + } + + /// Gets the balance of the token account + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `spl_token_enum` - The SPL token enum + /// + /// # Returns + /// + /// The balance of the token account as a u64 + pub async fn get_token_account_balance( + &self, + test_context: &mut ProgramTestContext, + spl_token_enum: &SplTokenEnum, + ) -> u64 { + if let Some(token_account) = self.token_account_address(spl_token_enum) { + if let Some(account) = test_context + .banks_client + .get_account(token_account) + .await + .unwrap() + { + let token_account = TokenAccount::try_deserialize(&mut &account.data[..]).unwrap(); + token_account.amount + } else { + 0 + } + } else { + 0 + } + } + + /// Gets the balance of the actor's lamports + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// + /// # Returns + /// + /// The balance of the actor's lamports as a u64 + pub async fn get_lamport_balance(&self, test_context: &mut ProgramTestContext) -> u64 { + test_context + .banks_client + .get_balance(self.keypair.pubkey()) + .await + .unwrap() + } + + /// Approves the USDC mint for the given delegate + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `delegate` - The delegate to approve the USDC mint to + /// * `amount` - The amount of USDC to approve + pub async fn approve_spl_token( + &self, + test_context: &mut ProgramTestContext, + delegate: &Pubkey, + amount: u64, + spl_token_enum: &SplTokenEnum, + ) { + // If signer pubkeys are empty, it means that the owner is the signer + let last_blockhash = test_context + .get_new_latest_blockhash() + .await + .expect("Failed to get new blockhash"); + let approve_ix = approve( + &spl_token::ID, + &self.token_account_address(spl_token_enum).unwrap(), + delegate, + &self.pubkey(), + &[], + amount, + ) + .expect("Failed to create approve USDC instruction"); + let transaction = Transaction::new_signed_with_payer( + &[approve_ix], + Some(&self.pubkey()), + &[&self.keypair()], + last_blockhash, + ); + test_context + .banks_client + .process_transaction(transaction) + .await + .expect("Failed to approve USDC"); + } + + /// Closes a token account + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `spl_token_enum` - The SPL token enum + pub async fn close_token_account( + &self, + test_context: &mut ProgramTestContext, + spl_token_enum: &SplTokenEnum, + ) { + if let Some(token_account) = self.token_account_address(spl_token_enum) { + let balance = self + .get_token_account_balance(test_context, spl_token_enum) + .await; + let burn_ix = spl_token::instruction::burn( + &spl_token::ID, + &token_account, + &USDC_MINT_ADDRESS, + &self.pubkey(), + &[], + balance, + ) + .unwrap(); + let last_blockhash = test_context + .get_new_latest_blockhash() + .await + .expect("Failed to get new blockhash"); + let transaction = Transaction::new_signed_with_payer( + &[burn_ix], + Some(&self.pubkey()), + &[&self.keypair()], + last_blockhash, + ); + test_context + .banks_client + .process_transaction(transaction) + .await + .expect("Failed to burn token account"); + let close_account_ix = spl_token::instruction::close_account( + &spl_token::ID, + &token_account, + &self.pubkey(), + &self.pubkey(), + &[], + ) + .unwrap(); + let last_blockhash = test_context + .get_new_latest_blockhash() + .await + .expect("Failed to get new blockhash"); + let transaction = Transaction::new_signed_with_payer( + &[close_account_ix], + Some(&self.pubkey()), + &[&self.keypair()], + last_blockhash, + ); + test_context + .banks_client + .process_transaction(transaction) + .await + .expect("Failed to close token account"); + } + } +} + +/// A struct containing the balances of all the test actors +#[derive(Debug, Clone)] +pub struct Balances(HashMap); + +impl Deref for Balances { + type Target = HashMap; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl Balances { + pub fn get(&self, actor: &TestingActorEnum) -> Option<&Balance> { + self.0.get(actor) + } +} + +impl Balances { + pub async fn new( + testing_actors: &TestingActors, + test_context: &mut ProgramTestContext, + ) -> Self { + let mut balances = HashMap::new(); + balances.insert( + TestingActorEnum::Owner, + Balance::new(&testing_actors.owner, test_context).await, + ); + balances.insert( + TestingActorEnum::OwnerAssistant, + Balance::new(&testing_actors.owner_assistant, test_context).await, + ); + balances.insert( + TestingActorEnum::FeeRecipient, + Balance::new(&testing_actors.fee_recipient, test_context).await, + ); + balances.insert( + TestingActorEnum::Relayer, + Balance::new(&testing_actors.relayer, test_context).await, + ); + for (index, solver) in testing_actors.solvers.iter().enumerate() { + balances.insert( + TestingActorEnum::Solver(index), + Balance::new(&solver.actor, test_context).await, + ); + } + balances.insert( + TestingActorEnum::Liquidator, + Balance::new(&testing_actors.liquidator, test_context).await, + ); + Self(balances) + } +} + +#[derive(Default, Debug, Clone)] +pub struct Balance { + pub lamports: u64, + pub usdc: u64, + pub usdt: u64, +} + +impl Balance { + pub async fn new(testing_actor: &TestingActor, test_context: &mut ProgramTestContext) -> Self { + Self { + lamports: testing_actor.get_lamport_balance(test_context).await, + usdc: testing_actor + .get_token_account_balance(test_context, &SplTokenEnum::Usdc) + .await, + usdt: testing_actor + .get_token_account_balance(test_context, &SplTokenEnum::Usdt) + .await, + } + } +} + +/// A struct containing all the testing actors (the owner, the owner assistant, the fee recipient, the relayer, solvers, liquidator) +pub struct TestingActors { + pub payer_signer: Rc, + pub owner: TestingActor, + pub owner_assistant: TestingActor, + pub fee_recipient: TestingActor, + pub relayer: TestingActor, + pub solvers: Vec, + pub liquidator: TestingActor, +} + +impl std::fmt::Debug for TestingActors { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + // Create a string that lists all solvers with their indices + let solver_string = { + let solver_entries: Vec = self + .solvers + .iter() + .enumerate() // This gives (index, value) pairs + .map(|(i, solver)| format!("solver {}: {}", i, solver.pubkey())) + .collect(); + + format!("[{}]", solver_entries.join(", ")) + }; + write!( + f, + "TestingActors {{ owner: {:?}, owner_assistant: {:?}, fee_recipient: {:?}, relayer: {:?}, solvers: {:?}, liquidator: {:?} }}", + self.owner.pubkey(), + self.owner_assistant.pubkey(), + self.fee_recipient.pubkey(), + self.relayer.pubkey(), + solver_string, + self.liquidator.pubkey(), + ) + } +} + +impl TestingActors { + /// Create a new TestingActors struct + /// + /// # Arguments + /// + /// * `owner_keypair_path` - The path to the owner keypair + /// + /// # Returns + pub fn new(owner_keypair_path: &str) -> Self { + let owner_kp = Rc::new(read_keypair_from_file(owner_keypair_path)); + let owner = TestingActor::new(owner_kp.clone(), None, None); + let owner_assistant = TestingActor::new(owner_kp.clone(), None, None); + let fee_recipient = TestingActor::new(Rc::new(Keypair::new()), None, None); + let relayer = TestingActor::new(Rc::new(Keypair::new()), None, None); + let mut solvers = vec![]; + solvers.extend(vec![ + Solver::new(Rc::new(Keypair::new()), None, None), + Solver::new(Rc::new(Keypair::new()), None, None), + Solver::new(Rc::new(Keypair::new()), None, None), + ]); + let liquidator = TestingActor::new(Rc::new(Keypair::new()), None, None); + Self { + payer_signer: Rc::new(Keypair::new()), + owner, + owner_assistant, + fee_recipient, + relayer, + solvers, + liquidator, + } + } + + /// Get the actors that should have token accounts + pub fn token_account_actors(&mut self) -> Vec<&mut TestingActor> { + let mut actors = Vec::new(); + actors.push(&mut self.fee_recipient); + actors.push(&mut self.owner); + for solver in &mut self.solvers { + actors.push(&mut solver.actor); + } + actors.push(&mut self.liquidator); + actors + } + + /// Transfers 10000000000 Lamports to all the actors + /// + /// # Arguments + /// + /// * `test_context` - The test context + async fn airdrop_all(&self, test_context: &mut ProgramTestContext) { + airdrop(test_context, &self.payer_signer.pubkey(), 10000000000).await; + airdrop(test_context, &self.owner.pubkey(), 10000000000).await; + airdrop(test_context, &self.owner_assistant.pubkey(), 10000000000).await; + airdrop(test_context, &self.fee_recipient.pubkey(), 10000000000).await; + airdrop(test_context, &self.relayer.pubkey(), 10000000000).await; + for solver in self.solvers.iter() { + airdrop(test_context, &solver.pubkey(), 10000000000).await; + } + airdrop(test_context, &self.liquidator.pubkey(), 10000000000).await; + } + + /// Creates USDC associated token accounts + /// + /// Creates usdc associated token accounts for all actors that expect to have them + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `usdc_mint_address` - The USDC mint address + async fn create_usdc_atas( + &mut self, + test_context: &mut ProgramTestContext, + usdc_mint_address: Pubkey, + ) { + for actor in self.token_account_actors() { + let usdc_ata = + create_token_account(test_context, &actor.keypair(), &usdc_mint_address).await; + airdrop_spl_token( + test_context, + &usdc_ata.address, + 420_000__000_000, + usdc_mint_address, + ) + .await; + actor.usdc_token_account = Some(usdc_ata); + } + } + + /// Creates USDT associated token accounts + /// + /// Creates usdt associated token accounts for all actors that expect to have them + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// * `usdt_mint_address` - The USDT mint address + pub async fn create_usdt_atas( + &mut self, + test_context: &mut ProgramTestContext, + usdt_mint_address: Pubkey, + ) { + for actor in self.token_account_actors() { + let usdt_ata = + create_token_account(test_context, &actor.keypair(), &usdt_mint_address).await; + airdrop_spl_token( + test_context, + &usdt_ata.address, + 420_000__000_000, + usdt_mint_address, + ) + .await; + actor.usdt_token_account = Some(usdt_ata); + } + } + + /// Gets an actor + /// + /// # Arguments + /// + /// * `actor_enum` - The actor enum + pub fn get_actor(&self, actor_enum: &TestingActorEnum) -> &TestingActor { + match actor_enum { + TestingActorEnum::Owner => &self.owner, + TestingActorEnum::OwnerAssistant => &self.owner_assistant, + TestingActorEnum::FeeRecipient => &self.fee_recipient, + TestingActorEnum::Relayer => &self.relayer, + TestingActorEnum::Solver(index) => &self.solvers[*index].actor, + TestingActorEnum::Liquidator => &self.liquidator, + } + } + + /// Add solvers to the testing actors struct + #[allow(dead_code)] + pub async fn add_solvers( + &mut self, + test_context: &mut ProgramTestContext, + num_solvers: usize, + usdc_mint_address: Pubkey, + usdt_mint_address: Pubkey, + ) { + for _ in 0..num_solvers { + let keypair = Rc::new(Keypair::new()); + let usdc_ata = create_token_account(test_context, &keypair, &usdc_mint_address).await; + let usdt_ata = create_token_account(test_context, &keypair, &usdt_mint_address).await; + airdrop(test_context, &keypair.pubkey(), 10000000000).await; + self.solvers + .push(Solver::new(keypair.clone(), Some(usdc_ata), Some(usdt_ata))); + } + } +} + +/// The mode of the shim +/// +/// # Enums +/// +/// * `None` - No shims +/// * `PostVaa` - Post the VAAs but don't add the shims +/// * `VerifySignature` - Only add the verify signature shim program +/// * `VerifyAndPostSignature` - Add the verify signature and post message shims program +#[derive(Copy, Clone, PartialEq, Eq, Debug)] +pub enum ShimMode { + None, + VerifySignature, + VerifyAndPostSignature, +} + +/// The direction of the transfer +/// +/// # Enums +/// +/// * `FromArbitrumToEthereum` - The direction of the transfer from Arbitrum to Ethereum +/// * `FromEthereumToArbitrum` - The direction of the transfer from Ethereum to Arbitrum +/// * `Other` - The direction of the transfer is not supported +#[allow(dead_code)] +#[derive(Copy, Clone, PartialEq, Eq)] +pub enum TransferDirection { + FromArbitrumToEthereum, + FromEthereumToArbitrum, + Other, // TODO: Add other transfer directions +} + +impl Default for TransferDirection { + fn default() -> Self { + Self::FromArbitrumToEthereum + } +} + +/// Setup the environment for the tests +/// +/// This function first creates a PreTestingContext struct, which allows setting up the program test context, and load in accounts before starting the test context. +/// Then it starts the test context and returns a TestingContext struct. +/// +/// # Arguments +/// +/// * `shim_mode` - The mode of the shim +/// * `transfer_direction` - The direction of the transfer +/// * `vaa_args` - The arguments for the VAA +/// +/// # Returns +/// +/// A TestingContext struct containing the testing actors, test context, loaded fixture accounts, +/// and testing state (which includes the auction state and the VAAs) +pub async fn setup_environment( + shim_mode: ShimMode, + transfer_direction: TransferDirection, + vaa_args: Option>, +) -> (TestingContext, ProgramTestContext) { + let mut pre_testing_context = PreTestingContext::new(PROGRAM_ID, OWNER_KEYPAIR_PATH); + let vaas_test: Option = match vaa_args { + Some(vaa_args_plural) => { + let mut vaas_test_temp = TestVaaPairs::new(); + for vaa_args in vaa_args_plural { + let arbitrum_emitter_address: [u8; 32] = REGISTERED_TOKEN_ROUTERS[&Chain::Arbitrum]; + let ethereum_emitter_address: [u8; 32] = REGISTERED_TOKEN_ROUTERS[&Chain::Ethereum]; + let new_vaas_test = match transfer_direction { + TransferDirection::FromArbitrumToEthereum => { + create_vaas_test_with_chain_and_address( + &mut pre_testing_context.program_test, + USDC_MINT_ADDRESS, + CCTP_MINT_RECIPIENT, + ChainAndAddress { + chain: Chain::Arbitrum, + address: arbitrum_emitter_address, + }, + ChainAndAddress { + chain: Chain::Ethereum, + address: ethereum_emitter_address, + }, + vaa_args, + ) + } + TransferDirection::FromEthereumToArbitrum => { + create_vaas_test_with_chain_and_address( + &mut pre_testing_context.program_test, + USDC_MINT_ADDRESS, + CCTP_MINT_RECIPIENT, + ChainAndAddress { + chain: Chain::Ethereum, + address: ethereum_emitter_address, + }, + ChainAndAddress { + chain: Chain::Arbitrum, + address: arbitrum_emitter_address, + }, + vaa_args, + ) + } + TransferDirection::Other => panic!("Unsupported transfer direction"), + }; + vaas_test_temp.extend(new_vaas_test.0); + } + Some(vaas_test_temp) + } + None => None, + }; + match shim_mode { + ShimMode::None => {} + ShimMode::VerifySignature => { + pre_testing_context.add_verify_shims(); + } + ShimMode::VerifyAndPostSignature => { + pre_testing_context.add_verify_shims(); + pre_testing_context.add_post_message_shims(); + } + }; + TestingContext::new( + pre_testing_context, + transfer_direction, + vaas_test, + shim_mode, + ) + .await +} diff --git a/solana/modules/matching-engine-testing/tests/testing_engine/state.rs b/solana/modules/matching-engine-testing/tests/testing_engine/state.rs new file mode 100644 index 000000000..af18ffc89 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/testing_engine/state.rs @@ -0,0 +1,518 @@ +//! # Testing Engine State +//! +//! This module contains the state for the testing engine. +//! It is used to store the state of the testing engine. +//! +//! ## Examples +//! +//! ``` +//! use crate::testing_engine::state::*; +//! +//! let testing_engine_state = TestingEngineState::Uninitialized(BaseState::default()); +//! // Use the testing engine state to test the instructions and move through the states +//! ``` + +use super::{config::TestingActorEnum, setup::TransferDirection}; +use crate::utils::{ + account_fixtures::FixtureAccounts, + auction::{AuctionAccounts, AuctionState}, + router::TestRouterEndpoints, + token_account::SplTokenEnum, + vaa::{TestVaaPair, TestVaaPairs}, +}; +use anchor_lang::prelude::*; +use matching_engine::state::FastMarketOrder; + +// Base state containing common data +#[derive(Clone)] +pub struct BaseState { + pub fixture_accounts: FixtureAccounts, + pub vaas: TestVaaPairs, + pub transfer_direction: TransferDirection, +} + +impl BaseState { + pub fn get_fast_market_order(&self, index: usize) -> Option { + self.vaas.get(index).map(|vaa| { + vaa.fast_transfer_vaa + .get_payload_deserialized() + .unwrap() + .get_fast_transfer() + .unwrap() + }) + } +} + +// Each state contains its specific data +#[derive(Clone)] +pub struct InitializedState { + pub auction_config_address: Pubkey, + pub custodian_address: Pubkey, +} + +#[derive(Clone)] +pub struct RouterEndpointsState { + pub endpoints: TestRouterEndpoints, +} + +#[derive(Clone)] +pub struct FastMarketOrderAccountCreatedState { + pub fast_market_order_address: Pubkey, + pub fast_market_order_bump: u8, + pub fast_market_order: FastMarketOrder, + pub close_account_refund_recipient: Pubkey, +} + +#[derive(Clone)] +pub struct InitialOfferPlacedState { + pub auction_state: AuctionState, + pub auction_accounts: AuctionAccounts, +} + +#[derive(Clone)] +pub struct OfferImprovedState { + pub auction_state: AuctionState, +} + +#[derive(Clone)] +pub struct OrderExecutedState { + pub cctp_message: Pubkey, + pub post_message_sequence: Option, // Only set if shimful execution + pub post_message_message: Option, // Only set if shimful execution + pub actor_enum: TestingActorEnum, +} + +#[derive(Clone)] +pub struct OrderPreparedState { + pub prepared_order_response_address: Pubkey, + pub prepared_custody_token: Pubkey, + pub base_fee_token: Pubkey, + pub actor_enum: TestingActorEnum, + pub prepared_by: Pubkey, +} + +#[derive(Clone)] +pub struct GuardianSetState { + pub guardian_set_address: Pubkey, + pub guardian_signatures_address: Pubkey, +} + +// The main state enum that reflects all possible instruction states +#[derive(Clone)] +pub enum TestingEngineState { + Uninitialized(BaseState), + Initialized { + base: BaseState, + initialized: InitializedState, + }, + RouterEndpointsCreated { + base: BaseState, + initialized: InitializedState, + router_endpoints: RouterEndpointsState, + }, + FastMarketOrderAccountCreated { + base: BaseState, + initialized: InitializedState, + router_endpoints: Option, + fast_market_order: FastMarketOrderAccountCreatedState, + guardian_set_state: GuardianSetState, + auction_state: AuctionState, + auction_accounts: Option, + order_prepared: Option, + }, + InitialOfferPlaced { + base: BaseState, + initialized: InitializedState, + router_endpoints: RouterEndpointsState, + fast_market_order: Option, + auction_state: AuctionState, + auction_accounts: AuctionAccounts, + order_prepared: Option, + }, + OfferImproved { + base: BaseState, + initialized: InitializedState, + router_endpoints: RouterEndpointsState, + fast_market_order: Option, + auction_state: AuctionState, + auction_accounts: Option, + order_prepared: Option, + }, + OrderExecuted { + base: BaseState, + initialized: InitializedState, + router_endpoints: RouterEndpointsState, + fast_market_order: Option, + auction_state: AuctionState, + order_executed: OrderExecutedState, + auction_accounts: AuctionAccounts, + order_prepared: Option, + }, + OrderPrepared { + base: BaseState, + initialized: InitializedState, + router_endpoints: RouterEndpointsState, + fast_market_order: Option, + auction_state: AuctionState, + order_prepared: OrderPreparedState, + auction_accounts: AuctionAccounts, + }, + AuctionSettled { + base: BaseState, + initialized: InitializedState, + router_endpoints: RouterEndpointsState, + auction_state: AuctionState, + fast_market_order: Option, + order_prepared: OrderPreparedState, + auction_accounts: Option, + order_executed: Option, + }, + FastMarketOrderClosed { + base: BaseState, + initialized: InitializedState, + router_endpoints: Option, + auction_state: AuctionState, + fast_market_order: Option, + order_prepared: Option, + auction_accounts: Option, + order_executed: Option, + }, +} + +// Implement accessors for common data +impl TestingEngineState { + // Base state accessor + pub fn base(&self) -> &BaseState { + match self { + Self::Uninitialized(state) => state, + Self::Initialized { base, .. } => base, + Self::RouterEndpointsCreated { base, .. } => base, + Self::FastMarketOrderAccountCreated { base, .. } => base, + Self::InitialOfferPlaced { base, .. } => base, + Self::OfferImproved { base, .. } => base, + Self::OrderExecuted { base, .. } => base, + Self::OrderPrepared { base, .. } => base, + Self::AuctionSettled { base, .. } => base, + Self::FastMarketOrderClosed { base, .. } => base, + } + } + + // Initialization data accessor + pub fn initialized(&self) -> Option<&InitializedState> { + match self { + Self::Uninitialized(_) => None, + Self::Initialized { initialized, .. } => Some(initialized), + Self::RouterEndpointsCreated { initialized, .. } => Some(initialized), + Self::FastMarketOrderAccountCreated { initialized, .. } => Some(initialized), + Self::InitialOfferPlaced { initialized, .. } => Some(initialized), + Self::OfferImproved { initialized, .. } => Some(initialized), + Self::OrderExecuted { initialized, .. } => Some(initialized), + Self::OrderPrepared { initialized, .. } => Some(initialized), + Self::AuctionSettled { initialized, .. } => Some(initialized), + Self::FastMarketOrderClosed { initialized, .. } => Some(initialized), + } + } + + // Router endpoints accessor + pub fn router_endpoints(&self) -> Option<&RouterEndpointsState> { + match self { + Self::Uninitialized(_) | Self::Initialized { .. } => None, + Self::RouterEndpointsCreated { + router_endpoints, .. + } => Some(router_endpoints), + Self::FastMarketOrderAccountCreated { + router_endpoints, .. + } => router_endpoints.as_ref(), + Self::InitialOfferPlaced { + router_endpoints, .. + } => Some(router_endpoints), + Self::OfferImproved { + router_endpoints, .. + } => Some(router_endpoints), + Self::OrderExecuted { + router_endpoints, .. + } => Some(router_endpoints), + Self::OrderPrepared { + router_endpoints, .. + } => Some(router_endpoints), + Self::AuctionSettled { + router_endpoints, .. + } => Some(router_endpoints), + Self::FastMarketOrderClosed { + router_endpoints, .. + } => router_endpoints.as_ref(), + } + } + + // Fast market order accessor + pub fn fast_market_order(&self) -> Option<&FastMarketOrderAccountCreatedState> { + match self { + Self::FastMarketOrderAccountCreated { + fast_market_order, .. + } => Some(fast_market_order), + Self::InitialOfferPlaced { + fast_market_order, .. + } => fast_market_order.as_ref(), + Self::OfferImproved { + fast_market_order, .. + } => fast_market_order.as_ref(), + Self::OrderExecuted { + fast_market_order, .. + } => fast_market_order.as_ref(), + Self::AuctionSettled { + fast_market_order, .. + } => fast_market_order.as_ref(), + Self::OrderPrepared { + fast_market_order, .. + } => fast_market_order.as_ref(), + Self::FastMarketOrderClosed { + fast_market_order, .. + } => fast_market_order.as_ref(), + _ => None, + } + } + + // Auction state accessor + pub fn auction_state(&self) -> &AuctionState { + match self { + Self::InitialOfferPlaced { auction_state, .. } => auction_state, + Self::OfferImproved { auction_state, .. } => auction_state, + Self::OrderExecuted { auction_state, .. } => auction_state, + Self::OrderPrepared { auction_state, .. } => auction_state, + Self::AuctionSettled { auction_state, .. } => auction_state, + Self::FastMarketOrderClosed { auction_state, .. } => auction_state, + Self::FastMarketOrderAccountCreated { auction_state, .. } => auction_state, + _ => &AuctionState::Inactive, + } + } + + pub fn auction_accounts(&self) -> Option<&AuctionAccounts> { + match self { + Self::InitialOfferPlaced { + auction_accounts, .. + } => Some(auction_accounts), + Self::OfferImproved { + auction_accounts, .. + } => auction_accounts.as_ref(), + Self::OrderExecuted { + auction_accounts, .. + } => Some(auction_accounts), + Self::OrderPrepared { + auction_accounts, .. + } => Some(auction_accounts), + Self::AuctionSettled { + auction_accounts, .. + } => auction_accounts.as_ref(), + Self::FastMarketOrderClosed { + auction_accounts, .. + } => auction_accounts.as_ref(), + Self::FastMarketOrderAccountCreated { + auction_accounts, .. + } => auction_accounts.as_ref(), + _ => None, + } + } + + pub fn initial_offer_placed_actor(&self) -> Option { + self.auction_state() + .get_active_auction() + .map(|auction| auction.initial_offer.actor) + } + + pub fn best_offer_actor(&self) -> Option { + self.auction_state() + .get_active_auction() + .map(|auction| auction.best_offer.actor) + } + + pub fn execute_order_actor(&self) -> Option { + self.order_executed() + .map(|order_executed| order_executed.actor_enum) + } + + // Prepared order accessor + pub fn order_prepared(&self) -> Option<&OrderPreparedState> { + match self { + Self::OrderPrepared { order_prepared, .. } => Some(order_prepared), + Self::AuctionSettled { order_prepared, .. } => Some(order_prepared), + Self::FastMarketOrderClosed { order_prepared, .. } => order_prepared.as_ref(), + Self::InitialOfferPlaced { order_prepared, .. } => order_prepared.as_ref(), + Self::OfferImproved { order_prepared, .. } => order_prepared.as_ref(), + Self::FastMarketOrderAccountCreated { order_prepared, .. } => order_prepared.as_ref(), + Self::OrderExecuted { order_prepared, .. } => order_prepared.as_ref(), + _ => None, + } + } + + pub fn order_executed(&self) -> Option<&OrderExecutedState> { + match self { + Self::AuctionSettled { order_executed, .. } => order_executed.as_ref(), + Self::OrderExecuted { order_executed, .. } => Some(order_executed), + _ => None, + } + } + + pub fn get_test_vaa_pair(&self, index: usize) -> &TestVaaPair { + self.base().vaas.get(index).unwrap() + } + + // Convenience methods for common fields + pub fn custodian_address(&self) -> Option { + self.initialized().map(|state| state.custodian_address) + } + + pub fn auction_config_address(&self) -> Option { + self.initialized().map(|state| state.auction_config_address) + } + + pub fn spl_token_enum(&self) -> Option { + self.auction_accounts() + .map(|accounts| accounts.spl_token_enum.clone()) + } + + pub fn close_account_refund_recipient(&self) -> Option { + self.fast_market_order() + .map(|fast_market_order| fast_market_order.close_account_refund_recipient) + } + + pub fn set_auction_state(&self, new_auction_state: AuctionState) -> anyhow::Result { + match self { + Self::FastMarketOrderAccountCreated { + base, + initialized, + router_endpoints, + fast_market_order, + guardian_set_state, + auction_state: _, // Ignore the current auction state + auction_accounts, + order_prepared, + } => Ok(Self::FastMarketOrderAccountCreated { + base: base.clone(), + initialized: initialized.clone(), + router_endpoints: router_endpoints.clone(), + fast_market_order: fast_market_order.clone(), + guardian_set_state: guardian_set_state.clone(), + auction_state: new_auction_state, // Use the new auction state + auction_accounts: auction_accounts.clone(), + order_prepared: order_prepared.clone(), + }), + + Self::InitialOfferPlaced { + base, + initialized, + router_endpoints, + fast_market_order, + auction_state: _, // Ignore the current auction state + auction_accounts, + order_prepared, + } => Ok(Self::InitialOfferPlaced { + base: base.clone(), + initialized: initialized.clone(), + router_endpoints: router_endpoints.clone(), + fast_market_order: fast_market_order.clone(), + auction_state: new_auction_state, // Use the new auction state + auction_accounts: auction_accounts.clone(), + order_prepared: order_prepared.clone(), + }), + + Self::OfferImproved { + base, + initialized, + router_endpoints, + fast_market_order, + auction_state: _, // Ignore the current auction state + auction_accounts, + order_prepared, + } => Ok(Self::OfferImproved { + base: base.clone(), + initialized: initialized.clone(), + router_endpoints: router_endpoints.clone(), + fast_market_order: fast_market_order.clone(), + auction_state: new_auction_state, // Use the new auction state + auction_accounts: auction_accounts.clone(), + order_prepared: order_prepared.clone(), + }), + + Self::OrderExecuted { + base, + initialized, + router_endpoints, + fast_market_order, + auction_state: _, // Ignore the current auction state + order_executed, + auction_accounts, + order_prepared, + } => Ok(Self::OrderExecuted { + base: base.clone(), + initialized: initialized.clone(), + router_endpoints: router_endpoints.clone(), + fast_market_order: fast_market_order.clone(), + auction_state: new_auction_state, // Use the new auction state + order_executed: order_executed.clone(), + auction_accounts: auction_accounts.clone(), + order_prepared: order_prepared.clone(), + }), + + Self::OrderPrepared { + base, + initialized, + router_endpoints, + fast_market_order, + auction_state: _, // Ignore the current auction state + order_prepared, + auction_accounts, + } => Ok(Self::OrderPrepared { + base: base.clone(), + initialized: initialized.clone(), + router_endpoints: router_endpoints.clone(), + fast_market_order: fast_market_order.clone(), + auction_state: new_auction_state, // Use the new auction state + order_prepared: order_prepared.clone(), + auction_accounts: auction_accounts.clone(), + }), + + Self::AuctionSettled { + base, + initialized, + router_endpoints, + auction_state: _, // Ignore the current auction state + fast_market_order, + order_prepared, + auction_accounts, + order_executed, + } => Ok(Self::AuctionSettled { + base: base.clone(), + initialized: initialized.clone(), + router_endpoints: router_endpoints.clone(), + auction_state: new_auction_state, // Use the new auction state + fast_market_order: fast_market_order.clone(), + order_prepared: order_prepared.clone(), + auction_accounts: auction_accounts.clone(), + order_executed: order_executed.clone(), + }), + + Self::FastMarketOrderClosed { + base, + initialized, + router_endpoints, + auction_state: _, // Ignore the current auction state + fast_market_order, + order_prepared, + auction_accounts, + order_executed, + } => Ok(Self::FastMarketOrderClosed { + base: base.clone(), + initialized: initialized.clone(), + router_endpoints: router_endpoints.clone(), + auction_state: new_auction_state, // Use the new auction state + fast_market_order: fast_market_order.clone(), + order_prepared: order_prepared.clone(), + auction_accounts: auction_accounts.clone(), + order_executed: order_executed.clone(), + }), + + // For states that don't have an auction_state field + _ => anyhow::bail!("Cannot set auction state for this state: no auction state exists"), + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/utils/account_fixtures.rs b/solana/modules/matching-engine-testing/tests/utils/account_fixtures.rs new file mode 100644 index 000000000..6cdf31ad6 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/account_fixtures.rs @@ -0,0 +1,159 @@ +//! # Account Fixtures +//! +//! This module provides fixtures for creating accounts in the test environment. +//! It includes methods for creating accounts and for reading a keypair from a JSON fixture file. +//! These accounts are located in the `tests/fixtures/accounts` directory. + +use anchor_lang::prelude::Pubkey; +use anyhow::Result as AnyhowResult; +use serde_json::Value; +use solana_program_test::ProgramTest; +use std::{fs, str::FromStr}; + +#[derive(Clone)] +pub struct FixtureAccounts { + // Accounts/Core + pub core_bridge_config: Pubkey, + pub core_fee_collector: Pubkey, + pub core_guardian_set: Pubkey, + // Accounts/Message_Transmitter + pub message_transmitter_config: Pubkey, + // Accounts/Testnet + pub matching_engine_custodian: Pubkey, + pub token_router_custodian: Pubkey, + pub token_router_program: Pubkey, + // Accounts/Token_Messenger_Minter + pub arbitrum_remote_token_messenger: Pubkey, + pub ethereum_remote_token_messenger: Pubkey, + pub misconfigured_remote_token_messenger: Pubkey, + pub token_messenger: Pubkey, + pub token_minter: Pubkey, + pub usdc_custody_token: Pubkey, + pub usdc_local_token: Pubkey, // CCTP account (something that one of the programs use to track something) + pub usdc_token_pair: Pubkey, // Account that pairs links (in this case usdc solana) with usdc on another network +} + +impl FixtureAccounts { + /// Initializes all accounts in fixtures directory + /// + /// # Arguments + /// + /// * `program_test` - The program test instance + /// + /// # Returns + /// + /// A FixtureAccounts struct containing the addresses of all the accounts + pub fn new(program_test: &mut ProgramTest) -> Self { + // Since matching_engine_custodian is initialized by the test, we can just use the pubkey + Self { + core_bridge_config: add_account_from_file(program_test, "tests/fixtures/accounts/core_bridge/config.json").address, + core_fee_collector: add_account_from_file(program_test, "tests/fixtures/accounts/core_bridge/fee_collector.json").address, + core_guardian_set: add_account_from_file(program_test, "tests/fixtures/accounts/core_bridge/guardian_set_0.json").address, + message_transmitter_config: add_account_from_file(program_test, "tests/fixtures/accounts/message_transmitter/message_transmitter_config.json").address, + // matching_engine_custodian: add_account_from_file(program_test, "tests/fixtures/accounts/testnet/matching_engine_custodian.json").address, + matching_engine_custodian: Pubkey::from_str("5BsCKkzuZXLygduw6RorCqEB61AdzNkxp5VzQrFGzYWr").unwrap(), + token_router_custodian: add_account_from_file(program_test, "tests/fixtures/accounts/testnet/token_router_custodian.json").address, + token_router_program: add_account_from_file(program_test, "tests/fixtures/accounts/testnet/token_router_program_data_hacked.json").address, + arbitrum_remote_token_messenger: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/arbitrum_remote_token_messenger.json").address, + ethereum_remote_token_messenger: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/ethereum_remote_token_messenger.json").address, + misconfigured_remote_token_messenger: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/misconfigured_remote_token_messenger.json").address, + token_messenger: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/token_messenger.json").address, + token_minter: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/token_minter.json").address, + usdc_custody_token: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/usdc_custody_token.json").address, + usdc_local_token: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/usdc_local_token.json").address, + usdc_token_pair: add_account_from_file(program_test, "tests/fixtures/accounts/token_messenger_minter/usdc_token_pair.json").address, + } + } + /// Adds a lookup table to the program test + /// + /// # Arguments + /// + /// * `program_test` - The program test instance + pub fn add_lookup_table_hack(program_test: &mut ProgramTest) { + let filename = "tests/fixtures/lut.json"; + let account_fixture = read_account_from_file(filename).unwrap(); + program_test.add_account_with_file_data( + account_fixture.address, + account_fixture.lamports, + account_fixture.owner, + filename, + ); + } +} + +/// Adds an account from a JSON fixture file to the program test +/// +/// Loads the JSON file and parses it into a Value object that is used to extract the lamports, address, and owner values. +/// +/// # Arguments +/// +/// * `program_test` - The program test instance +/// * `filename` - The path to the JSON fixture file +fn add_account_from_file(program_test: &mut ProgramTest, filename: &str) -> AccountFixture { + // Parse the JSON file to an AccountFixture struct + let account_fixture = read_account_from_file(filename).unwrap(); + // Add the account to the program test + program_test.add_account_with_base64_data( + account_fixture.address, + account_fixture.lamports, + account_fixture.owner, + &account_fixture.base_64_data, + ); + account_fixture +} + +struct AccountFixture { + pub address: Pubkey, + pub owner: Pubkey, + pub lamports: u64, + pub base_64_data: String, +} + +/// Reads an account from a JSON fixture file +/// +/// Reads the JSON file and parses it into a Value object that is used to extract the lamports, address, and owner values. +/// +/// # Arguments +/// +/// * `filename` - The path to the JSON fixture file +/// +/// # Returns +/// +/// An AccountFixture struct containing the address, owner, lamports, and filename. +fn read_account_from_file(filename: &str) -> AnyhowResult { + // Read the JSON file + let data = fs::read_to_string(filename)?; + + // Parse the JSON + let json: Value = serde_json::from_str(&data)?; + + // Extract the lamports value + let lamports = json["account"]["lamports"] + .as_u64() + .unwrap_or_else(|| panic!("lamports field not found or invalid {}", filename)); + + // Extract the address value + let address: Pubkey = solana_sdk::pubkey::Pubkey::from_str( + json["pubkey"] + .as_str() + .expect("pubkey field not found or invalid"), + ) + .expect("Pubkey field in file is not a valid pubkey"); + // Extract the owner address value + let owner: Pubkey = solana_sdk::pubkey::Pubkey::from_str( + json["account"]["owner"] + .as_str() + .expect("owner field not found or invalid"), + ) + .expect("Owner field in file is not a valid pubkey"); + + let base_64_data = json["account"]["data"][0] + .as_str() + .expect("data field not found or invalid"); + Ok(AccountFixture { + address, + owner, + lamports, + base_64_data: base_64_data.to_string(), + }) +} diff --git a/solana/modules/matching-engine-testing/tests/utils/airdrop.rs b/solana/modules/matching-engine-testing/tests/utils/airdrop.rs new file mode 100644 index 000000000..206c1ec65 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/airdrop.rs @@ -0,0 +1,71 @@ +use anchor_spl::token::spl_token; +use solana_program_test::ProgramTestContext; +use solana_sdk::transaction::{Transaction, VersionedTransaction}; +use solana_sdk::{pubkey::Pubkey, signature::Signer, system_instruction}; + +/// Airdrops SOL to a given recipient +/// +/// # Arguments +/// +/// * `test_context` - The program test context +/// * `recipient` - The recipient of the airdrop +/// * `amount` - The amount of SOL to airdrop +pub async fn airdrop(test_context: &mut ProgramTestContext, recipient: &Pubkey, amount: u64) { + // Create the transfer instruction with values from the context + let transfer_ix = system_instruction::transfer(&test_context.payer.pubkey(), recipient, amount); + + // Create and send transaction + let tx = Transaction::new_signed_with_payer( + &[transfer_ix.clone()], + Some(&test_context.payer.pubkey()), + &[&test_context.payer], + test_context.last_blockhash, + ); + + test_context + .banks_client + .process_transaction(tx) + .await + .unwrap(); +} + +/// Airdrops USDC to a given recipient +/// +/// # Arguments +/// +/// * `test_context` - The program test context +/// * `recipient_ata` - The recipient's ATA +/// * `amount` - The amount of USDC to airdrop +pub async fn airdrop_spl_token( + test_context: &mut ProgramTestContext, + recipient_ata: &Pubkey, + amount: u64, + mint_address: Pubkey, +) { + let new_blockhash = test_context + .get_new_latest_blockhash() + .await + .expect("Failed to get new blockhash"); + let mint_to_ix = spl_token::instruction::mint_to( + &spl_token::ID, + &mint_address, + recipient_ata, + &test_context.payer.pubkey(), + &[], + amount, + ) + .expect("Failed to create mint to instruction"); + let tx = Transaction::new_signed_with_payer( + &[mint_to_ix.clone()], + Some(&test_context.payer.pubkey()), + &[&test_context.payer], + new_blockhash, + ); + + let versioned_transaction = VersionedTransaction::from(tx); + test_context + .banks_client + .process_transaction(versioned_transaction) + .await + .unwrap(); +} diff --git a/solana/modules/matching-engine-testing/tests/utils/auction.rs b/solana/modules/matching-engine-testing/tests/utils/auction.rs new file mode 100644 index 000000000..332ad7f1c --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/auction.rs @@ -0,0 +1,674 @@ +use anchor_lang::prelude::*; +use anchor_spl::token::TokenAccount; +use matching_engine::ID; +use solana_program_test::ProgramTestContext; + +use super::Chain; +use super::{router::TestRouterEndpoints, token_account::SplTokenEnum}; +use crate::testing_engine::config::TestingActorEnum; +use crate::testing_engine::setup::{TestingActor, TestingContext, TransferDirection}; +use crate::testing_engine::state::TestingEngineState; +use anyhow::{anyhow, ensure, Result as AnyhowResult}; +use matching_engine::state::{Auction, AuctionConfig, AuctionInfo}; + +/// A struct representing the accounts for an auction +/// +/// # Fields +/// +/// * `posted_fast_vaa` - The address of the posted fast VAA +/// * `offer_token` - The address of the offer token +/// * `actor` - The actor of the auction (who places the initial offer, improves it, executes it, or settles it) +/// * `auction_config` - The address of the auction config +/// * `from_router_endpoint` - The address of the router endpoint for the source chain +/// * `to_router_endpoint` - The address of the router endpoint for the destination chain +/// * `custodian` - The address of the custodian +/// * `usdc_mint` - The usdc mint address +#[derive(Clone)] +pub struct AuctionAccounts { + pub posted_fast_vaa: Option, + pub offer_token: Pubkey, + pub offer_actor: TestingActor, + pub close_account_refund_recipient: Option, // Only for shim + pub auction_config: Pubkey, + pub from_router_endpoint: Pubkey, + pub to_router_endpoint: Pubkey, + pub custodian: Pubkey, + pub spl_token_enum: SplTokenEnum, +} + +/// An enum representing the state of an auction +/// +/// # Fields +/// +/// * `Active` - The auction is active +/// * `Settled` - The auction is settled +/// * `Inactive` - The auction is inactive +#[derive(Clone)] +pub enum AuctionState { + Active(Box), + Paused(Box), + Settled(Option>), + Inactive, +} + +impl AuctionState { + pub fn get_active_auction(&self) -> Option<&ActiveAuctionState> { + match self { + AuctionState::Active(auction) => Some(auction), + AuctionState::Paused(auction) => Some(auction), + AuctionState::Inactive => None, + AuctionState::Settled(Some(auction)) => Some(auction), + AuctionState::Settled(None) => None, + } + } + + pub fn set_pause(&self, is_paused: bool) -> Self { + match self { + AuctionState::Active(auction) => { + if is_paused { + AuctionState::Paused(auction.clone()) + } else { + AuctionState::Active(auction.clone()) + } + } + AuctionState::Paused(auction) => { + if is_paused { + AuctionState::Paused(auction.clone()) + } else { + AuctionState::Active(auction.clone()) + } + } + _ => self.clone(), + } + } +} + +/// A struct representing an active auction +/// +/// # Fields +/// +/// * `auction_address` - The address of the auction +/// * `auction_custody_token_address` - The address of the auction custody token +/// * `auction_config_address` - The address of the auction config +/// * `initial_offer` - The initial offer of the auction +/// * `best_offer` - The best offer of the auction +#[derive(Clone)] +pub struct ActiveAuctionState { + pub auction_address: Pubkey, + pub auction_custody_token_address: Pubkey, + pub auction_config_address: Pubkey, + pub initial_offer: AuctionOffer, + pub best_offer: AuctionOffer, + pub spl_token_enum: SplTokenEnum, +} + +#[derive(Debug)] +pub struct ExpectedTokenBalanceChanges { + pub executor_token_balance_change: i32, + pub best_offer_token_balance_change: i32, + pub initial_offer_token_balance_change: i32, +} + +/// A struct representing the calculations for an auction +#[derive(Debug)] +pub struct AuctionCalculations { + pub penalty_amount: i32, + pub user_reward: i32, + pub security_deposit: i32, + pub init_auction_fee: i32, + pub min_offer_delta: u64, + pub notional_security_deposit: u64, + pub amount_in: i32, // Expose for easy access + pub deposit_and_fee: i32, + pub custody_token_balance_change: i32, + pub expected_token_balance_changes: ExpectedTokenBalanceChanges, + pub has_penalty: bool, +} + +impl ActiveAuctionState { + pub const BPS_DENOMINATOR: u64 = 1_000_000; + + pub fn fake_active_auction_state(auction_accounts: &AuctionAccounts) -> Self { + Self { + auction_address: Pubkey::new_unique(), + auction_custody_token_address: Pubkey::new_unique(), + auction_config_address: auction_accounts.auction_config, + initial_offer: AuctionOffer::default(), + best_offer: AuctionOffer::default(), + spl_token_enum: auction_accounts.spl_token_enum.clone(), + } + } + + /// Computes the penalty amount and user reward for the auction + /// + /// # Arguments + /// + /// * `test_context` - The test context + /// + /// # Returns + /// + pub async fn get_auction_calculations( + &self, + test_context: &mut ProgramTestContext, + executor_token_address: Pubkey, + custodian_token_balance_previous: u64, + init_auction_fee: u64, + ) -> AuctionCalculations { + let auction_info = helpers::get_auction_info(test_context, self.auction_address).await; + let auction_config = + helpers::get_auction_config(test_context, self.auction_config_address).await; + + let best_offer_token_account_exists = + helpers::token_account_exists(test_context, self.best_offer.offer_token).await; + + let initial_offer_token_account_exists = + helpers::token_account_exists(test_context, self.initial_offer.offer_token).await; + + let custody_token_balance = custodian_token_balance_previous; + + // Cast to u64 for math later + let amount_in = auction_info.amount_in; + let grace_period = u64::from(auction_config.grace_period); + let auction_duration = u64::from(auction_config.duration); + let initial_penalty_bps = u64::from(auction_config.initial_penalty_bps); + let penalty_period = u64::from(auction_config.penalty_period); + let user_penalty_reward_bps = u64::from(auction_config.user_penalty_reward_bps); + let security_deposit = auction_info.security_deposit; + let min_offer_delta_bps = u64::from(auction_config.min_offer_delta_bps); + let security_deposit_bps = u64::from(auction_config.security_deposit_bps); + + let latest_slot = test_context.banks_client.get_root_slot().await.unwrap(); + let slots_elapsed = latest_slot + .saturating_sub(auction_info.start_slot) + .saturating_sub(auction_duration); + let elapsed_penalty_period = slots_elapsed.saturating_sub(grace_period); + let has_penalty = slots_elapsed >= grace_period; + + // Copy of computeDepositPenalty + let (penalty_amount, user_reward) = if has_penalty { + if elapsed_penalty_period >= penalty_period + || initial_penalty_bps == Self::BPS_DENOMINATOR + { + let user_reward = security_deposit + .checked_mul(user_penalty_reward_bps) + .unwrap() + .checked_div(Self::BPS_DENOMINATOR) + .unwrap(); // security_deposit * user_penalty_reward_bps / BPS_DENOMINATOR + ( + security_deposit.checked_sub(user_reward).unwrap(), // security_deposit - user_reward + user_reward, // user_reward + ) + } else { + let base_penalty = security_deposit + .checked_mul(initial_penalty_bps) + .unwrap() + .checked_div(Self::BPS_DENOMINATOR) + .unwrap(); // base_penalty = security_deposit * initial_penalty_bps / 10000 + let penalty_period_elapsed_penalty = security_deposit + .checked_sub(base_penalty) + .unwrap() + .checked_mul(elapsed_penalty_period) + .unwrap() + .checked_div(penalty_period) + .unwrap(); // (security_deposit - base_penalty) * elapsed_penalty_period / penalty_period + let pre_penalty_amount = base_penalty + .checked_add(penalty_period_elapsed_penalty) + .unwrap(); // base_penalty + penalty_period_elapsed_penalty + let user_reward = pre_penalty_amount + .checked_mul(user_penalty_reward_bps) + .unwrap() + .checked_div(Self::BPS_DENOMINATOR) + .unwrap(); // pre_penalty_amount * user_penalty_reward_bps / 10000 + ( + pre_penalty_amount.checked_sub(user_reward).unwrap(), + user_reward, + ) + } + } else { + (0, 0) + }; + + let min_offer_delta = self + .best_offer + .offer_price + .checked_mul(min_offer_delta_bps) + .unwrap() + .checked_div(Self::BPS_DENOMINATOR) + .unwrap(); + let notional_security_deposit = amount_in + .checked_mul(security_deposit_bps) + .unwrap() + .checked_div(Self::BPS_DENOMINATOR) + .unwrap(); + + let mut executor_token_balance_change: i32 = 0; + let mut best_offer_token_balance_change: i32 = 0; + let mut initial_offer_token_balance_change: i32 = 0; + + let mut deposit_and_fee = if has_penalty { + i32::try_from( + security_deposit + .saturating_add(self.best_offer.offer_price) + .saturating_sub(user_reward), + ) + .unwrap() + } else { + i32::try_from(security_deposit.saturating_add(self.best_offer.offer_price)).unwrap() + }; + + // Cast to i32 for math later + let penalty_amount = i32::try_from(penalty_amount).unwrap(); + let user_reward = i32::try_from(user_reward).unwrap(); + let security_deposit = i32::try_from(security_deposit).unwrap(); + let offer_price = i32::try_from(auction_info.offer_price).unwrap(); + let amount_in = i32::try_from(amount_in).unwrap(); + let init_auction_fee = i32::try_from(init_auction_fee).unwrap(); + + // Helper function to calculate the custody token balance change + let new_custody_token_balance_calc = + |custody_token_balance: u64, custody_token_balance_change: i32| { + custody_token_balance.saturating_add_signed(custody_token_balance_change as i64) + as i32 + }; + + // Find the custody token balance change + + // custody_token_balance_change = init_auction_fee + offer_price - amount_in + let mut custody_token_balance_change = init_auction_fee + .saturating_add(offer_price) + .saturating_sub(amount_in); + + // If the best offer token is not the same as the initial offer token, and the initial offer token account exists, subtract the init auction fee + if executor_token_address != self.initial_offer.offer_token + && initial_offer_token_account_exists + { + // Don't give the init auction fee to the executor if the initial offer token exists and is not the same as the executor + custody_token_balance_change = + custody_token_balance_change.saturating_sub(init_auction_fee); + } + + // If there is a penalty + if has_penalty { + // Subtract the user reward + custody_token_balance_change = custody_token_balance_change.saturating_sub(user_reward); + + // If the executor token is the same as the best offer token, the custody token balance is given to the executor + if executor_token_address == self.best_offer.offer_token { + let balance_change = new_custody_token_balance_calc( + custody_token_balance, + custody_token_balance_change, + ); + executor_token_balance_change = balance_change; + best_offer_token_balance_change = balance_change; + + // If the all token accounts are the same, apply the same balance change to each of them + if self.initial_offer.offer_token == self.best_offer.offer_token + && initial_offer_token_account_exists + { + initial_offer_token_balance_change = balance_change; + } + + // If there is a penalty and the executor token is not the same as the best offer token + } else { + // Subtract the penalty amount from the deposit and fee + deposit_and_fee = deposit_and_fee.saturating_sub(penalty_amount); + + // If the best offer token account exists, subtract the deposit and fee from the custody token balance change + if best_offer_token_account_exists { + custody_token_balance_change = + custody_token_balance_change.saturating_sub(deposit_and_fee); + } + + // The remaining balance is given to the executor + executor_token_balance_change = new_custody_token_balance_calc( + custody_token_balance, + custody_token_balance_change, + ); + + // If the initial offer token is the same as the best offer token, apply the same balance change to each of them + if self.initial_offer.offer_token == self.best_offer.offer_token { + let balance_change = deposit_and_fee + init_auction_fee; + // This is sufficient, because either neither of them exist or both do + if best_offer_token_account_exists { + best_offer_token_balance_change = balance_change; + initial_offer_token_balance_change = balance_change; + }; + } else { + if best_offer_token_account_exists { + best_offer_token_balance_change = deposit_and_fee; + }; + if initial_offer_token_account_exists { + if executor_token_address == self.initial_offer.offer_token { + initial_offer_token_balance_change = executor_token_balance_change; + } else { + initial_offer_token_balance_change = init_auction_fee; + } + } + } + } + // If there is no penalty + } else if self.best_offer.offer_token == self.initial_offer.offer_token + && initial_offer_token_account_exists + { + let balance_change = deposit_and_fee + init_auction_fee; + best_offer_token_balance_change = balance_change; + initial_offer_token_balance_change = balance_change; + } else { + if best_offer_token_account_exists { + best_offer_token_balance_change = deposit_and_fee; + } else { + executor_token_balance_change = + executor_token_balance_change.saturating_add(deposit_and_fee); + } + if initial_offer_token_account_exists { + initial_offer_token_balance_change = init_auction_fee; + } else { + executor_token_balance_change = + executor_token_balance_change.saturating_add(init_auction_fee); + } + } + + let expected_token_balance_changes = ExpectedTokenBalanceChanges { + executor_token_balance_change, + best_offer_token_balance_change, + initial_offer_token_balance_change, + }; + + AuctionCalculations { + penalty_amount, + user_reward, + security_deposit, + init_auction_fee, + min_offer_delta, + notional_security_deposit, + amount_in, + deposit_and_fee, + custody_token_balance_change, + expected_token_balance_changes, + has_penalty, + } + } + + pub async fn get_auction_expiration_slot(&self, test_context: &mut ProgramTestContext) -> u64 { + let auction_info = helpers::get_auction_info(test_context, self.auction_address).await; + let auction_config = + helpers::get_auction_config(test_context, self.auction_config_address).await; + auction_info.start_slot + + u64::from(auction_config.grace_period) + + u64::from(auction_config.penalty_period) + } + + pub async fn get_auction_grace_period_slot( + &self, + test_context: &mut ProgramTestContext, + ) -> u64 { + let auction_info = helpers::get_auction_info(test_context, self.auction_address).await; + let auction_config = + helpers::get_auction_config(test_context, self.auction_config_address).await; + auction_info.start_slot + + u64::from(auction_config.duration) + + u64::from(auction_config.grace_period) + } + + pub async fn get_auction_custody_token_balance( + &self, + test_context: &mut ProgramTestContext, + ) -> u64 { + helpers::get_token_account_balance(test_context, self.auction_custody_token_address).await + } +} + +/// A struct representing an auction offer +/// +/// # Fields +/// +/// * `participant` - The participant of the offer (the signer of the transaction) +/// * `offer_token` - The token of the offer +/// * `offer_price` - The price of the offer +#[derive(Clone, Default)] +pub struct AuctionOffer { + pub actor: TestingActorEnum, + pub participant: Pubkey, + pub offer_token: Pubkey, + pub offer_price: u64, +} + +impl AuctionAccounts { + pub fn fake_auction_accounts( + current_state: &TestingEngineState, + testing_context: &TestingContext, + ) -> Self { + let router_endpoints = current_state.router_endpoints().unwrap().endpoints.clone(); + let actor = testing_context.testing_actors.owner.clone(); + let transfer_direction = testing_context.transfer_direction; + let auction_config = Pubkey::find_program_address(&[AuctionConfig::SEED_PREFIX], &ID).0; + Self::new( + None, + actor, + None, + auction_config, + &router_endpoints, + Pubkey::new_unique(), + SplTokenEnum::Usdc, + transfer_direction, + ) + } + + #[allow(clippy::too_many_arguments)] + pub fn new( + posted_fast_vaa: Option, + offer_actor: TestingActor, + close_account_refund_recipient: Option, + auction_config: Pubkey, + router_endpoints: &TestRouterEndpoints, + custodian: Pubkey, + spl_token_enum: SplTokenEnum, + direction: TransferDirection, + ) -> Self { + let (from_router_endpoint, to_router_endpoint) = match direction { + TransferDirection::FromEthereumToArbitrum => ( + router_endpoints.get_endpoint_address(Chain::Ethereum), + router_endpoints.get_endpoint_address(Chain::Arbitrum), + ), + TransferDirection::FromArbitrumToEthereum => ( + router_endpoints.get_endpoint_address(Chain::Arbitrum), + router_endpoints.get_endpoint_address(Chain::Ethereum), + ), + TransferDirection::Other => { + println!("Unsupported transfer direction, defaulting to FromEthereumToArbitrum"); + ( + router_endpoints.get_endpoint_address(Chain::Ethereum), + router_endpoints.get_endpoint_address(Chain::Arbitrum), + ) + } + }; + Self { + posted_fast_vaa, + offer_token: offer_actor.token_account_address(&spl_token_enum).unwrap(), + close_account_refund_recipient, + offer_actor, + auction_config, + from_router_endpoint, + to_router_endpoint, + custodian, + spl_token_enum, + } + } +} + +impl ActiveAuctionState { + /// Verifies the auction state against the expected auction state + /// + /// # Arguments + /// + /// * `testing_context` - The testing context + /// * `test_context` - The test context + /// + /// # Returns + /// + /// Result<()> - Panics if the auction state is not as expected or errors if the auction account is not found + pub async fn verify_auction( + &self, + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + ) -> AnyhowResult<()> { + let auction_account = test_context + .banks_client + .get_account(self.auction_address) + .await? + .expect("Failed to get auction account"); + let mut data_ref = auction_account.data.as_ref(); + let auction_account_data: Auction = AccountDeserialize::try_deserialize(&mut data_ref)?; + let auction_info = auction_account_data.info.unwrap(); + + let expected_auction_info = AuctionInfo { + config_id: 0, // Not tested against + custody_token_bump: 254, // Not tested against + vaa_sequence: 0, // Not tested against + source_chain: { + match testing_context.transfer_direction { + TransferDirection::FromEthereumToArbitrum => 3, + TransferDirection::FromArbitrumToEthereum => 23, + TransferDirection::Other => { + return Err(anyhow!("Unsupported transfer direction")); + } + } + }, // Tested against + best_offer_token: self.best_offer.offer_token, // Tested against + initial_offer_token: self.initial_offer.offer_token, // Tested against + start_slot: 1, // Not tested against + amount_in: 69000000, // Not tested against + security_deposit: 10545000, // Not tested against + offer_price: self.best_offer.offer_price, // Tested against + redeemer_message_len: 0, // Not tested against + destination_asset_info: None, // Not tested against + }; + ensure!( + auction_info.config_id == expected_auction_info.config_id, + "Auction config_id mismatch: expected {:?}, got {:?}", + expected_auction_info.config_id, + auction_info.config_id + ); + + ensure!( + auction_info.start_slot == expected_auction_info.start_slot, + "Auction start_slot mismatch: expected {}, got {}", + expected_auction_info.start_slot, + auction_info.start_slot + ); + + ensure!( + auction_info.offer_price == expected_auction_info.offer_price, + "Auction offer_price mismatch: expected {}, got {}", + expected_auction_info.offer_price, + auction_info.offer_price + ); + + ensure!( + auction_info.best_offer_token == expected_auction_info.best_offer_token, + "Auction best_offer_token mismatch: expected {:?}, got {:?}", + expected_auction_info.best_offer_token, + auction_info.best_offer_token + ); + + ensure!( + auction_info.initial_offer_token == expected_auction_info.initial_offer_token, + "Auction initial_offer_token mismatch: expected {:?}, got {:?}", + expected_auction_info.initial_offer_token, + auction_info.initial_offer_token + ); + Ok(()) + } +} + +/// Compares two auctions to assert they are equal +/// +/// # Arguments +/// +/// * `auction_1` - The first auction +/// * `auction_2` - The second auction +pub async fn compare_auctions(auction_1: &Auction, auction_2: &Auction) { + let auction_1_info = auction_1.info.unwrap(); + let auction_2_info = auction_2.info.unwrap(); + assert_eq!(auction_1_info.config_id, auction_2_info.config_id); + assert_eq!( + auction_1_info.best_offer_token, + auction_2_info.best_offer_token + ); + assert_eq!( + auction_1_info.initial_offer_token, + auction_2_info.initial_offer_token + ); + assert_eq!(auction_1_info.start_slot, auction_2_info.start_slot); + assert_eq!(auction_1_info.offer_price, auction_2_info.offer_price); +} + +mod helpers { + use super::*; + + pub async fn token_account_exists( + test_context: &mut ProgramTestContext, + token_address: Pubkey, + ) -> bool { + if let Some(account) = test_context + .banks_client + .get_account(token_address) + .await + .unwrap() + { + TokenAccount::try_deserialize(&mut &account.data[..]).is_ok() + } else { + false + } + } + + pub async fn get_auction_config( + test_context: &mut ProgramTestContext, + auction_config_address: Pubkey, + ) -> AuctionConfig { + let auction_config = test_context + .banks_client + .get_account(auction_config_address) + .await + .unwrap() + .unwrap(); + let mut data_ref = auction_config.data.as_ref(); + let auction_config_data: AuctionConfig = + AccountDeserialize::try_deserialize(&mut data_ref).unwrap(); + auction_config_data + } + + pub async fn get_auction_info( + test_context: &mut ProgramTestContext, + auction_address: Pubkey, + ) -> AuctionInfo { + let auction = test_context + .banks_client + .get_account(auction_address) + .await + .unwrap() + .unwrap(); + let mut data_ref = auction.data.as_ref(); + let auction_data: Auction = AccountDeserialize::try_deserialize(&mut data_ref).unwrap(); + auction_data.info.unwrap() + } + + pub async fn get_token_account_balance( + test_context: &mut ProgramTestContext, + token_address: Pubkey, + ) -> u64 { + if let Some(token_account) = test_context + .banks_client + .get_account(token_address) + .await + .unwrap() + { + let mut data_ref = token_account.data.as_ref(); + let token_account_data: TokenAccount = + AccountDeserialize::try_deserialize(&mut data_ref).unwrap(); + token_account_data.amount + } else { + 0 + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/utils/cctp_message.rs b/solana/modules/matching-engine-testing/tests/utils/cctp_message.rs new file mode 100644 index 000000000..aae82edca --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/cctp_message.rs @@ -0,0 +1,782 @@ +use crate::testing_engine::setup::TestingContext; +use crate::testing_engine::state::TestingEngineState; +use crate::utils::ETHEREUM_USDC_ADDRESS; +use anchor_lang::prelude::*; +use common::messages::raw::LiquidityLayerDepositMessage; +use common::wormhole_cctp_solana::cctp::{ + message_transmitter_program::MessageTransmitterConfig, + token_messenger_minter_program::RemoteTokenMessenger, +}; +use common::wormhole_cctp_solana::cctp::{ + MESSAGE_TRANSMITTER_PROGRAM_ID, TOKEN_MESSENGER_MINTER_PROGRAM_ID, +}; +use common::wormhole_cctp_solana::messages::Deposit; +use matching_engine::state::FastMarketOrder; +use num_traits::FromBytes; +use ruint::aliases::U256; +use ruint::Uint; +use secp256k1::SecretKey as SecpSecretKey; +use solana_program::keccak::{Hash, Hasher}; +use solana_program_test::ProgramTestContext; +use solana_sdk::keccak; +use std::fmt::Display; +use std::str::FromStr; + +use super::{Chain, GUARDIAN_SECRET_KEY}; + +// Imported from https://github.com/circlefin/solana-cctp-contracts.git rev = "4477f88" + +#[error_code] +pub enum MathError { + #[msg("Overflow in arithmetic operation")] + MathOverflow, + #[msg("Underflow in arithmetic operation")] + MathUnderflow, + #[msg("Error in division operation")] + ErrorInDivision, +} + +#[error_code] +pub enum MessageTransmitterError { + #[msg("Invalid authority")] + InvalidAuthority, + #[msg("Instruction is not allowed at this time")] + ProgramPaused, + #[msg("Invalid message transmitter state")] + InvalidMessageTransmitterState, + #[msg("Invalid signature threshold")] + InvalidSignatureThreshold, + #[msg("Signature threshold already set")] + SignatureThresholdAlreadySet, + #[msg("Invalid owner")] + InvalidOwner, + #[msg("Invalid pauser")] + InvalidPauser, + #[msg("Invalid attester manager")] + InvalidAttesterManager, + #[msg("Invalid attester")] + InvalidAttester, + #[msg("Attester already enabled")] + AttesterAlreadyEnabled, + #[msg("Too few enabled attesters")] + TooFewEnabledAttesters, + #[msg("Signature threshold is too low")] + SignatureThresholdTooLow, + #[msg("Attester already disabled")] + AttesterAlreadyDisabled, + #[msg("Message body exceeds max size")] + MessageBodyLimitExceeded, + #[msg("Invalid destination caller")] + InvalidDestinationCaller, + #[msg("Invalid message recipient")] + InvalidRecipient, + #[msg("Sender is not permitted")] + SenderNotPermitted, + #[msg("Invalid source domain")] + InvalidSourceDomain, + #[msg("Invalid destination domain")] + InvalidDestinationDomain, + #[msg("Invalid message version")] + InvalidMessageVersion, + #[msg("Invalid used nonces account")] + InvalidUsedNoncesAccount, + #[msg("Invalid recipient program")] + InvalidRecipientProgram, + #[msg("Invalid nonce")] + InvalidNonce, + #[msg("Nonce already used")] + NonceAlreadyUsed, + #[msg("Message is too short")] + MessageTooShort, + #[msg("Malformed message")] + MalformedMessage, + #[msg("Invalid signature order or dupe")] + InvalidSignatureOrderOrDupe, + #[msg("Invalid attester signature")] + InvalidAttesterSignature, + #[msg("Invalid attestation length")] + InvalidAttestationLength, + #[msg("Invalid signature recovery ID")] + InvalidSignatureRecoveryId, + #[msg("Invalid signature S value")] + InvalidSignatureSValue, + #[msg("Invalid message hash")] + InvalidMessageHash, +} + +#[error_code] +pub enum TokenMessengerError { + #[msg("Invalid authority")] + InvalidAuthority, + #[msg("Invalid token messenger state")] + InvalidTokenMessengerState, + #[msg("Invalid token messenger")] + InvalidTokenMessenger, + #[msg("Invalid owner")] + InvalidOwner, + #[msg("Malformed message")] + MalformedMessage, + #[msg("Invalid message body version")] + InvalidMessageBodyVersion, + #[msg("Invalid amount")] + InvalidAmount, + #[msg("Invalid destination domain")] + InvalidDestinationDomain, + #[msg("Invalid destination caller")] + InvalidDestinationCaller, + #[msg("Invalid mint recipient")] + InvalidMintRecipient, + #[msg("Invalid sender")] + InvalidSender, + #[msg("Invalid token pair")] + InvalidTokenPair, + #[msg("Invalid token mint")] + InvalidTokenMint, +} + +// Imported from https://github.com/circlefin/solana-cctp-contracts/blob/4477f889732209dfc9a08b3aeaeb9203a324055c/programs/token-messenger-minter/src/token_messenger/state.rs#L35-L38 +#[derive(Debug, InitSpace)] +pub struct CctpRemoteTokenMessenger { + pub domain: u32, // Big endian + pub token_messenger: Pubkey, +} + +impl From for CctpRemoteTokenMessenger { + fn from(value: RemoteTokenMessenger) -> Self { + Self { + domain: value.domain, + token_messenger: Pubkey::from(value.token_messenger), + } + } +} + +// Imported from https://github.com/circlefin/solana-cctp-contracts/blob/4477f889732209dfc9a08b3aeaeb9203a324055c/programs/message-transmitter/src/message.rs#L30 +#[derive(Clone, Debug)] +pub struct Message<'a> { + data: &'a [u8], +} + +pub fn checked_add(arg1: T, arg2: T) -> Result +where + T: num_traits::PrimInt + Display, +{ + if let Some(res) = arg1.checked_add(&arg2) { + Ok(res) + } else { + msg!("Error: Overflow in {} + {}", arg1, arg2); + err!(MathError::MathOverflow) + } +} + +#[allow(dead_code)] +impl<'a> Message<'a> { + // Indices of each field in the message + const VERSION_INDEX: usize = 0; + const SOURCE_DOMAIN_INDEX: usize = 4; + const DESTINATION_DOMAIN_INDEX: usize = 8; + const NONCE_INDEX: usize = 12; + const SENDER_INDEX: usize = 20; + const RECIPIENT_INDEX: usize = 52; + const DESTINATION_CALLER_INDEX: usize = 84; + const MESSAGE_BODY_INDEX: usize = 116; + + /// Validates source array size and returns a new message + pub fn new(expected_version: u32, message_bytes: &'a [u8]) -> Result { + require_gte!(message_bytes.len(), Self::MESSAGE_BODY_INDEX); + let message = Self { + data: message_bytes, + }; + require_eq!(expected_version, message.version()?,); + Ok(message) + } + + pub fn serialized_len(message_body_len: usize) -> Result { + checked_add(Self::MESSAGE_BODY_INDEX, message_body_len) + } + + #[allow(clippy::too_many_arguments)] + /// Serializes given fields into a message + pub fn format_message( + version: u32, + local_domain: u32, + destination_domain: u32, + nonce: u64, + sender: &Pubkey, + recipient: &Pubkey, + destination_caller: &Pubkey, + message_body: &Vec, + ) -> Result> { + let mut output = vec![0; Message::serialized_len(message_body.len())?]; + + output[Self::VERSION_INDEX..Self::SOURCE_DOMAIN_INDEX] + .copy_from_slice(&version.to_be_bytes()); + output[Self::SOURCE_DOMAIN_INDEX..Self::DESTINATION_DOMAIN_INDEX] + .copy_from_slice(&local_domain.to_be_bytes()); + output[Self::DESTINATION_DOMAIN_INDEX..Self::NONCE_INDEX] + .copy_from_slice(&destination_domain.to_be_bytes()); + output[Self::NONCE_INDEX..Self::SENDER_INDEX].copy_from_slice(&nonce.to_be_bytes()); + output[Self::SENDER_INDEX..Self::RECIPIENT_INDEX].copy_from_slice(sender.as_ref()); + output[Self::RECIPIENT_INDEX..Self::DESTINATION_CALLER_INDEX] + .copy_from_slice(recipient.as_ref()); + output[Self::DESTINATION_CALLER_INDEX..Self::MESSAGE_BODY_INDEX] + .copy_from_slice(destination_caller.as_ref()); + if !message_body.is_empty() { + output[Self::MESSAGE_BODY_INDEX..].copy_from_slice(message_body.as_slice()); + } + + Ok(output) + } + + /// Returns Keccak hash of the message + pub fn hash(&self) -> Hash { + let mut hasher = Hasher::default(); + hasher.hash(self.data); + hasher.result() + } + + /// Returns version field + pub fn version(&self) -> Result { + self.read_integer::(Self::VERSION_INDEX) + } + + /// Returns sender field + pub fn sender(&self) -> Result { + self.read_pubkey(Self::SENDER_INDEX) + } + + /// Returns recipient field + pub fn recipient(&self) -> Result { + self.read_pubkey(Self::RECIPIENT_INDEX) + } + + /// Returns source_domain field + pub fn source_domain(&self) -> Result { + self.read_integer::(Self::SOURCE_DOMAIN_INDEX) + } + + /// Returns destination_domain field + pub fn destination_domain(&self) -> Result { + self.read_integer::(Self::DESTINATION_DOMAIN_INDEX) + } + + /// Returns destination_caller field + pub fn destination_caller(&self) -> Result { + self.read_pubkey(Self::DESTINATION_CALLER_INDEX) + } + + /// Returns nonce field + pub fn nonce(&self) -> Result { + self.read_integer::(Self::NONCE_INDEX) + } + + /// Returns message_body field + pub fn message_body(&self) -> &[u8] { + &self.data[Self::MESSAGE_BODY_INDEX..] + } + + //////////////////// + // private helpers + + /// Reads integer field at the given offset + fn read_integer(&self, index: usize) -> Result + where + T: num_traits::PrimInt + FromBytes + Display, + &'a ::Bytes: TryFrom<&'a [u8]> + 'a, + { + Ok(T::from_be_bytes( + self.data[index..checked_add(index, std::mem::size_of::())?] + .try_into() + .map_err(|_| MessageTransmitterError::MalformedMessage)?, + )) + } + + /// Reads pubkey field at the given offset + fn read_pubkey(&self, index: usize) -> Result { + Ok( + Pubkey::try_from(&self.data[index..checked_add(index, std::mem::size_of::())?]) + .map_err(|_| MessageTransmitterError::MalformedMessage)?, + ) + } +} + +// Imported from https://github.com/circlefin/solana-cctp-contracts/blob/4477f889732209dfc9a08b3aeaeb9203a324055c/programs/token-messenger-minter/src/token_messenger/burn_message.rs#L26 +#[derive(Clone, Debug)] +pub struct BurnMessage<'a> { + data: &'a [u8], +} + +impl<'a> BurnMessage<'a> { + // Indices of each field in the message + const VERSION_INDEX: usize = 0; + const BURN_TOKEN_INDEX: usize = 4; + const MINT_RECIPIENT_INDEX: usize = 36; + const AMOUNT_INDEX: usize = 68; + const MSG_SENDER_INDEX: usize = 100; + // 4 byte version + 32 bytes burnToken + 32 bytes mintRecipient + 32 bytes amount + 32 bytes messageSender + const BURN_MESSAGE_LEN: usize = 132; + // EVM amount is 32 bytes while we use only 8 bytes on Solana + + /// Validates source array size and returns a new message + pub fn new(message_bytes: &'a [u8]) -> Result { + require_eq!( + message_bytes.len(), + Self::BURN_MESSAGE_LEN, + TokenMessengerError::MalformedMessage + ); + let message = Self { + data: message_bytes, + }; + + Ok(message) + } + + #[allow(clippy::too_many_arguments)] + /// Serializes given fields into a burn message + pub fn format_message( + version: u32, + burn_token: &Pubkey, + mint_recipient: &Pubkey, + amount: Uint<256, 4>, + message_sender: &Pubkey, + ) -> Result> { + let mut output = vec![0; Self::BURN_MESSAGE_LEN]; + + output[Self::VERSION_INDEX..Self::BURN_TOKEN_INDEX].copy_from_slice(&version.to_be_bytes()); + output[Self::BURN_TOKEN_INDEX..Self::MINT_RECIPIENT_INDEX] + .copy_from_slice(burn_token.as_ref()); + output[Self::MINT_RECIPIENT_INDEX..Self::AMOUNT_INDEX] + .copy_from_slice(mint_recipient.as_ref()); + output[Self::AMOUNT_INDEX..Self::MSG_SENDER_INDEX] + .copy_from_slice(&amount.to_be_bytes::<32>()); + output[Self::MSG_SENDER_INDEX..Self::BURN_MESSAGE_LEN] + .copy_from_slice(message_sender.as_ref()); + + Ok(output) + } + + /// Returns burn_token field + pub fn burn_token(&self) -> Result { + self.read_pubkey(Self::BURN_TOKEN_INDEX) + } + + /// Returns mint_recipient field + pub fn mint_recipient(&self) -> Result { + self.read_pubkey(Self::MINT_RECIPIENT_INDEX) + } + + /// Returns amount field + pub fn amount(&self) -> Result> { + Ok(Uint::from_be_bytes::<32>( + self.data[Self::AMOUNT_INDEX..Self::AMOUNT_INDEX + 32] + .try_into() + .unwrap(), + )) + } + + /// Returns message_sender field + pub fn message_sender(&self) -> Result { + self.read_pubkey(Self::MSG_SENDER_INDEX) + } + + //////////////////// + // private helpers + + /// Reads pubkey field at the given offset + fn read_pubkey(&self, index: usize) -> Result { + Ok( + Pubkey::try_from(&self.data[index..checked_add(index, std::mem::size_of::())?]) + .map_err(|_| TokenMessengerError::MalformedMessage)?, + ) + } +} + +pub struct CircleAttester { + // Default implements this to be the guardian key from file + guardian_secret_key: SecpSecretKey, +} + +impl CircleAttester { + /// Creates an attestation for a given message + /// + /// # Arguments + /// + /// * `message` - The message to attest to + /// + /// # Returns + /// + /// A 65 byte array containing the attestation and the recovery id in the last byte + pub fn create_attestation(&self, message: &[u8]) -> [u8; 65] { + // Sign the message hash with the guardian key + let secp = secp256k1::SECP256K1; + let digest = keccak::hash(message).to_bytes(); + let msg = secp256k1::Message::from_digest(digest); + let recoverable_signature = secp.sign_ecdsa_recoverable(&msg, &self.guardian_secret_key); + let mut signature_bytes = [0u8; 65]; + // Next 64 bytes are the signature in compact format + let (recovery_id, compact_sig) = recoverable_signature.serialize_compact(); + // Recovery ID goes in byte 65 + signature_bytes[0..64].copy_from_slice(&compact_sig); + let recovery_id_try = u8::try_from(i32::from(recovery_id)).unwrap(); + let recovery_id_true = if recovery_id_try < 27 { + recovery_id_try.saturating_add(27) + } else { + recovery_id_try + }; + signature_bytes[64] = recovery_id_true; // This is only ever 0..4 + signature_bytes + } +} + +impl Default for CircleAttester { + fn default() -> Self { + let guardian_secret_key = secp256k1::SecretKey::from_str(GUARDIAN_SECRET_KEY) + .expect("Failed to parse guardian secret key"); + Self { + guardian_secret_key, + } + } +} + +/// A struct representing a CCTP token burn message +/// +/// # Fields +/// +/// * `destination_cctp_domain` - The destination CCTP domain +/// * `cctp_message` - The CCTP message +/// * `encoded_cctp_burn_message` - The encoded CCTP burn message +/// * `cctp_attestation` - The CCTP attestation +pub struct CctpTokenBurnMessage { + pub destination_cctp_domain: u32, + pub cctp_message: CctpMessage, + pub encoded_cctp_burn_message: Vec, + pub cctp_attestation: Vec, +} + +impl CctpTokenBurnMessage { + pub fn verify_cctp_message(&self, fast_market_order: &FastMarketOrder) -> Result<()> { + self.cctp_message.body.verify(fast_market_order)?; + self.cctp_message.header.verify(fast_market_order)?; + Ok(()) + } +} + +/// A struct representing a CCTP message header +/// +/// # Fields +/// +/// * `version` - The version of the CCTP message +/// * `source_domain` - The source CCTP domain +/// * `destination_domain` - The destination CCTP domain +/// * `nonce` - The nonce of the CCTP message +/// * `sender` - The sender of the CCTP message +/// * `recipient` - The recipient of the CCTP message +/// * `destination_caller` - The destination caller of the CCTP message +pub struct CctpMessageHeader { + pub version: u32, + pub source_domain: u32, + pub destination_domain: u32, + pub nonce: u64, + pub sender: [u8; 32], + pub recipient: [u8; 32], + pub destination_caller: [u8; 32], +} + +impl CctpMessageHeader { + pub fn encode(&self) -> Vec { + let mut buf = Vec::with_capacity(116); + buf.extend_from_slice(&self.version.to_be_bytes()); + buf.extend_from_slice(&self.source_domain.to_be_bytes()); + buf.extend_from_slice(&self.destination_domain.to_be_bytes()); + buf.extend_from_slice(&self.nonce.to_be_bytes()); + buf.extend_from_slice(&self.sender); + buf.extend_from_slice(&self.recipient); + buf.extend_from_slice(&self.destination_caller); + assert_eq!(buf.len(), 116, "Cctp message header length mismatch"); + buf + } + + // TODO: Add actual checks or remove if not needed + pub fn verify(&self, _fast_market_order: &FastMarketOrder) -> Result<()> { + Ok(()) + } +} + +/// A struct representing a CCTP message body +/// +/// # Fields +/// +/// * `version` - The version of the CCTP message +/// * `burn_token_address` - The address of the token to burn +/// * `mint_recipient` - The address of the recipient of the token +/// * `amount` - The amount of the token to burn +/// * `message_sender` - The address of the sender of the message +pub struct CctpMessageBody { + pub version: u32, + pub burn_token_address: [u8; 32], + pub mint_recipient: [u8; 32], + pub amount: Uint<256, 4>, // EVM amount as uint256 now in big endian byte format + pub message_sender: [u8; 32], +} + +impl CctpMessageBody { + pub fn encode(&self) -> Vec { + let mut buf = Vec::with_capacity(132); + buf.extend_from_slice(&self.version.to_be_bytes()); + buf.extend_from_slice(&self.burn_token_address); + buf.extend_from_slice(&self.mint_recipient); + buf.extend_from_slice(&self.amount.to_be_bytes::<32>()); + buf.extend_from_slice(&self.message_sender); + assert_eq!(buf.len(), 132, "Cctp message body length mismatch"); + buf + } + + pub fn verify(&self, fast_market_order: &FastMarketOrder) -> Result<()> { + assert_eq!( + fast_market_order.amount_in, + self.amount.as_limbs()[0], // Since it is be encoded, the first limb will contain the u64 amount + "Cctp message amount mismatch" + ); + Ok(()) + } +} +impl From<&BurnMessage<'_>> for CctpMessageBody { + fn from(value: &BurnMessage) -> Self { + Self { + version: 0, + burn_token_address: value + .burn_token() + .expect("Burn token address not found") + .to_bytes(), + mint_recipient: value + .mint_recipient() + .expect("Mint recipient not found") + .to_bytes(), + amount: value.amount().expect("Amount not found"), + message_sender: value + .message_sender() + .expect("Message sender not found") + .to_bytes(), + } + } +} + +/// A struct representing a CCTP message +/// +/// # Fields +/// +/// * `header` - The header of the CCTP message +/// * `body` - The body of the CCTP message +pub struct CctpMessage { + pub header: CctpMessageHeader, + pub body: CctpMessageBody, +} + +impl CctpMessage { + pub fn encode(&self) -> Vec { + let mut buf = Vec::with_capacity(116 + 132); + buf.extend_from_slice(&self.header.encode()); + buf.extend_from_slice(&self.body.encode()); + assert_eq!(buf.len(), 116 + 132, "Cctp message length mismatch"); + buf + } +} + +/// Crafts a CCTP token burn message +/// +/// # Arguments +/// +/// * `testing_context` - The testing context +/// * `test_context` - The test context +/// * `current_state` - The current state of the testing engine +/// * `test_vaa_pair_index` - The index of the test VAA pair +/// +/// # Returns +/// +/// A CCTP token burn message +pub async fn craft_cctp_token_burn_message( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + current_state: &TestingEngineState, + test_vaa_pair_index: usize, +) -> Result { + let fixture_accounts = testing_context + .fixture_accounts + .clone() + .expect("Fixture accounts not found"); + let remote_token_messenger = testing_context + .get_remote_token_messenger(test_context) + .await; + + let message_transmitter_config_pubkey = fixture_accounts.message_transmitter_config; + + let custodian_address = current_state + .custodian_address() + .expect("Custodian address not found"); + + let cctp_mint_recipient = &testing_context.get_cctp_mint_recipient(); + + let test_vaa_pair = current_state.get_test_vaa_pair(test_vaa_pair_index); + let deposit = test_vaa_pair + .deposit_vaa + .get_payload_deserialized() + .unwrap() + .get_deposit() + .unwrap(); + let cctp_nonce = deposit.cctp_nonce; + let source_cctp_domain = deposit.source_cctp_domain; + let amount = test_vaa_pair + .fast_transfer_vaa + .get_payload_deserialized() + .unwrap() + .get_fast_transfer() + .unwrap() + .amount_in; + + let amount = U256::from(amount); + let destination_cctp_domain = Chain::Solana.as_cctp_domain(); // Hard code solana as destination domain + assert_eq!(destination_cctp_domain, 5); + let message_transmitter_config_data = test_context + .banks_client + .get_account(message_transmitter_config_pubkey) + .await + .expect("Failed to fetch account") + .expect("Account not found") + .data; + let message_transmitter_config = + MessageTransmitterConfig::try_deserialize(&mut &message_transmitter_config_data[..]) + .expect("Failed to deserialize message transmitter config"); + let cctp_header_version = message_transmitter_config.version; + let local_domain = message_transmitter_config.local_domain; + assert_eq!(local_domain, destination_cctp_domain); + let source_token_messenger = remote_token_messenger.token_messenger; + let burn_token_address = ethereum_address_to_universal(ETHEREUM_USDC_ADDRESS); + let burn_message_vec = BurnMessage::format_message( + 0, + &Pubkey::try_from_slice(&burn_token_address).unwrap(), + cctp_mint_recipient, + amount, + &Pubkey::try_from_slice(&[0u8; 32]).unwrap(), + )?; + + let burn_message = BurnMessage::new(&burn_message_vec).unwrap(); + + let cctp_message_body = CctpMessageBody::from(&burn_message); + + let cctp_message_header = CctpMessageHeader { + version: cctp_header_version, + source_domain: source_cctp_domain, + destination_domain: destination_cctp_domain, + nonce: cctp_nonce, + sender: source_token_messenger.to_bytes(), + recipient: TOKEN_MESSENGER_MINTER_PROGRAM_ID.to_bytes(), + destination_caller: custodian_address.to_bytes(), + }; + assert_eq!( + cctp_message_body.encode().len(), + burn_message_vec.len(), + "CCTP message body length mismatch" + ); + assert_eq!( + cctp_message_body.encode(), + burn_message_vec, + "CCTP message body mismatch" + ); + + let cctp_message = CctpMessage { + header: cctp_message_header, + body: cctp_message_body, + }; + + let encoded_cctp_message = cctp_message.encode(); + + let cctp_attestation = CircleAttester::default().create_attestation(&encoded_cctp_message); + + Ok(CctpTokenBurnMessage { + destination_cctp_domain, + cctp_message, + encoded_cctp_burn_message: encoded_cctp_message, + cctp_attestation: cctp_attestation.to_vec(), + }) +} + +/// Converts an Ethereum address to a wormhole universal address +/// +/// # Arguments +/// +/// * `eth_address` - The Ethereum address to convert +/// +/// # Returns +/// +/// A 32-byte array containing the universal address +pub fn ethereum_address_to_universal(eth_address: &str) -> [u8; 32] { + // Remove '0x' prefix if present + let address_str = eth_address + .strip_prefix("0x") + .unwrap_or_else(|| eth_address); + + // Decode the hex string to bytes + let mut address_bytes = [0u8; 20]; // Ethereum addresses are 20 bytes + hex::decode_to_slice(address_str, &mut address_bytes).expect("Invalid Ethereum address format"); + + // Create a 32-byte array with leading zeros (Ethereum addresses are padded with zeros on the left) + let mut universal_address = [0u8; 32]; + universal_address[12..32].copy_from_slice(&address_bytes); + + universal_address +} + +/// Gets the base fee for a deposit +/// +/// # Arguments +/// +/// * `deposit` - The deposit to get the base fee for +/// +/// # Returns +/// +/// The base fee for the deposit +pub fn get_deposit_base_fee(deposit: &Deposit) -> u64 { + let payload = deposit.payload.clone(); + let liquidity_layer_message = LiquidityLayerDepositMessage::parse(&payload).unwrap(); + let slow_order_response = liquidity_layer_message + .slow_order_response() + .expect("Failed to get slow order response"); + slow_order_response.base_fee() +} + +pub struct UsedNonces; + +impl UsedNonces { + pub const MAX_NONCES: u64 = 6400; + pub fn address(remote_domain: u32, nonce: u64) -> (Pubkey, u8) { + let first_nonce = if nonce == 0 { + 0 + } else { + (nonce.saturating_sub(1)) + .saturating_div(Self::MAX_NONCES) + .saturating_mul(Self::MAX_NONCES) + .saturating_add(1) + }; // Could potentially use a more efficient algorithm, but this finds the first nonce in a bucket + let remote_domain_converted = remote_domain.to_string(); + let first_nonce_converted = first_nonce.to_string(); + Pubkey::find_program_address( + &[ + b"used_nonces", + remote_domain_converted.as_bytes(), + first_nonce_converted.as_bytes(), + ], + &MESSAGE_TRANSMITTER_PROGRAM_ID, + ) + } +} + +/// A struct representing a decoded CCTP message +/// +/// # Fields +/// +/// * `nonce` - The nonce of the CCTP message +/// * `source_domain` - The source CCTP domain +#[derive(Debug)] +pub struct CctpMessageDecoded { + pub nonce: u64, + pub source_domain: u32, +} diff --git a/solana/modules/matching-engine-testing/tests/utils/constants.rs b/solana/modules/matching-engine-testing/tests/utils/constants.rs new file mode 100644 index 000000000..407acf3f5 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/constants.rs @@ -0,0 +1,212 @@ +#![allow(dead_code)] + +//! # Constants +//! +//! This module contains constants for the matching engine testing module. +//! +//! ## Exposed constants +//! +//! - `CORE_BRIDGE_PID` - The program ID of the core bridge +//! - `CORE_BRIDGE_FEE_COLLECTOR` - The fee collector of the core bridge +//! - `CORE_BRIDGE_CONFIG` - The config of the core bridge +//! - `TOKEN_BRIDGE_PID` - The program ID of the token bridge +//! - `TOKEN_BRIDGE_EMITTER_AUTHORITY` - The emitter authority of the token bridge +//! - `TOKEN_BRIDGE_CUSTODY_AUTHORITY` - The custody authority of the token bridge +//! - `TOKEN_BRIDGE_MINT_AUTHORITY` - The mint authority of the token bridge +//! - `TOKEN_BRIDGE_TRANSFER_AUTHORITY` - The transfer authority of the token bridge +//! - `USDC_MINT` - The mint address of USDC +//! - `GUARDIAN_SECRET_KEY` - The guardian secret key +//! - `TOKEN_ROUTER_PID` - The program ID of the token router +//! - `CCTP_TOKEN_MESSENGER_MINTER_PID` - The program ID of the CCTP token messenger minter +//! - `CCTP_MESSAGE_TRANSMITTER_PID` - The program ID of the CCTP message transmitter +//! - `WORMHOLE_POST_MESSAGE_SHIM_PID` - The program ID of the Wormhole post message shim +//! - `WORMHOLE_VERIFY_VAA_SHIM_PID` - The program ID of the Wormhole verify VAA shim +//! - `WORMHOLE_POST_MESSAGE_SHIM_EVENT_AUTHORITY` - The event authority of the Wormhole post message shim +//! +//! ## Enums +//! +//! - `Chain` - An enum representing the different chains. Chain implements `as_cctp_domain` to get the CCTP domain for the chain. +//! +//! ## Examples +//! +//! ```rust +//! use crate::constants::*; +//! let eth_cctp_domain = Chain::Ethereum.as_cctp_domain(); +//! ``` + +use solana_program::pubkey; +use solana_sdk::pubkey::Pubkey; +use solana_sdk::signature::Keypair; + +// Program IDs +cfg_if::cfg_if! { + if #[cfg(feature = "mainnet")] { + /// Core Bridge program ID on Solana mainnet. + pub const CORE_BRIDGE_PID: Pubkey = pubkey!("worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth"); + pub const CORE_BRIDGE_FEE_COLLECTOR: Pubkey = pubkey!("9bFNrXNb2WTx8fMHXCheaZqkLZ3YCCaiqTftHxeintHy"); + pub const CORE_BRIDGE_CONFIG: Pubkey = pubkey!("2yVjuQwpsvdsrywzsJJVs9Ueh4zayyo5DYJbBNc3DDpn"); + + /// Token Bridge program ID on Solana mainnet. + pub const TOKEN_BRIDGE_PID: Pubkey = pubkey!("wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb"); + pub const TOKEN_BRIDGE_EMITTER_AUTHORITY: Pubkey = pubkey!("Gv1KWf8DT1jKv5pKBmGaTmVszqa56Xn8YGx2Pg7i7qAk"); + pub const TOKEN_BRIDGE_CUSTODY_AUTHORITY: Pubkey = pubkey!("GugU1tP7doLeTw9hQP51xRJyS8Da1fWxuiy2rVrnMD2m"); + pub const TOKEN_BRIDGE_MINT_AUTHORITY: Pubkey = pubkey!("BCD75RNBHrJJpW4dXVagL5mPjzRLnVZq4YirJdjEYMV7"); + pub const TOKEN_BRIDGE_TRANSFER_AUTHORITY: Pubkey = pubkey!("7oPa2PHQdZmjSPqvpZN7MQxnC7Dcf3uL4oLqknGLk2S3"); + + /// USDC mint address found on Solana mainnet. + pub const USDC_MINT: Pubkey = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"); + pub const USDT_MINT: Pubkey = pubkey!("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"); + } else if #[cfg(feature = "testnet")] { + /// Core Bridge program ID on Solana devnet. + pub const CORE_BRIDGE_PID: Pubkey = pubkey!("3u8hJUVTA4jH1wYAyUur7FFZVQ8H635K3tSHHF4ssjQ5"); + pub const CORE_BRIDGE_FEE_COLLECTOR: Pubkey = pubkey!("7s3a1ycs16d6SNDumaRtjcoyMaTDZPavzgsmS3uUZYWX"); + pub const CORE_BRIDGE_CONFIG: Pubkey = pubkey!("6bi4JGDoRwUs9TYBuvoA7dUVyikTJDrJsJU1ew6KVLiu"); + + /// Token Bridge program ID on Solana devnet. + pub const TOKEN_BRIDGE_PID: Pubkey = pubkey!("DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe"); + pub const TOKEN_BRIDGE_EMITTER_AUTHORITY: Pubkey = pubkey!("4yttKWzRoNYS2HekxDfcZYmfQqnVWpKiJ8eydYRuFRgs"); + pub const TOKEN_BRIDGE_CUSTODY_AUTHORITY: Pubkey = pubkey!("H9pUTqZoRyFdaedRezhykA1aTMq7vbqRHYVhpHZK2QbC"); + pub const TOKEN_BRIDGE_MINT_AUTHORITY: Pubkey = pubkey!("rRsXLHe7sBHdyKU3KY3wbcgWvoT1Ntqudf6e9PKusgb"); + pub const TOKEN_BRIDGE_TRANSFER_AUTHORITY: Pubkey = pubkey!("3VFdJkFuzrcwCwdxhKRETGxrDtUVAipNmYcLvRBDcQeH"); + + /// USDC mint address found on Solana devnet. + pub const USDC_MINT: Pubkey = pubkey!("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"); + pub const USDT_MINT: Pubkey = pubkey!("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"); + } else if #[cfg(feature = "localnet")] { + /// Core Bridge program ID on Wormhole's Tilt (dev) network. + pub const CORE_BRIDGE_PID: Pubkey = pubkey!("Bridge1p5gheXUvJ6jGWGeCsgPKgnE3YgdGKRVCMY9o"); + pub const CORE_BRIDGE_FEE_COLLECTOR: Pubkey = pubkey!("GXBsgBD3LDn3vkRZF6TfY5RqgajVZ4W5bMAdiAaaUARs"); + pub const CORE_BRIDGE_CONFIG: Pubkey = pubkey!("FKoMTctsC7vJbEqyRiiPskPnuQx2tX1kurmvWByq5uZP"); + + /// Token Bridge program ID on Wormhole's Tilt (dev) network. + pub const TOKEN_BRIDGE_PID: Pubkey = pubkey!("B6RHG3mfcckmrYN1UhmJzyS1XX3fZKbkeUcpJe9Sy3FE"); + pub const TOKEN_BRIDGE_EMITTER_AUTHORITY: Pubkey = pubkey!("ENG1wQ7CQKH8ibAJ1hSLmJgL9Ucg6DRDbj752ZAfidLA"); + pub const TOKEN_BRIDGE_CUSTODY_AUTHORITY: Pubkey = pubkey!("JCQ1JdJ3vgnvurNAqMvpwaiSwJXaoMFJN53F6sRKejxQ"); + pub const TOKEN_BRIDGE_MINT_AUTHORITY: Pubkey = pubkey!("8P2wAnHr2t4pAVEyJftzz7k6wuCE7aP1VugNwehzCJJY"); + pub const TOKEN_BRIDGE_TRANSFER_AUTHORITY: Pubkey = pubkey!("C1AVBd8PpfHGe1zW42XXVbHsAQf6q5khiRKuGPLbwHkh"); + + /// USDC mint address found on Solana devnet. + /// + /// NOTE: We expect an integrator to load this account by pulling it from Solana devnet. + pub const USDC_MINT: Pubkey = pubkey!("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"); + pub const USDT_MINT: Pubkey = pubkey!("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"); + } +} + +pub const GUARDIAN_SECRET_KEY: &str = + "cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0"; +pub const TOKEN_ROUTER_PID: Pubkey = + solana_program::pubkey!("tD8RmtdcV7bzBeuFgyrFc8wvayj988ChccEzRQzo6md"); +pub const CCTP_TOKEN_MESSENGER_MINTER_PID: Pubkey = + solana_program::pubkey!("CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3"); +pub const CCTP_MESSAGE_TRANSMITTER_PID: Pubkey = + solana_program::pubkey!("CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd"); +pub const WORMHOLE_POST_MESSAGE_SHIM_PID: Pubkey = + pubkey!("EtZMZM22ViKMo4r5y4Anovs3wKQ2owUmDpjygnMMcdEX"); +pub const WORMHOLE_VERIFY_VAA_SHIM_PID: Pubkey = + pubkey!("EFaNWErqAtVWufdNb7yofSHHfWFos843DFpu4JBw24at"); +pub const WORMHOLE_POST_MESSAGE_SHIM_EVENT_AUTHORITY: Pubkey = + pubkey!("HQS31aApX3DDkuXgSpV9XyDUNtFgQ31pUn5BNWHG2PSp"); +pub const WORMHOLE_POST_MESSAGE_SHIM_EVENT_AUTHORITY_BUMP: u8 = 255; + +/// Keypairs as base64 strings (taken from consts.ts in ts tests) +// pub const PAYER_KEYPAIR_B64: &str = "cDfpY+VbRFXPPwouZwAx+ha9HqedkhqUr5vUaFa2ucAMGliG/hCT35/EOMKW+fcnW3cYtrwOFW2NM2xY8IOZbQ=="; +// pub const OWNER_ASSISTANT_KEYPAIR_B64: &str = "900mlHo1RRdhxUKuBnnPowQ7yqb4rJ1dC7K1PM+pRxeuCWamoSkQdY+3hXAeX0OBXanyqg4oyBl8g1z1sDnSWg=="; +// pub const OWNER_KEYPAIR_B64: &str = "t0zuiHtsaDJBSUFzkvXNttgXOMvZy0bbuUPGEByIJEHAUdFeBdSAesMbgbuH1v/y+B8CdTSkCIZZNuCntHQ+Ig=="; +// pub const PLAYER_ONE_KEYPAIR_B64: &str = "4STrqllKVVva0Fphqyf++6uGTVReATBe2cI26oIuVBft77CQP9qQrMTU1nM9ql0EnCpSgmCmm20m8khMo9WdPQ=="; + +/// Keypairs as base58 strings (taken from consts.ts in ts tests using a converter) +pub const PAYER_KEYPAIR_B58: &str = + "4NMwxzmYj2uvHuq8xoqhY8RXg0Pd5zkvmfWAL6YvbYFuViXVCBDK5Pru9GgqEVEZo6UXcPVH6rdR8JKgKxHGkXDp"; +pub const OWNER_ASSISTANT_KEYPAIR_B58: &str = + "2UbUgoidcNHxVEDG6ADNKGaGDqBTXTVw6B9pWvJtLNhbxcQDkdeEyBYBYYYxxDy92ckXUEaU9chWEGi5jc8Uc9e3"; +pub const OWNER_KEYPAIR_B58: &str = + "3M5rkG5DQVEGQFRtA1qruxPqJvYBbkGCdkCdB9ZjcnQnYL9ec8W78pLcQHVtjJzHP8phUXQ8V1SXbgZK9ZaFaS6U"; +pub const PLAYER_ONE_KEYPAIR_B58: &str = + "yqJrKqGqzuW6nEmfj62AgvZWqgGv9TqxfvPXiGvf8DxGDWz3UNkQdDfKDnBYpHQxPRVrYMupDKqbGVYHhfZApGb"; + +// Helper functions to get keypairs +pub fn get_payer_keypair() -> Keypair { + Keypair::from_base58_string(PAYER_KEYPAIR_B58) +} + +pub fn get_owner_assistant_keypair() -> Keypair { + Keypair::from_base58_string(OWNER_ASSISTANT_KEYPAIR_B58) +} + +pub fn get_owner_keypair() -> Keypair { + Keypair::from_base58_string(OWNER_KEYPAIR_B58) +} + +pub fn get_player_one_keypair() -> Keypair { + Keypair::from_base58_string(PLAYER_ONE_KEYPAIR_B58) +} + +pub const ETHEREUM_USDC_ADDRESS: &str = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"; + +// Enum for Chain types +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum Chain { + Ethereum, + Avalanche, + Optimism, + Arbitrum, + Solana, + Base, + Polygon, +} + +impl Chain { + pub fn as_index(&self) -> usize { + match self { + Chain::Solana => 0, + Chain::Ethereum => 1, + Chain::Avalanche => 2, + Chain::Optimism => 3, + Chain::Arbitrum => 4, + Chain::Base => 5, + Chain::Polygon => 6, + } + } + + pub fn as_cctp_domain(&self) -> u32 { + match self { + Chain::Ethereum => 0, + Chain::Avalanche => 1, + Chain::Optimism => 2, + Chain::Arbitrum => 3, + Chain::Solana => 5, + Chain::Base => 6, + Chain::Polygon => 7, + } + } +} + +// Registered Token Routers +lazy_static::lazy_static! { + pub static ref REGISTERED_TOKEN_ROUTERS: std::collections::HashMap = { + let mut m = std::collections::HashMap::new(); + m.insert(Chain::Ethereum, [0xf0; 32]); + m.insert(Chain::Avalanche, [0xf1; 32]); + m.insert(Chain::Optimism, [0xf2; 32]); + m.insert(Chain::Arbitrum, [0xf3; 32]); + m.insert(Chain::Base, [0xf6; 32]); + m.insert(Chain::Polygon, [0xf7; 32]); + m + }; +} + +// Chain ID mapping +impl Chain { + pub fn as_chain_id(&self) -> u16 { + match self { + Chain::Solana => 1, + Chain::Ethereum => 2, + Chain::Avalanche => 6, + Chain::Optimism => 24, + Chain::Arbitrum => 23, + Chain::Base => 30, + Chain::Polygon => 5, + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/utils/mint.rs b/solana/modules/matching-engine-testing/tests/utils/mint.rs new file mode 100644 index 000000000..c97420030 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/mint.rs @@ -0,0 +1,72 @@ +//! # Mint fixture +//! +//! This module provides a fixture for creating a mint account (like a USDC mint). + +use anchor_spl::token::spl_token; +use solana_cli_output::CliAccount; +use solana_program_test::ProgramTestContext; +use solana_sdk::{ + account::{AccountSharedData, ReadableAccount, WritableAccount}, + program_pack::Pack, + pubkey::Pubkey, + signer::Signer, +}; +use spl_token::state::Mint; + +use std::{fs::File, io::Read, path::PathBuf, str::FromStr}; + +#[derive(Clone)] +pub struct MintFixture { + pub key: Pubkey, + pub mint: spl_token::state::Mint, + pub token_program: Pubkey, +} + +impl MintFixture { + /// Creates a new MintFixture from a file + /// + /// # Arguments + /// + /// * `ctx` - The test context + /// * `relative_path` - The relative path to the mint file + /// + /// # Returns + /// + /// A new MintFixture + pub fn new_from_file(ctx: &mut ProgramTestContext, relative_path: &str) -> MintFixture { + let (address, account_info) = { + // load cargo workspace path from env + let mut path = PathBuf::from_str(env!("CARGO_MANIFEST_DIR")).unwrap(); + path.push(relative_path); + let mut file = File::open(&path).unwrap(); + let mut account_info_raw = String::new(); + file.read_to_string(&mut account_info_raw).unwrap(); + + let account: CliAccount = serde_json::from_str(&account_info_raw).unwrap(); + let address = Pubkey::from_str(&account.keyed_account.pubkey).unwrap(); + let mut account_info: AccountSharedData = + account.keyed_account.account.decode().unwrap(); + + let mut mint = + spl_token::state::Mint::unpack(&account_info.data()[..Mint::LEN]).unwrap(); + let payer = ctx.payer.pubkey(); + mint.mint_authority.replace(payer); + + let mint_bytes = &mut [0; Mint::LEN]; + spl_token::state::Mint::pack(mint, mint_bytes).unwrap(); + + account_info.data_as_mut_slice()[..Mint::LEN].copy_from_slice(mint_bytes); + + ctx.set_account(&address, &account_info); + + (address, account_info) + }; + let mint = spl_token::state::Mint::unpack(&account_info.data()[..Mint::LEN]).unwrap(); + + MintFixture { + key: address, + mint, + token_program: account_info.owner().to_owned(), + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/utils/mod.rs b/solana/modules/matching-engine-testing/tests/utils/mod.rs new file mode 100644 index 000000000..1603c1b75 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/mod.rs @@ -0,0 +1,15 @@ +#![allow(clippy::expect_used)] +#![allow(clippy::panic)] + +pub mod account_fixtures; +pub mod airdrop; +pub mod auction; +pub mod cctp_message; +pub mod constants; +pub mod mint; +pub mod program_fixtures; +pub mod public_keys; +pub mod router; +pub mod token_account; +pub mod vaa; +pub use constants::*; diff --git a/solana/modules/matching-engine-testing/tests/utils/program_fixtures.rs b/solana/modules/matching-engine-testing/tests/utils/program_fixtures.rs new file mode 100644 index 000000000..aecdc74f2 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/program_fixtures.rs @@ -0,0 +1,106 @@ +//! # Program Fixtures +//! +//! This module provides fixtures for initializing programs on the Solana blockchain. +//! It includes functions to initialize the upgrade manager, CCTP token messenger minter, +//! wormhole core bridge, CCTP message transmitter, local token router, and verify shims. + +use solana_program::bpf_loader_upgradeable; +use solana_program_test::ProgramTest; +use solana_sdk::pubkey::Pubkey; + +use super::{ + CCTP_MESSAGE_TRANSMITTER_PID, CCTP_TOKEN_MESSENGER_MINTER_PID, CORE_BRIDGE_CONFIG, + CORE_BRIDGE_PID, TOKEN_ROUTER_PID, WORMHOLE_POST_MESSAGE_SHIM_PID, + WORMHOLE_VERIFY_VAA_SHIM_PID, +}; + +fn get_program_data(owner: Pubkey) -> Vec { + let state = solana_sdk::bpf_loader_upgradeable::UpgradeableLoaderState::ProgramData { + slot: 0, + upgrade_authority_address: Some(owner), + }; + bincode::serialize(&state).unwrap() +} + +/// Initialize the upgrade manager program +/// +/// Returns the program data pubkey +pub fn initialize_upgrade_manager( + program_test: &mut ProgramTest, + program_id: &Pubkey, + owner_pubkey: Pubkey, +) -> Pubkey { + let program_data_pubkey = + Pubkey::find_program_address(&[program_id.as_ref()], &bpf_loader_upgradeable::id()).0; + + // Add the program data to the program test + // Compute lamports from length of program data + let program_data_data = get_program_data(owner_pubkey); + + let lamports = solana_sdk::rent::Rent::default().minimum_balance(program_data_data.len()); + let account = solana_sdk::account::Account { + lamports, + data: program_data_data, + owner: bpf_loader_upgradeable::id(), + executable: false, + rent_epoch: u64::MAX, + }; + + program_test.add_account(program_data_pubkey, account); + program_test.add_program("upgrade_manager", common::UPGRADE_MANAGER_PROGRAM_ID, None); + + program_data_pubkey +} + +pub fn initialize_cctp_token_messenger_minter(program_test: &mut ProgramTest) { + let program_id = CCTP_TOKEN_MESSENGER_MINTER_PID; + program_test.add_program("mainnet_cctp_token_messenger_minter", program_id, None); +} + +pub fn initialize_wormhole_core_bridge(program_test: &mut ProgramTest) { + let program_id = CORE_BRIDGE_PID; + program_test.add_program("mainnet_core_bridge", program_id, None); +} + +pub fn initialize_cctp_message_transmitter(program_test: &mut ProgramTest) { + let program_id = CCTP_MESSAGE_TRANSMITTER_PID; + program_test.add_program("mainnet_cctp_message_transmitter", program_id, None); +} + +pub fn initialize_local_token_router(program_test: &mut ProgramTest) { + let program_id = TOKEN_ROUTER_PID; + program_test.add_program("token_router", program_id, None); +} + +pub fn initialize_post_message_shims(program_test: &mut ProgramTest) { + let post_message_program_id = WORMHOLE_POST_MESSAGE_SHIM_PID; + program_test.add_program("wormhole_post_message_shim", post_message_program_id, None); + let verify_vaa_shim_program_id = WORMHOLE_VERIFY_VAA_SHIM_PID; + program_test.add_program("wormhole_verify_vaa_shim", verify_vaa_shim_program_id, None); +} + +pub fn initialize_verify_shims(program_test: &mut ProgramTest) { + let verify_vaa_shim_program_id = WORMHOLE_VERIFY_VAA_SHIM_PID; + program_test.add_program("wormhole_verify_vaa_shim", verify_vaa_shim_program_id, None); + program_test.add_account_with_base64_data( + CORE_BRIDGE_CONFIG, + 1_057_920, + CORE_BRIDGE_PID, + "BAAAAAQYDQ0AAAAAgFEBAGQAAAAAAAAA", + ); + // Guardian set 4 (active). + program_test.add_account_with_base64_data( + wormhole_svm_definitions::find_guardian_set_address(u32::to_be_bytes(4), &CORE_BRIDGE_PID).0, + 3_647_040, + CORE_BRIDGE_PID, + "BAAAABMAAABYk7WnbD9zlkVkiIW9zMBs1wo80/9suVJYm96GLCXvQ5ITL7nUpCFXEU3oRgGTvfOi/PgfhqCXZfR2L9EQegCGsy16CXeSaiBRMdhzHTnL64yCsv2C+u0nEdWa8PJJnRbnJvayEbOXVsBCRBvm2GULabVOvnFeI0NUzltNNI+3S5WOiWbi7D29SVinzRXnyvB8Tj3I58Rp+SyM2I+4AFogdKO/kTlT1pUmDYi8GqJaTu42PvAACsAHZyezX76i2sKP7lzLD+p2jq9FztE2udniSQNGSuiJ9cinI/wU+TEkt8c4hDy7iehkyGLDjN3Mz5XSzDek3ANqjSMrSPYs3UcxQS9IkNp5j2iWozMfZLSMEtHVf9nL5wgRcaob4dNsr+OGeRD5nAnjR4mcGcOBkrbnOHzNdoJ3wX2rG3pQJ8CzzxeOIa0ud64GcRVJz7sfnHqdgJboXhSH81UV0CqSdTUEqNdUcbn0nttvvryJj0A+R3PpX+sV6Ayamcg0jXiZHmYAAAAA", + ); + // Guardian set 3 (expired). + program_test.add_account_with_base64_data( + wormhole_svm_definitions::find_guardian_set_address(u32::to_be_bytes(3), &CORE_BRIDGE_PID).0, + 3_647_040, + CORE_BRIDGE_PID, + "AwAAABMAAABYzDrlwJeyE848gZeeG5+VcHRqpf9suVJYm96GLCXvQ5ITL7nUpCFXEU3oRgGTvfOi/PgfhqCXZfR2L9EQegCGsy16CXeSaiBRMdhzHTnL64yCsv2C+u0nEdWa8PJJnRbnJvayEbOXVsBCRBvm2GULabVOvnFeI0NUzltNNI+3S5WOiWbi7D29SVinzRXnyvB8Tj3I58Rp+SyM2I+4AFogdKO/kTlT1pUmDYi8GqJaTu42PvAACsAHZyezX76i2sKP7lzLD+p2jq9FztE2udniSQNGSuiJ9cinI/wU+TEkt8c4hDy7iehkyGLDjN3Mz5XSzDek3ANqjSMrSPYs3UcxQS9IkNp5j2iWozMfZLSMEtHVf9nL5wgRcaob4dNsr+OGeRD5nAnjR4mcGcOBkrbnOHzNdoJ3wX2rG3pQJ8CzzxeOIa0ud64GcRVJz7sfnHqdgJboXhSH81UV0CqSdTUEqNdUcbn0nttvvryJj0A+R3PpX+sV6Ayamcg0jUA8xWP46h9m", + ); + program_test.prefer_bpf(true); +} diff --git a/solana/modules/matching-engine-testing/tests/utils/public_keys.rs b/solana/modules/matching-engine-testing/tests/utils/public_keys.rs new file mode 100644 index 000000000..a0cb949ea --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/public_keys.rs @@ -0,0 +1,156 @@ +//! # Public Keys +//! +//! This module provides a struct for representing public keys in the test environment. +//! It includes methods for converting between different key types and for creating unique keys. + +use solana_sdk::{keccak, pubkey::Pubkey}; + +use super::{Chain, REGISTERED_TOKEN_ROUTERS}; + +pub trait ToBytes { + fn to_bytes(&self) -> [u8; 32]; +} + +/// A struct representing a test public key +/// +/// # Enums +/// +/// * `solana` - A Solana public key +/// * `evm` - An EVM public key +/// * `bytes` - A bytes representation of the public key +/// +/// # Methods +/// +/// * `to_bytes` - Converts the public key to a bytes array +#[allow(dead_code)] +#[derive(Debug, Clone)] +pub enum TestPubkey { + Solana(Pubkey), + Evm(EvmAddress), + Bytes([u8; 32]), +} + +impl ToBytes for TestPubkey { + fn to_bytes(&self) -> [u8; 32] { + match self { + TestPubkey::Solana(pubkey) => pubkey.to_bytes(), + TestPubkey::Evm(evm_address) => evm_address.to_bytes(), + TestPubkey::Bytes(bytes) => *bytes, + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct EvmAddress([u8; 20]); + +#[allow(dead_code)] +impl EvmAddress { + pub fn new(bytes: [u8; 20]) -> Self { + Self(bytes) + } + + pub fn from_hex(hex: &str) -> Option { + let hex = hex.strip_prefix("0x").unwrap_or_else(|| hex); + let bytes = hex::decode(hex).ok()?; + if bytes.len() != 20 { + return None; + } + let mut array = [0u8; 20]; + array.copy_from_slice(&bytes); + Some(Self(array)) + } + + pub fn as_bytes(&self) -> &[u8; 20] { + &self.0 + } + + pub fn to_hex(&self) -> String { + format!("0x{}", hex::encode(self.0)) + } + + pub fn new_unique() -> Self { + let (_secp_secret_key, secp_pubkey) = + secp256k1::generate_keypair(&mut secp256k1::rand::rngs::OsRng); + // Get uncompressed public key bytes (65 bytes: prefix + x + y) + let uncompressed = secp_pubkey.serialize_uncompressed(); + // Hash with Keccak-256 removing the prefix + let hash = keccak::hashv(&[&uncompressed[1..]]); + // Address is the last 20 bytes of the hash + let address: [u8; 20] = hash.as_ref()[12..].try_into().unwrap(); + Self(address) + } +} + +impl ToBytes for EvmAddress { + fn to_bytes(&self) -> [u8; 32] { + // Pad the evm address with 12 zero bytes + let mut bytes = vec![0u8; 12]; + bytes.extend_from_slice(&self.0); + bytes.try_into().unwrap() + } +} + +/// A struct representing a chain and address +/// +/// # Fields +/// +/// * `chain` - The chain +/// * `address` - The address +#[derive(Clone)] +pub struct ChainAddress { + pub chain: Chain, + pub address: TestPubkey, +} + +impl ChainAddress { + #[allow(dead_code)] + pub fn new_unique(chain: Chain) -> Self { + match chain { + Chain::Solana => Self { + chain, + address: TestPubkey::Solana(Pubkey::new_unique()), + }, + Chain::Ethereum => Self { + chain, + address: TestPubkey::Evm(EvmAddress::new_unique()), + }, + Chain::Arbitrum => Self { + chain, + address: TestPubkey::Evm(EvmAddress::new_unique()), + }, + Chain::Avalanche => Self { + chain, + address: TestPubkey::Evm(EvmAddress::new_unique()), + }, + Chain::Optimism => Self { + chain, + address: TestPubkey::Evm(EvmAddress::new_unique()), + }, + Chain::Polygon => Self { + chain, + address: TestPubkey::Evm(EvmAddress::new_unique()), + }, + Chain::Base => Self { + chain, + address: TestPubkey::Evm(EvmAddress::new_unique()), + }, + } + } + + #[allow(dead_code)] + pub fn new_with_address(chain: Chain, address: [u8; 32]) -> Self { + Self { + chain, + address: TestPubkey::Bytes(address), + } + } + + pub fn from_registered_token_router(chain: Chain) -> Self { + match chain { + Chain::Arbitrum => Self::new_with_address(chain, REGISTERED_TOKEN_ROUTERS[&chain]), + Chain::Ethereum => Self::new_with_address(chain, REGISTERED_TOKEN_ROUTERS[&chain]), + Chain::Solana => Self::new_with_address(chain, REGISTERED_TOKEN_ROUTERS[&chain]), + _ => panic!("Unsupported chain"), + } + } +} diff --git a/solana/modules/matching-engine-testing/tests/utils/router.rs b/solana/modules/matching-engine-testing/tests/utils/router.rs new file mode 100644 index 000000000..8ad865f90 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/router.rs @@ -0,0 +1,432 @@ +//! # Router +//! +//! This module provides a struct for representing a router in the test environment. +//! It includes methods for adding router endpoints to the program test environment. + +use super::constants::*; +use super::token_account::create_token_account_for_pda; +use crate::testing_engine::setup::{TestingContext, TransferDirection}; +use anchor_lang::prelude::*; + +use anchor_lang::{InstructionData, ToAccountMetas}; +use common::wormhole_cctp_solana::cctp::token_messenger_minter_program::RemoteTokenMessenger; +use matching_engine::accounts::{ + AddCctpRouterEndpoint as AddCctpRouterEndpointAccounts, + AddLocalRouterEndpoint as AddLocalRouterEndpointAccounts, Admin, CheckedCustodian, + LocalTokenRouter, +}; +use matching_engine::instruction::{AddCctpRouterEndpoint, AddLocalRouterEndpoint}; +use matching_engine::state::Custodian; +use matching_engine::state::EndpointInfo; +use matching_engine::state::RouterEndpoint; +use matching_engine::AddCctpRouterEndpointArgs; +use matching_engine::LOCAL_CUSTODY_TOKEN_SEED_PREFIX; + +use solana_program_test::ProgramTestContext; +use solana_sdk::instruction::Instruction; +use solana_sdk::signature::{Keypair, Signer}; +use solana_sdk::transaction::Transaction; +use solana_sdk::transaction::VersionedTransaction; + +use std::collections::HashMap; +use std::collections::HashSet; +use std::ops::Deref; +use std::rc::Rc; + +fn generate_admin(owner_or_assistant: Pubkey, custodian: Pubkey) -> Admin { + let checked_custodian = CheckedCustodian { custodian }; + Admin { + owner_or_assistant, + custodian: checked_custodian, + } +} + +/// A struct representing an endpoint info for testing purposes +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct TestEndpointInfo { + pub chain: u16, + pub address: [u8; 32], + pub mint_recipient: [u8; 32], + pub protocol: matching_engine::state::MessageProtocol, +} + +impl From<&EndpointInfo> for TestEndpointInfo { + fn from(endpoint_info: &EndpointInfo) -> Self { + Self { + chain: endpoint_info.chain, + address: endpoint_info.address, + mint_recipient: endpoint_info.mint_recipient, + protocol: endpoint_info.protocol, + } + } +} + +impl TestEndpointInfo { + pub fn new( + chain: Chain, + address: &Pubkey, + mint_recipient: Option<&Pubkey>, + protocol: matching_engine::state::MessageProtocol, + ) -> Self { + if let Some(mint_recipient) = mint_recipient { + Self { + chain: chain.as_chain_id(), + address: address.to_bytes(), + mint_recipient: mint_recipient.to_bytes(), + protocol, + } + } else { + Self { + chain: chain.as_chain_id(), + address: address.to_bytes(), + mint_recipient: address.to_bytes(), + protocol, + } + } + } +} + +#[derive(Clone)] +pub struct TestRouterEndpoints(HashMap); + +impl Deref for TestRouterEndpoints { + type Target = HashMap; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl TestRouterEndpoints { + #[allow(dead_code)] + pub fn get_from_and_to_endpoint_addresses( + &self, + transfer_direction: TransferDirection, + ) -> (Pubkey, Pubkey) { + match transfer_direction { + TransferDirection::FromArbitrumToEthereum => ( + self.get(&Chain::Arbitrum).unwrap().endpoint_address, + self.get(&Chain::Ethereum).unwrap().endpoint_address, + ), + TransferDirection::FromEthereumToArbitrum => ( + self.get(&Chain::Ethereum).unwrap().endpoint_address, + self.get(&Chain::Arbitrum).unwrap().endpoint_address, + ), + TransferDirection::Other => { + panic!("Unsupported transfer direction"); + } + } + } +} + +impl TestRouterEndpoints { + #[allow(dead_code)] + pub fn get_endpoint_info(&self, chain: Chain) -> TestEndpointInfo { + self.get(&chain).unwrap().info.clone() + } + + #[allow(dead_code)] + pub fn get_endpoint_address(&self, chain: Chain) -> Pubkey { + match chain { + Chain::Arbitrum => self.get(&Chain::Arbitrum).unwrap().endpoint_address, + Chain::Ethereum => self.get(&Chain::Ethereum).unwrap().endpoint_address, + Chain::Solana => self.get(&Chain::Solana).unwrap().endpoint_address, + _ => panic!("Unsupported chain"), + } + } +} + +/// A struct representing a router endpoint for testing purposes +#[derive(Debug, Clone, Eq, PartialEq)] +pub struct TestRouterEndpoint { + pub endpoint_address: Pubkey, + pub bump: u8, + pub info: TestEndpointInfo, +} + +impl From<(&RouterEndpoint, Pubkey)> for TestRouterEndpoint { + fn from((router_endpoint, endpoint_address): (&RouterEndpoint, Pubkey)) -> Self { + Self { + endpoint_address, + bump: router_endpoint.bump, + info: (&router_endpoint.info).into(), + } + } +} + +impl TestRouterEndpoint { + pub fn verify_endpoint_info( + &self, + chain: Chain, + address: &Pubkey, + mint_recipient: Option<&Pubkey>, + protocol: matching_engine::state::MessageProtocol, + ) { + let expected_info = TestEndpointInfo::new(chain, address, mint_recipient, protocol); + assert_eq!(self.info, expected_info); + } +} + +pub fn get_router_endpoint_address(program_id: Pubkey, encoded_chain: &[u8; 2]) -> Pubkey { + let (router_endpoint_address, _bump) = + Pubkey::find_program_address(&[RouterEndpoint::SEED_PREFIX, encoded_chain], &program_id); + router_endpoint_address +} + +pub async fn add_cctp_router_endpoint_ix( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + payer_signer: &Keypair, + admin_custodian: Pubkey, + admin_keypair: &Keypair, + remote_token_messenger: Pubkey, + chain: Chain, +) -> TestRouterEndpoint { + let admin_owner_or_assistant = admin_keypair.pubkey(); + let usdc_mint_address = testing_context.get_usdc_mint_address(); + let program_id = testing_context.get_matching_engine_program_id(); + let admin = generate_admin(admin_owner_or_assistant, admin_custodian); + let usdc = matching_engine::accounts::Usdc { + mint: usdc_mint_address, + }; + + let encoded_chain = (chain.as_chain_id()).to_be_bytes(); + let router_endpoint_address = get_router_endpoint_address(program_id, &encoded_chain); + + let local_custody_token_address = Pubkey::find_program_address( + &[LOCAL_CUSTODY_TOKEN_SEED_PREFIX, &encoded_chain], + &program_id, + ) + .0; + + let accounts = AddCctpRouterEndpointAccounts { + payer: payer_signer.pubkey(), + admin, + router_endpoint: router_endpoint_address, + local_custody_token: local_custody_token_address, + usdc, + remote_token_messenger, + token_program: anchor_spl::token::ID, + system_program: anchor_lang::system_program::ID, + }; + + let registered_token_router_address: [u8; 32] = REGISTERED_TOKEN_ROUTERS[&chain]; + let ix_data = AddCctpRouterEndpoint { + args: AddCctpRouterEndpointArgs { + chain: chain.as_chain_id(), + cctp_domain: chain.as_cctp_domain(), + address: registered_token_router_address, + mint_recipient: None, + }, + } + .data(); + + let instruction = Instruction { + program_id, + accounts: accounts.to_account_metas(None), + data: ix_data, + }; + + let mut transaction = Transaction::new_with_payer(&[instruction], Some(&payer_signer.pubkey())); + // TODO: Figure out who the signers are + let new_blockhash = testing_context + .get_new_latest_blockhash(test_context) + .await + .expect("Failed to get new blockhash"); + transaction.sign(&[payer_signer, admin_keypair], new_blockhash); + + let versioned_transaction = VersionedTransaction::from(transaction); + testing_context + .process_transaction(test_context, versioned_transaction) + .await + .expect("Failed to process transaction"); + + let endpoint_account = test_context + .banks_client + .get_account(router_endpoint_address) + .await + .unwrap() + .unwrap(); + + let endpoint_data = RouterEndpoint::try_deserialize(&mut endpoint_account.data.as_slice()) + .expect("Failed to deserialize endpoint data"); + + let test_router_endpoint = TestRouterEndpoint::from((&endpoint_data, router_endpoint_address)); + test_router_endpoint.verify_endpoint_info( + chain, + &Pubkey::new_from_array(registered_token_router_address), + None, + matching_engine::state::MessageProtocol::Cctp { + domain: chain.as_cctp_domain(), + }, + ); + test_router_endpoint +} + +pub async fn add_local_router_endpoint_ix( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + payer_signer: &Keypair, + admin_owner_or_assistant: Pubkey, + admin_custodian: Pubkey, + admin_keypair: &Keypair, +) -> TestRouterEndpoint { + let usdc_mint_address = testing_context.get_usdc_mint_address(); + let program_id = testing_context.get_matching_engine_program_id(); + let admin = generate_admin(admin_owner_or_assistant, admin_custodian); + + let token_router_program = TOKEN_ROUTER_PID; + let token_router_emitter = + Pubkey::find_program_address(&[Custodian::SEED_PREFIX], &token_router_program).0; + let token_router_mint_recipient = + create_token_account_for_pda(test_context, &token_router_emitter, &usdc_mint_address).await; + // Create the local token router + let local_token_router = LocalTokenRouter { + token_router_program, + token_router_emitter, + token_router_mint_recipient, + }; + let chain = Chain::Solana; + let encoded_chain = (chain.as_chain_id()).to_be_bytes(); + let (router_endpoint_address, _bump) = + Pubkey::find_program_address(&[RouterEndpoint::SEED_PREFIX, &encoded_chain], &program_id); + + // Create the router endpoint + let accounts = AddLocalRouterEndpointAccounts { + payer: payer_signer.pubkey(), + admin, + router_endpoint: router_endpoint_address, + local: local_token_router, + system_program: anchor_lang::system_program::ID, + }; + + let ix_data = AddLocalRouterEndpoint {}.data(); + + let instruction = Instruction { + program_id, + accounts: accounts.to_account_metas(None), + data: ix_data, + }; + + let mut transaction = Transaction::new_with_payer(&[instruction], Some(&payer_signer.pubkey())); + let new_blockhash = testing_context + .get_new_latest_blockhash(test_context) + .await + .expect("Could not get new blockhash"); + transaction.sign(&[payer_signer, admin_keypair], new_blockhash); + + let versioned_transaction = VersionedTransaction::from(transaction); + testing_context + .process_transaction(test_context, versioned_transaction) + .await + .expect("Failed to process transaction"); + + let endpoint_account = test_context + .banks_client + .get_account(router_endpoint_address) + .await + .expect("Failed to get account") + .expect("Account not found"); + + let endpoint_data = + RouterEndpoint::try_deserialize(&mut endpoint_account.data.as_slice()).unwrap(); + + let test_router_endpoint = TestRouterEndpoint::from((&endpoint_data, router_endpoint_address)); + test_router_endpoint.verify_endpoint_info( + chain, + &token_router_emitter, + Some(&token_router_mint_recipient), + matching_engine::state::MessageProtocol::Local { + program_id: token_router_program, + }, + ); + test_router_endpoint +} + +pub async fn create_cctp_router_endpoint( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + payer_signer: &Keypair, + custodian_address: Pubkey, + admin_keypair: Rc, + chain: Chain, +) -> TestRouterEndpoint { + let fixture_accounts = testing_context.get_fixture_accounts().unwrap(); + let remote_token_messenger = match chain { + Chain::Arbitrum => fixture_accounts.arbitrum_remote_token_messenger, + Chain::Ethereum => fixture_accounts.ethereum_remote_token_messenger, + _ => { + panic!("Unsupported chain"); + } + }; + + add_cctp_router_endpoint_ix( + testing_context, + test_context, + payer_signer, + custodian_address, + admin_keypair.as_ref(), + remote_token_messenger, + chain, + ) + .await +} + +pub async fn create_all_router_endpoints_test( + testing_context: &TestingContext, + test_context: &mut ProgramTestContext, + payer_signer: &Keypair, + custodian_address: Pubkey, + admin_keypair: Rc, + chains: HashSet, +) -> TestRouterEndpoints { + let mut endpoints: HashMap = HashMap::new(); + for chain in chains { + match chain { + Chain::Solana => { + let local_token_router_endpoint = add_local_router_endpoint_ix( + testing_context, + test_context, + payer_signer, + admin_keypair.pubkey(), + custodian_address, + admin_keypair.as_ref(), + ) + .await; + endpoints.insert(chain, local_token_router_endpoint); + } + Chain::Arbitrum | Chain::Ethereum => { + let cctp_router_endpoint = create_cctp_router_endpoint( + testing_context, + test_context, + payer_signer, + custodian_address, + admin_keypair.clone(), + chain, + ) + .await; + endpoints.insert(chain, cctp_router_endpoint); + } + _ => { + panic!("Unsupported chain"); + } + } + } + TestRouterEndpoints(endpoints) +} + +pub async fn get_remote_token_messenger( + test_context: &mut ProgramTestContext, + address: Pubkey, +) -> RemoteTokenMessenger { + let remote_token_messenger_data = test_context + .banks_client + .get_account(address) + .await + .unwrap() + .unwrap() + .data; + let remote_token_messenger = + RemoteTokenMessenger::try_deserialize(&mut remote_token_messenger_data.as_ref()).unwrap(); + remote_token_messenger +} diff --git a/solana/modules/matching-engine-testing/tests/utils/token_account.rs b/solana/modules/matching-engine-testing/tests/utils/token_account.rs new file mode 100644 index 000000000..6407e323c --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/token_account.rs @@ -0,0 +1,166 @@ +//! # Token Account +//! +//! This module provides a fixture for creating a token account. +//! It includes methods for creating a token account and for reading a keypair from a JSON fixture file. + +use anchor_spl::associated_token::spl_associated_token_account; +use anchor_spl::token::spl_token; +use solana_program_test::ProgramTestContext; +use solana_sdk::{ + program_pack::Pack, pubkey::Pubkey, signature::Keypair, signer::Signer, + transaction::Transaction, +}; +use std::fs; + +#[derive(Clone)] +/// A struct representing an initialized token account +pub struct TokenAccountFixture { + pub address: Pubkey, + pub account: spl_token::state::Account, +} + +impl std::fmt::Debug for TokenAccountFixture { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "TokenAccountFixture {{ address: {}, account: {:?} }}", + self.address, self.account + ) + } +} + +/// Creates a token account for the given owner and mint +/// +/// # Arguments +/// +/// * `program_test` - The program test instance +/// * `payer` - The payer of the account +/// * `owner` - The owner of the account +/// * `mint` - The mint of the account +/// +/// # Returns +/// +/// The token account fixture +pub async fn create_token_account( + test_context: &mut ProgramTestContext, + owner: &Keypair, + mint: &Pubkey, +) -> TokenAccountFixture { + // Derive the Associated Token Account (ATA) for fee_recipient + let token_account_address = + spl_associated_token_account::get_associated_token_address(&owner.pubkey(), mint); + + // Inspired by https://github.com/mrgnlabs/marginfi-v2/blob/3b7bf0aceb684a762c8552412001c8d355033119/test-utils/src/spl.rs#L56 + let token_account = { + // Create instruction using borrowed values + let create_ata_ix = + spl_associated_token_account::instruction::create_associated_token_account( + &test_context.payer.pubkey(), // Funding account + &owner.pubkey(), // Wallet address + mint, // Mint address + &spl_token::id(), // Token program + ); + + // Create and process transaction + let tx = Transaction::new_signed_with_payer( + &[create_ata_ix], + Some(&test_context.payer.pubkey()), + &[&test_context.payer], + test_context.last_blockhash, + ); + + test_context + .banks_client + .process_transaction(tx) + .await + .unwrap(); + + // Get the account + test_context + .banks_client + .get_account(token_account_address) + .await + .unwrap() + .unwrap_or_else(|| panic!("Failed to get token account")) + }; + TokenAccountFixture { + address: token_account_address, + account: spl_token::state::Account::unpack(&token_account.data).unwrap(), + } +} + +/// Creates a token account for the given PDA +/// +/// # Arguments +/// +/// * `test_context` - The test context +/// * `pda` - The PDA that will own the token account +/// * `mint` - The mint address of the token +/// +/// # Returns +/// +/// The address of the token account +pub async fn create_token_account_for_pda( + test_context: &mut ProgramTestContext, + pda: &Pubkey, // The PDA that will own the token account + mint: &Pubkey, // The mint (USDC in your case) +) -> Pubkey { + // Get the ATA address + let ata = anchor_spl::associated_token::get_associated_token_address(pda, mint); + + // Create the create_ata instruction + let create_ata_ix = spl_associated_token_account::instruction::create_associated_token_account( + &test_context.payer.pubkey(), // Funding account + pda, // Account that will own the token account + mint, // Token mint (USDC) + &spl_token::id(), // Token program + ); + + // Create and send transaction + let transaction = Transaction::new_signed_with_payer( + &[create_ata_ix], + Some(&test_context.payer.pubkey()), + &[&test_context.payer], + test_context.last_blockhash, + ); + + test_context + .banks_client + .process_transaction(transaction) + .await + .unwrap(); + + ata +} + +/// Reads a keypair from a JSON fixture file +/// +/// Reads the JSON file and parses it into a Value object that is used to extract the keypair. +/// +/// # Arguments +/// +/// * `filename` - The path to the JSON fixture file +pub fn read_keypair_from_file(filename: &str) -> Keypair { + // Read the JSON file + let data = fs::read_to_string(filename).expect("Unable to read file"); + + // Parse JSON array into Vec + let bytes: Vec = + serde_json::from_str(&data).expect("File content must be a JSON array of integers"); + + // Create keypair from bytes + Keypair::from_bytes(&bytes).expect("Bytes must form a valid keypair") +} + +/// Enum representing the different SPL token types +#[derive(Clone)] +pub enum SplTokenEnum { + Usdc, + Usdt, +} + +impl Default for SplTokenEnum { + fn default() -> Self { + Self::Usdc + } +} diff --git a/solana/modules/matching-engine-testing/tests/utils/vaa.rs b/solana/modules/matching-engine-testing/tests/utils/vaa.rs new file mode 100644 index 000000000..58d099c61 --- /dev/null +++ b/solana/modules/matching-engine-testing/tests/utils/vaa.rs @@ -0,0 +1,867 @@ +//! # VAA +//! +//! This module provides a struct for representing a VAA in the test environment. +//! It includes methods for creating a VAA and for deserializing a VAA. + +use anchor_lang::prelude::*; +use common::messages::wormhole_io::{TypePrefixedPayload, WriteableBytes}; +use common::messages::{FastMarketOrder, SlowOrderResponse}; +use common::wormhole_cctp_solana::messages::Deposit; +use secp256k1::SecretKey as SecpSecretKey; +use wormhole_svm_definitions::GUARDIAN_SIGNATURE_LENGTH; + +use super::constants::Chain; + +use super::constants::CORE_BRIDGE_PID; +use super::public_keys::{ChainAddress, ToBytes}; +use borsh::{BorshDeserialize, BorshSerialize}; +use serde::{Deserialize, Serialize}; +use solana_program::keccak; +use solana_program_test::{ProgramTest, ProgramTestContext}; +use solana_sdk::account::Account; + +use std::ops::{Deref, DerefMut}; + +pub trait DataDiscriminator { + const DISCRIMINATOR: &'static [u8]; +} + +/// A struct representing a posted VAA +/// +/// # Fields +/// +/// * `consistency_level` - The level of consistency requested by the emitter +/// * `vaa_time` - The time the VAA was submitted +/// * `vaa_signature_account` - The account where signatures are stored +/// * `submission_time` - The time the posted message was created +/// * `nonce` - The unique nonce for this message +/// * `sequence` - The sequence number of this message +/// * `emitter_chain` - The chain ID of the emitter +/// * `emitter_address` - The address of the emitter +/// * `payload` - The payload of the VAA +#[derive( + Debug, Default, BorshSerialize, BorshDeserialize, Clone, Serialize, Deserialize, PartialEq, Eq, +)] +pub struct PostedVaaData { + /// Header of the posted VAA + // pub vaa_version: u8, (This is removed because it is encoded in the discriminator) + pub consistency_level: u8, + + pub vaa_time: u32, + + pub vaa_signature_account: Pubkey, + + pub submission_time: u32, + + pub nonce: u32, + + pub sequence: u64, + + pub emitter_chain: u16, + + pub emitter_address: [u8; 32], + + pub payload: Vec, +} + +impl DataDiscriminator for PostedVaaData { + const DISCRIMINATOR: &'static [u8] = b"vaa\x01"; +} + +impl PostedVaaData { + /// Creates a new posted VAA + /// + /// # Arguments + /// + /// * `chain` - The chain the VAA is being posted to + /// * `payload` - The payload of the VAA + /// * `emitter_address` - The address of the emitter + /// * `sequence` - The sequence number of the VAA + /// * `nonce` - The nonce of the VAA + pub fn new( + chain: Chain, + payload: Vec, + emitter_address: impl ToBytes, + sequence: u64, + nonce: u32, + ) -> Self { + let timestamp = u32::try_from( + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_secs(), + ) + .unwrap(); + let emitter_chain = chain.as_chain_id(); + Self { + consistency_level: 1, + vaa_time: timestamp, + vaa_signature_account: Pubkey::new_unique(), + submission_time: 0, + nonce, + sequence, + emitter_chain, + emitter_address: emitter_address.to_bytes(), + payload: payload.to_vec(), + } + } + + /// Computes the hash of the VAA (needed for the digest of the VAA) + pub fn message_hash(&self) -> keccak::Hash { + keccak::hashv(&[ + self.vaa_time.to_be_bytes().as_ref(), + self.nonce.to_be_bytes().as_ref(), + self.emitter_chain.to_be_bytes().as_ref(), + &self.emitter_address, + &self.sequence.to_be_bytes(), + &[self.consistency_level], + self.payload.as_ref(), + ]) + } + + /// Signs the VAA with the guardian key + /// + /// # Arguments + /// + /// * `guardian_secret_key` - The guardian key + /// * `index` - The index of the guardian + /// + /// # Returns + /// + /// The 66 byte signature (with recovery id at final index and guardian index at first index) + pub fn sign_with_guardian_key( + &self, + guardian_secret_key: &SecpSecretKey, + index: u8, + ) -> [u8; 66] { + // Sign the message hash with the guardian key + let secp = secp256k1::SECP256K1; + let msg = secp256k1::Message::from_digest(self.digest()); + let recoverable_signature = secp.sign_ecdsa_recoverable(&msg, guardian_secret_key); + let mut signature_bytes = [0u8; GUARDIAN_SIGNATURE_LENGTH]; + // First byte is the index + signature_bytes[0] = index; + // Next 64 bytes are the signature in compact format + let (recovery_id, compact_sig) = recoverable_signature.serialize_compact(); + // Recovery ID goes in byte 65 + signature_bytes[1..65].copy_from_slice(&compact_sig); + signature_bytes[65] = u8::try_from(i32::from(recovery_id)).unwrap(); + signature_bytes + } + + /// Computes the digest of the VAA + /// + /// # Returns + /// + /// The 32 byte digest of the VAA + pub fn digest(&self) -> [u8; 32] { + keccak::hashv(&[self.message_hash().as_ref()]) + .as_ref() + .try_into() + .unwrap() + } + + /// Creates a VAA account + /// + /// # Arguments + /// + /// * `program_test` - The program test + /// * `vaa_address` - The address of the VAA + pub fn create_vaa_account(&self, program_test: &mut ProgramTest, vaa_address: Pubkey) { + let vaa_data_serialized = serialize_with_discriminator(self).unwrap(); + let lamports = solana_sdk::rent::Rent::default().minimum_balance(vaa_data_serialized.len()); + let vaa_account = Account { + lamports, + data: vaa_data_serialized, + owner: CORE_BRIDGE_PID, + executable: false, + rent_epoch: u64::MAX, + }; + program_test.add_account(vaa_address, vaa_account); + } +} + +pub fn deserialize_with_discriminator( + data: &[u8], +) -> Option { + let mut discriminant = [0u8; 4]; + discriminant.copy_from_slice(&data[..4]); + if discriminant != T::DISCRIMINATOR { + return None; + } + let data = data[4..].to_vec(); + let message = T::try_from_slice(&data); + match message { + Ok(message) => Some(message), + Err(_) => None, + } +} + +pub fn serialize_with_discriminator(message: &T) -> Result> +where + T: BorshSerialize + DataDiscriminator, +{ + let mut data = Vec::new(); + data.extend_from_slice(T::DISCRIMINATOR); + message.serialize(&mut data)?; + Ok(data) +} + +/// A struct representing the deserialized payload of a VAA +/// +/// # Enums +/// +/// * `deposit` - The deposit payload +/// * `fast_transfer` - The fast transfer payload +#[derive(Clone)] +pub enum PayloadDeserialized { + Deposit(Deposit), + FastTransfer(FastMarketOrder), +} + +impl PayloadDeserialized { + pub fn get_deposit(&self) -> Option { + match self { + Self::Deposit(deposit) => Some(deposit.clone()), + _ => None, + } + } + + pub fn get_fast_transfer(&self) -> Option { + match self { + Self::FastTransfer(fast_transfer) => Some(fast_transfer.clone()), + _ => None, + } + } +} + +/// A struct representing a test VAA (may be posted or not) +/// +/// # Fields +/// +/// * `kind` - The kind of VAA +/// * `vaa_pubkey` - The pubkey of the VAA +/// * `vaa_data` - The data of the VAA +/// * `payload_deserialized` - The deserialized payload of the VAA +/// * `is_posted` - Whether the VAA has been posted +#[derive(Clone)] +pub struct TestVaa { + pub kind: TestVaaKind, + pub vaa_pubkey: Pubkey, + pub vaa_data: PostedVaaData, + pub payload_deserialized: Option, + pub is_posted: bool, +} + +impl TestVaa { + /// Gets the pubkey of the VAA + pub fn get_vaa_pubkey(&self) -> Pubkey { + self.vaa_pubkey + } + + /// Gets the posted vaa data of the VAA + pub fn get_vaa_data(&self) -> &PostedVaaData { + &self.vaa_data + } + + pub fn get_payload_deserialized(&self) -> Option<&PayloadDeserialized> { + self.payload_deserialized.as_ref() + } +} + +#[derive(Clone)] +pub enum TestVaaKind { + Deposit, + FastTransfer, +} + +/// A struct representing the parameters for creating a deposit and fast transfer +#[derive(Default)] +pub struct CreateDepositAndFastTransferParams { + pub deposit_params: CreateDepositParams, + pub fast_transfer_params: CreateFastTransferParams, +} + +impl CreateDepositAndFastTransferParams { + /// Verifies the parameters for creating a deposit and fast transfer + pub fn verify(&self) { + assert!( + self.fast_transfer_params.max_fee + > self + .deposit_params + .base_fee + .saturating_add(self.fast_transfer_params.init_auction_fee), + "Max fee must be greater than the sum of the base fee and the init auction fee" + ); + assert!( + self.fast_transfer_params.amount_in > self.fast_transfer_params.max_fee, + "Amount in must be greater than max fee" + ); + } +} + +pub struct CreateDepositParams { + pub amount: ruint::aliases::U256, + pub base_fee: u64, +} + +impl Default for CreateDepositParams { + fn default() -> Self { + Self { + amount: ruint::aliases::U256::from(69000000), + base_fee: 2, + } + } +} + +pub struct CreateFastTransferParams { + pub amount_in: u64, + pub min_amount_out: u64, + pub max_fee: u64, + pub init_auction_fee: u64, +} + +impl Default for CreateFastTransferParams { + fn default() -> Self { + Self { + amount_in: 69000000, + min_amount_out: 69000000, + max_fee: 6000000, + init_auction_fee: 10, + } + } +} + +/// Helper struct for creating test VAA arguments +pub struct TestVaaArgs { + pub start_timestamp: Option, + pub sequence: u64, + pub cctp_nonce: u64, + pub vaa_nonce: u32, + pub is_posted: bool, +} + +impl From for TestVaaArgs { + fn from(vaa_args: VaaArgs) -> Self { + Self { + start_timestamp: vaa_args.start_timestamp, + sequence: vaa_args.sequence.unwrap_or_default(), + cctp_nonce: vaa_args.cctp_nonce.unwrap_or_default(), + vaa_nonce: vaa_args.vaa_nonce.unwrap_or_default(), + is_posted: vaa_args.post_vaa, + } + } +} + +/// A struct representing a pair of test VAA +/// +/// # Fields +/// +/// * `token_mint` - The mint of the token +/// * `source_address` - The source address +/// * `refund_address` - The refund address +/// * `destination_address` - The destination address +/// * `cctp_nonce` - The CCTP nonce +/// * `sequence` - The sequence number +/// * `fast_transfer_vaa` - The fast transfer VAA +/// * `deposit_vaa` - The deposit VAA +#[derive(Clone)] +pub struct TestVaaPair { + pub token_mint: Pubkey, + pub source_address: ChainAddress, + pub refund_address: ChainAddress, + pub destination_address: ChainAddress, + pub cctp_nonce: u32, + pub sequence: u64, + pub fast_transfer_vaa: TestVaa, // kind: TestVaaKind::FastTransfer + pub deposit_vaa: TestVaa, // kind: TestVaaKind::Deposit +} + +impl TestVaaPair { + /// Creates a new test VAA pair + /// + /// # Arguments + /// + /// * `token_mint` - The mint of the token + /// * `source_address` - The source address + /// * `refund_address` - The refund address + /// * `destination_address` - The destination address + /// * `cctp_mint_recipient` - The CCTP mint recipient + /// * `create_deposit_and_fast_transfer_params` - The parameters for creating a deposit and fast transfer + /// * `test_vaa_args` - The arguments for the test VAA + pub fn new( + token_mint: Pubkey, + source_address: ChainAddress, + refund_address: ChainAddress, + destination_address: ChainAddress, + cctp_mint_recipient: Pubkey, + create_deposit_and_fast_transfer_params: &CreateDepositAndFastTransferParams, + test_vaa_args: &TestVaaArgs, + ) -> Self { + create_deposit_and_fast_transfer_params.verify(); + let deposit_params = &create_deposit_and_fast_transfer_params.deposit_params; + let create_fast_transfer_params = + &create_deposit_and_fast_transfer_params.fast_transfer_params; + let start_timestamp = test_vaa_args.start_timestamp; + let sequence = test_vaa_args.sequence; + let cctp_nonce = test_vaa_args.cctp_nonce; + let vaa_nonce = test_vaa_args.vaa_nonce; + let is_posted = test_vaa_args.is_posted; + let (deposit_vaa_pubkey, deposit_vaa_data, deposit) = create_deposit_message( + token_mint, + source_address.clone(), + destination_address.clone(), + cctp_mint_recipient, + deposit_params.amount, + deposit_params.base_fee, + test_vaa_args, + ); + let test_vaa_args = TestVaaArgs { + start_timestamp, + sequence: sequence.saturating_add(1), + cctp_nonce, + vaa_nonce, + is_posted, + }; + let (fast_transfer_vaa_pubkey, fast_transfer_vaa_data, fast_market_order) = + create_fast_transfer_message( + source_address.clone(), + refund_address.clone(), + destination_address.clone(), + &test_vaa_args, + create_fast_transfer_params, + ); + Self { + token_mint, + source_address, + refund_address, + destination_address, + cctp_nonce: u32::try_from(cctp_nonce).unwrap(), + sequence, + deposit_vaa: TestVaa { + kind: TestVaaKind::Deposit, + vaa_pubkey: deposit_vaa_pubkey, + vaa_data: deposit_vaa_data, + payload_deserialized: Some(PayloadDeserialized::Deposit(deposit)), + is_posted, + }, + fast_transfer_vaa: TestVaa { + kind: TestVaaKind::FastTransfer, + vaa_pubkey: fast_transfer_vaa_pubkey, + vaa_data: fast_transfer_vaa_data, + payload_deserialized: Some(PayloadDeserialized::FastTransfer(fast_market_order)), + is_posted, + }, + } + } + + /// Adds the VAA pair to the test context + /// + /// # Arguments + /// + /// * `program_test` - The program test + pub fn add_to_test(&self, program_test: &mut ProgramTest) { + self.deposit_vaa + .vaa_data + .create_vaa_account(program_test, self.deposit_vaa.vaa_pubkey); + self.fast_transfer_vaa + .vaa_data + .create_vaa_account(program_test, self.fast_transfer_vaa.vaa_pubkey); + } + + /// Verifies the posted VAA pair + pub async fn verify_posted_vaa_pair(&self, test_context: &mut ProgramTestContext) { + let expected_deposit_vaa = self.deposit_vaa.vaa_data.clone(); + let expected_fast_transfer_vaa = self.fast_transfer_vaa.vaa_data.clone(); + { + let deposit_vaa = test_context + .banks_client + .get_account(self.deposit_vaa.vaa_pubkey) + .await + .unwrap(); + assert!(deposit_vaa.is_some(), "Deposit VAA not found"); + let deposit_vaa = + deserialize_with_discriminator::(&deposit_vaa.unwrap().data) + .unwrap(); + assert_eq!(deposit_vaa, expected_deposit_vaa); + } + + { + let fast_transfer_vaa = test_context + .banks_client + .get_account(self.fast_transfer_vaa.vaa_pubkey) + .await + .unwrap(); + assert!(fast_transfer_vaa.is_some(), "Fast transfer VAA not found"); + let fast_transfer_vaa = + deserialize_with_discriminator::(&fast_transfer_vaa.unwrap().data) + .unwrap(); + assert_eq!(fast_transfer_vaa, expected_fast_transfer_vaa); + } + } + + /// Checks if the VAA pair is posted + pub fn is_posted(&self) -> bool { + self.deposit_vaa.is_posted && self.fast_transfer_vaa.is_posted + } + + pub fn get_fast_transfer_vaa_expiration_time(&self) -> u32 { + let two_hours_in_seconds = 7200; + let vaa_time = self.fast_transfer_vaa.vaa_data.vaa_time; + let expiration = vaa_time.saturating_add(two_hours_in_seconds); + let deadline = self + .fast_transfer_vaa + .get_payload_deserialized() + .unwrap() + .get_fast_transfer() + .unwrap() + .deadline; + if expiration < deadline || deadline == 0 { + expiration + } else { + deadline + } + } + + pub fn get_finalized_vaa_data(&self) -> PostedVaaData { + let deposit_payload = self + .deposit_vaa + .get_payload_deserialized() + .unwrap() + .get_deposit() + .unwrap(); + PostedVaaData { + consistency_level: self.deposit_vaa.vaa_data.consistency_level, // This is arbitrary, does not matter for the test + vaa_time: self.fast_transfer_vaa.vaa_data.vaa_time, + vaa_signature_account: self.deposit_vaa.vaa_data.vaa_signature_account, + submission_time: self.fast_transfer_vaa.vaa_data.submission_time, + nonce: self.fast_transfer_vaa.vaa_data.nonce, + sequence: self.fast_transfer_vaa.vaa_data.sequence.saturating_sub(1), + emitter_chain: self.deposit_vaa.vaa_data.emitter_chain, + emitter_address: self.deposit_vaa.vaa_data.emitter_address, + payload: deposit_payload.to_vec(), + } + } +} + +/// Creates a deposit message +/// +/// # Arguments +/// +/// * `token_mint` - The mint of the token +/// * `source_address` - The source address +/// * `destination_address` - The destination address (always set to solana regardless of the destination chain) +/// * `cctp_mint_recipient` - The CCTP mint recipient +/// * `amount` - The amount of the deposit +/// * `base_fee` - The base fee of the deposit +/// * `test_vaa_args` - The arguments for the test VAA +/// +/// # Returns +/// +/// * `vaa_address` - The address of the VAA +/// * `posted_vaa_data` - The posted VAA data +/// * `deposit` - The deposit account deserialized +pub fn create_deposit_message( + token_mint: Pubkey, + source_address: ChainAddress, + _destination_address: ChainAddress, + cctp_mint_recipient: Pubkey, + amount: ruint::aliases::U256, + base_fee: u64, + test_vaa_args: &TestVaaArgs, +) -> (Pubkey, PostedVaaData, Deposit) { + let slow_order_response = SlowOrderResponse { base_fee }; + let cctp_nonce = test_vaa_args.cctp_nonce; + let sequence = test_vaa_args.sequence; + let vaa_nonce = test_vaa_args.vaa_nonce; + // Implements TypePrefixedPayload + let deposit = Deposit { + token_address: token_mint.to_bytes(), + amount, + source_cctp_domain: source_address.chain.as_cctp_domain(), + destination_cctp_domain: Chain::Solana.as_cctp_domain(), // Hardcode solana as destination domain + cctp_nonce, + burn_source: source_address.address.to_bytes(), // Token router address + mint_recipient: cctp_mint_recipient.to_bytes(), // Mint recipient program id + payload: WriteableBytes::new(slow_order_response.to_vec()), + }; + + // TODO: Checks on deposit + + // Sequece == nonce in this case, since only vaas we are submitting are fast transfers + let posted_vaa_data = PostedVaaData::new( + source_address.chain, + deposit.to_vec(), + source_address.address, + sequence, + vaa_nonce, + ); + let vaa_hash = posted_vaa_data.message_hash(); + let vaa_hash_as_slice = vaa_hash.as_ref(); + let vaa_address = + Pubkey::find_program_address(&[b"PostedVAA", vaa_hash_as_slice], &CORE_BRIDGE_PID).0; + (vaa_address, posted_vaa_data, deposit) +} + +/// Creates a fast transfer message +/// +/// # Arguments +/// +/// * `source_address` - The source address +/// * `refund_address` - The refund address +/// * `destination_address` - The destination address +/// * `test_vaa_args` - The arguments for the test VAA +/// * `create_fast_transfer_params` - The parameters for creating a fast transfer +/// +/// # Returns +/// +/// * `vaa_address` - The address of the VAA +/// * `posted_vaa_data` - The posted VAA data +/// * `fast_market_order` - The fast market order account deserialized +pub fn create_fast_transfer_message( + source_address: ChainAddress, + refund_address: ChainAddress, + destination_address: ChainAddress, + test_vaa_args: &TestVaaArgs, + create_fast_transfer_params: &CreateFastTransferParams, +) -> (Pubkey, PostedVaaData, FastMarketOrder) { + let amount_in = create_fast_transfer_params.amount_in; + let min_amount_out = create_fast_transfer_params.min_amount_out; + let max_fee = create_fast_transfer_params.max_fee; + let init_auction_fee = create_fast_transfer_params.init_auction_fee; + let start_timestamp = test_vaa_args.start_timestamp; + let sequence = test_vaa_args.sequence; + let vaa_nonce = test_vaa_args.vaa_nonce; + // If start timestamp is not provided, set the deadline to 0, otherwise set the deadline to 10 seconds from the start timestamp + let deadline = start_timestamp + .map(|timestamp| timestamp.saturating_add(10)) + .unwrap_or_default(); + // Implements TypePrefixedPayload + let fast_market_order = FastMarketOrder { + amount_in, + min_amount_out, + target_chain: destination_address.chain.as_chain_id(), + redeemer: destination_address.address.to_bytes(), + sender: source_address.address.to_bytes(), + refund_address: refund_address.address.to_bytes(), // Not used so can be all zeros + max_fee, // USDC max fee + init_auction_fee, // USDC init auction fee (the first person to verify a vaa and start an auction will get this fee) so at least rent + deadline, // If dealine is 0 then there is no deadline + redeemer_message: WriteableBytes::new(vec![]), + }; + + // TODO: Checks on fast transfer + + let posted_vaa_data = PostedVaaData::new( + source_address.chain, + fast_market_order.to_vec(), + source_address.address, + sequence, + vaa_nonce, + ); + let vaa_hash = posted_vaa_data.message_hash(); + let vaa_hash_as_slice = vaa_hash.as_ref(); + let vaa_address = + Pubkey::find_program_address(&[b"PostedVAA", vaa_hash_as_slice], &CORE_BRIDGE_PID).0; + (vaa_address, posted_vaa_data, fast_market_order) +} + +/// A struct representing a collection of test VAA pairs +/// +/// # Fields +/// +/// * `pairs` - The collection of test VAA pairs +#[derive(Clone)] +pub struct TestVaaPairs(pub Vec); + +impl Deref for TestVaaPairs { + type Target = Vec; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl DerefMut for TestVaaPairs { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +impl TestVaaPairs { + pub fn new() -> Self { + Self(Vec::new()) + } + + /// Add a vaa pair to the test, the sequence number and cctp nonce are equal to the index of the test vaa pair + /// + /// # Arguments + /// + /// * `token_mint` - The mint of the token + /// * `source_address` - The source address + /// * `refund_address` - The refund address + /// * `destination_address` - The destination address + /// * `cctp_mint_recipient` - The CCTP mint recipient + /// * `vaa_args` - The arguments for the test VAA + pub fn add_vaa_pair( + &mut self, + token_mint: Pubkey, + source_address: ChainAddress, + refund_address: ChainAddress, + destination_address: ChainAddress, + cctp_mint_recipient: Pubkey, + vaa_args: &VaaArgs, + ) { + let sequence = vaa_args + .sequence + .unwrap_or_else(|| u64::try_from(self.len()).unwrap()); + let cctp_nonce = vaa_args + .cctp_nonce + .unwrap_or_else(|| sequence.saturating_add(1)); + let vaa_nonce = vaa_args.vaa_nonce.unwrap_or_default(); + let is_posted = vaa_args.post_vaa; + let create_deposit_and_fast_transfer_params = + &vaa_args.create_deposit_and_fast_transfer_params; + + let test_vaa_args = TestVaaArgs { + start_timestamp: vaa_args.start_timestamp, + sequence, + cctp_nonce, + vaa_nonce, + is_posted, + }; + + let test_vaa_pair = TestVaaPair::new( + token_mint, + source_address, + refund_address, + destination_address, + cctp_mint_recipient, + create_deposit_and_fast_transfer_params, + &test_vaa_args, + ); + self.0.push(test_vaa_pair); + } + + /// Creates a collection of test VAA pairs with a chain and address + /// + /// # Arguments + /// + /// * `program_test` - The program test + /// * `mint_address` - The mint address + /// * `cctp_mint_recipient` - The CCTP mint recipient + /// * `source_chain_and_address` - The source chain and address + /// * `destination_chain_and_address` - The destination chain and address + /// * `vaa_args` - The arguments for the test VAA + pub fn create_vaas_with_chain_and_address( + &mut self, + program_test: &mut ProgramTest, + mint_address: Pubkey, + cctp_mint_recipient: Pubkey, + source_chain_and_address: ChainAndAddress, + destination_chain_and_address: ChainAndAddress, + vaa_args: &VaaArgs, + ) { + let source_address = vaa_args + .override_emitter_chain_and_address + .clone() + .unwrap_or_else(|| { + ChainAddress::new_with_address( + source_chain_and_address.chain, + source_chain_and_address.address, + ) + }); + let destination_address = vaa_args + .override_destination_chain_and_address + .clone() + .unwrap_or_else(|| { + ChainAddress::new_with_address( + destination_chain_and_address.chain, + destination_chain_and_address.address, + ) + }); + let refund_address = source_address.clone(); + self.add_vaa_pair( + mint_address, + source_address, + refund_address, + destination_address, + cctp_mint_recipient, + vaa_args, + ); + if vaa_args.post_vaa { + for test_fast_transfer in self.0.iter() { + test_fast_transfer.add_to_test(program_test); + } + } + } + + pub async fn verify_posted_vaas(&self, test_context: &mut ProgramTestContext) { + for vaa_pair in self.0.iter() { + if vaa_pair.is_posted() { + vaa_pair.verify_posted_vaa_pair(test_context).await; + } + } + } +} + +/// A struct representing the arguments for creating a test VAA +/// +/// # Fields +/// +/// * `sequence` - The sequence number +/// * `cctp_nonce` - The CCTP nonce +/// * `vaa_nonce` - The VAA nonce +/// * `start_timestamp` - The start timestamp +/// * `post_vaa` - Whether to post the VAA +/// * `create_deposit_and_fast_transfer_params` - The parameters for creating a deposit and fast transfer +#[derive(Default)] +pub struct VaaArgs { + pub sequence: Option, + pub cctp_nonce: Option, + pub vaa_nonce: Option, + pub start_timestamp: Option, + pub post_vaa: bool, + pub create_deposit_and_fast_transfer_params: CreateDepositAndFastTransferParams, + pub override_emitter_chain_and_address: Option, + pub override_destination_chain_and_address: Option, +} + +pub struct ChainAndAddress { + pub chain: Chain, + pub address: [u8; 32], +} + +/// Creates a collection of test VAA pairs with a chain and address (one deposit and one fast transfer per chain) +/// +/// # Arguments +/// +/// * `program_test` - The program test +/// * `mint_address` - The mint address +/// * `cctp_mint_recipient` - The CCTP mint recipient +/// * `source_chain_and_address` - The source chain and address +/// * `destination_chain_and_address` - The destination chain and address +/// * `vaa_args` - The arguments for the test VAA +/// +/// # Returns +/// +/// * `test_vaa_pairs` - The collection of test VAA pairs +pub fn create_vaas_test_with_chain_and_address( + program_test: &mut ProgramTest, + mint_address: Pubkey, + cctp_mint_recipient: Pubkey, + source_chain_and_address: ChainAndAddress, + destination_chain_and_address: ChainAndAddress, + vaa_args: VaaArgs, +) -> TestVaaPairs { + let mut test_fast_transfers = TestVaaPairs::new(); + test_fast_transfers.create_vaas_with_chain_and_address( + program_test, + mint_address, + cctp_mint_recipient, + source_chain_and_address, + destination_chain_and_address, + &vaa_args, + ); + test_fast_transfers +} diff --git a/solana/programs/matching-engine/Cargo.toml b/solana/programs/matching-engine/Cargo.toml index 0704b5873..d8ad99609 100644 --- a/solana/programs/matching-engine/Cargo.toml +++ b/solana/programs/matching-engine/Cargo.toml @@ -37,11 +37,33 @@ anchor-spl.workspace = true solana-program.workspace = true hex.workspace = true +bytemuck.workspace = true ruint.workspace = true cfg-if.workspace = true +wormhole-svm-definitions.workspace = true +wormhole-svm-shim.workspace = true +wormhole-io.workspace = true [dev-dependencies] hex-literal.workspace = true +solana-program-test = "1.18.15" +solana-sdk = "1.18.15" +serde_json = "1.0.138" +bincode = "1.3.3" +solana-cli-output = "1.18.15" +base64 = "0.22.1" +lazy_static = "1.4.0" +bs58 = "0.5.0" +serde = { version = "1.0.212", features = ["derive"] } +secp256k1 = {version = "0.30.0", features = ["rand", "hashes", "std", "global-context", "recovery"] } +num-traits = "0.2.16" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +tracing-log = "0.2.0" +once_cell = "1.8" +anyhow = "1.0.97" +wormhole-svm-shim.workspace = true +wormhole-svm-definitions.workspace = true [lints] -workspace = true \ No newline at end of file +workspace = true diff --git a/solana/programs/matching-engine/README.md b/solana/programs/matching-engine/README.md index 895eb3b25..4f5174d21 100644 --- a/solana/programs/matching-engine/README.md +++ b/solana/programs/matching-engine/README.md @@ -2,3 +2,13 @@ A program to facilitate the transfer of USDC between networks that allow Wormhole and CCTP bridging. With the help of solvers, allowing USDC to be transferred faster than finality. + +## Testing plan + +The testing engine should be designed in a functional way that allows for easy testing of the program instructions. + +The instructions passed to the testing engine should be able to be composed in a way where each instruction returns the updated state (not a mutating state). + +This state is predictable and has the benefit of being able to be tested in isolation and mocked (to an extent) for testing. + + diff --git a/solana/programs/matching-engine/src/error.rs b/solana/programs/matching-engine/src/error.rs index b67e4023a..ab56bae8e 100644 --- a/solana/programs/matching-engine/src/error.rs +++ b/solana/programs/matching-engine/src/error.rs @@ -72,6 +72,7 @@ pub enum MatchingEngineError { AuctionExists = 0x428, NoAuction = 0x429, BestOfferTokenMismatch = 0x42a, + InitialOfferTokenMismatch = 0x42b, BestOfferTokenRequired = 0x42c, PreparedByMismatch = 0x42e, PreparedOrderResponseNotRequired = 0x42f, @@ -85,8 +86,31 @@ pub enum MatchingEngineError { BaseFeeTokenRequired = 0x43e, CannotCloseAuctionYet = 0x500, + InvalidFeeRecipientToken = 0x501, AuctionHistoryNotFull = 0x502, AuctionHistoryFull = 0x504, + + InvalidVerifyVaaShimProgram = 0x600, + + // Fallback matching engine errors + AccountAlreadyInitialized = 0x700, + AccountNotWritable = 0x702, + BorshDeserializationError = 0x704, + BorshSerializationError = 0x705, + InvalidPda = 0x706, + InvalidProgram = 0x70a, + TokenTransferFailed = 0x70c, + InvalidMint = 0x70e, + + // Place initial offer errors + #[msg("From and to router endpoints are the same")] + SameEndpoints = 0x800, + + // Close fast market order errors + MismatchingCloseAccountRefundRecipient = 0xa10, + + // Execute order errors + InvalidCctpMessage = 0x902, } #[cfg(test)] diff --git a/solana/programs/matching-engine/src/fallback/mod.rs b/solana/programs/matching-engine/src/fallback/mod.rs new file mode 100644 index 000000000..d52b9b264 --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/mod.rs @@ -0,0 +1,2 @@ +mod processor; +pub use processor::*; diff --git a/solana/programs/matching-engine/src/fallback/processor/burn_and_post.rs b/solana/programs/matching-engine/src/fallback/processor/burn_and_post.rs new file mode 100644 index 000000000..3230cfbaa --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/burn_and_post.rs @@ -0,0 +1,85 @@ +use crate::state::Custodian; +use anchor_lang::prelude::*; +use common::wormhole_cctp_solana::{ + cctp::token_messenger_minter_program::cpi::{ + deposit_for_burn_with_caller, DepositForBurnWithCaller, DepositForBurnWithCallerParams, + }, + cpi::BurnAndPublishArgs, +}; +use solana_program::program::invoke_signed_unchecked; +use wormhole_svm_definitions::solana::Finality; +use wormhole_svm_definitions::solana::{ + CORE_BRIDGE_CONFIG, CORE_BRIDGE_FEE_COLLECTOR, CORE_BRIDGE_PROGRAM_ID, + POST_MESSAGE_SHIM_EVENT_AUTHORITY, POST_MESSAGE_SHIM_PROGRAM_ID, +}; +use wormhole_svm_shim::post_message; + +// This is a helper struct to make it easier to pass in the accounts for the post_message instruction. +pub struct PostMessageAccounts<'ix> { + pub emitter: &'ix Pubkey, + pub payer: &'ix Pubkey, + pub message: &'ix Pubkey, + pub sequence: &'ix Pubkey, +} + +pub fn burn_and_post<'info>( + cctp_ctx: CpiContext<'_, '_, '_, 'info, DepositForBurnWithCaller<'info>>, + burn_and_publish_args: BurnAndPublishArgs, + post_message_accounts: PostMessageAccounts, + account_infos: &[AccountInfo], +) -> Result<()> { + let BurnAndPublishArgs { + burn_source: _, + destination_caller, + destination_cctp_domain, + amount, + mint_recipient, + wormhole_message_nonce, + payload, + } = burn_and_publish_args; + + let PostMessageAccounts { + emitter, + payer, + message, + sequence, + } = post_message_accounts; + + // Post message to the shim program + let post_message_ix = post_message::PostMessage { + program_id: &POST_MESSAGE_SHIM_PROGRAM_ID, + accounts: post_message::PostMessageAccounts { + emitter, + payer, + wormhole_program_id: &CORE_BRIDGE_PROGRAM_ID, + derived: post_message::PostMessageDerivedAccounts { + message: Some(message), + sequence: Some(sequence), + core_bridge_config: Some(&CORE_BRIDGE_CONFIG), + fee_collector: Some(&CORE_BRIDGE_FEE_COLLECTOR), + event_authority: Some(&POST_MESSAGE_SHIM_EVENT_AUTHORITY), + }, + }, + data: post_message::PostMessageData::new( + wormhole_message_nonce, + Finality::Finalized, + &payload, + ) + .unwrap(), + } + .instruction(); + + invoke_signed_unchecked(&post_message_ix, account_infos, &[Custodian::SIGNER_SEEDS])?; + + // Deposit for burn + deposit_for_burn_with_caller( + cctp_ctx, + DepositForBurnWithCallerParams { + amount, + destination_domain: destination_cctp_domain, + mint_recipient, + destination_caller, + }, + )?; + Ok(()) +} diff --git a/solana/programs/matching-engine/src/fallback/processor/close_fast_market_order.rs b/solana/programs/matching-engine/src/fallback/processor/close_fast_market_order.rs new file mode 100644 index 000000000..3c3df9773 --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/close_fast_market_order.rs @@ -0,0 +1,100 @@ +use anchor_lang::prelude::*; +use solana_program::instruction::Instruction; + +use crate::error::MatchingEngineError; + +const NUM_ACCOUNTS: usize = 2; + +pub struct CloseFastMarketOrderAccounts<'ix> { + /// The fast market order account to be closed. + pub fast_market_order: &'ix Pubkey, + /// The account that will receive rent from the fast market order account. + /// This account is the only authority that can close the fast market order. + // TODO: Rename to "refund_recipient". + pub close_account_refund_recipient: &'ix Pubkey, +} + +/// Closes the fast market order and transfers the lamports from the fast market +/// order to its refund recipient. +pub struct CloseFastMarketOrder<'ix> { + pub program_id: &'ix Pubkey, + pub accounts: CloseFastMarketOrderAccounts<'ix>, +} + +impl CloseFastMarketOrder<'_> { + pub fn instruction(&self) -> Instruction { + let CloseFastMarketOrderAccounts { + fast_market_order, + close_account_refund_recipient: refund_recipient, + } = self.accounts; + + let accounts = vec![ + AccountMeta::new(*fast_market_order, false), + AccountMeta::new(*refund_recipient, true), + ]; + debug_assert_eq!(accounts.len(), NUM_ACCOUNTS); + + Instruction { + program_id: *self.program_id, + accounts, + data: super::FallbackMatchingEngineInstruction::CloseFastMarketOrder.to_vec(), + } + } +} + +#[inline(never)] +pub(super) fn process(accounts: &[AccountInfo]) -> Result<()> { + super::helpers::require_min_account_infos_len(accounts, NUM_ACCOUNTS)?; + + // We need to check the refund recipient account against what we know as the + // refund recipient encoded in the fast market order account. + let fast_market_order_info = &accounts[0]; + let fast_market_order = super::helpers::try_fast_market_order_account(fast_market_order_info)?; + + let refund_recipient_info = &accounts[1]; + + // Check that the refund recipient provided in this instruction is the one + // encoded in the fast market order account. + let expected_refund_recipient_key = fast_market_order.close_account_refund_recipient; + if refund_recipient_info.key != &expected_refund_recipient_key { + return Err(MatchingEngineError::MismatchingCloseAccountRefundRecipient.into()).map_err( + |e: Error| e.with_pubkeys((*refund_recipient_info.key, expected_refund_recipient_key)), + ); + } + + // This refund recipient must sign to invoke this instruction. He is the + // only authority allowed to perform this action. + if !refund_recipient_info.is_signer { + return Err(ErrorCode::AccountNotSigner.into()) + .map_err(|e: Error| e.with_account_name("refund_recipient")); + } + + let mut fast_market_order_info_lamports = fast_market_order_info.lamports.borrow_mut(); + + // Move lamports to the refund recipient. + let mut recipient_info_lamports = refund_recipient_info.lamports.borrow_mut(); + **recipient_info_lamports = + recipient_info_lamports.saturating_add(**fast_market_order_info_lamports); + + // Zero out the fast market order lamports. + **fast_market_order_info_lamports = 0; + + Ok(()) +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_instruction() { + CloseFastMarketOrder { + program_id: &Default::default(), + accounts: CloseFastMarketOrderAccounts { + fast_market_order: &Default::default(), + close_account_refund_recipient: &Default::default(), + }, + } + .instruction(); + } +} diff --git a/solana/programs/matching-engine/src/fallback/processor/execute_order.rs b/solana/programs/matching-engine/src/fallback/processor/execute_order.rs new file mode 100644 index 000000000..5d6d291a7 --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/execute_order.rs @@ -0,0 +1,693 @@ +use anchor_lang::prelude::*; +use anchor_spl::token::{spl_token, TokenAccount}; +use common::{ + messages::Fill, + wormhole_cctp_solana::cctp::token_messenger_minter_program::ID as CCTP_TOKEN_MESSENGER_MINTER_PROGRAM_ID, + wormhole_io::TypePrefixedPayload, +}; +use solana_program::{instruction::Instruction, program::invoke_signed_unchecked}; + +use crate::{ + error::MatchingEngineError, + state::{Auction, AuctionStatus, Custodian, MessageProtocol}, + utils::{self, auction::DepositPenalty}, + ID, +}; + +use super::burn_and_post::{burn_and_post, PostMessageAccounts}; + +const NUM_ACCOUNTS: usize = 32; + +// TODO: Rename to "ExecuteOrderCctpV2Accounts". +#[derive(Debug, Clone, PartialEq, Eq, Copy)] +pub struct ExecuteOrderShimAccounts<'ix> { + /// The signer account. + // TODO: Rename to "payer". + pub signer: &'ix Pubkey, // 0 + /// The cctp message account. Seeds must be \["cctp-msg", auction_address.as_ref()\]. + // TODO: Rename to "new_cctp_message". + pub cctp_message: &'ix Pubkey, // 1 + pub custodian: &'ix Pubkey, // 2 + /// Seeds must be \["fast_market_order", auction_address.as_ref()\]. + pub fast_market_order: &'ix Pubkey, // 3 + /// The auction account created from the place initial offer instruction. + pub active_auction: &'ix Pubkey, // 4 + /// The associated token address of the auction's custody token. + // TODO: Rename to "auction_custody". + pub active_auction_custody_token: &'ix Pubkey, // 5 + /// The auction config account created from the place initial offer instruction. + // TODO: Rename to "auction_config". + pub active_auction_config: &'ix Pubkey, // 6 + /// The token account of the auction's best offer + // TODO: Rename to "auction_best_offer_token". + pub active_auction_best_offer_token: &'ix Pubkey, // 7 + /// The token account of the executor + pub executor_token: &'ix Pubkey, // 8 + /// The token account of the auction's initial offer + // TODO: Rename to "auction_initial_offer_token". + pub initial_offer_token: &'ix Pubkey, // 9 + /// The account that signed the creation of the auction when placing the initial offer. + // TODO: Rename to "auction_initial_participant". + pub initial_participant: &'ix Pubkey, // 10 + /// The router endpoint account of the auction's target chain + // TODO: Rename to "to_endpoint". + pub to_router_endpoint: &'ix Pubkey, // 11 + /// The program id of the post message shim program + pub post_message_shim_program: &'ix Pubkey, // 12 + /// The emitter sequence of the core bridge program (can be derived) + pub core_bridge_emitter_sequence: &'ix Pubkey, // 13 + /// The message account of the post message shim program (can be derived) + // TODO: Rename to "shim_message". + pub post_shim_message: &'ix Pubkey, // 14 + pub cctp_deposit_for_burn_token_messenger_minter_program: &'ix Pubkey, // 15 + /// The mint account of the CCTP token to be burned + pub cctp_deposit_for_burn_mint: &'ix Pubkey, // 16 + /// The token messenger minter sender authority account of the CCTP token to be burned + pub cctp_deposit_for_burn_token_messenger_minter_sender_authority: &'ix Pubkey, // 17 + /// The message transmitter config account of the CCTP token to be burned + pub cctp_deposit_for_burn_message_transmitter_config: &'ix Pubkey, // 18 + /// The token messenger account of the CCTP token to be burned + pub cctp_deposit_for_burn_token_messenger: &'ix Pubkey, // 19 + /// The remote token messenger account of the CCTP token to be burned + pub cctp_deposit_for_burn_remote_token_messenger: &'ix Pubkey, // 20 + /// The token minter account of the CCTP token to be burned + pub cctp_deposit_for_burn_token_minter: &'ix Pubkey, // 21 + /// The local token account of the CCTP token to be burned + pub cctp_deposit_for_burn_local_token: &'ix Pubkey, // 22 + /// The token messenger minter event authority account of the CCTP token to be burned + pub cctp_deposit_for_burn_token_messenger_minter_event_authority: &'ix Pubkey, // 23 + /// The token messenger minter program account of the CCTP token to be burned + /// The message transmitter program account of the CCTP token to be burned + pub cctp_deposit_for_burn_message_transmitter_program: &'ix Pubkey, // 24 + /// The program id of the core bridge program + pub core_bridge_program: &'ix Pubkey, // 25 + /// The config account of the core bridge program + pub core_bridge_config: &'ix Pubkey, // 26 + /// The fee collector account of the core bridge program + pub core_bridge_fee_collector: &'ix Pubkey, // 27 + /// The event authority account of the post message shim program + pub post_message_shim_event_authority: &'ix Pubkey, // 28 + /// The program id of the system program + // TODO: Remove. + pub system_program: &'ix Pubkey, // 29 + /// The program id of the token program + // TODO: Remove. + pub token_program: &'ix Pubkey, // 30 + /// The clock account + // TODO: Remove. + pub clock: &'ix Pubkey, // 31 +} + +// TODO: Rename to "ExecuteOrderCctpV2". +pub struct ExecuteOrderCctpShim<'ix> { + pub program_id: &'ix Pubkey, + pub accounts: ExecuteOrderShimAccounts<'ix>, +} + +impl ExecuteOrderCctpShim<'_> { + pub fn instruction(&self) -> Instruction { + let ExecuteOrderShimAccounts { + signer: payer, + cctp_message: new_cctp_message, + custodian, + fast_market_order, + active_auction, + active_auction_custody_token: auction_custody, + active_auction_config: auction_config, + active_auction_best_offer_token: auction_best_offer_token, + executor_token, + initial_offer_token: auction_initial_offer_token, + initial_participant: auction_initial_participant, + to_router_endpoint: to_endpoint, + post_message_shim_program, + core_bridge_emitter_sequence, + post_shim_message: shim_message, + cctp_deposit_for_burn_mint: cctp_mint, + cctp_deposit_for_burn_token_messenger_minter_sender_authority: + cctp_token_messenger_minter_sender_authority, + cctp_deposit_for_burn_message_transmitter_config: cctp_message_transmitter_config, + cctp_deposit_for_burn_token_messenger: cctp_token_messenger, + cctp_deposit_for_burn_remote_token_messenger: cctp_remote_token_messenger, + cctp_deposit_for_burn_token_minter: cctp_token_minter, + cctp_deposit_for_burn_local_token: cctp_local_token, + cctp_deposit_for_burn_token_messenger_minter_event_authority: + cctp_token_messenger_minter_event_authority, + cctp_deposit_for_burn_token_messenger_minter_program: + cctp_token_messenger_minter_program, + cctp_deposit_for_burn_message_transmitter_program: cctp_message_transmitter_program, + core_bridge_program, + core_bridge_config, + core_bridge_fee_collector, + post_message_shim_event_authority, + system_program: _, + token_program: _, + clock: _, + } = self.accounts; + + let accounts = vec![ + AccountMeta::new(*payer, true), + AccountMeta::new(*new_cctp_message, false), + AccountMeta::new(*custodian, false), + AccountMeta::new_readonly(*fast_market_order, false), + AccountMeta::new(*active_auction, false), + AccountMeta::new(*auction_custody, false), + AccountMeta::new_readonly(*auction_config, false), + AccountMeta::new(*auction_best_offer_token, false), + AccountMeta::new(*executor_token, false), + AccountMeta::new(*auction_initial_offer_token, false), + AccountMeta::new(*auction_initial_participant, false), + AccountMeta::new_readonly(*to_endpoint, false), + AccountMeta::new_readonly(*post_message_shim_program, false), + AccountMeta::new(*core_bridge_emitter_sequence, false), + AccountMeta::new(*shim_message, false), + AccountMeta::new_readonly(*cctp_token_messenger_minter_program, false), + AccountMeta::new(*cctp_mint, false), + AccountMeta::new_readonly(*cctp_token_messenger_minter_sender_authority, false), + AccountMeta::new(*cctp_message_transmitter_config, false), + AccountMeta::new_readonly(*cctp_token_messenger, false), + AccountMeta::new_readonly(*cctp_remote_token_messenger, false), + AccountMeta::new_readonly(*cctp_token_minter, false), + AccountMeta::new(*cctp_local_token, false), + AccountMeta::new_readonly(*cctp_token_messenger_minter_event_authority, false), + AccountMeta::new_readonly(*cctp_message_transmitter_program, false), + AccountMeta::new_readonly(*core_bridge_program, false), + AccountMeta::new(*core_bridge_config, false), + AccountMeta::new(*core_bridge_fee_collector, false), + AccountMeta::new(*post_message_shim_event_authority, false), + AccountMeta::new_readonly(solana_program::system_program::ID, false), + AccountMeta::new_readonly(spl_token::ID, false), + AccountMeta::new_readonly(solana_program::sysvar::clock::ID, false), + ]; + debug_assert_eq!(accounts.len(), NUM_ACCOUNTS); + + Instruction { + program_id: *self.program_id, + accounts, + data: super::FallbackMatchingEngineInstruction::ExecuteOrderCctpShim.to_vec(), + } + } +} + +#[inline(never)] +pub(super) fn process(accounts: &[AccountInfo]) -> Result<()> { + // This saves stack space whereas having that in the body does not + super::helpers::require_min_account_infos_len(accounts, NUM_ACCOUNTS)?; + + // Get the accounts + let payer_info = &accounts[0]; + let new_cctp_message_info = &accounts[1]; + + let custodian_info = &accounts[2]; + super::helpers::try_custodian_account( + custodian_info, + false, // check_if_paused + )?; + + let fast_market_order = super::helpers::try_fast_market_order_account(&accounts[3])?; + + let active_auction_info = &accounts[4]; + super::helpers::require_owned_by_this_program(active_auction_info, "active_auction")?; + + let active_auction_key = active_auction_info.key(); + let mut active_auction = Auction::try_deserialize(&mut &active_auction_info.data.borrow()[..])?; + let active_auction_inner_info = active_auction.info.as_ref().unwrap(); + + require!( + active_auction.vaa_hash == fast_market_order.digest(), + MatchingEngineError::VaaMismatch + ); + + require!( + active_auction.status == AuctionStatus::Active, + MatchingEngineError::AuctionNotActive + ); + + let auction_custody_info = &accounts[5]; + + // Check active auction custody token pda + match Pubkey::create_program_address( + &[ + crate::AUCTION_CUSTODY_TOKEN_SEED_PREFIX, + active_auction_key.as_ref(), + &[active_auction_inner_info.custody_token_bump], + ], + &ID, + ) { + Err(_) => { + return Err(MatchingEngineError::InvalidPda.into()) + .map_err(|e: Error| e.with_account_name("auction_custody")) + } + Ok(expected_key) if auction_custody_info.key != &expected_key => { + return Err(ErrorCode::ConstraintSeeds.into()).map_err(|e: Error| { + e.with_account_name("auction_custody") + .with_pubkeys((*auction_custody_info.key, expected_key)) + }) + } + _ => (), + }; + + // It is safe to unwrap here because we know the auction status is active, + // which means its inner info is some `AuctionInfo`. This info specifies + // which config ID was used. + // + // This inner info will also be used for token transfer accounting. + let auction_config = super::helpers::try_auction_config_account( + &accounts[6], + Some(active_auction_inner_info.config_id), + )?; + + // If solvers can still participate in the auction, we disallow executing + // this auction's fast order. + require!( + !active_auction_inner_info.within_auction_duration(&auction_config), + MatchingEngineError::AuctionPeriodNotExpired + ); + + let auction_best_offer_token_info = &accounts[7]; + + require_keys_eq!( + *auction_best_offer_token_info.key, + active_auction_inner_info.best_offer_token, + MatchingEngineError::BestOfferTokenMismatch + ); + + let executor_token_info = &accounts[8]; + let auction_initial_offer_token_info = &accounts[9]; + + require_keys_eq!( + *auction_initial_offer_token_info.key, + active_auction_inner_info.initial_offer_token, + MatchingEngineError::InitialOfferTokenMismatch + ); + + let auction_initial_participant_info = &accounts[10]; + + if auction_initial_participant_info.key != &active_auction.prepared_by { + return Err(ErrorCode::ConstraintAddress.into()).map_err(|e: Error| { + e.with_account_name("initial_participant").with_pubkeys(( + *auction_initial_participant_info.key, + active_auction.prepared_by, + )) + }); + }; + + let to_endpoint = super::helpers::try_live_endpoint_account(&accounts[11], "to_endpoint")?; + + // We ensure that the destination endpoint account is what we expect given + // the target protocol found in the active auction account data. + require_eq!( + to_endpoint.protocol, + active_auction.target_protocol, + MatchingEngineError::InvalidTargetRouter + ); + + // This CCTP domain will be used later in the instruction to invoke CCTP + // deposit for burn. But we assign this value here so we can revert early + // based on which kind of message protocol the registered destination + // endpoint is. + let destination_cctp_domain = match to_endpoint.protocol { + MessageProtocol::Cctp { domain } => domain, + _ => { + return Err(MatchingEngineError::InvalidCctpEndpoint.into()) + .map_err(|e: Error| e.with_account_name("to_endpoint")) + } + }; + + // TODO: Consider grouping with the wormhole shim account infos? + let _post_message_shim_program_info = &accounts[12]; + + let core_bridge_emitter_sequence_info = &accounts[13]; + let shim_message_info = &accounts[14]; + + // These accounts will be used to invoke the CCTP Token Messenger Minter + // program to burn USDC (to be minted at the destination network). + let cctp_account_infos = &accounts[16..25]; + + // These accounts do not actually have to be in any particular order even if + // an updated Anchor IDL specifies an order. + let _wormhole_shim_account_infos = &accounts[25..28]; + + // Do checks + // ------------------------------------------------------------------------------------------------ + + let cctp_token_messenger_minter_program_info = &accounts[15]; + + // Check cctp deposit for burn token messenger minter program address + if cctp_token_messenger_minter_program_info.key != &CCTP_TOKEN_MESSENGER_MINTER_PROGRAM_ID { + return Err(ErrorCode::ConstraintAddress.into()).map_err(|e: Error| { + e.with_account_name("token_messenger_minter_program") + .with_pubkeys(( + *cctp_token_messenger_minter_program_info.key, + CCTP_TOKEN_MESSENGER_MINTER_PROGRAM_ID, + )) + }); + }; + + // TODO: Do we have to verify the CCTP message transmitter program is passed + // in? + + //////////////////////////////////////////////////////////////////////////// + // + // TODO: This execute order logic has been taken from the original execute + // order instructions. We plan on using a helper method instead of copy- + // pasting the same logic here. + // + //////////////////////////////////////////////////////////////////////////// + + // Prepare the execute order (get the user amount, fill, and order executed event) + let current_slot = Clock::get().unwrap().slot; + + // We extend the grace period for locally executed orders. Reserving a sequence number for + // the fast fill will most likely require an additional transaction, so this buffer allows + // the best offer participant to perform his duty without the risk of getting slashed by + // another executor. + let additional_grace_period = match active_auction.target_protocol { + MessageProtocol::Local { .. } => { + crate::EXECUTE_FAST_ORDER_LOCAL_ADDITIONAL_GRACE_PERIOD.into() + } + _ => None, + }; + + let DepositPenalty { + penalty, + user_reward, + } = utils::auction::compute_deposit_penalty( + &auction_config, + active_auction_inner_info, + current_slot, + additional_grace_period, + ); + + let init_auction_fee = fast_market_order.init_auction_fee; + + let user_amount = active_auction_inner_info + .amount_in + .saturating_sub(active_auction_inner_info.offer_price) + .saturating_sub(init_auction_fee) + .saturating_add(user_reward); + + // Keep track of the remaining amount in the custody token account. Whatever remains will go + // to the executor. + + let custody_token = + TokenAccount::try_deserialize(&mut &auction_custody_info.data.borrow()[..])?; + let mut remaining_custodied_amount = custody_token.amount.saturating_sub(user_amount); + + // Offer price + security deposit was checked in placing the initial offer. + let mut deposit_and_fee = active_auction_inner_info + .offer_price + .saturating_add(active_auction_inner_info.security_deposit) + .saturating_sub(user_reward); + + let penalized = penalty > 0; + + if penalized && auction_best_offer_token_info.key != executor_token_info.key { + deposit_and_fee = deposit_and_fee.saturating_sub(penalty); + } + + // Need these seeds in order to transfer tokens and then set authority of auction custody token account to the custodian + let auction_signer_seeds = &[ + Auction::SEED_PREFIX, + active_auction.vaa_hash.as_ref(), + &[active_auction.bump], + ]; + + // If the initial offer token account doesn't exist anymore, we have nowhere to send the + // init auction fee. The executor will get these funds instead. + // + // We check that this is a legitimate token account. + if utils::checked_deserialize_token_account( + auction_initial_offer_token_info, + &common::USDC_MINT, + ) + .is_some() + { + if auction_best_offer_token_info.key() != auction_initial_offer_token_info.key() { + // Pay the auction initiator their fee. + let transfer_ix = spl_token::instruction::transfer( + &spl_token::ID, + &auction_custody_info.key(), + &auction_initial_offer_token_info.key(), + &active_auction_info.key(), + &[], + init_auction_fee, + ) + .unwrap(); + + invoke_signed_unchecked(&transfer_ix, accounts, &[auction_signer_seeds])?; + // Because the initial offer token was paid this fee, we account for it here. + remaining_custodied_amount = + remaining_custodied_amount.saturating_sub(init_auction_fee); + } else { + // Add it to the reimbursement. + deposit_and_fee = deposit_and_fee + .checked_add(init_auction_fee) + .ok_or_else(|| MatchingEngineError::U64Overflow)?; + } + } + + // Return the security deposit and the fee to the highest bidder. + if auction_best_offer_token_info.key == executor_token_info.key { + // If the best offer token is equal to the executor token, just send whatever remains in + // the custody token account. + // + // NOTE: This will revert if the best offer token does not exist. But this will present + // an opportunity for another executor to execute this order and take what the best + // offer token would have received. + let transfer_ix = spl_token::instruction::transfer( + &spl_token::ID, + &auction_custody_info.key(), + &auction_best_offer_token_info.key(), + &active_auction_info.key(), + &[], + deposit_and_fee, + ) + .unwrap(); + msg!( + "Sending deposit and fee amount {} to best offer token account", + deposit_and_fee + ); + invoke_signed_unchecked(&transfer_ix, accounts, &[auction_signer_seeds])?; + } else { + // Otherwise, send the deposit and fee to the best offer token. If the best offer token + // doesn't exist at this point (which would be unusual), we will reserve these funds + // for the executor token. + if utils::checked_deserialize_token_account( + auction_best_offer_token_info, + &common::USDC_MINT, + ) + .is_some() + { + let transfer_ix = spl_token::instruction::transfer( + &spl_token::ID, + &auction_custody_info.key(), + &auction_best_offer_token_info.key(), + &active_auction_info.key(), + &[], + deposit_and_fee, + ) + .unwrap(); + msg!( + "Sending deposit and fee {} to best offer token account", + deposit_and_fee + ); + invoke_signed_unchecked(&transfer_ix, accounts, &[auction_signer_seeds])?; + remaining_custodied_amount = remaining_custodied_amount.saturating_sub(deposit_and_fee); + } + + // And pay the executor whatever remains in the auction custody token account. + if remaining_custodied_amount > 0 { + let instruction = spl_token::instruction::transfer( + &spl_token::ID, + auction_custody_info.key, + executor_token_info.key, + &active_auction_info.key(), + &[], + remaining_custodied_amount, + ) + .unwrap(); + msg!( + "Sending remaining custodied amount {} to executor token account", + remaining_custodied_amount + ); + invoke_signed_unchecked(&instruction, accounts, &[auction_signer_seeds])?; + } + } + + // Set the authority of the custody token account to the custodian. He will take over from + // here. + let set_authority_ix = spl_token::instruction::set_authority( + &spl_token::ID, + auction_custody_info.key, + Some(custodian_info.key), + spl_token::instruction::AuthorityType::AccountOwner, + active_auction_info.key, + &[], + ) + .unwrap(); + + invoke_signed_unchecked(&set_authority_ix, accounts, &[auction_signer_seeds])?; + + // Set the active auction status + active_auction.status = AuctionStatus::Completed { + slot: current_slot, + execute_penalty: if penalized { penalty.into() } else { None }, + }; + + let active_auction_info_data: &mut [u8] = &mut active_auction_info.data.borrow_mut(); + let mut active_auction_cursor = std::io::Cursor::new(active_auction_info_data); + active_auction.try_serialize(&mut active_auction_cursor)?; + + let fill = Fill { + source_chain: active_auction_inner_info.source_chain, + order_sender: fast_market_order.sender, + redeemer: fast_market_order.redeemer, + redeemer_message: fast_market_order.redeemer_message + [..usize::from(fast_market_order.redeemer_message_length)] + .to_vec() + .try_into() + .unwrap(), + }; + + //////////////////////////////////////////////////////////////////////////// + // + // TODO: See above TODO. This is the end of the copy-pasted logic. + // + //////////////////////////////////////////////////////////////////////////// + + // TODO: Write test that passes in random keypair for CCTP message account + // to show that not having to check the PDA address is safe. + let (_, new_cctp_message_bump) = Pubkey::find_program_address( + &[ + common::CCTP_MESSAGE_SEED_PREFIX, + active_auction_key.as_ref(), + ], + &ID, + ); + + let usdc_mint_info = super::helpers::try_usdc_account(&cctp_account_infos[0])?; + let cctp_token_messenger_minter_sender_authority_info = &cctp_account_infos[1]; + let cctp_message_transmitter_config_info = &cctp_account_infos[2]; + let cctp_token_messenger_info = &cctp_account_infos[3]; + let cctp_remote_token_messenger_info = &cctp_account_infos[4]; + let cctp_token_minter_info = &cctp_account_infos[5]; + let cctp_local_token_info = &cctp_account_infos[6]; + let cctp_token_messenger_minter_event_authority_info = &cctp_account_infos[7]; + let cctp_message_transmitter_program_info = &cctp_account_infos[8]; + + let system_program_info = &accounts[29]; + let token_program_info = &accounts[30]; + + burn_and_post( + CpiContext::new_with_signer( + cctp_token_messenger_minter_program_info.to_account_info(), + common::wormhole_cctp_solana::cpi::DepositForBurnWithCaller { + burn_token_owner: custodian_info.to_account_info(), + payer: payer_info.to_account_info(), + token_messenger_minter_sender_authority: + cctp_token_messenger_minter_sender_authority_info.to_account_info(), + burn_token: auction_custody_info.to_account_info(), + message_transmitter_config: cctp_message_transmitter_config_info.to_account_info(), + token_messenger: cctp_token_messenger_info.to_account_info(), + remote_token_messenger: cctp_remote_token_messenger_info.to_account_info(), + token_minter: cctp_token_minter_info.to_account_info(), + local_token: cctp_local_token_info.to_account_info(), + mint: usdc_mint_info.to_account_info(), + cctp_message: new_cctp_message_info.to_account_info(), + message_transmitter_program: cctp_message_transmitter_program_info + .to_account_info(), + token_messenger_minter_program: cctp_token_messenger_minter_program_info + .to_account_info(), + token_program: token_program_info.to_account_info(), + system_program: system_program_info.to_account_info(), + event_authority: cctp_token_messenger_minter_event_authority_info.to_account_info(), + }, + &[ + Custodian::SIGNER_SEEDS, + &[ + common::CCTP_MESSAGE_SEED_PREFIX, + active_auction_key.as_ref(), + &[new_cctp_message_bump], + ], + ], + ), + common::wormhole_cctp_solana::cpi::BurnAndPublishArgs { + burn_source: None, + destination_caller: to_endpoint.address, + destination_cctp_domain, + amount: user_amount, + mint_recipient: to_endpoint.mint_recipient, + wormhole_message_nonce: common::WORMHOLE_MESSAGE_NONCE, + payload: fill.to_vec(), + }, + PostMessageAccounts { + emitter: custodian_info.key, + payer: payer_info.key, + message: shim_message_info.key, + sequence: core_bridge_emitter_sequence_info.key, + }, + accounts, + )?; + + // Skip emitting the order executed event because we're using a shim + + // Finally close the account since it is no longer needed. + let close_account_ix = spl_token::instruction::close_account( + &spl_token::ID, + auction_custody_info.key, + auction_initial_participant_info.key, + custodian_info.key, + &[], + ) + .unwrap(); + + invoke_signed_unchecked(&close_account_ix, accounts, &[Custodian::SIGNER_SEEDS]) + .map_err(Into::into) +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_instruction() { + ExecuteOrderCctpShim { + program_id: &Default::default(), + accounts: ExecuteOrderShimAccounts { + signer: &Default::default(), + cctp_message: &Default::default(), + custodian: &Default::default(), + fast_market_order: &Default::default(), + active_auction: &Default::default(), + active_auction_custody_token: &Default::default(), + active_auction_config: &Default::default(), + active_auction_best_offer_token: &Default::default(), + executor_token: &Default::default(), + initial_offer_token: &Default::default(), + initial_participant: &Default::default(), + to_router_endpoint: &Default::default(), + post_message_shim_program: &Default::default(), + core_bridge_emitter_sequence: &Default::default(), + post_shim_message: &Default::default(), + cctp_deposit_for_burn_mint: &Default::default(), + cctp_deposit_for_burn_token_messenger_minter_sender_authority: &Default::default(), + cctp_deposit_for_burn_message_transmitter_config: &Default::default(), + cctp_deposit_for_burn_token_messenger: &Default::default(), + cctp_deposit_for_burn_remote_token_messenger: &Default::default(), + cctp_deposit_for_burn_token_minter: &Default::default(), + cctp_deposit_for_burn_local_token: &Default::default(), + cctp_deposit_for_burn_token_messenger_minter_event_authority: &Default::default(), + cctp_deposit_for_burn_token_messenger_minter_program: &Default::default(), + cctp_deposit_for_burn_message_transmitter_program: &Default::default(), + core_bridge_program: &Default::default(), + core_bridge_config: &Default::default(), + core_bridge_fee_collector: &Default::default(), + post_message_shim_event_authority: &Default::default(), + system_program: &Default::default(), + token_program: &Default::default(), + clock: &Default::default(), + }, + } + .instruction(); + } +} diff --git a/solana/programs/matching-engine/src/fallback/processor/helpers.rs b/solana/programs/matching-engine/src/fallback/processor/helpers.rs new file mode 100644 index 000000000..a6ab86739 --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/helpers.rs @@ -0,0 +1,399 @@ +use std::cell::Ref; + +use anchor_lang::{prelude::*, Discriminator}; +use anchor_spl::token::spl_token; +use solana_program::{ + entrypoint::ProgramResult, + instruction::{AccountMeta, Instruction}, + keccak, + program::invoke_signed_unchecked, + program_pack::Pack, + system_instruction, +}; +use wormhole_svm_shim::verify_vaa; + +use crate::{ + error::MatchingEngineError, + state::{AuctionConfig, Custodian, FastMarketOrder, MessageProtocol, RouterEndpoint}, + ID, +}; + +#[inline(always)] +pub fn require_min_account_infos_len(accounts: &[AccountInfo], at_least_len: usize) -> Result<()> { + if accounts.len() < at_least_len { + return Err(ErrorCode::AccountNotEnoughKeys.into()); + } + + Ok(()) +} + +#[inline(always)] +pub fn require_owned_by_this_program(account: &AccountInfo, account_name: &str) -> Result<()> { + if account.owner != &ID { + return Err(ErrorCode::ConstraintOwner.into()) + .map_err(|e: Error| e.with_account_name(account_name)); + } + + Ok(()) +} + +#[inline(always)] +pub fn try_custodian_account( + custodian_info: &AccountInfo, + check_if_paused: bool, +) -> Result> { + super::helpers::require_owned_by_this_program(custodian_info, "custodian")?; + + let custodian = + Custodian::try_deserialize(&mut &custodian_info.data.borrow()[..]).map(Box::new)?; + + // Make sure the custodian is not paused. + if check_if_paused && custodian.paused { + return Err(MatchingEngineError::Paused.into()); + } + + Ok(custodian) +} + +#[inline(always)] +pub fn try_auction_config_account( + auction_config_info: &AccountInfo, + expected_config_id: Option, +) -> Result> { + super::helpers::require_owned_by_this_program(auction_config_info, "auction_config")?; + + let auction_config = + AuctionConfig::try_deserialize(&mut &auction_config_info.data.borrow()[..]) + .map(Box::new)?; + + // Make sure the custodian is not paused. + if let Some(expected_config_id) = expected_config_id { + if auction_config.id != expected_config_id { + msg!("Auction config id is invalid"); + return Err(ErrorCode::ConstraintRaw.into()) + .map_err(|e: Error| e.with_account_name("auction_config")); + } + } + + Ok(auction_config) +} + +#[inline(always)] +pub fn try_live_endpoint_account( + endpoint_info: &AccountInfo, + endpoint_name: &str, +) -> Result> { + super::helpers::require_owned_by_this_program(endpoint_info, endpoint_name)?; + + let endpoint = + RouterEndpoint::try_deserialize(&mut &endpoint_info.data.borrow()[..]).map(Box::new)?; + + if endpoint.protocol == MessageProtocol::None { + return Err(MatchingEngineError::EndpointDisabled.into()); + } + + Ok(endpoint) +} + +#[inline(always)] +pub fn try_live_endpoint_accounts_path( + from_endpoint_info: &AccountInfo, + to_endpoint_info: &AccountInfo, +) -> Result<(Box, Box)> { + let from_endpoint = try_live_endpoint_account(from_endpoint_info, "from_endpoint")?; + let to_endpoint = try_live_endpoint_account(to_endpoint_info, "to_endpoint")?; + + if from_endpoint.chain == to_endpoint.chain { + return Err(MatchingEngineError::SameEndpoint.into()); + } + + Ok((from_endpoint, to_endpoint)) +} + +pub fn try_usdc_account<'a, 'b>(usdc_info: &'a AccountInfo<'b>) -> Result<&'a AccountInfo<'b>> { + if usdc_info.key != &common::USDC_MINT { + return Err(MatchingEngineError::InvalidMint.into()) + .map_err(|e: Error| e.with_account_name("usdc")); + } + + Ok(usdc_info) +} + +/// Read from an account info +pub fn try_fast_market_order_account<'a>( + fast_market_order_info: &'a AccountInfo, +) -> Result> { + let data = fast_market_order_info.data.borrow(); + + if data.len() < 8 { + return Err(ErrorCode::AccountDiscriminatorNotFound.into()); + } + + if data[0..8] != FastMarketOrder::DISCRIMINATOR { + return Err(ErrorCode::AccountDiscriminatorMismatch.into()); + } + + // TODO: Move up? + super::helpers::require_owned_by_this_program(fast_market_order_info, "fast_market_order")?; + + Ok(Ref::map(data, |data| { + bytemuck::from_bytes( + &data[8..8_usize + .checked_add(std::mem::size_of::()) + .unwrap()], + ) + })) +} + +pub fn invoke_verify_hash( + verify_vaa_shim_program_index: usize, + wormhole_guardian_set_index: usize, + shim_guardian_signatures_index: usize, + guardian_set_bump: u8, + vaa_message_digest: keccak::Hash, + accounts: &[AccountInfo], +) -> Result<()> { + if accounts[verify_vaa_shim_program_index].key + != &wormhole_svm_definitions::solana::VERIFY_VAA_SHIM_PROGRAM_ID + { + return Err(ErrorCode::ConstraintAddress.into()) + .map_err(|e: Error| e.with_account_name("verify_vaa_shim_program")); + } + + let verify_hash_ix = verify_vaa::VerifyHash { + program_id: &wormhole_svm_definitions::solana::VERIFY_VAA_SHIM_PROGRAM_ID, + accounts: verify_vaa::VerifyHashAccounts { + guardian_set: accounts[wormhole_guardian_set_index].key, + guardian_signatures: accounts[shim_guardian_signatures_index].key, + }, + data: verify_vaa::VerifyHashData::new(guardian_set_bump, vaa_message_digest), + } + .instruction(); + + invoke_signed_unchecked(&verify_hash_ix, accounts, &[]).map_err(Into::into) +} + +pub fn create_account_reliably( + payer_key: &Pubkey, + account_key: &Pubkey, + current_lamports: u64, + data_len: usize, + accounts: &[AccountInfo], + program_id: &Pubkey, + signer_seeds: &[&[&[u8]]], +) -> ProgramResult { + let lamports = Rent::get().unwrap().minimum_balance(data_len); + + if current_lamports == 0 { + let ix = system_instruction::create_account( + payer_key, + account_key, + lamports, + u64::try_from(data_len).unwrap(), // lol it won't do ::from + program_id, + ); + + invoke_signed_unchecked(&ix, accounts, signer_seeds)?; + } else { + const MAX_CPI_DATA_LEN: usize = 36; + + // Perform up to three CPIs: + // 1. Transfer lamports from payer to account (may not be necessary). + // 2. Allocate data to the account. + // 3. Assign the account owner to this program. + // + // The max length of instruction data is 36 bytes among the three + // instructions, so we will reuse the same allocated memory for all. + let mut cpi_ix = Instruction { + program_id: solana_program::system_program::ID, + accounts: vec![ + AccountMeta::new(*payer_key, true), + AccountMeta::new(*account_key, true), + ], + data: Vec::with_capacity(MAX_CPI_DATA_LEN), + }; + + // Safety: Because capacity is > 12, it is safe to set this length. + unsafe { + cpi_ix.data.set_len(12); + } + + // We will have to transfer the remaining lamports needed to cover rent + // for the account. + let lamport_diff = lamports.saturating_sub(current_lamports); + + // Only invoke transfer if there are lamports required. + if lamport_diff != 0 { + let cpi_data = &mut cpi_ix.data; + + // Safety: Because the capacity is > 4, it is safe to write to the + // first 4 elements, which covers the System program instruction + // selectors. + // + // The transfer and allocate instructions are 12 bytes long: + // - 4 bytes for the discriminator + // - 8 bytes for the lamports (transfer) or data length (allocate) + // + // The last 8 bytes will be copied to the data slice. + unsafe { + core::ptr::write_bytes(cpi_data.as_mut_ptr(), 0, 4); + } + cpi_data[0] = 2; // transfer selector + cpi_data[4..12].copy_from_slice(&lamport_diff.to_le_bytes()); + + invoke_signed_unchecked(&cpi_ix, accounts, signer_seeds)?; + } + + let cpi_accounts = &mut cpi_ix.accounts; + + // Safety: Setting the length reduces the previous length from the last + // CPI call. + // + // Both allocate and assign instructions require one account (the + // account being created). + unsafe { + cpi_accounts.set_len(1); + } + + // Because the payer and account are writable signers, we can simply + // overwrite the pubkey of the first account. + cpi_accounts[0].pubkey = *account_key; + + { + let cpi_data = &mut cpi_ix.data; + + cpi_data[0] = 8; // allocate selector + cpi_data[4..12].copy_from_slice(&u64::try_from(data_len).unwrap().to_le_bytes()); + // ↑ + // It won't do ::from but it'll do ::try_from + invoke_signed_unchecked(&cpi_ix, accounts, signer_seeds)?; + } + + { + let cpi_data = &mut cpi_ix.data; + + // Safety: The capacity of this vector is 36. This data will be + // overwritten for the next CPI call. + unsafe { + cpi_data.set_len(MAX_CPI_DATA_LEN); + } + + cpi_data[0] = 1; // assign selector + cpi_data[4..36].copy_from_slice(&program_id.to_bytes()); + + invoke_signed_unchecked(&cpi_ix, accounts, signer_seeds)?; + } + } + + Ok(()) +} + +/// Create a USDC token account reliably. +/// +/// This function creates a USDC token account and initializes it with the given owner. +/// +/// # Arguments +/// +/// * `payer_key` - The pubkey of the account that will pay for the token account. +/// * `token_account_key` - The pubkey of the account to create. +/// * `token_account_owner_key` - The account info of the owner of the token account. +/// * `token_account_lamports` - Current lamports on token account. +/// * `accounts` - The accounts to be used in the CPI. +/// * `signer_seeds` - The signer seeds to be used in the CPI. +pub fn create_usdc_token_account_reliably( + payer_key: &Pubkey, + token_account_key: &Pubkey, + token_account_owner_key: &Pubkey, + token_account_lamports: u64, + accounts: &[AccountInfo], + signer_seeds: &[&[&[u8]]], +) -> ProgramResult { + create_account_reliably( + payer_key, + token_account_key, + token_account_lamports, + spl_token::state::Account::LEN, + accounts, + &spl_token::ID, + signer_seeds, + )?; + + let init_token_account_ix = spl_token::instruction::initialize_account3( + &spl_token::ID, + token_account_key, + &common::USDC_MINT, + token_account_owner_key, + ) + .unwrap(); + + solana_program::program::invoke_signed_unchecked(&init_token_account_ix, accounts, &[]) +} + +/// VaaMessageBodyHeader for the digest calculation +/// +/// This is the header of the vaa message body. It is used to calculate the +/// digest of the fast market order. +#[derive(Debug)] +pub struct VaaMessageBodyHeader { + pub consistency_level: u8, + pub timestamp: u32, + pub sequence: u64, + pub emitter_chain: u16, + pub emitter_address: [u8; 32], +} + +impl VaaMessageBodyHeader { + // TODO: Remove + pub fn new( + consistency_level: u8, + timestamp: u32, + sequence: u64, + emitter_chain: u16, + emitter_address: [u8; 32], + ) -> Self { + Self { + consistency_level, + timestamp, + sequence, + emitter_chain, + emitter_address, + } + } + + /// This function creates both the message body for the fast market order, including the payload. + pub fn message_body(&self, fast_market_order: &FastMarketOrder) -> Vec { + let mut message_body = vec![]; + message_body.extend_from_slice(&self.timestamp.to_be_bytes()); + message_body.extend_from_slice(&[0, 0, 0, 0]); // 0 nonce + message_body.extend_from_slice(&self.emitter_chain.to_be_bytes()); + message_body.extend_from_slice(&self.emitter_address); + message_body.extend_from_slice(&self.sequence.to_be_bytes()); + message_body.extend_from_slice(&[self.consistency_level]); + message_body.push(11_u8); + message_body.extend_from_slice(&fast_market_order.amount_in.to_be_bytes()); + message_body.extend_from_slice(&fast_market_order.min_amount_out.to_be_bytes()); + message_body.extend_from_slice(&fast_market_order.target_chain.to_be_bytes()); + message_body.extend_from_slice(&fast_market_order.redeemer); + message_body.extend_from_slice(&fast_market_order.sender); + message_body.extend_from_slice(&fast_market_order.refund_address); + message_body.extend_from_slice(&fast_market_order.max_fee.to_be_bytes()); + message_body.extend_from_slice(&fast_market_order.init_auction_fee.to_be_bytes()); + message_body.extend_from_slice(&fast_market_order.deadline.to_be_bytes()); + message_body.extend_from_slice(&fast_market_order.redeemer_message_length.to_be_bytes()); + if fast_market_order.redeemer_message_length > 0 { + message_body.extend_from_slice( + &fast_market_order.redeemer_message + [..usize::from(fast_market_order.redeemer_message_length)], + ); + } + message_body + } + + /// The digest is the hash of the message hash. + pub fn digest(&self, fast_market_order: &FastMarketOrder) -> keccak::Hash { + wormhole_svm_definitions::compute_keccak_digest( + keccak::hashv(&[&self.message_body(fast_market_order)]), + None, + ) + } +} diff --git a/solana/programs/matching-engine/src/fallback/processor/initialize_fast_market_order.rs b/solana/programs/matching-engine/src/fallback/processor/initialize_fast_market_order.rs new file mode 100644 index 000000000..ee1b7c2cb --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/initialize_fast_market_order.rs @@ -0,0 +1,215 @@ +use anchor_lang::{prelude::*, Discriminator}; +use bytemuck::{Pod, Zeroable}; +use solana_program::{instruction::Instruction, keccak}; + +use crate::{state::FastMarketOrder, ID}; + +const NUM_ACCOUNTS: usize = 6; + +pub struct InitializeFastMarketOrderAccounts<'ix> { + /// Lamports from this signer will be used to create the new fast market + /// order account. This account will be the only authority allowed to + /// close this account. + // TODO: Rename to "payer". + pub signer: &'ix Pubkey, // 0 + /// Wormhole guardian set account used to check recovered pubkeys using + /// [Self::guardian_set_signatures]. + // TODO: Rename to "wormhole_guardian_set" + pub verify_vaa_shim_program: &'ix Pubkey, // 1 + pub guardian_set: &'ix Pubkey, // 2 + /// The guardian set signatures of fast market order VAA. + // TODO: Rename to "shim_guardian_signatures". + pub guardian_set_signatures: &'ix Pubkey, // 3 + /// The fast market order account pubkey (that is created by the + /// instruction). + // TODO: Rename to "new_fast_market_order". + pub fast_market_order_account: &'ix Pubkey, // 4 + // TODO: Remove. + pub system_program: &'ix Pubkey, // 5 +} + +#[derive(Debug, Copy, Clone, Pod, Zeroable)] +#[repr(C)] +pub struct InitializeFastMarketOrderData { + /// The fast market order as the bytemuck struct + pub fast_market_order: FastMarketOrder, + /// The guardian set bump + pub guardian_set_bump: u8, + /// Padding to ensure bytemuck deserialization works + _padding: [u8; 7], +} + +impl InitializeFastMarketOrderData { + // Adds the padding to the InitializeFastMarketOrderData + // TODO: change FastMarketOrder to FastMarketOrderParams. + pub fn new(fast_market_order: FastMarketOrder, guardian_set_bump: u8) -> Self { + Self { + fast_market_order, + guardian_set_bump, + _padding: Default::default(), + } + } +} + +/// Initializes the fast market order account. +/// +/// The verify shim program first checks that the digest of the fast market +/// order is correct, and that the guardian signature is correct and +/// recoverable. If this is the case, the fast market order account is created. +/// The fast market order account is owned by the matching engine program. It +/// can be closed by the close fast market order instruction, which returns the +/// lamports to the close account refund recipient. +pub struct InitializeFastMarketOrder<'ix> { + pub program_id: &'ix Pubkey, + pub accounts: InitializeFastMarketOrderAccounts<'ix>, + pub data: InitializeFastMarketOrderData, +} + +impl InitializeFastMarketOrder<'_> { + pub fn instruction(&self) -> Instruction { + let InitializeFastMarketOrderAccounts { + signer: payer, + fast_market_order_account: new_fast_market_order, + guardian_set: wormhole_guardian_set, + guardian_set_signatures: shim_guardian_signatures, + verify_vaa_shim_program, + system_program: _, + } = self.accounts; + + let accounts = vec![ + AccountMeta::new(*payer, true), + AccountMeta::new_readonly(*verify_vaa_shim_program, false), + AccountMeta::new_readonly(*wormhole_guardian_set, false), + AccountMeta::new_readonly(*shim_guardian_signatures, false), + AccountMeta::new(*new_fast_market_order, false), + AccountMeta::new_readonly(solana_program::system_program::ID, false), + ]; + debug_assert_eq!(accounts.len(), NUM_ACCOUNTS); + + Instruction { + program_id: *self.program_id, + accounts, + data: super::FallbackMatchingEngineInstruction::InitializeFastMarketOrder(&self.data) + .to_vec(), + } + } +} + +#[inline(never)] +pub(super) fn process( + accounts: &[AccountInfo], + data: &InitializeFastMarketOrderData, +) -> Result<()> { + super::helpers::require_min_account_infos_len(accounts, NUM_ACCOUNTS)?; + + let fast_market_order = &data.fast_market_order; + + // Generate the VAA digest, which will be used to verify the guardian + // signatures. + let fast_market_order_vaa_digest = fast_market_order.digest(); + + // This payer will send lamports to the new fast market order account and + // will be the "owner" of this account. Only this account can close the + // fast market order account. + let payer_info = &accounts[0]; + + // Verify the VAA digest with the Verify VAA shim program. + super::helpers::invoke_verify_hash( + 1, // verify_vaa_shim_program_index + 2, // wormhole_guardian_set_index + 3, // shim_guardian_signatures_index + data.guardian_set_bump, + keccak::Hash(fast_market_order_vaa_digest), + accounts, + )?; + + // Create the new fast market order account and serialize the instruction + // data into it. + + let new_fast_market_order_info = &accounts[4]; + let (expected_fast_market_order_key, fast_market_order_bump) = Pubkey::find_program_address( + &[ + FastMarketOrder::SEED_PREFIX, + &fast_market_order_vaa_digest, + fast_market_order.close_account_refund_recipient.as_ref(), + ], + &ID, + ); + + const DISCRIMINATOR_LEN: usize = FastMarketOrder::DISCRIMINATOR.len(); + const FAST_MARKET_ORDER_DATA_LEN: usize = + DISCRIMINATOR_LEN + std::mem::size_of::(); + + super::helpers::create_account_reliably( + payer_info.key, + &expected_fast_market_order_key, + new_fast_market_order_info.lamports(), + FAST_MARKET_ORDER_DATA_LEN, + accounts, + &ID, + &[&[ + FastMarketOrder::SEED_PREFIX, + &fast_market_order_vaa_digest, + // TODO: Replace with payer_info.key. + fast_market_order.close_account_refund_recipient.as_ref(), + &[fast_market_order_bump], + ]], + )?; + + let mut new_fast_market_order_info_data = new_fast_market_order_info.try_borrow_mut_data()?; + + // Write provided fast market order data to account starting with its + // discriminator. + new_fast_market_order_info_data[0..DISCRIMINATOR_LEN] + .copy_from_slice(&FastMarketOrder::DISCRIMINATOR); + new_fast_market_order_info_data[DISCRIMINATOR_LEN..FAST_MARKET_ORDER_DATA_LEN] + .copy_from_slice(bytemuck::bytes_of(fast_market_order)); + + Ok(()) +} + +#[cfg(test)] +mod test { + use crate::state::FastMarketOrderParams; + + use super::*; + + #[test] + fn test_instruction() { + InitializeFastMarketOrder { + program_id: &Default::default(), + accounts: InitializeFastMarketOrderAccounts { + signer: &Default::default(), + fast_market_order_account: &Default::default(), + verify_vaa_shim_program: &Default::default(), + guardian_set: &Default::default(), + guardian_set_signatures: &Default::default(), + system_program: &Default::default(), + }, + data: InitializeFastMarketOrderData::new( + FastMarketOrder::new(FastMarketOrderParams { + amount_in: Default::default(), + min_amount_out: Default::default(), + deadline: Default::default(), + target_chain: Default::default(), + redeemer_message_length: Default::default(), + redeemer: Default::default(), + sender: Default::default(), + refund_address: Default::default(), + max_fee: Default::default(), + init_auction_fee: Default::default(), + redeemer_message: [0; 512], + close_account_refund_recipient: Default::default(), + vaa_sequence: Default::default(), + vaa_timestamp: Default::default(), + vaa_nonce: Default::default(), + vaa_emitter_chain: Default::default(), + vaa_consistency_level: Default::default(), + vaa_emitter_address: Default::default(), + }), + Default::default(), + ), + } + .instruction(); + } +} diff --git a/solana/programs/matching-engine/src/fallback/processor/mod.rs b/solana/programs/matching-engine/src/fallback/processor/mod.rs new file mode 100644 index 000000000..3d1d7df7e --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/mod.rs @@ -0,0 +1,12 @@ +pub mod burn_and_post; +pub mod close_fast_market_order; +// TODO: Rename module to "execute_order_cctp". +pub mod execute_order; +pub mod helpers; +pub mod initialize_fast_market_order; +// TODO: Rename module to "place_initial_offer_cctp". +pub mod place_initial_offer; +pub mod prepare_order_response; +pub mod process_instruction; +pub mod settle_auction_none_cctp; +pub use process_instruction::*; diff --git a/solana/programs/matching-engine/src/fallback/processor/place_initial_offer.rs b/solana/programs/matching-engine/src/fallback/processor/place_initial_offer.rs new file mode 100644 index 000000000..715fa79c2 --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/place_initial_offer.rs @@ -0,0 +1,397 @@ +use anchor_lang::prelude::*; +use anchor_spl::token::spl_token; +use bytemuck::{Pod, Zeroable}; +use common::TRANSFER_AUTHORITY_SEED_PREFIX; +use solana_program::{instruction::Instruction, program::invoke_signed_unchecked}; + +use crate::{ + error::MatchingEngineError, + state::{Auction, AuctionInfo, AuctionStatus, MessageProtocol}, + ID, +}; + +use super::FallbackMatchingEngineInstruction; + +// TODO: Remove this. +pub use super::helpers::VaaMessageBodyHeader; + +const NUM_ACCOUNTS: usize = 13; + +// TODO: Remove this struct. Just use u64. +#[derive(Debug, Copy, Clone, Pod, Zeroable)] +#[repr(C)] +pub struct PlaceInitialOfferCctpShimData { + pub offer_price: u64, +} + +// TODO: Rename to "PlaceInitialOfferCctpV2Accounts". +#[derive(Debug, Clone, PartialEq, Eq, Copy)] +pub struct PlaceInitialOfferCctpShimAccounts<'ix> { + /// The signer account + // TODO: Rename to "payer". + pub signer: &'ix Pubkey, // 0 + /// The custodian account + pub custodian: &'ix Pubkey, // 1 + /// The auction config account + pub auction_config: &'ix Pubkey, // 2 + /// The from endpoint account + pub from_endpoint: &'ix Pubkey, // 3 + /// The to endpoint account + pub to_endpoint: &'ix Pubkey, // 4 + /// The fast market order account, which will be initialized. Seeds are + /// [FastMarketOrderState::SEED_PREFIX, auction_address.as_ref()] + pub fast_market_order: &'ix Pubkey, // 5 + /// The auction account, which will be initialized. + // TODO: Rename to "new_auction". + pub auction: &'ix Pubkey, // 6 + /// The offer token account + pub offer_token: &'ix Pubkey, // 7 + /// The auction custody token account. + // TODO: Rename to "new_auction_custody". + pub auction_custody_token: &'ix Pubkey, // 8 + /// The usdc token account + pub usdc: &'ix Pubkey, // 9 + /// The transfer authority account + pub transfer_authority: &'ix Pubkey, // 10 + /// The system program account + // TODO: Remove. + pub system_program: &'ix Pubkey, // 11 + /// The token program account + // TODO: Remove. + pub token_program: &'ix Pubkey, // 12 +} + +// TODO: Rename to "PlaceInitialOfferCctpV2". +#[derive(Debug, Clone, Copy)] +pub struct PlaceInitialOfferCctpShim<'ix> { + pub program_id: &'ix Pubkey, + pub accounts: PlaceInitialOfferCctpShimAccounts<'ix>, + pub data: PlaceInitialOfferCctpShimData, +} + +impl PlaceInitialOfferCctpShim<'_> { + pub fn instruction(&self) -> Instruction { + let PlaceInitialOfferCctpShimAccounts { + signer: payer, + transfer_authority, + custodian, + auction_config, + from_endpoint, + to_endpoint, + fast_market_order, + auction: new_auction, + offer_token, + auction_custody_token: new_auction_custody, + usdc, + system_program: _, + token_program: _, + } = self.accounts; + + let accounts = vec![ + AccountMeta::new(*payer, true), + AccountMeta::new_readonly(*custodian, false), + AccountMeta::new_readonly(*auction_config, false), + AccountMeta::new_readonly(*from_endpoint, false), + AccountMeta::new_readonly(*to_endpoint, false), + AccountMeta::new_readonly(*fast_market_order, false), + AccountMeta::new(*new_auction, false), + AccountMeta::new(*offer_token, false), + AccountMeta::new(*new_auction_custody, false), + AccountMeta::new_readonly(*usdc, false), + AccountMeta::new_readonly(*transfer_authority, false), + AccountMeta::new_readonly(solana_program::system_program::ID, false), + AccountMeta::new_readonly(spl_token::ID, false), + ]; + debug_assert_eq!(accounts.len(), NUM_ACCOUNTS); + + Instruction { + program_id: *self.program_id, + accounts, + data: FallbackMatchingEngineInstruction::PlaceInitialOfferCctpShim(&self.data).to_vec(), + } + } +} + +#[inline(never)] +pub(super) fn process( + accounts: &[AccountInfo], + data: &PlaceInitialOfferCctpShimData, +) -> Result<()> { + // Check all accounts are valid + super::helpers::require_min_account_infos_len(accounts, NUM_ACCOUNTS)?; + + // This instruction will use the payer to create the following accounts: + // 1. Auction. + // 2. Auction Custody Token Account. + let payer_info = &accounts[0]; + + let custodian = super::helpers::try_custodian_account( + &accounts[1], + true, // check_if_paused + )?; + + let auction_config = super::helpers::try_auction_config_account( + &accounts[2], + Some(custodian.auction_config_id), + )?; + + let (from_endpoint_account, to_endpoint_account) = + super::helpers::try_live_endpoint_accounts_path(&accounts[3], &accounts[4])?; + + let fast_market_order = super::helpers::try_fast_market_order_account(&accounts[5])?; + + // Verify the fast market order comes from a registered endpoint. + // TODO: Consider moving source endpoint check when creating fast market + // order account. + require_eq!( + from_endpoint_account.chain, + fast_market_order.vaa_emitter_chain, + MatchingEngineError::InvalidSourceRouter + ); + + if from_endpoint_account.address != fast_market_order.vaa_emitter_address { + return Err(MatchingEngineError::InvalidSourceRouter.into()); + } + + // Verify that the target chain has a registered endpoint. + require_eq!( + to_endpoint_account.chain, + fast_market_order.target_chain, + MatchingEngineError::InvalidTargetRouter + ); + + let new_auction_info = &accounts[6]; + + let vaa_sequence = fast_market_order.vaa_sequence; + let vaa_timestamp = fast_market_order.vaa_timestamp; + let consistency_level = fast_market_order.vaa_consistency_level; + + // Generate the VAA digest. This digest is used as the seed for the newly + // created auction account. + let vaa_message_digest = super::helpers::VaaMessageBodyHeader { + consistency_level, + timestamp: vaa_timestamp, + sequence: vaa_sequence, + emitter_chain: from_endpoint_account.chain, + emitter_address: from_endpoint_account.address, + } + .digest(&fast_market_order); + + // Derive the expected auction account key. This key is used for the auction + // custody token account seed. + let (expected_auction_key, new_auction_bump) = + Pubkey::find_program_address(&[Auction::SEED_PREFIX, &vaa_message_digest.0], &ID); + + // Check that the to endpoint is a valid protocol + match to_endpoint_account.protocol { + MessageProtocol::Cctp { .. } | MessageProtocol::Local { .. } => (), + _ => return Err(MatchingEngineError::InvalidEndpoint.into()), + } + + let offer_price = data.offer_price; + + // Check contents of fast_market_order + // TODO: Use shared method that both place initial offer instructions can + // use. + { + let deadline = i64::from(fast_market_order.deadline); + let expiration = crate::VAA_AUCTION_EXPIRATION_TIME.saturating_add(vaa_timestamp.into()); + let current_time: i64 = Clock::get().unwrap().unix_timestamp; + if !((deadline == 0 || current_time < deadline) && current_time < expiration) { + msg!("Fast market order has expired"); + return Err(MatchingEngineError::FastMarketOrderExpired.into()); + } + + if offer_price > fast_market_order.max_fee { + msg!("Offer price is too high"); + return Err(MatchingEngineError::OfferPriceTooHigh.into()); + } + } + + // We will need to move USDC from the offer token account to the custody + // token account. The custody token account will need to be created first. + let offer_token_info = &accounts[7]; + let new_auction_custody_info = &accounts[8]; + + // We will use the expected auction custody token account key to create this + // account. + let (expected_auction_custody_key, new_auction_custody_bump) = Pubkey::find_program_address( + &[ + crate::AUCTION_CUSTODY_TOKEN_SEED_PREFIX, + expected_auction_key.as_ref(), + ], + &ID, + ); + + // This account must be the USDC mint. This instruction does not refer to + // this account explicitly. It just needs to exist so that we can create the + // auction's custody token account. + super::helpers::try_usdc_account(&accounts[9])?; + + super::helpers::create_usdc_token_account_reliably( + payer_info.key, + &expected_auction_custody_key, + &expected_auction_key, + new_auction_custody_info.lamports(), + accounts, + &[&[ + crate::AUCTION_CUSTODY_TOKEN_SEED_PREFIX, + expected_auction_key.as_ref(), + &[new_auction_custody_bump], + ]], + )?; + + // This transfer authority must have been delegated authority to transfer + // USDC so it can transfer tokens to the auction custody token account. + // + // We will validate this transfer authority when we attempt to transfer USDC + // to the auction's custody account. + let _transfer_authority = &accounts[10]; + + // We will use the expected transfer authority account key to invoke the + // SPL token transfer instruction. + let (expected_transfer_authority_key, transfer_authority_bump) = Pubkey::find_program_address( + &[ + TRANSFER_AUTHORITY_SEED_PREFIX, + expected_auction_key.as_ref(), + &offer_price.to_be_bytes(), + ], + &ID, + ); + + // The total amount being transferred to the auction's custody token account + // is the order's amount and auction participant's security deposit. + let security_deposit = fast_market_order.max_fee.saturating_add( + crate::utils::auction::compute_notional_security_deposit( + &auction_config, + fast_market_order.amount_in, + ), + ); + + let transfer_ix = spl_token::instruction::transfer( + &spl_token::ID, + offer_token_info.key, + &expected_auction_custody_key, + &expected_transfer_authority_key, + &[], + fast_market_order + .amount_in + .checked_add(security_deposit) + .ok_or_else(|| MatchingEngineError::U64Overflow)?, + ) + .unwrap(); + + invoke_signed_unchecked( + &transfer_ix, + accounts, + &[&[ + TRANSFER_AUTHORITY_SEED_PREFIX, + expected_auction_key.as_ref(), + &offer_price.to_be_bytes(), + &[transfer_authority_bump], + ]], + )?; + + // Create the auction account and serialize its data into it. + super::helpers::create_account_reliably( + payer_info.key, + &expected_auction_key, + new_auction_info.lamports(), + 8 + Auction::INIT_SPACE, + accounts, + &ID, + &[&[ + Auction::SEED_PREFIX, + &vaa_message_digest.0, + &[new_auction_bump], + ]], + )?; + + let new_auction_info_data: &mut [u8] = &mut new_auction_info.data.borrow_mut(); + let mut new_auction_cursor = std::io::Cursor::new(new_auction_info_data); + + Auction { + bump: new_auction_bump, + vaa_hash: vaa_message_digest.0, + vaa_timestamp, + target_protocol: to_endpoint_account.protocol, + status: AuctionStatus::Active, + prepared_by: *payer_info.key, + info: AuctionInfo { + config_id: auction_config.id, + custody_token_bump: new_auction_custody_bump, + vaa_sequence, + source_chain: from_endpoint_account.chain, + best_offer_token: *offer_token_info.key, + initial_offer_token: *offer_token_info.key, + start_slot: Clock::get().unwrap().slot, + amount_in: fast_market_order.amount_in, + security_deposit, + offer_price, + redeemer_message_len: fast_market_order.redeemer_message_length, + destination_asset_info: Default::default(), + } + .into(), + } + .try_serialize(&mut new_auction_cursor) +} + +#[cfg(test)] +mod tests { + use crate::state::{FastMarketOrder, FastMarketOrderParams}; + + use super::*; + + #[test] + fn test_bytemuck() { + let test_fast_market_order = FastMarketOrder::new(FastMarketOrderParams { + amount_in: 1000000000000000000, + min_amount_out: 1000000000000000000, + deadline: 1000000000, + target_chain: 1, + redeemer_message_length: 0, + redeemer: [0_u8; 32], + sender: [0_u8; 32], + refund_address: [0_u8; 32], + max_fee: 0, + init_auction_fee: 0, + redeemer_message: [0_u8; 512], + close_account_refund_recipient: Pubkey::default(), + vaa_sequence: 0, + vaa_timestamp: 0, + vaa_nonce: 0, + vaa_emitter_chain: 0, + vaa_consistency_level: 0, + vaa_emitter_address: [0_u8; 32], + }); + let bytes = bytemuck::bytes_of(&test_fast_market_order); + // TODO: Maybe change this test to check serialization instead? + assert_eq!(bytes.len(), std::mem::size_of::()); + } + + #[test] + fn test_instruction() { + PlaceInitialOfferCctpShim { + program_id: &Default::default(), + accounts: PlaceInitialOfferCctpShimAccounts { + signer: &Default::default(), + custodian: &Default::default(), + auction_config: &Default::default(), + from_endpoint: &Default::default(), + to_endpoint: &Default::default(), + fast_market_order: &Default::default(), + auction: &Default::default(), + auction_custody_token: &Default::default(), + offer_token: &Default::default(), + usdc: &Default::default(), + transfer_authority: &Default::default(), + system_program: &Default::default(), + token_program: &Default::default(), + }, + data: PlaceInitialOfferCctpShimData { + offer_price: Default::default(), + }, + } + .instruction(); + } +} diff --git a/solana/programs/matching-engine/src/fallback/processor/prepare_order_response.rs b/solana/programs/matching-engine/src/fallback/processor/prepare_order_response.rs new file mode 100644 index 000000000..9c49dd8fc --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/prepare_order_response.rs @@ -0,0 +1,486 @@ +use anchor_lang::prelude::*; +use anchor_spl::token::spl_token; +use borsh::{BorshDeserialize, BorshSerialize}; +use common::{ + messages::SlowOrderResponse, + wormhole_cctp_solana::{ + cctp::message_transmitter_program::{self, ID as CCTP_MESSAGE_TRANSMITTER_PROGRAM_ID}, + cpi::ReceiveMessageArgs, + messages::Deposit, + utils::CctpMessage, + }, + wormhole_io::TypePrefixedPayload, + USDC_MINT, +}; +use ruint::aliases::U256; +use solana_program::{instruction::Instruction, keccak, program::invoke_signed_unchecked}; + +use crate::{ + error::MatchingEngineError, + fallback::helpers::{create_usdc_token_account_reliably, require_min_account_infos_len}, + state::{ + Custodian, MessageProtocol, PreparedOrderResponse, PreparedOrderResponseInfo, + PreparedOrderResponseSeeds, + }, + CCTP_MINT_RECIPIENT, ID, +}; + +const NUM_ACCOUNTS: usize = 28; + +#[derive(BorshDeserialize, BorshSerialize)] +pub struct PrepareOrderResponseCctpShimData { + pub encoded_cctp_message: Vec, + pub cctp_attestation: Vec, + pub finalized_vaa_message_args: FinalizedVaaMessageArgs, +} + +#[derive(BorshDeserialize, BorshSerialize)] +pub struct FinalizedVaaMessageArgs { + pub base_fee: u64, + pub consistency_level: u8, + pub guardian_set_bump: u8, +} + +pub struct PrepareOrderResponseCctpShimAccounts<'ix> { + pub signer: &'ix Pubkey, // 0 + pub custodian: &'ix Pubkey, // 1 + pub fast_market_order: &'ix Pubkey, // 2 + pub from_endpoint: &'ix Pubkey, // 3 + pub to_endpoint: &'ix Pubkey, // 4 + pub prepared_order_response: &'ix Pubkey, // 5 + pub prepared_custody_token: &'ix Pubkey, // 6 + pub base_fee_token: &'ix Pubkey, // 7 + pub usdc: &'ix Pubkey, // 8 + pub verify_shim_program: &'ix Pubkey, // 9 + pub guardian_set: &'ix Pubkey, // 10 + pub guardian_set_signatures: &'ix Pubkey, // 11 + pub cctp_message_transmitter_program: &'ix Pubkey, // 12 + pub cctp_message_transmitter_authority: &'ix Pubkey, // 13 + pub cctp_message_transmitter_config: &'ix Pubkey, // 14 + pub cctp_used_nonces: &'ix Pubkey, // 15 + pub cctp_message_transmitter_event_authority: &'ix Pubkey, // 16 + pub cctp_token_messenger: &'ix Pubkey, // 17 + pub cctp_remote_token_messenger: &'ix Pubkey, // 18 + pub cctp_token_minter: &'ix Pubkey, // 19 + pub cctp_local_token: &'ix Pubkey, // 20 + pub cctp_token_pair: &'ix Pubkey, // 21 + pub cctp_token_messenger_minter_custody_token: &'ix Pubkey, // 22 + pub cctp_token_messenger_minter_event_authority: &'ix Pubkey, // 23 + pub cctp_token_messenger_minter_program: &'ix Pubkey, // 24 + pub cctp_mint_recipient: &'ix Pubkey, // 25 + // TODO: Remove + pub token_program: &'ix Pubkey, // 26 + // TODO: Remove + pub system_program: &'ix Pubkey, // 27 +} + +pub struct PrepareOrderResponseCctpShim<'ix> { + pub program_id: &'ix Pubkey, + pub accounts: PrepareOrderResponseCctpShimAccounts<'ix>, + pub data: PrepareOrderResponseCctpShimData, +} + +impl<'ix> PrepareOrderResponseCctpShim<'ix> { + pub fn instruction(self) -> Instruction { + let PrepareOrderResponseCctpShimAccounts { + signer, + custodian, + fast_market_order, + from_endpoint, + to_endpoint, + prepared_order_response, + prepared_custody_token, + base_fee_token, + usdc, + verify_shim_program, + guardian_set, + guardian_set_signatures, + cctp_message_transmitter_program, + cctp_mint_recipient, + cctp_message_transmitter_authority, + cctp_message_transmitter_config, + cctp_used_nonces, + cctp_message_transmitter_event_authority, + cctp_token_messenger, + cctp_remote_token_messenger, + cctp_token_minter, + cctp_local_token, + cctp_token_pair, + cctp_token_messenger_minter_custody_token, + cctp_token_messenger_minter_event_authority, + cctp_token_messenger_minter_program, + token_program: _, + system_program: _, + } = self.accounts; + + let accounts = vec![ + AccountMeta::new(*signer, true), + AccountMeta::new_readonly(*custodian, false), + AccountMeta::new_readonly(*fast_market_order, false), + AccountMeta::new_readonly(*from_endpoint, false), + AccountMeta::new_readonly(*to_endpoint, false), + AccountMeta::new(*prepared_order_response, false), + AccountMeta::new(*prepared_custody_token, false), + AccountMeta::new_readonly(*base_fee_token, false), + AccountMeta::new_readonly(*usdc, false), + AccountMeta::new_readonly(*verify_shim_program, false), + AccountMeta::new_readonly(*guardian_set, false), + AccountMeta::new_readonly(*guardian_set_signatures, false), + AccountMeta::new_readonly(*cctp_message_transmitter_program, false), + AccountMeta::new_readonly(*cctp_message_transmitter_authority, false), + AccountMeta::new_readonly(*cctp_message_transmitter_config, false), + AccountMeta::new(*cctp_used_nonces, false), + AccountMeta::new_readonly(*cctp_message_transmitter_event_authority, false), + AccountMeta::new_readonly(*cctp_token_messenger, false), + AccountMeta::new_readonly(*cctp_remote_token_messenger, false), + AccountMeta::new_readonly(*cctp_token_minter, false), + AccountMeta::new(*cctp_local_token, false), + AccountMeta::new_readonly(*cctp_token_pair, false), + AccountMeta::new(*cctp_token_messenger_minter_custody_token, false), + AccountMeta::new_readonly(*cctp_token_messenger_minter_event_authority, false), + AccountMeta::new_readonly(*cctp_token_messenger_minter_program, false), + AccountMeta::new(*cctp_mint_recipient, false), + AccountMeta::new_readonly(spl_token::ID, false), + AccountMeta::new_readonly(solana_program::system_program::ID, false), + ]; + debug_assert_eq!(accounts.len(), NUM_ACCOUNTS); + + Instruction { + program_id: *self.program_id, + accounts, + data: super::FallbackMatchingEngineInstruction::PrepareOrderResponseCctpShim(self.data) + .to_vec(), + } + } +} + +#[inline(never)] +pub(super) fn process( + accounts: &[AccountInfo], + data: PrepareOrderResponseCctpShimData, +) -> Result<()> { + require_min_account_infos_len(accounts, NUM_ACCOUNTS)?; + + let payer_info = &accounts[0]; + + let custodian_info = &accounts[1]; + super::helpers::try_custodian_account(custodian_info, false)?; + + let fast_market_order = super::helpers::try_fast_market_order_account(&accounts[2])?; + + let (from_endpoint, to_endpoint) = + super::helpers::try_live_endpoint_accounts_path(&accounts[3], &accounts[4])?; + + // Check that the to endpoint protocol is cctp or local + require!( + matches!( + to_endpoint.protocol, + MessageProtocol::Cctp { .. } | MessageProtocol::Local { .. } + ), + MatchingEngineError::InvalidEndpoint + ); + + // The destination registered endpoint must match the fast market order's + // target chain. We cache this endpoint's info in the new prepared order + // response account. + require_eq!( + to_endpoint.chain, + fast_market_order.target_chain, + MatchingEngineError::InvalidTargetRouter + ); + + // These accounts will be created by the end of this instruction. + let new_prepared_order_response_info = &accounts[5]; + let new_prepared_custody_info = &accounts[6]; + + let base_fee_token_info = &accounts[7]; + + // Unlikely to happen, but we disallow the base fee token account to be the + // same as the new prepared custody token account. + if base_fee_token_info.key == new_prepared_custody_info.key { + return Err(MatchingEngineError::InvalidBaseFeeToken.into()); + } + + // This account must be the USDC mint. This instruction does not refer to + // this account explicitly. It just needs to exist so that we can create the + // prepared order response's custody token account. + super::helpers::try_usdc_account(&accounts[8])?; + + let PrepareOrderResponseCctpShimData { + encoded_cctp_message, + cctp_attestation, + finalized_vaa_message_args: + FinalizedVaaMessageArgs { + base_fee, + consistency_level: finalized_consistency_level, + guardian_set_bump, + }, + } = data; + + // We can generate the finalized VAA message hash using instruction data, + // the fast market order account and the CCTP message contents. The fast + // message is emitted after the finalized message atomically via the Token + // Router. + + let cctp_message = CctpMessage::parse(&encoded_cctp_message) + .map_err(|_| MatchingEngineError::InvalidCctpMessage)?; + + let fast_vaa_timestamp = fast_market_order.vaa_timestamp; + let source_chain = fast_market_order.vaa_emitter_chain; + let amount_in = fast_market_order.amount_in; + + let finalized_message_digest = wormhole_svm_definitions::compute_keccak_digest( + keccak::hashv(&[ + &fast_vaa_timestamp.to_be_bytes(), + &[0, 0, 0, 0], // 0 nonce + &source_chain.to_be_bytes(), + &fast_market_order.vaa_emitter_address, + &fast_market_order + .vaa_sequence + .saturating_sub(1) + .to_be_bytes(), + &[finalized_consistency_level], + &Deposit { + // TODO: I don't believe this is right. This needs to be the + // source token address, which can be found in the CCTP + // token pair account. + token_address: USDC_MINT.to_bytes(), + amount: U256::from(amount_in), + source_cctp_domain: cctp_message.source_domain(), + destination_cctp_domain: cctp_message.destination_domain(), + cctp_nonce: cctp_message.nonce(), + burn_source: from_endpoint.mint_recipient, + mint_recipient: CCTP_MINT_RECIPIENT.to_bytes(), + payload: SlowOrderResponse { base_fee }.to_vec().try_into()?, + } + .to_vec(), + ]), + None, + ); + + // Verify the VAA digest with the Verify VAA shim program. + super::helpers::invoke_verify_hash( + 9, // verify_vaa_shim_program_index + 10, // wormhole_guardian_set_index + 11, // shim_guardian_signatures_index + guardian_set_bump, + finalized_message_digest, + accounts, + )?; + + // Write to the prepared slow order account, which will be closed by one of + // the following instructions: + // * settle_auction_active_cctp + // * settle_auction_complete + // * settle_auction_none + + let fast_market_order_digest = fast_market_order.digest(); + + let (expected_prepared_order_response_key, prepared_order_response_bump) = + Pubkey::find_program_address( + &[ + PreparedOrderResponse::SEED_PREFIX, + &fast_market_order_digest, + ], + &ID, + ); + + super::helpers::create_account_reliably( + payer_info.key, + &expected_prepared_order_response_key, + new_prepared_order_response_info.lamports(), + PreparedOrderResponse::compute_size(fast_market_order.redeemer_message_length.into()), + accounts, + &ID, + &[&[ + PreparedOrderResponse::SEED_PREFIX, + &fast_market_order_digest, + &[prepared_order_response_bump], + ]], + )?; + + let (expected_prepared_custody_key, prepared_custody_token_bump) = Pubkey::find_program_address( + &[ + crate::PREPARED_CUSTODY_TOKEN_SEED_PREFIX, + expected_prepared_order_response_key.as_ref(), + ], + &ID, + ); + + create_usdc_token_account_reliably( + payer_info.key, + &expected_prepared_custody_key, + &expected_prepared_order_response_key, + new_prepared_custody_info.lamports(), + accounts, + &[&[ + crate::PREPARED_CUSTODY_TOKEN_SEED_PREFIX, + expected_prepared_order_response_key.as_ref(), + &[prepared_custody_token_bump], + ]], + )?; + + // Mint the USDC to the matching engine's mint recipient, which will be + // transferred to the newly created custody token account immediately after. + + let cctp_message_transmitter_program = &accounts[12]; + + if cctp_message_transmitter_program.key != &CCTP_MESSAGE_TRANSMITTER_PROGRAM_ID { + return Err(ErrorCode::ConstraintAddress.into()).map_err(|e: Error| { + e.with_account_name("token_messenger_minter_program") + .with_pubkeys(( + *cctp_message_transmitter_program.key, + CCTP_MESSAGE_TRANSMITTER_PROGRAM_ID, + )) + }); + }; + + // These accounts will be used later when we invoke the CCTP Message + // Transmitter to mint USDC via the CCTP Token Messenger Minter program. + + let cctp_message_transmitter_authority_info = &accounts[13]; + let cctp_message_transmitter_config_info = &accounts[14]; + let cctp_used_nonces_info = &accounts[15]; + let cctp_message_transmitter_event_authority_info = &accounts[16]; + let cctp_token_messenger_info = &accounts[17]; + let cctp_remote_token_messenger_info = &accounts[18]; + let cctp_token_minter_info = &accounts[19]; + let cctp_local_token_info = &accounts[20]; + let cctp_token_pair_info = &accounts[21]; + let cctp_token_messenger_minter_custody_token_info = &accounts[22]; + let cctp_token_messenger_minter_event_authority_info = &accounts[23]; + let cctp_token_messenger_minter_program_info = &accounts[24]; + let cctp_mint_recipient_info = &accounts[25]; + let token_program_info = &accounts[26]; + let system_program_info = &accounts[27]; + + message_transmitter_program::cpi::receive_token_messenger_minter_message( + CpiContext::new_with_signer( + cctp_message_transmitter_program.to_account_info(), + message_transmitter_program::cpi::ReceiveTokenMessengerMinterMessage { + payer: payer_info.to_account_info(), + caller: custodian_info.to_account_info(), + message_transmitter_authority: cctp_message_transmitter_authority_info + .to_account_info(), + message_transmitter_config: cctp_message_transmitter_config_info.to_account_info(), + used_nonces: cctp_used_nonces_info.to_account_info(), + token_messenger_minter_program: cctp_token_messenger_minter_program_info + .to_account_info(), + system_program: system_program_info.to_account_info(), + message_transmitter_event_authority: cctp_message_transmitter_event_authority_info + .to_account_info(), + message_transmitter_program: cctp_message_transmitter_program.to_account_info(), + token_messenger: cctp_token_messenger_info.to_account_info(), + remote_token_messenger: cctp_remote_token_messenger_info.to_account_info(), + token_minter: cctp_token_minter_info.to_account_info(), + local_token: cctp_local_token_info.to_account_info(), + token_pair: cctp_token_pair_info.to_account_info(), + mint_recipient: cctp_mint_recipient_info.to_account_info(), + custody_token: cctp_token_messenger_minter_custody_token_info.to_account_info(), + token_program: token_program_info.to_account_info(), + token_messenger_minter_event_authority: + cctp_token_messenger_minter_event_authority_info.to_account_info(), + }, + &[Custodian::SIGNER_SEEDS], + ), + ReceiveMessageArgs { + encoded_message: encoded_cctp_message, + attestation: cctp_attestation, + }, + )?; + + // Finally transfer minted via CCTP to prepared custody token. + let transfer_ix = spl_token::instruction::transfer( + &spl_token::ID, + &CCTP_MINT_RECIPIENT, + &expected_prepared_custody_key, + custodian_info.key, + &[], // Apparently this is only for multi-sig accounts + amount_in, + ) + .unwrap(); + + invoke_signed_unchecked(&transfer_ix, accounts, &[Custodian::SIGNER_SEEDS])?; + + // Finally serialize the prepared order response data into the newly created + // account. + let new_prepared_order_response_info_data: &mut [u8] = + &mut new_prepared_order_response_info.try_borrow_mut_data()?; + let mut new_prepared_order_response_cursor = + std::io::Cursor::new(new_prepared_order_response_info_data); + + PreparedOrderResponse { + seeds: PreparedOrderResponseSeeds { + fast_vaa_hash: fast_market_order_digest, + bump: prepared_order_response_bump, + }, + info: PreparedOrderResponseInfo { + prepared_by: *payer_info.key, + base_fee_token: *base_fee_token_info.key, + source_chain, + base_fee, + fast_vaa_timestamp, + amount_in, + sender: fast_market_order.sender, + redeemer: fast_market_order.redeemer, + init_auction_fee: fast_market_order.init_auction_fee, + }, + to_endpoint: to_endpoint.info, + redeemer_message: fast_market_order.redeemer_message + [..fast_market_order.redeemer_message_length.into()] + .to_vec(), + } + .try_serialize(&mut new_prepared_order_response_cursor) +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_instruction() { + PrepareOrderResponseCctpShim { + program_id: &Default::default(), + accounts: PrepareOrderResponseCctpShimAccounts { + signer: &Default::default(), + custodian: &Default::default(), + fast_market_order: &Default::default(), + from_endpoint: &Default::default(), + to_endpoint: &Default::default(), + prepared_order_response: &Default::default(), + prepared_custody_token: &Default::default(), + base_fee_token: &Default::default(), + usdc: &Default::default(), + verify_shim_program: &Default::default(), + guardian_set: &Default::default(), + guardian_set_signatures: &Default::default(), + cctp_message_transmitter_program: &Default::default(), + cctp_mint_recipient: &Default::default(), + cctp_message_transmitter_authority: &Default::default(), + cctp_message_transmitter_config: &Default::default(), + cctp_used_nonces: &Default::default(), + cctp_message_transmitter_event_authority: &Default::default(), + cctp_token_messenger: &Default::default(), + cctp_remote_token_messenger: &Default::default(), + cctp_token_minter: &Default::default(), + cctp_local_token: &Default::default(), + cctp_token_pair: &Default::default(), + cctp_token_messenger_minter_custody_token: &Default::default(), + cctp_token_messenger_minter_event_authority: &Default::default(), + cctp_token_messenger_minter_program: &Default::default(), + token_program: &Default::default(), + system_program: &Default::default(), + }, + data: PrepareOrderResponseCctpShimData { + encoded_cctp_message: Default::default(), + cctp_attestation: Default::default(), + finalized_vaa_message_args: FinalizedVaaMessageArgs { + base_fee: Default::default(), + consistency_level: Default::default(), + guardian_set_bump: Default::default(), + }, + }, + } + .instruction(); + } +} diff --git a/solana/programs/matching-engine/src/fallback/processor/process_instruction.rs b/solana/programs/matching-engine/src/fallback/processor/process_instruction.rs new file mode 100644 index 000000000..8287b1b2d --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/process_instruction.rs @@ -0,0 +1,159 @@ +use anchor_lang::prelude::*; +use wormhole_svm_definitions::make_anchor_discriminator; + +use crate::ID; + +use super::initialize_fast_market_order::InitializeFastMarketOrderData; +use super::place_initial_offer::PlaceInitialOfferCctpShimData; +use super::prepare_order_response::PrepareOrderResponseCctpShimData; + +const SELECTOR_SIZE: usize = 8; + +impl<'ix> FallbackMatchingEngineInstruction<'ix> { + pub const INITIALIZE_FAST_MARKET_ORDER_SELECTOR: [u8; SELECTOR_SIZE] = + make_anchor_discriminator(b"global:initialize_fast_market_order"); + pub const CLOSE_FAST_MARKET_ORDER_SELECTOR: [u8; SELECTOR_SIZE] = + make_anchor_discriminator(b"global:close_fast_market_order"); + pub const PLACE_INITIAL_OFFER_CCTP_SHIM_SELECTOR: [u8; SELECTOR_SIZE] = + make_anchor_discriminator(b"global:place_initial_offer_cctp_shim"); + pub const EXECUTE_ORDER_CCTP_SHIM_SELECTOR: [u8; SELECTOR_SIZE] = + make_anchor_discriminator(b"global:execute_order_cctp_shim"); + pub const PREPARE_ORDER_RESPONSE_CCTP_SHIM_SELECTOR: [u8; SELECTOR_SIZE] = + make_anchor_discriminator(b"global:prepare_order_response_cctp_shim"); + pub const SETTLE_AUCTION_NONE_CCTP_SHIM_SELECTOR: [u8; SELECTOR_SIZE] = + make_anchor_discriminator(b"global:settle_auction_none_cctp_shim"); +} + +pub enum FallbackMatchingEngineInstruction<'ix> { + InitializeFastMarketOrder(&'ix InitializeFastMarketOrderData), + CloseFastMarketOrder, + // TODO: Replace with u64. + PlaceInitialOfferCctpShim(&'ix PlaceInitialOfferCctpShimData), + ExecuteOrderCctpShim, + PrepareOrderResponseCctpShim(PrepareOrderResponseCctpShimData), + SettleAuctionNoneCctpShim, +} + +pub fn process_instruction( + program_id: &Pubkey, + accounts: &[AccountInfo], + instruction_data: &[u8], +) -> Result<()> { + if program_id != &ID { + return Err(ErrorCode::InvalidProgramId.into()); + } + + let instruction = FallbackMatchingEngineInstruction::deserialize(instruction_data) + .ok_or_else(|| ErrorCode::InstructionDidNotDeserialize)?; + + match instruction { + FallbackMatchingEngineInstruction::InitializeFastMarketOrder(data) => { + super::initialize_fast_market_order::process(accounts, data) + } + FallbackMatchingEngineInstruction::CloseFastMarketOrder => { + super::close_fast_market_order::process(accounts) + } + FallbackMatchingEngineInstruction::PlaceInitialOfferCctpShim(data) => { + super::place_initial_offer::process(accounts, data) + } + FallbackMatchingEngineInstruction::ExecuteOrderCctpShim => { + super::execute_order::process(accounts) + } + FallbackMatchingEngineInstruction::PrepareOrderResponseCctpShim(data) => { + super::prepare_order_response::process(accounts, data) + } + FallbackMatchingEngineInstruction::SettleAuctionNoneCctpShim => { + super::settle_auction_none_cctp::process(accounts) + } + } +} + +impl<'ix> FallbackMatchingEngineInstruction<'ix> { + pub fn deserialize(instruction_data: &'ix [u8]) -> Option { + if instruction_data.len() < SELECTOR_SIZE { + return None; + } + + match instruction_data[..SELECTOR_SIZE].try_into().unwrap() { + FallbackMatchingEngineInstruction::PLACE_INITIAL_OFFER_CCTP_SHIM_SELECTOR => { + bytemuck::try_from_bytes(&instruction_data[SELECTOR_SIZE..]) + .ok() + .map(Self::PlaceInitialOfferCctpShim) + } + FallbackMatchingEngineInstruction::INITIALIZE_FAST_MARKET_ORDER_SELECTOR => { + bytemuck::try_from_bytes(&instruction_data[SELECTOR_SIZE..]) + .ok() + .map(Self::InitializeFastMarketOrder) + } + FallbackMatchingEngineInstruction::CLOSE_FAST_MARKET_ORDER_SELECTOR => { + Some(Self::CloseFastMarketOrder) + } + FallbackMatchingEngineInstruction::EXECUTE_ORDER_CCTP_SHIM_SELECTOR => { + Some(Self::ExecuteOrderCctpShim) + } + FallbackMatchingEngineInstruction::PREPARE_ORDER_RESPONSE_CCTP_SHIM_SELECTOR => { + borsh::BorshDeserialize::deserialize(&mut &instruction_data[SELECTOR_SIZE..]) + .ok() + .map(Self::PrepareOrderResponseCctpShim) + } + FallbackMatchingEngineInstruction::SETTLE_AUCTION_NONE_CCTP_SHIM_SELECTOR => { + Some(Self::SettleAuctionNoneCctpShim) + } + _ => None, + } + } +} + +impl FallbackMatchingEngineInstruction<'_> { + pub fn to_vec(&self) -> Vec { + match self { + Self::InitializeFastMarketOrder(data) => { + let mut out = Vec::with_capacity( + SELECTOR_SIZE + .saturating_add(std::mem::size_of::()), + ); + + out.extend_from_slice( + &FallbackMatchingEngineInstruction::INITIALIZE_FAST_MARKET_ORDER_SELECTOR, + ); + out.extend_from_slice(bytemuck::bytes_of(*data)); + + out + } + Self::PlaceInitialOfferCctpShim(data) => { + let mut out = + Vec::with_capacity(SELECTOR_SIZE.saturating_add(std::mem::size_of::())); + + out.extend_from_slice( + &FallbackMatchingEngineInstruction::PLACE_INITIAL_OFFER_CCTP_SHIM_SELECTOR, + ); + out.extend_from_slice(bytemuck::bytes_of(*data)); + + out + } + Self::ExecuteOrderCctpShim => { + FallbackMatchingEngineInstruction::EXECUTE_ORDER_CCTP_SHIM_SELECTOR.to_vec() + } + Self::CloseFastMarketOrder => { + FallbackMatchingEngineInstruction::CLOSE_FAST_MARKET_ORDER_SELECTOR.to_vec() + } + Self::PrepareOrderResponseCctpShim(data) => { + // Use a temporary vector, which will be consumed by the output vector when it is + // extended. + let tmp_data = data.try_to_vec().unwrap(); + + let mut out = Vec::with_capacity(tmp_data.len().saturating_add(SELECTOR_SIZE)); + + out.extend_from_slice( + &FallbackMatchingEngineInstruction::PREPARE_ORDER_RESPONSE_CCTP_SHIM_SELECTOR, + ); + out.extend(tmp_data); + + out + } + FallbackMatchingEngineInstruction::SettleAuctionNoneCctpShim => { + FallbackMatchingEngineInstruction::SETTLE_AUCTION_NONE_CCTP_SHIM_SELECTOR.to_vec() + } + } + } +} diff --git a/solana/programs/matching-engine/src/fallback/processor/settle_auction_none_cctp.rs b/solana/programs/matching-engine/src/fallback/processor/settle_auction_none_cctp.rs new file mode 100644 index 000000000..25e0e2571 --- /dev/null +++ b/solana/programs/matching-engine/src/fallback/processor/settle_auction_none_cctp.rs @@ -0,0 +1,400 @@ +use anchor_lang::prelude::*; +use anchor_spl::token::{spl_token, TokenAccount}; +use bytemuck::{Pod, Zeroable}; +use common::wormhole_io::TypePrefixedPayload; +use solana_program::{instruction::Instruction, program::invoke_signed_unchecked}; + +use crate::{ + error::MatchingEngineError, + processor::SettledNone, + processor::{settle_none_and_prepare_fill, SettleNoneAndPrepareFill}, + state::{Auction, Custodian, MessageProtocol, PreparedOrderResponse}, + ID, +}; + +use super::{ + burn_and_post::{burn_and_post, PostMessageAccounts}, + helpers::{create_account_reliably, require_min_account_infos_len}, + FallbackMatchingEngineInstruction, +}; + +const NUM_ACCOUNTS: usize = 28; + +// TODO: Remove +#[derive(Debug, Copy, Clone, Pod, Zeroable)] +#[repr(C)] +pub struct SettleAuctionNoneCctpShimData { + pub cctp_message_bump: u8, + pub auction_bump: u8, +} + +pub struct SettleAuctionNoneCctpShimAccounts<'ix> { + /// Payer of the account + pub payer: &'ix Pubkey, // 0 + /// Post shim message account + pub post_shim_message: &'ix Pubkey, // 1 + /// Core bridge emitter sequence account + pub core_bridge_emitter_sequence: &'ix Pubkey, // 2 + /// Post message shim event authority + pub post_message_shim_event_authority: &'ix Pubkey, // 3 + /// Post message shim program + pub post_message_shim_program: &'ix Pubkey, // 4 + /// Custodian account + pub custodian: &'ix Pubkey, // 5 + /// Fee recipient token + pub fee_recipient_token: &'ix Pubkey, // 6 + /// Closed prepared order response + pub closed_prepared_order_response: &'ix Pubkey, // 7 + /// Closed prepared order response actor (closed_by) + pub closed_prepared_order_response_actor: &'ix Pubkey, // 8 + /// Closed prepared order response custody token + pub closed_prepared_order_response_custody_token: &'ix Pubkey, // 9 + /// Auction account CHECK: Init if needed, Seeds must be \["auction", prepared.order_response.seeds.fast_vaa_hash.as_ref()\]. + pub auction: &'ix Pubkey, // 10 + /// Cctp message CHECK: Seeds must be \["cctp-msg", auction.key().as_ref()\]. + pub cctp_message: &'ix Pubkey, // 11 + /// Cctp mint (must be USDC mint) + pub cctp_mint: &'ix Pubkey, // 12 + /// Cctp token messenger minter sender authority + pub cctp_token_messenger_minter_sender_authority: &'ix Pubkey, // 13 + /// Cctp message transmitter config + pub cctp_message_transmitter_config: &'ix Pubkey, // 14 + /// Cctp token messenger + pub cctp_token_messenger: &'ix Pubkey, // 15 + /// Cctp remote token messenger + pub cctp_remote_token_messenger: &'ix Pubkey, // 16 + /// Cctp token minter + pub cctp_token_minter: &'ix Pubkey, // 17 + /// Cctp local token + pub cctp_local_token: &'ix Pubkey, // 18 + /// Cctp token messenger minter event authority + pub cctp_token_messenger_minter_event_authority: &'ix Pubkey, // 19 + /// Cctp token messenger minter program + pub cctp_token_messenger_minter_program: &'ix Pubkey, // 20 + /// Cctp message transmitter program + pub cctp_message_transmitter_program: &'ix Pubkey, // 21 + /// Core bridge program + pub core_bridge_program: &'ix Pubkey, // 22 + /// Core bridge fee collector + pub core_bridge_fee_collector: &'ix Pubkey, // 23 + /// Core bridge config + pub core_bridge_config: &'ix Pubkey, // 24 + /// Token program + // TODO: Remove + pub token_program: &'ix Pubkey, // 25 + /// System program + // TODO: Remove + pub system_program: &'ix Pubkey, // 26 + /// Clock + // TODO: Remove + pub clock: &'ix Pubkey, // 27 + /// Rent + // TODO: Remove + pub rent: &'ix Pubkey, // 28 +} + +pub struct SettleAuctionNoneCctpShim<'ix> { + pub program_id: &'ix Pubkey, + pub accounts: SettleAuctionNoneCctpShimAccounts<'ix>, + // TODO: Remove + pub data: SettleAuctionNoneCctpShimData, +} + +impl<'ix> SettleAuctionNoneCctpShim<'ix> { + pub fn instruction(self) -> Instruction { + let SettleAuctionNoneCctpShimAccounts { + payer, + post_shim_message, + core_bridge_emitter_sequence, + post_message_shim_event_authority, + post_message_shim_program, + cctp_message, + custodian, + fee_recipient_token, + closed_prepared_order_response, + closed_prepared_order_response_actor, + closed_prepared_order_response_custody_token, + auction, + cctp_mint, + cctp_token_messenger_minter_sender_authority, + cctp_message_transmitter_config, + cctp_token_messenger, + cctp_remote_token_messenger, + cctp_token_minter, + cctp_local_token, + cctp_token_messenger_minter_event_authority, + cctp_token_messenger_minter_program, + cctp_message_transmitter_program, + core_bridge_program, + core_bridge_fee_collector, + core_bridge_config, + token_program: _, + system_program: _, + clock: _, + rent: _, + } = self.accounts; + + let accounts = vec![ + AccountMeta::new_readonly(*payer, true), // 0 + AccountMeta::new(*post_shim_message, false), // 1 + AccountMeta::new(*core_bridge_emitter_sequence, false), // 2 + AccountMeta::new_readonly(*post_message_shim_event_authority, false), // 3 + AccountMeta::new_readonly(*post_message_shim_program, false), // 4 + AccountMeta::new(*custodian, false), // 5 + AccountMeta::new(*fee_recipient_token, false), // 6 + AccountMeta::new(*closed_prepared_order_response, false), // 7 + AccountMeta::new(*closed_prepared_order_response_actor, false), // 8 + AccountMeta::new(*closed_prepared_order_response_custody_token, false), // 9 + AccountMeta::new(*auction, false), // 10 + AccountMeta::new(*cctp_message, false), // 11 + AccountMeta::new(*cctp_mint, false), // 12 + AccountMeta::new_readonly(*cctp_token_messenger_minter_sender_authority, false), // 13 + AccountMeta::new(*cctp_message_transmitter_config, false), // 14 + AccountMeta::new_readonly(*cctp_token_messenger, false), // 15 + AccountMeta::new_readonly(*cctp_remote_token_messenger, false), // 16 + AccountMeta::new(*cctp_token_minter, false), // 17 + AccountMeta::new(*cctp_local_token, false), // 18 + AccountMeta::new_readonly(*cctp_token_messenger_minter_event_authority, false), // 19 + AccountMeta::new_readonly(*cctp_token_messenger_minter_program, false), // 20 + AccountMeta::new_readonly(*cctp_message_transmitter_program, false), // 21 + AccountMeta::new_readonly(*core_bridge_program, false), // 22 + AccountMeta::new(*core_bridge_fee_collector, false), // 23 + AccountMeta::new(*core_bridge_config, false), // 24 + AccountMeta::new_readonly(spl_token::ID, false), // 25 + AccountMeta::new_readonly(solana_program::system_program::ID, false), // 26 + AccountMeta::new_readonly(solana_program::sysvar::clock::ID, false), // 27 + ]; + debug_assert_eq!(accounts.len(), NUM_ACCOUNTS); + + Instruction { + program_id: *self.program_id, + accounts, + data: FallbackMatchingEngineInstruction::SettleAuctionNoneCctpShim.to_vec(), + } + } +} + +#[inline(never)] +pub(super) fn process(accounts: &[AccountInfo]) -> Result<()> { + require_min_account_infos_len(accounts, NUM_ACCOUNTS)?; + + let payer_info = &accounts[0]; + let post_shim_infos = &accounts[1..5]; + + let custodian_info = &accounts[5]; + let custodian = super::helpers::try_custodian_account(custodian_info, false)?; + + let fee_recipient_token_info = &accounts[6]; + + // Check that the fee recipient token is the custodian's fee recipient token + require_keys_eq!( + *fee_recipient_token_info.key, + custodian.fee_recipient_token, + MatchingEngineError::InvalidFeeRecipientToken + ); + + let prepared_order_response_info = &accounts[7]; + super::helpers::require_owned_by_this_program( + prepared_order_response_info, + "prepared_order_response", + )?; + let mut prepared_order_response = PreparedOrderResponse::try_deserialize( + &mut &prepared_order_response_info.data.borrow()[..], + ) + .map(Box::new)?; + + let original_preparer_info = &accounts[8]; + + // Check prepared by is the same as the prepared by in the accounts + require_keys_eq!( + *original_preparer_info.key, + prepared_order_response.prepared_by, + MatchingEngineError::PreparedByMismatch, + ); + + let prepared_custody_info = &accounts[9]; + + // First do checks on the prepared custody token address + let (expected_prepared_custody_key, _) = Pubkey::find_program_address( + &[ + crate::PREPARED_CUSTODY_TOKEN_SEED_PREFIX, + prepared_order_response_info.key.as_ref(), + ], + &ID, + ); + + let prepared_custody = + TokenAccount::try_deserialize(&mut &prepared_custody_info.data.borrow()[..]) + .map(Box::new)?; + + let cctp_infos = &accounts[11..=21]; + + let _core_bridge_infos = &accounts[22..=24]; + let token_program = &accounts[25]; + let system_program = &accounts[26]; + + let auction_placeholder_info = &accounts[10]; + + let (expected_auction_placeholder_key, auction_placeholder_bump) = Pubkey::find_program_address( + &[ + Auction::SEED_PREFIX, + &prepared_order_response.seeds.fast_vaa_hash, + ], + &ID, + ); + + create_account_reliably( + payer_info.key, + &expected_auction_placeholder_key, + auction_placeholder_info.lamports(), + 8 + Auction::INIT_SPACE_NO_AUCTION, + accounts, + &ID, + &[&[ + Auction::SEED_PREFIX, + &prepared_order_response.seeds.fast_vaa_hash, + &[auction_placeholder_bump], + ]], + )?; + + let mut auction = + Box::new(prepared_order_response.new_auction_placeholder(auction_placeholder_bump)); + + let SettledNone { + user_amount, + fill, + auction_settled_event: _, + } = { + let fee_recipient_token = Box::new(TokenAccount::try_deserialize( + &mut &fee_recipient_token_info.data.borrow_mut()[..], + )?); + settle_none_and_prepare_fill( + SettleNoneAndPrepareFill { + prepared_order_response_key: prepared_order_response_info.key, + prepared_order_response: &mut prepared_order_response, + prepared_custody_token_key: prepared_custody_info.key, + prepared_custody_token: &prepared_custody, + auction: &mut auction, + fee_recipient_token_key: fee_recipient_token_info.key, + fee_recipient_token: &fee_recipient_token, + custodian_key: custodian_info.key, + }, + accounts, + )? + }; + + let new_auction: &mut [u8] = &mut auction_placeholder_info.try_borrow_mut_data()?; + let mut new_auction_cursor = std::io::Cursor::new(new_auction); + auction.try_serialize(&mut new_auction_cursor)?; + + // Prepare to invoke CCTP deposit for burn along with posting Wormhole + // message. + let cctp_message = &cctp_infos[0]; + + let (_, new_cctp_message_bump) = Pubkey::find_program_address( + &[ + common::CCTP_MESSAGE_SEED_PREFIX, + auction_placeholder_info.key.as_ref(), + ], + &ID, + ); + + let cctp_mint = &cctp_infos[1]; + let cctp_token_messenger_minter_sender_authority = &cctp_infos[2]; + let cctp_message_transmitter_config = &cctp_infos[3]; + let cctp_token_messenger = &cctp_infos[4]; + let cctp_remote_token_messenger = &cctp_infos[5]; + let cctp_token_minter = &cctp_infos[6]; + let cctp_local_token = &cctp_infos[7]; + let cctp_token_messenger_minter_event_authority = &cctp_infos[8]; + let cctp_token_messenger_minter_program = &cctp_infos[9]; + let cctp_message_transmitter_program = &cctp_infos[10]; + + let post_shim_message = &post_shim_infos[0]; + let core_bridge_emitter_sequence = &post_shim_infos[1]; + let _post_message_shim_event_authority = &post_shim_infos[2]; + let _post_message_shim_program = &post_shim_infos[3]; + + let to_router_endpoint = prepared_order_response.to_endpoint; + let destination_cctp_domain = match to_router_endpoint.protocol { + MessageProtocol::Cctp { domain } => domain, + _ => return Err(MatchingEngineError::InvalidCctpEndpoint.into()), + }; + + burn_and_post( + CpiContext::new_with_signer( + cctp_token_messenger_minter_program.to_account_info(), + common::wormhole_cctp_solana::cpi::DepositForBurnWithCaller { + burn_token_owner: custodian_info.to_account_info(), + payer: payer_info.to_account_info(), + token_messenger_minter_sender_authority: + cctp_token_messenger_minter_sender_authority.to_account_info(), + burn_token: prepared_custody_info.to_account_info(), + message_transmitter_config: cctp_message_transmitter_config.to_account_info(), + token_messenger: cctp_token_messenger.to_account_info(), + remote_token_messenger: cctp_remote_token_messenger.to_account_info(), + token_minter: cctp_token_minter.to_account_info(), + local_token: cctp_local_token.to_account_info(), + mint: cctp_mint.to_account_info(), + cctp_message: cctp_message.to_account_info(), + message_transmitter_program: cctp_message_transmitter_program.to_account_info(), + token_messenger_minter_program: cctp_token_messenger_minter_program + .to_account_info(), + token_program: token_program.to_account_info(), + system_program: system_program.to_account_info(), + event_authority: cctp_token_messenger_minter_event_authority.to_account_info(), + }, + &[ + Custodian::SIGNER_SEEDS, + &[ + common::CCTP_MESSAGE_SEED_PREFIX, + auction_placeholder_info.key.as_ref(), + &[new_cctp_message_bump], + ], + ], + ), + common::wormhole_cctp_solana::cpi::BurnAndPublishArgs { + burn_source: None, + destination_caller: to_router_endpoint.address, + destination_cctp_domain, + amount: user_amount, + mint_recipient: to_router_endpoint.mint_recipient, + wormhole_message_nonce: common::WORMHOLE_MESSAGE_NONCE, + payload: fill.to_vec(), + }, + PostMessageAccounts { + emitter: custodian_info.key, + payer: payer_info.key, + message: post_shim_message.key, + sequence: core_bridge_emitter_sequence.key, + }, + accounts, + )?; + + // Close the custody token account. + let close_token_account_ix = spl_token::instruction::close_account( + &spl_token::ID, + &expected_prepared_custody_key, + &prepared_order_response.prepared_by, + custodian_info.key, + &[], + )?; + + invoke_signed_unchecked( + &close_token_account_ix, + accounts, + &[&Custodian::SIGNER_SEEDS], + )?; + + // Moving the lamports from the prepared order response back to the original + // preparer. The prepared order response account should be closed after this + // point. + let mut prepared_order_response_info_lamports = + prepared_order_response_info.lamports.borrow_mut(); + **original_preparer_info.lamports.borrow_mut() = original_preparer_info + .lamports() + .saturating_add(**prepared_order_response_info_lamports); + **prepared_order_response_info_lamports = 0; + + Ok(()) +} diff --git a/solana/programs/matching-engine/src/lib.rs b/solana/programs/matching-engine/src/lib.rs index 58b353535..73a895ec2 100644 --- a/solana/programs/matching-engine/src/lib.rs +++ b/solana/programs/matching-engine/src/lib.rs @@ -2,16 +2,21 @@ #![allow(clippy::result_large_err)] mod composite; +use composite::*; -mod error; +pub mod error; mod events; mod processor; +pub use processor::CctpMessageArgs; +pub use processor::InitializeArgs; use processor::*; pub mod state; +pub mod fallback; + pub mod utils; pub use utils::admin::AddCctpRouterEndpointArgs; @@ -22,23 +27,23 @@ cfg_if::cfg_if! { declare_id!("HtkeCDdYY4i9ncAxXKjYTx8Uu3WM8JbtiLRYjtHwaVXb"); const CUSTODIAN_BUMP: u8 = 254; - const CCTP_MINT_RECIPIENT: Pubkey = pubkey!("HUXc7MBf55vWrrkevVbmJN8HAyfFtjLcPLBt9yWngKzm"); + pub const CCTP_MINT_RECIPIENT: Pubkey = pubkey!("HUXc7MBf55vWrrkevVbmJN8HAyfFtjLcPLBt9yWngKzm"); } else if #[cfg(feature = "testnet")] { declare_id!("mPydpGUWxzERTNpyvTKdvS7v8kvw5sgwfiP8WQFrXVS"); const CUSTODIAN_BUMP: u8 = 254; - const CCTP_MINT_RECIPIENT: Pubkey = pubkey!("6yKmqWarCry3c8ntYKzM4WiS2fVypxLbENE2fP8onJje"); + pub const CCTP_MINT_RECIPIENT: Pubkey = pubkey!("6yKmqWarCry3c8ntYKzM4WiS2fVypxLbENE2fP8onJje"); } else if #[cfg(feature = "localnet")] { declare_id!("MatchingEngine11111111111111111111111111111"); const CUSTODIAN_BUMP: u8 = 254; - const CCTP_MINT_RECIPIENT: Pubkey = pubkey!("35iwWKi7ebFyXNaqpswd1g9e9jrjvqWPV39nCQPaBbX1"); + pub const CCTP_MINT_RECIPIENT: Pubkey = pubkey!("35iwWKi7ebFyXNaqpswd1g9e9jrjvqWPV39nCQPaBbX1"); } } -const AUCTION_CUSTODY_TOKEN_SEED_PREFIX: &[u8] = b"auction-custody"; -const LOCAL_CUSTODY_TOKEN_SEED_PREFIX: &[u8] = b"local-custody"; -const PREPARED_CUSTODY_TOKEN_SEED_PREFIX: &[u8] = b"prepared-custody"; +pub const AUCTION_CUSTODY_TOKEN_SEED_PREFIX: &[u8] = b"auction-custody"; +pub const LOCAL_CUSTODY_TOKEN_SEED_PREFIX: &[u8] = b"local-custody"; +pub const PREPARED_CUSTODY_TOKEN_SEED_PREFIX: &[u8] = b"prepared-custody"; const FEE_PRECISION_MAX: u32 = 1_000_000; const VAA_AUCTION_EXPIRATION_TIME: i64 = 2 * 60 * 60; // 2 hours @@ -473,6 +478,20 @@ pub mod matching_engine { pub fn add_auction_history_entry(_ctx: Context) -> Result<()> { err!(ErrorCode::Deprecated) } + + /// UNUSED. This instruction does not exist and has never existed. It just reverts and exist to expose an account lol. + pub fn get_cctp_mint_recipient(_ctx: Context) -> Result<()> { + err!(ErrorCode::InstructionMissing) + } + + /// Non anchor function for placing an initial offer using the VAA shim. + pub fn fallback_process_instruction( + program_id: &Pubkey, + accounts: &[AccountInfo], + instruction_data: &[u8], + ) -> Result<()> { + fallback::process_instruction(program_id, accounts, instruction_data) + } } #[derive(Accounts)] diff --git a/solana/programs/matching-engine/src/processor/admin/initialize.rs b/solana/programs/matching-engine/src/processor/admin/initialize.rs index 7ae99e18b..bba3d4d9c 100644 --- a/solana/programs/matching-engine/src/processor/admin/initialize.rs +++ b/solana/programs/matching-engine/src/processor/admin/initialize.rs @@ -106,7 +106,7 @@ pub struct Initialize<'info> { } #[derive(Debug, AnchorSerialize, AnchorDeserialize)] pub struct InitializeArgs { - auction_params: AuctionParameters, + pub auction_params: AuctionParameters, } pub fn initialize(ctx: Context, args: InitializeArgs) -> Result<()> { diff --git a/solana/programs/matching-engine/src/processor/auction/offer/improve.rs b/solana/programs/matching-engine/src/processor/auction/offer/improve.rs index b99dc4d7d..8d3a5e604 100644 --- a/solana/programs/matching-engine/src/processor/auction/offer/improve.rs +++ b/solana/programs/matching-engine/src/processor/auction/offer/improve.rs @@ -32,7 +32,7 @@ pub struct ImproveOffer<'info> { require!( offer_price - < utils::auction::compute_min_allowed_offer(&active_auction.config, info), + < utils::auction::compute_max_allowed_offer(&active_auction.config, info), MatchingEngineError::CarpingNotAllowed ); @@ -42,6 +42,7 @@ pub struct ImproveOffer<'info> { active_auction: ActiveAuction<'info>, #[account( + mut, constraint = { offer_token.key() != active_auction.custody_token.key() } @ MatchingEngineError::InvalidOfferToken, @@ -147,7 +148,7 @@ pub fn improve_offer(ctx: Context, offer_price: u64) -> Result<()> token_balance_before: offer_token.amount, amount_in: info.amount_in, total_deposit: info.total_deposit(), - max_offer_price_allowed: utils::auction::compute_min_allowed_offer(config, info) + max_offer_price_allowed: utils::auction::compute_max_allowed_offer(config, info) .checked_sub(1), })); } diff --git a/solana/programs/matching-engine/src/processor/auction/offer/place_initial/cctp.rs b/solana/programs/matching-engine/src/processor/auction/offer/place_initial/cctp.rs index fab8c53ba..3bc3cae5b 100644 --- a/solana/programs/matching-engine/src/processor/auction/offer/place_initial/cctp.rs +++ b/solana/programs/matching-engine/src/processor/auction/offer/place_initial/cctp.rs @@ -93,6 +93,7 @@ pub struct PlaceInitialOfferCctp<'info> { )] auction: Box>, + #[account(mut)] offer_token: Box>, #[account( @@ -179,7 +180,7 @@ pub fn place_initial_offer_cctp( token_balance_before: ctx.accounts.offer_token.amount, amount_in, total_deposit: info.total_deposit(), - max_offer_price_allowed: utils::auction::compute_min_allowed_offer(config, info) + max_offer_price_allowed: utils::auction::compute_max_allowed_offer(config, info) .checked_sub(1), })); diff --git a/solana/programs/matching-engine/src/processor/auction/settle/none/cctp.rs b/solana/programs/matching-engine/src/processor/auction/settle/none/cctp.rs index b56db9c58..8eda9cf69 100644 --- a/solana/programs/matching-engine/src/processor/auction/settle/none/cctp.rs +++ b/solana/programs/matching-engine/src/processor/auction/settle/none/cctp.rs @@ -100,18 +100,25 @@ fn handle_settle_auction_none_cctp( let custodian = &ctx.accounts.custodian; let token_program = &ctx.accounts.token_program; + let accounts_infos = ctx.accounts.to_account_infos(); + let super::SettledNone { user_amount: amount, fill, auction_settled_event, - } = super::settle_none_and_prepare_fill(super::SettleNoneAndPrepareFill { - prepared_order_response: &mut ctx.accounts.prepared.order_response, - prepared_custody_token, - auction: &mut ctx.accounts.auction, - fee_recipient_token: &ctx.accounts.fee_recipient_token, - custodian, - token_program, - })?; + } = super::settle_none_and_prepare_fill( + super::SettleNoneAndPrepareFill { + prepared_order_response_key: &ctx.accounts.prepared.order_response.key(), + prepared_order_response: &mut ctx.accounts.prepared.order_response, + prepared_custody_token_key: &ctx.accounts.prepared.custody_token.key(), + prepared_custody_token: &ctx.accounts.prepared.custody_token, + auction: &mut ctx.accounts.auction, + fee_recipient_token_key: &ctx.accounts.fee_recipient_token.key(), + fee_recipient_token: &ctx.accounts.fee_recipient_token, + custodian_key: &custodian.key(), + }, + &accounts_infos, + )?; let EndpointInfo { chain: _, diff --git a/solana/programs/matching-engine/src/processor/auction/settle/none/local.rs b/solana/programs/matching-engine/src/processor/auction/settle/none/local.rs index 2cbede99d..eba75a465 100644 --- a/solana/programs/matching-engine/src/processor/auction/settle/none/local.rs +++ b/solana/programs/matching-engine/src/processor/auction/settle/none/local.rs @@ -123,18 +123,25 @@ pub fn settle_auction_none_local(ctx: Context) -> Result let custodian = &ctx.accounts.custodian; let token_program = &ctx.accounts.token_program; + let accounts_infos = ctx.accounts.to_account_infos(); + let super::SettledNone { user_amount: amount, fill, auction_settled_event, - } = super::settle_none_and_prepare_fill(super::SettleNoneAndPrepareFill { - prepared_order_response: &mut ctx.accounts.prepared.order_response, - prepared_custody_token, - auction: &mut ctx.accounts.auction, - fee_recipient_token: &ctx.accounts.fee_recipient_token, - custodian, - token_program, - })?; + } = super::settle_none_and_prepare_fill( + super::SettleNoneAndPrepareFill { + prepared_order_response_key: &ctx.accounts.prepared.order_response.key(), + prepared_order_response: &mut ctx.accounts.prepared.order_response, + prepared_custody_token_key: &ctx.accounts.prepared.custody_token.key(), + prepared_custody_token: &ctx.accounts.prepared.custody_token, + auction: &mut ctx.accounts.auction, + fee_recipient_token_key: &ctx.accounts.fee_recipient_token.key(), + fee_recipient_token: &ctx.accounts.fee_recipient_token, + custodian_key: &custodian.key(), + }, + &accounts_infos, + )?; // Emit an event indicating that the auction has been settled. emit_cpi!(auction_settled_event); diff --git a/solana/programs/matching-engine/src/processor/auction/settle/none/mod.rs b/solana/programs/matching-engine/src/processor/auction/settle/none/mod.rs index 9c8233cc7..2f3d67587 100644 --- a/solana/programs/matching-engine/src/processor/auction/settle/none/mod.rs +++ b/solana/programs/matching-engine/src/processor/auction/settle/none/mod.rs @@ -5,79 +5,88 @@ mod local; pub use local::*; use crate::{ - composite::*, events::AuctionSettled, state::{Auction, AuctionStatus, PreparedOrderResponse}, }; use anchor_lang::prelude::*; -use anchor_spl::token; +use anchor_spl::token::{spl_token, TokenAccount}; use common::messages::Fill; +use solana_program::program::invoke_signed_unchecked; -struct SettleNoneAndPrepareFill<'ctx, 'info> { - prepared_order_response: &'ctx mut Account<'info, PreparedOrderResponse>, - prepared_custody_token: &'ctx Account<'info, token::TokenAccount>, - auction: &'ctx mut Account<'info, Auction>, - fee_recipient_token: &'ctx Account<'info, token::TokenAccount>, - custodian: &'ctx CheckedCustodian<'info>, - token_program: &'ctx Program<'info, token::Token>, +pub struct SettleNoneAndPrepareFill<'ix> { + pub prepared_order_response_key: &'ix Pubkey, + pub prepared_order_response: &'ix mut PreparedOrderResponse, + pub prepared_custody_token_key: &'ix Pubkey, + pub prepared_custody_token: &'ix TokenAccount, + pub auction: &'ix mut Auction, + pub fee_recipient_token_key: &'ix Pubkey, + pub fee_recipient_token: &'ix TokenAccount, + pub custodian_key: &'ix Pubkey, } -struct SettledNone { - user_amount: u64, - fill: Fill, - auction_settled_event: AuctionSettled, +pub struct SettledNone { + pub user_amount: u64, + pub fill: Fill, + pub auction_settled_event: AuctionSettled, } -fn settle_none_and_prepare_fill(accounts: SettleNoneAndPrepareFill<'_, '_>) -> Result { +pub fn settle_none_and_prepare_fill( + accounts: SettleNoneAndPrepareFill<'_>, + accounts_infos: &[AccountInfo], +) -> Result { let SettleNoneAndPrepareFill { + prepared_order_response_key, prepared_order_response, + prepared_custody_token_key, prepared_custody_token, auction, + fee_recipient_token_key, fee_recipient_token, - custodian, - token_program, + custodian_key, } = accounts; - let prepared_order_response_signer_seeds = &[ PreparedOrderResponse::SEED_PREFIX, prepared_order_response.seeds.fast_vaa_hash.as_ref(), &[prepared_order_response.seeds.bump], ]; - // Pay the `fee_recipient` the base fee and init auction fee. This ensures that the protocol // relayer is paid for relaying slow VAAs (which requires posting the fast order VAA) that do // not have an associated auction. let fee = prepared_order_response .base_fee .saturating_add(prepared_order_response.init_auction_fee); - token::transfer( - CpiContext::new_with_signer( - token_program.to_account_info(), - token::Transfer { - from: prepared_custody_token.to_account_info(), - to: fee_recipient_token.to_account_info(), - authority: prepared_order_response.to_account_info(), - }, - &[prepared_order_response_signer_seeds], - ), + + let transfer_ix = spl_token::instruction::transfer( + &spl_token::ID, + prepared_custody_token_key, + fee_recipient_token_key, + prepared_order_response_key, + &[], fee, )?; - // Set the authority of the custody token account to the custodian. He will take over from here. - token::set_authority( - CpiContext::new_with_signer( - token_program.to_account_info(), - token::SetAuthority { - current_authority: prepared_order_response.to_account_info(), - account_or_mint: prepared_custody_token.to_account_info(), - }, - &[prepared_order_response_signer_seeds], - ), - token::spl_token::instruction::AuthorityType::AccountOwner, - custodian.key().into(), + invoke_signed_unchecked( + &transfer_ix, + accounts_infos, + &[prepared_order_response_signer_seeds], + )?; + + // Set authority instruction + let set_authority_ix = spl_token::instruction::set_authority( + &spl_token::ID, + prepared_custody_token_key, + Some(custodian_key), + spl_token::instruction::AuthorityType::AccountOwner, + prepared_order_response_key, + &[], + )?; + + invoke_signed_unchecked( + &set_authority_ix, + accounts_infos, + &[prepared_order_response_signer_seeds], )?; - // Indicate that the auction has been settled. auction.status = AuctionStatus::Settled { fee, total_penalty: None, @@ -87,13 +96,12 @@ fn settle_none_and_prepare_fill(accounts: SettleNoneAndPrepareFill<'_, '_>) -> R fast_vaa_hash: auction.vaa_hash, best_offer_token: Default::default(), base_fee_token: crate::events::SettledTokenAccountInfo { - key: fee_recipient_token.key(), + key: *fee_recipient_token_key, balance_after: fee_recipient_token.amount.saturating_add(fee), } .into(), with_execute: auction.target_protocol.into(), }; - // TryInto is safe to unwrap here because the redeemer message had to have been able to fit in // the prepared order response account (so it would not have exceed u32::MAX). let redeemer_message = std::mem::take(&mut prepared_order_response.redeemer_message) @@ -101,7 +109,7 @@ fn settle_none_and_prepare_fill(accounts: SettleNoneAndPrepareFill<'_, '_>) -> R .unwrap(); Ok(SettledNone { user_amount: prepared_custody_token.amount.saturating_sub(fee), - fill: Fill { + fill: common::messages::Fill { source_chain: prepared_order_response.source_chain, order_sender: prepared_order_response.sender, redeemer: prepared_order_response.redeemer, diff --git a/solana/programs/matching-engine/src/state/fast_market_order.rs b/solana/programs/matching-engine/src/state/fast_market_order.rs new file mode 100644 index 000000000..071fb4ffd --- /dev/null +++ b/solana/programs/matching-engine/src/state/fast_market_order.rs @@ -0,0 +1,146 @@ +use anchor_lang::prelude::*; +use solana_program::keccak; + +/// An account that represents a fast market order VAA. It is created by the +/// payer of the transaction. This payer is the only authority that can close +/// this account and receive its rent. +#[account(zero_copy)] +#[derive(Debug)] +#[repr(C)] +pub struct FastMarketOrder { + /// The amount of tokens sent from the source chain via the fast transfer. + pub amount_in: u64, + /// The minimum amount of tokens to be received on the target chain via the + /// fast transfer. + pub min_amount_out: u64, + /// The deadline of the auction. + pub deadline: u32, + /// The target chain (represented as a Wormhole chain ID). + pub target_chain: u16, + /// The length of the redeemer message. + pub redeemer_message_length: u16, + /// The redeemer of the fast transfer (on the destination chain). + pub redeemer: [u8; 32], + /// The sender of the fast transfer (on the source chain). + pub sender: [u8; 32], + /// The refund address of the fast transfer. + pub refund_address: [u8; 32], + /// The maximum fee of the fast transfer. + pub max_fee: u64, + /// The initial auction fee of the fast transfer. + pub init_auction_fee: u64, + /// The redeemer message of the fast transfer. + /// + /// NOTE: This value is based on the max redeemer length of 500 bytes that + /// is specified in the token router program. If this changes in the future, + /// this value must be updated. + pub redeemer_message: [u8; 512], + /// The refund recipient for the creator of the fast market order account. + pub close_account_refund_recipient: Pubkey, + /// The emitter address of the fast transfer + pub vaa_emitter_address: [u8; 32], + /// The sequence of the fast transfer VAA. + pub vaa_sequence: u64, + /// The timestamp of the fast transfer VAA. + pub vaa_timestamp: u32, + /// The VAA nonce, which is not used and can be set to 0. + // TODO: Can be taken out. + pub vaa_nonce: u32, + /// The source chain of the fast transfer VAA. (represented as a Wormhole + /// chain ID). + pub vaa_emitter_chain: u16, + /// The consistency level of the fast transfer VAA. + pub vaa_consistency_level: u8, + /// Not used, but required for bytemuck serialization. + _padding: [u8; 5], +} + +pub struct FastMarketOrderParams { + pub amount_in: u64, + pub min_amount_out: u64, + pub deadline: u32, + pub target_chain: u16, + pub redeemer_message_length: u16, + pub redeemer: [u8; 32], + pub sender: [u8; 32], + pub refund_address: [u8; 32], + pub max_fee: u64, + pub init_auction_fee: u64, + pub redeemer_message: [u8; 512], + pub close_account_refund_recipient: Pubkey, + pub vaa_sequence: u64, + pub vaa_timestamp: u32, + pub vaa_nonce: u32, + pub vaa_emitter_chain: u16, + pub vaa_consistency_level: u8, + pub vaa_emitter_address: [u8; 32], +} + +impl FastMarketOrder { + pub const SEED_PREFIX: &'static [u8] = b"fast_market_order"; + + pub fn new(params: FastMarketOrderParams) -> Self { + Self { + amount_in: params.amount_in, + min_amount_out: params.min_amount_out, + deadline: params.deadline, + target_chain: params.target_chain, + redeemer_message_length: params.redeemer_message_length, + redeemer: params.redeemer, + sender: params.sender, + refund_address: params.refund_address, + max_fee: params.max_fee, + init_auction_fee: params.init_auction_fee, + redeemer_message: params.redeemer_message, + close_account_refund_recipient: params.close_account_refund_recipient, + vaa_sequence: params.vaa_sequence, + vaa_timestamp: params.vaa_timestamp, + vaa_nonce: params.vaa_nonce, + vaa_emitter_chain: params.vaa_emitter_chain, + vaa_consistency_level: params.vaa_consistency_level, + vaa_emitter_address: params.vaa_emitter_address, + _padding: [0_u8; 5], + } + } + + /// Creates an payload as expected in a fast market order vaa + pub fn payload(&self) -> Vec { + let mut payload = vec![]; + payload.push(11_u8); // This is the payload id for a fast market order + payload.extend_from_slice(&self.amount_in.to_be_bytes()); + payload.extend_from_slice(&self.min_amount_out.to_be_bytes()); + payload.extend_from_slice(&self.target_chain.to_be_bytes()); + payload.extend_from_slice(&self.redeemer); + payload.extend_from_slice(&self.sender); + payload.extend_from_slice(&self.refund_address); + payload.extend_from_slice(&self.max_fee.to_be_bytes()); + payload.extend_from_slice(&self.init_auction_fee.to_be_bytes()); + payload.extend_from_slice(&self.deadline.to_be_bytes()); + payload.extend_from_slice(&self.redeemer_message_length.to_be_bytes()); + if self.redeemer_message_length > 0 { + payload.extend_from_slice( + &self.redeemer_message[..usize::from(self.redeemer_message_length)], + ); + } + payload + } + + /// A double hash of the serialised fast market order. Used for seeds and + /// verification. + // TODO: Change return type to keccak::Hash + pub fn digest(&self) -> [u8; 32] { + wormhole_svm_definitions::compute_keccak_digest( + keccak::hashv(&[ + &self.vaa_timestamp.to_be_bytes(), + &self.vaa_nonce.to_be_bytes(), + &self.vaa_emitter_chain.to_be_bytes(), + &self.vaa_emitter_address, + &self.vaa_sequence.to_be_bytes(), + &[self.vaa_consistency_level], + &self.payload(), + ]), + None, + ) + .0 + } +} diff --git a/solana/programs/matching-engine/src/state/mod.rs b/solana/programs/matching-engine/src/state/mod.rs index fbfe98a42..aeea998c6 100644 --- a/solana/programs/matching-engine/src/state/mod.rs +++ b/solana/programs/matching-engine/src/state/mod.rs @@ -19,5 +19,8 @@ pub use prepared_order_response::*; mod proposal; pub use proposal::*; +mod fast_market_order; +pub use fast_market_order::*; + pub(crate) mod router_endpoint; pub use router_endpoint::*; diff --git a/solana/programs/matching-engine/src/state/prepared_order_response.rs b/solana/programs/matching-engine/src/state/prepared_order_response.rs index 90a5a26b6..b33222f40 100644 --- a/solana/programs/matching-engine/src/state/prepared_order_response.rs +++ b/solana/programs/matching-engine/src/state/prepared_order_response.rs @@ -12,7 +12,6 @@ pub struct PreparedOrderResponseSeeds { pub struct PreparedOrderResponseInfo { pub prepared_by: Pubkey, pub base_fee_token: Pubkey, - pub fast_vaa_timestamp: u32, pub source_chain: u16, pub base_fee: u64, diff --git a/solana/programs/matching-engine/src/utils/auction.rs b/solana/programs/matching-engine/src/utils/auction.rs index 3ebd5c0a2..a7476199d 100644 --- a/solana/programs/matching-engine/src/utils/auction.rs +++ b/solana/programs/matching-engine/src/utils/auction.rs @@ -51,7 +51,7 @@ pub fn compute_deposit_penalty( } #[inline] -pub fn compute_min_allowed_offer(params: &AuctionParameters, info: &AuctionInfo) -> u64 { +pub fn compute_max_allowed_offer(params: &AuctionParameters, info: &AuctionInfo) -> u64 { info.offer_price .saturating_sub(mul_bps_unsafe(info.offer_price, params.min_offer_delta_bps)) } @@ -341,7 +341,7 @@ mod test { let offer_price = 10000000; let (info, _) = set_up(0, None, offer_price); - let allowed_offer = compute_min_allowed_offer(¶ms, &info); + let allowed_offer = compute_max_allowed_offer(¶ms, &info); assert_eq!(allowed_offer, 0); } @@ -353,7 +353,7 @@ mod test { let offer_price = 10000000; let (info, _) = set_up(0, None, offer_price); - let allowed_offer = compute_min_allowed_offer(¶ms, &info); + let allowed_offer = compute_max_allowed_offer(¶ms, &info); assert_eq!(allowed_offer, offer_price); } @@ -364,7 +364,7 @@ mod test { let offer_price = 10000000; let (info, _) = set_up(0, None, offer_price); - let allowed_offer = compute_min_allowed_offer(¶ms, &info); + let allowed_offer = compute_max_allowed_offer(¶ms, &info); assert_eq!(allowed_offer, offer_price - 500000); } diff --git a/solana/ts/src/idl/json/matching_engine.json b/solana/ts/src/idl/json/matching_engine.json index dd46e1097..2324b9148 100644 --- a/solana/ts/src/idl/json/matching_engine.json +++ b/solana/ts/src/idl/json/matching_engine.json @@ -961,6 +961,29 @@ ], "args": [] }, + { + "name": "get_cctp_mint_recipient", + "docs": [ + "UNUSED. This instruction does not exist and has never existed. It just reverts and exist to expose an account lol." + ], + "discriminator": [ + 244, + 239, + 207, + 186, + 19, + 125, + 44, + 181 + ], + "accounts": [ + { + "name": "mint_recipient", + "writable": true + } + ], + "args": [] + }, { "name": "improve_offer", "docs": [ @@ -1014,7 +1037,8 @@ ] }, { - "name": "offer_token" + "name": "offer_token", + "writable": true }, { "name": "token_program" @@ -1269,7 +1293,8 @@ "writable": true }, { - "name": "offer_token" + "name": "offer_token", + "writable": true }, { "name": "auction_custody_token", @@ -3054,6 +3079,10 @@ "code": 7066, "name": "BestOfferTokenMismatch" }, + { + "code": 7067, + "name": "InitialOfferTokenMismatch" + }, { "code": 7068, "name": "BestOfferTokenRequired" @@ -3102,6 +3131,10 @@ "code": 7280, "name": "CannotCloseAuctionYet" }, + { + "code": 7281, + "name": "InvalidFeeRecipientToken" + }, { "code": 7282, "name": "AuctionHistoryNotFull" @@ -3109,6 +3142,55 @@ { "code": 7284, "name": "AuctionHistoryFull" + }, + { + "code": 7536, + "name": "InvalidVerifyVaaShimProgram" + }, + { + "code": 7792, + "name": "AccountAlreadyInitialized" + }, + { + "code": 7794, + "name": "AccountNotWritable" + }, + { + "code": 7796, + "name": "BorshDeserializationError" + }, + { + "code": 7797, + "name": "BorshSerializationError" + }, + { + "code": 7798, + "name": "InvalidPda" + }, + { + "code": 7802, + "name": "InvalidProgram" + }, + { + "code": 7804, + "name": "TokenTransferFailed" + }, + { + "code": 7806, + "name": "InvalidMint" + }, + { + "code": 8048, + "name": "SameEndpoints", + "msg": "From and to router endpoints are the same" + }, + { + "code": 8576, + "name": "MismatchingCloseAccountRefundRecipient" + }, + { + "code": 8306, + "name": "InvalidCctpMessage" } ], "types": [ diff --git a/solana/ts/src/idl/ts/matching_engine.ts b/solana/ts/src/idl/ts/matching_engine.ts index 2d0af2e66..744870a2b 100644 --- a/solana/ts/src/idl/ts/matching_engine.ts +++ b/solana/ts/src/idl/ts/matching_engine.ts @@ -967,6 +967,29 @@ export type MatchingEngine = { ], "args": [] }, + { + "name": "getCctpMintRecipient", + "docs": [ + "UNUSED. This instruction does not exist and has never existed. It just reverts and exist to expose an account lol." + ], + "discriminator": [ + 244, + 239, + 207, + 186, + 19, + 125, + 44, + 181 + ], + "accounts": [ + { + "name": "mintRecipient", + "writable": true + } + ], + "args": [] + }, { "name": "improveOffer", "docs": [ @@ -1020,7 +1043,8 @@ export type MatchingEngine = { ] }, { - "name": "offerToken" + "name": "offerToken", + "writable": true }, { "name": "tokenProgram" @@ -1275,7 +1299,8 @@ export type MatchingEngine = { "writable": true }, { - "name": "offerToken" + "name": "offerToken", + "writable": true }, { "name": "auctionCustodyToken", @@ -3060,6 +3085,10 @@ export type MatchingEngine = { "code": 7066, "name": "bestOfferTokenMismatch" }, + { + "code": 7067, + "name": "initialOfferTokenMismatch" + }, { "code": 7068, "name": "bestOfferTokenRequired" @@ -3108,6 +3137,10 @@ export type MatchingEngine = { "code": 7280, "name": "cannotCloseAuctionYet" }, + { + "code": 7281, + "name": "invalidFeeRecipientToken" + }, { "code": 7282, "name": "auctionHistoryNotFull" @@ -3115,6 +3148,55 @@ export type MatchingEngine = { { "code": 7284, "name": "auctionHistoryFull" + }, + { + "code": 7536, + "name": "invalidVerifyVaaShimProgram" + }, + { + "code": 7792, + "name": "accountAlreadyInitialized" + }, + { + "code": 7794, + "name": "accountNotWritable" + }, + { + "code": 7796, + "name": "borshDeserializationError" + }, + { + "code": 7797, + "name": "borshSerializationError" + }, + { + "code": 7798, + "name": "invalidPda" + }, + { + "code": 7802, + "name": "invalidProgram" + }, + { + "code": 7804, + "name": "tokenTransferFailed" + }, + { + "code": 7806, + "name": "invalidMint" + }, + { + "code": 8048, + "name": "sameEndpoints", + "msg": "From and to router endpoints are the same" + }, + { + "code": 8576, + "name": "mismatchingCloseAccountRefundRecipient" + }, + { + "code": 8306, + "name": "invalidCctpMessage" } ], "types": [ diff --git a/solana/ts/tests/01__matchingEngine.ts b/solana/ts/tests/01__matchingEngine.ts index 3c9775aef..ab66879eb 100644 --- a/solana/ts/tests/01__matchingEngine.ts +++ b/solana/ts/tests/01__matchingEngine.ts @@ -3972,12 +3972,11 @@ describe("Matching Engine", function () { if (!ix.programId.equals(engine.ID) || !("data" in ix)) { continue; } - + const data = utils.bytes.bs58.decode(ix.data); if (!data.subarray(0, 8).equals(CPI_EVENT_IX_SELECTOR)) { continue; } - const decoded = engine.program.coder.events.decode( utils.bytes.base64.encode(data.subarray(8)), );