From f8709a20edeb06c8196306f5fe6025cae21a854e Mon Sep 17 00:00:00 2001 From: Vladas Zakrevskis <146100@gmail.com> Date: Fri, 24 Nov 2023 13:02:37 +0200 Subject: [PATCH 01/13] Introduce `Defer` feature (#46) * Add defer mechanism * added toolchain file * added interface traits * used updated near-sdk fork * added storage management trait * created trait for defer * added sweat integration crate * updated workspaces * updated integration utils * updated integration utils * Add events on defer * Update binary * Retrun tests * updated binary * fixed deref_batch, added integration tests * Add log to test * formula integration test * Move examples to integration tests * Update integration tests and fix fee accrual --------- Co-authored-by: Vasily Styagov --- .cargo/config | 9 + .github/workflows/push.yml | 35 + .github/workflows/test.yml | 36 + .gitignore | 2 +- .rustfmt.toml | 3 + Cargo.lock | 3758 +++++++++++++++------ Cargo.toml | 31 +- Makefile | 44 + defer-stub/Cargo.toml | 12 + defer-stub/src/lib.rs | 22 + examples/Cargo.toml | 30 - examples/src/formula.rs | 159 - examples/src/mint.rs | 97 - examples/src/transfer.rs | 141 - integration-tests/Cargo.lock | 3476 +++++++++++++++++++ integration-tests/Cargo.toml | 31 + integration-tests/src/defer.rs | 35 + integration-tests/src/formula.rs | 211 ++ integration-tests/src/interface/common.rs | 13 + integration-tests/src/interface/mod.rs | 1 + integration-tests/src/lib.rs | 44 + integration-tests/src/mint.rs | 38 + integration-tests/src/prepare.rs | 78 + integration-tests/src/transfer.rs | 48 + model/Cargo.toml | 12 + model/src/lib.rs | 81 + res/defer_stub.wasm | Bin 0 -> 90880 bytes res/sweat.wasm | Bin 206835 -> 217749 bytes rust-toolchain.toml | 2 + scripts/build-in-docker.sh | 12 + scripts/build-stub.sh | 9 + scripts/build.sh | 9 + scripts/deploy.sh | 14 + scripts/lint.sh | 16 + sweat-integration/Cargo.toml | 16 + sweat-integration/src/lib.rs | 270 ++ sweat/Cargo.toml | 6 +- sweat/build.sh | 7 - sweat/rustfmt.toml | 1 - sweat/src/defer.rs | 80 + sweat/src/lib.rs | 129 +- sweat/src/math.rs | 4 +- 42 files changed, 7450 insertions(+), 1572 deletions(-) create mode 100644 .cargo/config create mode 100644 .github/workflows/push.yml create mode 100644 .github/workflows/test.yml create mode 100644 .rustfmt.toml create mode 100644 Makefile create mode 100644 defer-stub/Cargo.toml create mode 100644 defer-stub/src/lib.rs delete mode 100644 examples/Cargo.toml delete mode 100644 examples/src/formula.rs delete mode 100644 examples/src/mint.rs delete mode 100644 examples/src/transfer.rs create mode 100644 integration-tests/Cargo.lock create mode 100644 integration-tests/Cargo.toml create mode 100644 integration-tests/src/defer.rs create mode 100644 integration-tests/src/formula.rs create mode 100644 integration-tests/src/interface/common.rs create mode 100644 integration-tests/src/interface/mod.rs create mode 100644 integration-tests/src/lib.rs create mode 100644 integration-tests/src/mint.rs create mode 100644 integration-tests/src/prepare.rs create mode 100644 integration-tests/src/transfer.rs create mode 100644 model/Cargo.toml create mode 100644 model/src/lib.rs create mode 100755 res/defer_stub.wasm create mode 100644 rust-toolchain.toml create mode 100755 scripts/build-in-docker.sh create mode 100755 scripts/build-stub.sh create mode 100755 scripts/build.sh create mode 100755 scripts/deploy.sh create mode 100755 scripts/lint.sh create mode 100644 sweat-integration/Cargo.toml create mode 100644 sweat-integration/src/lib.rs delete mode 100755 sweat/build.sh delete mode 100644 sweat/rustfmt.toml create mode 100644 sweat/src/defer.rs diff --git a/.cargo/config b/.cargo/config new file mode 100644 index 0000000..771d123 --- /dev/null +++ b/.cargo/config @@ -0,0 +1,9 @@ +[profile.contract] +inherits = "release" +strip = true +codegen-units = 1 +opt-level = "z" +lto = true +debug = false +panic = "abort" +overflow-checks = true diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 0000000..bd9d9ed --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,35 @@ +name: Push + +on: + push: + branches: [ main ] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Build + run: make build + + unit-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Unit tests + run: make test + + integration-tests: + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Integration tests + run: make integration diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..c4d00ef --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,36 @@ +name: Test + +on: + pull_request: + branches: [ main ] + +env: + CARGO_TERM_COLOR: always + +jobs: + + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Build + run: make build + + unit-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Unit tests + run: make test + + integration-tests: + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Integration tests + run: make integration diff --git a/.gitignore b/.gitignore index a53e9b3..4dfdeb8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ target/ neardev/ - +.DS_Store diff --git a/.rustfmt.toml b/.rustfmt.toml new file mode 100644 index 0000000..1a25d9c --- /dev/null +++ b/.rustfmt.toml @@ -0,0 +1,3 @@ +group_imports = "StdExternalCrate" +imports_granularity = "Crate" +max_width = 120 diff --git a/Cargo.lock b/Cargo.lock index 5f3f5e2..cf7ff71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,32 +10,44 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "actix" -version = "0.11.0-beta.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb78f9871feb3519e06b947c2becbf2cc7f67ce786e510e6bd3f9a27da3dbf1" +checksum = "cba56612922b907719d4a01cf11c8d5b458e7d3dba946d0435f20f58d6795ed2" dependencies = [ + "actix-macros", "actix-rt", "actix_derive", - "bitflags", + "bitflags 2.4.1", "bytes", "crossbeam-channel", "futures-core", "futures-sink", "futures-task", + "futures-util", "log", "once_cell", - "parking_lot 0.11.2", + "parking_lot", "pin-project-lite", "smallvec", "tokio", - "tokio-util 0.6.9", + "tokio-util 0.7.10", +] + +[[package]] +name = "actix-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" +dependencies = [ + "quote", + "syn 2.0.38", ] [[package]] name = "actix-rt" -version = "2.7.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" dependencies = [ "futures-core", "tokio", @@ -43,169 +55,210 @@ dependencies = [ [[package]] name = "actix_derive" -version = "0.6.0-beta.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae749cf2582eb83efd288edd4e9704600fdce1bc4f69aa0c86ca1368a3e4c13f" +checksum = "7c7db3d5a9718568e4cf4a537cfd7070e6e6ff7481510d0237fb529ac850f6d3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.38", ] [[package]] -name = "addr2line" -version = "0.17.0" +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aes" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ - "gimli", + "cfg-if 1.0.0", + "cipher 0.4.4", + "cpufeatures", ] [[package]] -name = "adler" -version = "1.0.2" +name = "ahash" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", +] [[package]] name = "ahash" -version = "0.4.7" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", + "version_check", + "zerocopy", +] [[package]] name = "aho-corasick" -version = "0.7.18" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] [[package]] -name = "anyhow" -version = "1.0.56" +name = "android-tzdata" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4361135be9122e0870de935d7c439aef945b9f9ddd4199a553b5270b49c82a27" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" [[package]] -name = "arrayref" -version = "0.3.6" +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] [[package]] -name = "arrayvec" -version = "0.4.12" +name = "anstream" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ - "nodrop", + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", ] [[package]] -name = "arrayvec" -version = "0.5.2" +name = "anstyle" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] -name = "arrayvec" -version = "0.7.2" +name = "anstyle-parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +dependencies = [ + "utf8parse", +] [[package]] -name = "async-channel" -version = "1.6.1" +name = "anstyle-query" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", + "windows-sys", ] [[package]] -name = "async-io" -version = "1.6.0" +name = "anstyle-wincon" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ - "concurrent-queue", - "futures-lite", - "libc", - "log", - "once_cell", - "parking", - "polling", - "slab", - "socket2", - "waker-fn", - "winapi", + "anstyle", + "windows-sys", ] [[package]] -name = "async-process" -version = "1.3.0" +name = "anyhow" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83137067e3a2a6a06d67168e49e68a0957d215410473a740cea95a2425c0b7c6" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "arbitrary" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2e1373abdaa212b704512ec2bd8b26bd0b7d5c3f70117411a5d9a451383c859" dependencies = [ - "async-io", - "blocking", - "cfg-if 1.0.0", - "event-listener", - "futures-lite", - "libc", - "once_cell", - "signal-hook", - "winapi", + "derive_arbitrary", ] [[package]] -name = "async-task" -version = "4.2.0" +name = "arrayref" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] -name = "async-trait" -version = "0.1.52" +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-stream" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ - "proc-macro2", - "quote", - "syn", + "async-stream-impl", + "futures-core", + "pin-project-lite", ] [[package]] -name = "atomic-waker" -version = "1.0.0" +name = "async-stream-impl" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] [[package]] -name = "autocfg" -version = "1.0.1" +name = "async-trait" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] [[package]] -name = "backtrace" -version = "0.3.64" +name = "atty" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", + "hermit-abi 0.1.19", "libc", - "miniz_oxide", - "object", - "rustc-demangle", + "winapi", ] +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + [[package]] name = "base64" version = "0.11.0" @@ -214,25 +267,38 @@ checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + +[[package]] +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "binary-install" -version = "0.0.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" +checksum = "93bff426ff93f3610dd2b946f3eb8cb2d1285ca8682834d43be531a3f93db2ff" dependencies = [ - "curl", - "dirs 1.0.5", - "failure", + "anyhow", + "dirs-next", "flate2", - "hex 0.3.2", + "fs2", + "hex", "is_executable", "siphasher", "tar", - "zip", + "ureq", + "zip 0.6.6", ] [[package]] @@ -241,16 +307,34 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + [[package]] name = "bitvec" version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ - "funty", - "radium", + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty 2.0.0", + "radium 0.7.0", "tap", - "wyz", + "wyz 0.5.1", ] [[package]] @@ -264,99 +348,145 @@ dependencies = [ "opaque-debug", ] -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - [[package]] name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "block-padding", "generic-array", ] [[package]] name = "block-buffer" -version = "0.10.2" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] [[package]] -name = "block-padding" -version = "0.2.1" +name = "borsh" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] [[package]] -name = "blocking" -version = "1.2.0" +name = "borsh" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" dependencies = [ - "async-channel", - "async-task", - "atomic-waker", - "fastrand", - "futures-lite", - "once_cell", + "borsh-derive 0.10.3", + "hashbrown 0.13.2", ] [[package]] name = "borsh" -version = "0.9.1" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3f7359eeed8d454c38bbb25eb89d98b888b1060bbfeed2cda71cb013ff2dc2" +dependencies = [ + "borsh-derive 1.1.1", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18dda7dc709193c0d86a1a51050a926dc3df1cf262ec46a23a25dba421ea1924" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" dependencies = [ - "borsh-derive", - "hashbrown 0.9.1", + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", ] [[package]] name = "borsh-derive" -version = "0.9.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684155372435f578c0fa1acd13ebbb182cc19d6b38b64ae7901da4393217d264" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", "proc-macro2", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "318d18ba283f9aa5bfef1405996ce66c584127f401be1403729ec88b10adc772" +dependencies = [ + "once_cell", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 2.0.38", + "syn_derive", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] name = "borsh-derive-internal" -version = "0.9.1" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2102f62f8b6d3edeab871830782285b64cc1830168094db05c8e458f209bc5c3" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "borsh-schema-derive-internal" -version = "0.9.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196c978c4c9b0b142d446ef3240690bf5a8a33497074a113ff9a337ccb750483" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "brownstone" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ea61398f34f1395ccbeb046fb68c87b631d1f34567fed0f0f11fa35d18d8d" +dependencies = [ + "arrayvec 0.7.4", ] [[package]] @@ -365,41 +495,53 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "tinyvec", +] + [[package]] name = "bumpalo" -version = "3.9.1" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-slice-cast" -version = "1.2.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bytesize" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c58ec36aac5066d5ca17df51b3e70279f5670a72102f5752cb7e7c856adfc70" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +dependencies = [ + "serde", +] [[package]] name = "bzip2" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ "bzip2-sys", "libc", @@ -422,21 +564,75 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" dependencies = [ - "cipher", + "cipher 0.2.5", "ppv-lite86", ] [[package]] -name = "cache-padded" -version = "1.2.0" +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-near" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f73eb01da3b6737778d2006645533e75563d1080c64bf714bfb88d3fb0ac09b" +dependencies = [ + "anyhow", + "atty", + "bs58 0.4.0", + "camino", + "cargo_metadata", + "clap 3.2.25", + "colored", + "env_logger", + "libloading", + "log", + "near-abi", + "rustc_version", + "schemars", + "serde_json", + "sha2 0.10.8", + "symbolic-debuginfo", + "zstd", +] + +[[package]] +name = "cargo-platform" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" +checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", +] [[package]] name = "cc" -version = "1.0.72" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "jobserver", + "libc", +] [[package]] name = "cfg-if" @@ -450,18 +646,25 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ - "libc", - "num-integer", + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", "serde", - "time", - "winapi", + "wasm-bindgen", + "windows-targets", ] [[package]] @@ -474,12 +677,109 @@ dependencies = [ ] [[package]] -name = "concurrent-queue" -version = "1.2.2" +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[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_derive 3.2.25", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +dependencies = [ + "clap_builder", + "clap_derive 4.4.7", +] + +[[package]] +name = "clap_builder" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +dependencies = [ + "anstream", + "anstyle", + "clap_lex 0.6.0", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[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 = "clap_lex" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" dependencies = [ - "cache-padded", + "is-terminal", + "lazy_static", + "windows-sys", ] [[package]] @@ -506,15 +806,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] @@ -530,9 +830,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.4" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if 1.0.0", "crossbeam-utils", @@ -540,12 +840,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.8" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if 1.0.0", - "lazy_static", ] [[package]] @@ -575,61 +874,109 @@ dependencies = [ ] [[package]] -name = "curl" -version = "0.4.43" +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d855aeef205b43f65a5001e0997d81f8efca7badad4fad7d897aa7f0d0651f" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2", - "winapi", + "darling_core", + "darling_macro", ] [[package]] -name = "curl-sys" -version = "0.4.53+curl-7.82.0" +name = "darling_core" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8092905a5a9502c312f223b2775f57ec5c5b715f9a15ee9d2a8591d1364a0352" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "winapi", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.38", ] [[package]] -name = "curve25519-dalek" -version = "3.2.0" +name = "darling_macro" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", + "darling_core", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "debugid" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" +dependencies = [ + "uuid", +] + +[[package]] +name = "defer-stub" +version = "0.1.0" +dependencies = [ + "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", +] + +[[package]] +name = "deranged" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "derive_more" -version = "0.99.16" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn", + "syn 1.0.109", ] +[[package]] +name = "deunicode" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a1abaf4d861455be59f64fd2b55606cb151fce304ede7165f410243ce96bde6" + [[package]] name = "digest" version = "0.9.0" @@ -641,44 +988,53 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.3" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.2", + "block-buffer 0.10.4", "crypto-common", + "subtle", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", ] [[package]] -name = "dirs" -version = "1.0.5" +name = "dirs-sys-next" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", - "redox_users 0.3.5", + "redox_users", "winapi", ] [[package]] -name = "dirs" -version = "3.0.2" +name = "dmsort" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" -dependencies = [ - "dirs-sys", -] +checksum = "f0bc8fbe9441c17c9f46f75dfe27fa1ddb6c68a461ccaed0481419219d4f10d3" [[package]] -name = "dirs-sys" -version = "0.3.7" +name = "dotenv" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users 0.4.3", - "winapi", -] +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dyn-clone" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "easy-ext" @@ -688,9 +1044,9 @@ checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" [[package]] name = "ed25519" -version = "1.3.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e1069e39f1454367eb2de793ed062fac4c35c2934b76a81d90dd9abcd28816" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ "signature", ] @@ -705,78 +1061,116 @@ dependencies = [ "ed25519", "rand 0.7.3", "serde", - "sha2 0.9.8", + "sha2 0.9.9", "zeroize", ] +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "elementtree" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6319c9433cf1e95c60c8533978bccf0614f27f03bb4e514253468eeeaa7fe3" +dependencies = [ + "string_cache", + "xml-rs", +] + [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if 1.0.0", ] [[package]] -name = "event-listener" -version = "2.5.2" +name = "enum-map" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" +checksum = "53337c2dbf26a3c31eccc73a37b10c1614e8d4ae99b6a50d553e8936423c1f16" +dependencies = [ + "enum-map-derive", +] [[package]] -name = "examples" -version = "0.0.0" +name = "enum-map-derive" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d0b288e3bb1d861c4403c1774a6f7a798781dfc519b3647df2a3dd4ae95f25" dependencies = [ - "anyhow", - "near-sdk", - "near-units", - "serde_json", - "tokio", - "workspaces", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] -name = "failure" -version = "0.1.8" +name = "env_logger" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ - "backtrace", - "failure_derive", + "atty", + "humantime", + "log", + "regex", + "termcolor", ] [[package]] -name = "failure_derive" -version = "0.1.8" +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "libc", + "windows-sys", ] [[package]] -name = "fastrand" -version = "1.7.0" +name = "fake" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +checksum = "26221445034074d46b276e13eb97a265ebdb8ed8da705c4dddd3dd20b66b45d2" dependencies = [ - "instant", + "deunicode", + "rand 0.8.5", ] +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + [[package]] name = "filetime" -version = "0.2.15" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975ccf83d8d9d0d84682850a38c8169027be83368805971cc4f238c2b245bc98" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.2.13", - "winapi", + "redox_syscall 0.3.5", + "windows-sys", ] [[package]] @@ -786,20 +1180,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ "byteorder", - "rand 0.8.4", + "rand 0.8.5", "rustc-hex", "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" -version = "1.0.22" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6988e897c1c9c485f43b47a529cef42fde0547f9d8d41a7062518f1d8fc53f" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ - "cfg-if 1.0.0", "crc32fast", - "libc", "miniz_oxide", ] @@ -826,85 +1224,129 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "funty" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", + "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" + +[[package]] +name = "futures-executor" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] -name = "futures-lite" -version = "1.12.0" +name = "futures-macro" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" 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.4" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -923,26 +1365,41 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if 1.0.0", "libc", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "gimli" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "goblin" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7666983ed0dd8d21a6f6576ee00053ca0926fb281a5522577a4dbd0f1b54143" +dependencies = [ + "log", + "plain", + "scroll 0.11.0", +] [[package]] name = "h2" -version = "0.3.13" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -950,27 +1407,42 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", - "tokio-util 0.7.1", + "tokio-util 0.7.10", "tracing", ] [[package]] name = "hashbrown" -version = "0.9.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash", + "ahash 0.7.7", ] [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.6", +] + +[[package]] +name = "hashbrown" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" [[package]] name = "heck" @@ -983,9 +1455,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -997,42 +1469,54 @@ dependencies = [ ] [[package]] -name = "hex" -version = "0.3.2" +name = "hermit-abi" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] [[package]] name = "home" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "winapi", + "windows-sys", ] [[package]] name = "http" -version = "0.2.6" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", - "itoa 1.0.1", + "itoa", ] [[package]] name = "http-body" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -1041,21 +1525,27 @@ dependencies = [ [[package]] name = "httparse" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9100414882e15fb7feccb4897e5f0ff0ff1ca7d1a86a23208ada4d7a18e6c6c4" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.18" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -1066,7 +1556,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.1", + "itoa", "pin-project-lite", "socket2", "tokio", @@ -1075,6 +1565,18 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1088,13 +1590,41 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" -version = "0.2.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] @@ -1110,39 +1640,117 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031ee" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] +[[package]] +name = "indent_write" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" + [[package]] name = "indexmap" -version = "1.7.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown 0.11.2", + "hashbrown 0.12.3", + "serde", ] [[package]] -name = "instant" -version = "0.1.12" +name = "indexmap" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ - "cfg-if 1.0.0", + "equivalent", + "hashbrown 0.14.2", + "serde", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "integration-tests" +version = "1.0.0" +dependencies = [ + "anyhow", + "async-trait", + "borsh 0.10.3", + "integration-utils", + "maplit", + "near-contract-standards", + "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-units", + "near-workspaces", + "pkg-config", + "serde_json", + "sweat-integration", + "sweat-model", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "integration-trait" +version = "0.1.0" +source = "git+https://github.com/sweatco/integration-trait.git?rev=83a69f7ba4acab9405bf935f7dfc70f2f5279c40#83a69f7ba4acab9405bf935f7dfc70f2f5279c40" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "integration-utils" +version = "0.1.0" +source = "git+https://github.com/sweatco/integration-utils.git?rev=1b05c03351009c901a45400687c24f685f8b81c3#1b05c03351009c901a45400687c24f685f8b81c3" +dependencies = [ + "anyhow", + "async-trait", + "dotenv", + "fake", + "futures", + "itertools 0.11.0", + "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-units", + "near-workspaces", + "tokio", ] [[package]] name = "ipnet" -version = "2.4.0" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" + +[[package]] +name = "is-terminal" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi 0.3.3", + "rustix", + "windows-sys", +] [[package]] name = "is_executable" @@ -1154,85 +1762,162 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "0.4.8" +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jobserver" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +dependencies = [ + "libc", +] + +[[package]] +name = "joinery" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" [[package]] name = "js-sys" -version = "0.3.57" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json-patch" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" +dependencies = [ + "serde", + "serde_json", + "thiserror", + "treediff", +] + +[[package]] +name = "json_comments" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41ee439ee368ba4a77ac70d04f14015415af8600d6c894dc1f11bd79758c57d5" + [[package]] name = "keccak" -version = "0.1.0" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.122" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec647867e2bf0772e28c8bcde4f0d19a9216916e890543b5a03ed8ef27b8f259" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] -name = "libz-sys" -version = "1.1.5" +name = "libloading" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f35facd4a5673cb5a48822be2be1d4236c1c99cb4113cab7061ac720d5bf859" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", + "cfg-if 1.0.0", + "winapi", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" + [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.16" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "cfg-if 1.0.0", + "regex-automata 0.1.10", ] [[package]] -name = "matches" -version = "0.1.9" +name = "memchr" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] -name = "memchr" -version = "2.4.1" +name = "memmap2" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] [[package]] name = "memory_units" @@ -1242,48 +1927,47 @@ checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", - "autocfg", ] [[package]] name = "mio" -version = "0.8.2" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", - "log", - "miow", - "ntapi", "wasi 0.11.0+wasi-snapshot-preview1", - "winapi", + "windows-sys", ] [[package]] -name = "miow" -version = "0.3.7" +name = "multimap" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", -] +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "native-tls" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ "lazy_static", "libc", @@ -1297,113 +1981,98 @@ dependencies = [ "tempfile", ] +[[package]] +name = "near-abi" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" +dependencies = [ + "borsh 0.9.3", + "schemars", + "semver", + "serde", +] + [[package]] name = "near-account-id" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b81ee2cf429b8bc04046d94f725a4f192fe7b13f42d76649d0177fd9ea719d8" +checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" dependencies = [ - "borsh", + "borsh 0.9.3", "serde", ] [[package]] name = "near-account-id" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de83d74a9241be8cc4eb3055216966b58bf8c463e8e285c0dc553925acdd19fa" +checksum = "dc0cb40869cab7f5232f934f45db35bffe0f2d2a7cb0cd0346202fbe4ebf2dd7" dependencies = [ - "borsh", + "borsh 0.10.3", "serde", ] [[package]] name = "near-chain-configs" -version = "0.12.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a830a8ea64328e4d2553873df848a97a90d111cb838ff5e199bfce79b62b6c2b" +checksum = "c4f9a1c805846237d56f99b328ba6ab77e5d43ef59aaaf8d2a41d42fdc708a7b" dependencies = [ "anyhow", "chrono", "derive_more", - "near-crypto 0.12.0", - "near-primitives 0.12.0", + "near-config-utils", + "near-crypto 0.17.0", + "near-o11y", + "near-primitives 0.17.0", "num-rational", + "once_cell", "serde", "serde_json", - "sha2 0.9.8", + "sha2 0.10.8", "smart-default", "tracing", ] [[package]] -name = "near-chain-primitives" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7984007ab1c73f101c5acf60a1e1f86a4afd47048df1e2412d4501794b43da" -dependencies = [ - "chrono", - "failure", - "failure_derive", - "log", - "near-crypto 0.12.0", - "near-primitives 0.12.0", - "thiserror", -] - -[[package]] -name = "near-chunks-primitives" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "838c06b137c7452001fc826f2defa6328b2695aaa720df2f0d08e31e54f849f6" -dependencies = [ - "near-chain-primitives", -] - -[[package]] -name = "near-client-primitives" -version = "0.12.0" +name = "near-config-utils" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc73ebfbb59defac9a17883467af98a14a37f53079dbcbdeec57c37d329de2b" +checksum = "5523e7dce493c45bc3241eb3100d943ec471852f9b1f84b46a34789eadf17031" dependencies = [ - "actix", - "chrono", - "near-chain-configs", - "near-chain-primitives", - "near-chunks-primitives", - "near-crypto 0.12.0", - "near-network-primitives", - "near-primitives 0.12.0", - "strum 0.20.0", + "anyhow", + "json_comments", "thiserror", + "tracing", ] [[package]] name = "near-contract-standards" -version = "4.0.0" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" +version = "4.1.1" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" dependencies = [ - "near-sdk", + "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "schemars", "serde", "serde_json", ] [[package]] name = "near-crypto" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d301d3ca4f59ab69c4b8ff625e7b2ef624345f69ab651d15c5fd59382096d2b1" +checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" dependencies = [ "arrayref", "blake2", - "borsh", - "bs58", + "borsh 0.9.3", + "bs58 0.4.0", "c2-chacha", "curve25519-dalek", "derive_more", "ed25519-dalek", - "libc", - "near-account-id 0.12.0", + "near-account-id 0.14.0", "once_cell", "parity-secp256k1", "primitive-types", @@ -1417,25 +2086,25 @@ dependencies = [ [[package]] name = "near-crypto" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ecf0b8b31aa7f4e60f629f72213a2617ca4a5f45cd1ae9ed2cf7cecfebdbb7" +checksum = "ff6b382b626e7e0cd372d027c6672ac97b4b6ee6114288c9e58d8180b935d315" dependencies = [ - "arrayref", "blake2", - "borsh", - "bs58", + "borsh 0.10.3", + "bs58 0.4.0", "c2-chacha", "curve25519-dalek", "derive_more", "ed25519-dalek", - "libc", - "near-account-id 0.13.0", + "hex", + "near-account-id 0.17.0", + "near-config-utils", + "near-stdx", "once_cell", - "parity-secp256k1", "primitive-types", "rand 0.7.3", - "rand_core 0.5.1", + "secp256k1", "serde", "serde_json", "subtle", @@ -1443,235 +2112,290 @@ dependencies = [ ] [[package]] -name = "near-jsonrpc-client" -version = "0.3.0" +name = "near-fmt" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf00d43006d0768aba1ff4d24386192a7aed2ad7548e9301055b6494917b2cc7" +checksum = "c44c842c6cfcd9b8c387cccd4cd0619a5f21920cde5d5c292af3cc5d40510672" dependencies = [ - "borsh", - "lazy_static", + "near-primitives-core 0.17.0", +] + +[[package]] +name = "near-gas" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b30860db1eceba9b445dc56558a0fdcdfe29fd612a088e697b32dfb681aaac" +dependencies = [ + "borsh 1.1.1", + "schemars", + "serde", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "118f44c02ad211db805c1370ad3ff26576af6ff554093c9fece1b835d29d233a" +dependencies = [ + "borsh 0.10.3", + "lazy_static", + "log", "near-chain-configs", + "near-crypto 0.17.0", "near-jsonrpc-primitives", - "near-primitives 0.12.0", + "near-primitives 0.17.0", "reqwest", "serde", "serde_json", "thiserror", - "uuid", ] [[package]] name = "near-jsonrpc-primitives" -version = "0.12.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e636f8862e0f5f565fb02b752e16aa676fc684e81682bfbb39a964defea627" +checksum = "97b2934b5ab243e25e951c984525ba0aff0e719ed915c988c5195405aa0f6987" dependencies = [ - "actix", + "arbitrary", "near-chain-configs", - "near-client-primitives", - "near-crypto 0.12.0", - "near-metrics", - "near-network-primitives", - "near-primitives 0.12.0", - "near-primitives-core 0.12.0", - "near-rpc-error-macro 0.12.0", - "once_cell", + "near-crypto 0.17.0", + "near-primitives 0.17.0", + "near-rpc-error-macro 0.17.0", "serde", "serde_json", "thiserror", - "tracing", - "uuid", -] - -[[package]] -name = "near-metrics" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df4074b56b24c73073b576bc27133182c8654d414be09ef666ad1e1d5ea8adb" -dependencies = [ - "lazy_static", - "log", - "prometheus", ] [[package]] -name = "near-network-primitives" -version = "0.12.0" +name = "near-o11y" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63ddab6f0376a0ce870947e1ea2e98eba746af2e7edfba5dc127bbd2a2508d6" +checksum = "af7d35397b02b131c188c72f3885e97daeccab134ec2fc8cc0073a94cf1cfe19" dependencies = [ "actix", - "actix_derive", - "anyhow", - "borsh", - "chrono", - "near-crypto 0.12.0", - "near-primitives 0.12.0", - "strum 0.20.0", + "atty", + "clap 4.4.7", + "near-crypto 0.17.0", + "near-primitives-core 0.17.0", + "once_cell", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry-semantic-conventions", + "prometheus", + "serde", + "strum", + "thiserror", "tokio", "tracing", + "tracing-appender", + "tracing-opentelemetry", + "tracing-subscriber", ] [[package]] name = "near-primitives" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad6a0b49d322ebda81ec4fdd99dca804526539673d0b12133286e0d7934f4802" +checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" dependencies = [ - "borsh", + "borsh 0.9.3", "byteorder", "bytesize", "chrono", "derive_more", "easy-ext", - "hex 0.4.3", - "near-crypto 0.12.0", - "near-primitives-core 0.12.0", - "near-rpc-error-macro 0.12.0", - "near-vm-errors 0.12.0", + "hex", + "near-crypto 0.14.0", + "near-primitives-core 0.14.0", + "near-rpc-error-macro 0.14.0", + "near-vm-errors 0.14.0", "num-rational", + "once_cell", "primitive-types", "rand 0.7.3", "reed-solomon-erasure", "serde", "serde_json", "smart-default", + "strum", + "thiserror", ] [[package]] name = "near-primitives" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2ba19282e79a4485a77736b679d276b09870bbf8042a18e0f0ae36347489c5" +checksum = "05f7051aaf199adc4d068620fca6d5f70f906a1540d03a8bb3701271f8881835" dependencies = [ - "borsh", - "byteorder", + "arbitrary", + "borsh 0.10.3", "bytesize", + "cfg-if 1.0.0", "chrono", "derive_more", "easy-ext", - "hex 0.4.3", - "near-crypto 0.13.0", - "near-primitives-core 0.13.0", - "near-rpc-error-macro 0.13.0", - "near-vm-errors 0.13.0", + "enum-map", + "hex", + "near-crypto 0.17.0", + "near-fmt", + "near-primitives-core 0.17.0", + "near-rpc-error-macro 0.17.0", + "near-stdx", + "near-vm-errors 0.17.0", "num-rational", "once_cell", "primitive-types", - "rand 0.7.3", + "rand 0.8.5", "reed-solomon-erasure", "serde", "serde_json", + "serde_with", + "serde_yaml", "smart-default", - "strum 0.24.1", + "strum", "thiserror", + "time", + "tracing", ] [[package]] name = "near-primitives-core" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaae2d2271ecdb0e3d90c11724cdb46d7d5bb50838fdb3941bfc381634cf08a3" +checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" dependencies = [ "base64 0.11.0", - "borsh", - "bs58", + "borsh 0.9.3", + "bs58 0.4.0", "derive_more", - "near-account-id 0.12.0", + "near-account-id 0.14.0", "num-rational", "serde", - "sha2 0.9.8", + "sha2 0.10.8", + "strum", ] [[package]] name = "near-primitives-core" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb561feb392bb8c4f540256073446e6689af087bf6356e8dddcf75fc279f201f" +checksum = "775fec19ef51a341abdbf792a9dda5b4cb89f488f681b2fd689b9321d24db47b" dependencies = [ - "base64 0.11.0", - "borsh", - "bs58", + "arbitrary", + "base64 0.21.5", + "borsh 0.10.3", + "bs58 0.4.0", "derive_more", - "near-account-id 0.13.0", + "enum-map", + "near-account-id 0.17.0", "num-rational", "serde", - "sha2 0.10.2", - "strum 0.24.1", + "serde_repr", + "serde_with", + "sha2 0.10.8", + "strum", + "thiserror", ] [[package]] name = "near-rpc-error-core" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5b9fd54b177a2efc1203cd605dc3369289d9c2a74ddbfdfb372feb13be38060" +checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" dependencies = [ "quote", "serde", - "syn", + "syn 1.0.109", ] [[package]] name = "near-rpc-error-core" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77fdd7ea8d8f786878651c37691515d5053f827ae60894aa40c16882b78f77c9" +checksum = "84c1eda300e2e78f4f945ae58117d49e806899f4a51ee2faa09eda5ebc2e6571" dependencies = [ "quote", "serde", - "syn", + "syn 2.0.38", ] [[package]] name = "near-rpc-error-macro" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38f5469f86f3c8ce0f39828f10a9c6aca2581d71a5c176a1c9be7e7eb4511a3" +checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" dependencies = [ - "near-rpc-error-core 0.12.0", + "near-rpc-error-core 0.14.0", "serde", - "syn", + "syn 1.0.109", ] [[package]] name = "near-rpc-error-macro" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e521842b6ae864dfe5391afbbe2df9e9d8427c26e9333b2e0b65cd42094f7607" +checksum = "31d2dadd765101c77e664029dd6fbec090e696877d4ae903c620d02ceda4969a" dependencies = [ - "near-rpc-error-core 0.13.0", + "fs2", + "near-rpc-error-core 0.17.0", "serde", - "syn", + "syn 2.0.38", ] [[package]] name = "near-sandbox-utils" -version = "0.2.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a543af5c633d7351ff92bbb523f040ffd393b7460d10ee7478282221a57abcf" +checksum = "2de216bb0152bfb64f59016d9e6a5b1ac56dd85f729e5fde08461571e2182c8f" dependencies = [ "anyhow", - "async-process", "binary-install", "chrono", - "hex 0.3.2", + "fs2", "home", + "tokio", +] + +[[package]] +name = "near-sdk" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" +dependencies = [ + "base64 0.13.1", + "borsh 0.9.3", + "bs58 0.4.0", + "near-abi", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-primitives-core 0.14.0", + "near-sdk-macros 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "near-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-vm-logic", + "once_cell", + "schemars", + "serde", + "serde_json", + "wee_alloc", ] [[package]] name = "near-sdk" -version = "4.0.0" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" -dependencies = [ - "base64 0.13.0", - "borsh", - "bs58", - "near-crypto 0.13.0", - "near-primitives 0.13.0", - "near-primitives-core 0.13.0", - "near-sdk-macros", - "near-sys", +version = "4.1.1" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" +dependencies = [ + "base64 0.13.1", + "borsh 0.9.3", + "bs58 0.4.0", + "near-abi", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-primitives-core 0.14.0", + "near-sdk-macros 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sys 0.2.0 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", "near-vm-logic", + "once_cell", + "schemars", "serde", "serde_json", "wee_alloc", @@ -1679,19 +2403,52 @@ dependencies = [ [[package]] name = "near-sdk-macros" -version = "4.0.0" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "near-sdk-macros" +version = "4.1.1" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" dependencies = [ "Inflector", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] +[[package]] +name = "near-stdx" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6540152fba5e96fe5d575b79e8cd244cf2add747bb01362426bdc069bc3a23bc" + +[[package]] +name = "near-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" + [[package]] name = "near-sys" version = "0.2.0" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b#af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" + +[[package]] +name = "near-token" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" +dependencies = [ + "serde", +] [[package]] name = "near-units" @@ -1722,66 +2479,130 @@ dependencies = [ "near-units-core", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "near-vm-errors" -version = "0.12.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5092bbad4e16e48423d9be92e18b84af8e128c263df66d867a3f99c560b3cb28" +checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" dependencies = [ - "borsh", - "near-account-id 0.12.0", - "near-rpc-error-macro 0.12.0", + "borsh 0.9.3", + "near-account-id 0.14.0", + "near-rpc-error-macro 0.14.0", "serde", ] [[package]] name = "near-vm-errors" -version = "0.13.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e02faf2bc1f6ef82b965cfe44389808fb5594f7aca4b596766117f4ce74df20" +checksum = "ec545d1bede0579e7c15dd2dce9b998dc975c52f2165702ff40bec7ff69728bb" dependencies = [ - "borsh", - "near-account-id 0.13.0", - "near-rpc-error-macro 0.13.0", + "borsh 0.10.3", + "near-account-id 0.17.0", + "near-rpc-error-macro 0.17.0", "serde", + "strum", + "thiserror", ] [[package]] name = "near-vm-logic" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f024d90451cd3c24d7a0a5cabf3636b192a60eb8e3ff0456f6c18b91152c346d" +checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" dependencies = [ - "base64 0.13.0", - "borsh", - "bs58", + "base64 0.13.1", + "borsh 0.9.3", + "bs58 0.4.0", "byteorder", - "near-account-id 0.13.0", - "near-crypto 0.13.0", - "near-primitives 0.13.0", - "near-primitives-core 0.13.0", - "near-vm-errors 0.13.0", + "near-account-id 0.14.0", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-primitives-core 0.14.0", + "near-vm-errors 0.14.0", "ripemd", "serde", - "sha2 0.9.8", + "sha2 0.10.8", "sha3", + "zeropool-bn", ] [[package]] -name = "nodrop" -version = "0.1.14" +name = "near-workspaces" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a14e772e49ba9644c06dad20f635b6463f74d378fa19822bfc35fef479c72e5" +dependencies = [ + "async-trait", + "base64 0.21.5", + "borsh 0.10.3", + "bs58 0.5.0", + "cargo-near", + "chrono", + "fs2", + "json-patch", + "libc", + "near-account-id 0.17.0", + "near-crypto 0.17.0", + "near-gas", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.17.0", + "near-sandbox-utils", + "near-sdk 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "near-token", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "sha2 0.10.8", + "tempfile", + "thiserror", + "tokio", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" [[package]] -name = "ntapi" -version = "0.3.7" +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom-supreme" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +checksum = "aadc66631948f6b65da03be4c4cd8bd104d481697ecbb9bbd65719b1ec60bc9f" dependencies = [ + "brownstone", + "indent_write", + "joinery", + "memchr", + "nom", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", "winapi", ] @@ -1798,19 +2619,19 @@ dependencies = [ [[package]] name = "num-format" -version = "0.4.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" dependencies = [ - "arrayvec 0.4.12", - "itoa 0.4.8", + "arrayvec 0.7.4", + "itoa", ] [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ "autocfg", "num-traits", @@ -1831,37 +2652,28 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.3", "libc", ] -[[package]] -name = "object" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" -dependencies = [ - "memchr", -] - [[package]] name = "once_cell" -version = "1.10.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -1871,18 +2683,30 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.38" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags", + "bitflags 2.4.1", "cfg-if 1.0.0", "foreign-types", "libc", "once_cell", + "openssl-macros", "openssl-sys", ] +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "openssl-probe" version = "0.1.5" @@ -1891,25 +2715,84 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.72" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ - "autocfg", "cc", "libc", "pkg-config", "vcpkg", ] +[[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", + "tokio", + "tokio-stream", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1a6ca9de4c8b00aa7f1a153bd76cb263287155cec642680d79d98706f3d28a" +dependencies = [ + "async-trait", + "futures", + "futures-util", + "http", + "opentelemetry", + "prost", + "thiserror", + "tokio", + "tonic", + "tonic-build", +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd" +dependencies = [ + "opentelemetry", +] + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parity-scale-codec" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" dependencies = [ - "arrayvec 0.7.2", - "bitvec", + "arrayvec 0.7.4", + "bitvec 0.20.4", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -1922,10 +2805,10 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ - "proc-macro-crate 1.1.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1941,99 +2824,112 @@ dependencies = [ ] [[package]] -name = "parking" -version = "2.0.0" +name = "parking_lot" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] [[package]] -name = "parking_lot" -version = "0.11.2" +name = "parking_lot_core" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.5", + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.4.1", + "smallvec", + "windows-targets", ] [[package]] -name = "parking_lot" -version = "0.12.0" +name = "password-hash" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ - "lock_api", - "parking_lot_core 0.9.2", + "base64ct", + "rand_core 0.6.4", + "subtle", ] [[package]] -name = "parking_lot_core" -version = "0.8.5" +name = "pbkdf2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "cfg-if 1.0.0", - "instant", - "libc", - "redox_syscall 0.2.13", - "smallvec", - "winapi", + "digest 0.10.7", + "hmac", + "password-hash", + "sha2 0.10.8", ] [[package]] -name = "parking_lot_core" -version = "0.9.2" +name = "pdb" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37" +checksum = "13f4d162ecaaa1467de5afbe62d597757b674b51da8bb4e587430c5fdb2af7aa" dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.2.13", - "smallvec", - "windows-sys", + "fallible-iterator", + "scroll 0.10.2", + "uuid", ] [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "petgraph" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset", + "indexmap 2.0.2", +] [[package]] -name = "pest" -version = "2.1.3" +name = "phf_shared" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" dependencies = [ - "ucd-trie", + "siphasher", ] [[package]] name = "pin-project" -version = "1.0.10" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.10" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.38", ] [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -2043,37 +2939,33 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] -name = "polling" -version = "2.2.0" +name = "plain" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "log", - "wepoll-ffi", - "winapi", -] +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] -name = "portpicker" -version = "0.1.1" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" -dependencies = [ - "rand 0.8.4", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "primitive-types" @@ -2097,49 +2989,126 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "thiserror", - "toml", + "once_cell", + "toml_edit", ] [[package]] -name = "proc-macro2" -version = "1.0.32" +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ - "unicode-xid", + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", ] [[package]] -name = "prometheus" -version = "0.11.0" +name = "proc-macro-error-attr" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "cfg-if 1.0.0", - "fnv", - "lazy_static", - "parking_lot 0.11.2", - "protobuf", - "regex", - "thiserror", -] - + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "protobuf", + "thiserror", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" +dependencies = [ + "bytes", + "heck 0.3.3", + "itertools 0.10.5", + "lazy_static", + "log", + "multimap", + "petgraph", + "prost", + "prost-types", + "regex", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534b7a0e836e3c482d2693070f982e39e7611da9695d4d1f5a4b186b51faef0a" +dependencies = [ + "bytes", + "prost", +] + [[package]] name = "protobuf" -version = "2.27.1" +version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf7e6d18738ecd0902d30d1ad232c9125985a3422929b16c65517b38adc14f96" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" [[package]] name = "quote" -version = "1.0.10" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -2150,6 +3119,12 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.7.3" @@ -2160,19 +3135,18 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.3", - "rand_hc 0.3.1", + "rand_core 0.6.4", ] [[package]] @@ -2192,7 +3166,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -2206,11 +3180,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.3", + "getrandom 0.2.10", ] [[package]] @@ -2223,38 +3197,30 @@ dependencies = [ ] [[package]] -name = "rand_hc" -version = "0.3.1" +name = "redox_syscall" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "rand_core 0.6.3", + "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.13" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] -name = "redox_users" -version = "0.3.5" +name = "redox_syscall" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", + "bitflags 1.3.2", ] [[package]] @@ -2263,8 +3229,8 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.3", - "redox_syscall 0.2.13", + "getrandom 0.2.10", + "redox_syscall 0.2.16", "thiserror", ] @@ -2279,37 +3245,55 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.4" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] -name = "regex-syntax" -version = "0.6.25" +name = "regex-automata" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "regex-automata" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ - "winapi", + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", ] +[[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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + [[package]] name = "reqwest" -version = "0.11.10" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ - "base64 0.13.0", + "base64 0.21.5", "bytes", "encoding_rs", "futures-core", @@ -2321,17 +3305,19 @@ dependencies = [ "hyper-tls", "ipnet", "js-sys", - "lazy_static", "log", "mime", "native-tls", + "once_cell", "percent-encoding", "pin-project-lite", "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", + "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", @@ -2340,32 +3326,28 @@ dependencies = [ ] [[package]] -name = "ripemd" -version = "0.1.1" +name = "ring" +version = "0.17.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1facec54cb5e0dc08553501fa740091086d0259ad0067e0d4103448e4cb22ed3" +checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" dependencies = [ - "digest 0.10.3", + "cc", + "getrandom 0.2.10", + "libc", + "spin 0.9.8", + "untrusted", + "windows-sys", ] [[package]] -name = "rust-argon2" -version = "0.8.3" +name = "ripemd" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "base64 0.13.0", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", + "digest 0.10.7", ] -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - [[package]] name = "rustc-hex" version = "2.1.0" @@ -2374,48 +3356,161 @@ checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" [[package]] name = "rustc_version" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +dependencies = [ + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.21.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rustversion" -version = "1.0.9" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "lazy_static", - "winapi", + "windows-sys", +] + +[[package]] +name = "schemars" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", ] [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scroll" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" + +[[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.38", +] + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] [[package]] name = "security-framework" -version = "2.6.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -2424,9 +3519,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -2434,53 +3529,66 @@ dependencies = [ [[package]] name = "semver" -version = "0.11.0" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ - "semver-parser", + "serde", ] [[package]] -name = "semver-parser" -version = "0.10.2" +name = "serde" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" dependencies = [ - "pest", + "serde_derive", ] [[package]] -name = "serde" -version = "1.0.136" +name = "serde_derive" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ - "serde_derive", + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] -name = "serde_derive" -version = "1.0.136" +name = "serde_derive_internals" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "serde_json" -version = "1.0.71" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063bf466a64011ac24040a49009724ee60a57da1b437617ceb32e53ad61bfb19" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ - "itoa 0.4.8", + "itoa", "ryu", "serde", ] +[[package]] +name = "serde_repr" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -2488,16 +3596,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.1", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +dependencies = [ + "base64 0.21.5", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.0.2", + "serde", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.38", +] + +[[package]] +name = "serde_yaml" +version = "0.9.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" +dependencies = [ + "indexmap 2.0.2", + "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 1.0.0", + "cpufeatures", + "digest 0.10.7", ] [[package]] name = "sha2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", @@ -2508,69 +3669,69 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.2" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest 0.10.7", ] [[package]] name = "sha3" -version = "0.9.1" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", + "digest 0.10.7", "keccak", - "opaque-debug", ] [[package]] -name = "signal-hook" -version = "0.3.13" +name = "sharded-slab" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "647c97df271007dcea485bb74ffdb57f2e683f1306c854f468a0c244badabf2d" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "libc", - "signal-hook-registry", + "lazy_static", ] [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] [[package]] name = "signature" -version = "1.5.0" +version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f054c6c1a6e95179d6f23ed974060dcefb2d9388bb7256900badad682c499de4" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "siphasher" -version = "0.2.3" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "slab" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] name = "smallvec" -version = "1.7.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "smart-default" @@ -2580,19 +3741,37 @@ checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] name = "socket2" -version = "0.4.4" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "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 = "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" @@ -2600,33 +3779,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "strum" -version = "0.20.0" +name = "string_cache" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ - "strum_macros 0.20.1", + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", ] [[package]] -name = "strum" -version = "0.24.1" +name = "strsim" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros 0.24.3", -] +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] -name = "strum_macros" -version = "0.20.1" +name = "strum" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ - "heck 0.3.3", - "proc-macro2", - "quote", - "syn", + "strum_macros", ] [[package]] @@ -2635,49 +3813,149 @@ version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ - "heck 0.4.0", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", - "syn", + "syn 1.0.109", ] [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "sweat" version = "0.1.0" dependencies = [ "near-contract-standards", - "near-sdk", + "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", "static_assertions", + "sweat-model", +] + +[[package]] +name = "sweat-integration" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-trait", + "integration-utils", + "near-contract-standards", + "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-units", + "near-workspaces", + "sweat-model", +] + +[[package]] +name = "sweat-model" +version = "0.1.0" +dependencies = [ + "anyhow", + "async-trait", + "integration-trait", + "near-contract-standards", + "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", +] + +[[package]] +name = "symbolic-common" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f551f902d5642e58039aee6a9021a61037926af96e071816361644983966f540" +dependencies = [ + "debugid", + "memmap2", + "stable_deref_trait", + "uuid", +] + +[[package]] +name = "symbolic-debuginfo" +version = "8.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165dabf9fc1d6bb6819c2c0e27c8dd0e3068d2c53cf186d319788e96517f0d6" +dependencies = [ + "bitvec 1.0.1", + "dmsort", + "elementtree", + "fallible-iterator", + "flate2", + "gimli", + "goblin", + "lazy_static", + "lazycell", + "nom", + "nom-supreme", + "parking_lot", + "pdb", + "regex", + "scroll 0.11.0", + "serde", + "serde_json", + "smallvec", + "symbolic-common", + "thiserror", + "wasmparser", + "zip 0.5.13", ] [[package]] name = "syn" -version = "1.0.78" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4eac2e6c19f5c3abc0c229bea31ff0b9b091c7b14990e8924b92902a303a0c0" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] -name = "synstructure" -version = "0.12.6" +name = "syn" +version = "2.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +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 = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" dependencies = [ + "proc-macro-error", "proc-macro2", "quote", - "syn", - "unicode-xid", + "syn 2.0.38", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] @@ -2688,9 +3966,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" dependencies = [ "filetime", "libc", @@ -2699,99 +3977,151 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.3.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if 1.0.0", "fastrand", - "libc", - "redox_syscall 0.2.13", - "remove_dir_all", - "winapi", + "redox_syscall 0.4.1", + "rustix", + "windows-sys", +] + +[[package]] +name = "termcolor" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +dependencies = [ + "winapi-util", ] +[[package]] +name = "textwrap" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" + [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.38", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", ] [[package]] name = "time" -version = "0.1.43" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ - "libc", - "winapi", + "deranged", + "itoa", + "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.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +dependencies = [ + "time-core", ] [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.17.0" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ + "autocfg", "bytes", "libc", - "memchr", "mio", "num_cpus", - "once_cell", - "parking_lot 0.12.0", + "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", "tokio-macros", - "winapi", + "windows-sys", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", ] [[package]] name = "tokio-macros" -version = "1.7.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.38", ] [[package]] name = "tokio-native-tls" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", "tokio", @@ -2804,163 +4134,364 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" dependencies = [ "pin-project", - "rand 0.8.4", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[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", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.0.2", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff08f4649d10a70ffa3522ca559031285d8e421d727ac85c60825761818f5d0a" +dependencies = [ + "async-stream", + "async-trait", + "base64 0.13.1", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "prost-derive", "tokio", + "tokio-stream", + "tokio-util 0.6.10", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", ] [[package]] -name = "tokio-util" -version = "0.6.9" +name = "tonic-build" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "9403f1bafde247186684b230dc6f38b5cd514584e8bec1dd32514be4745fa757" dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "log", - "pin-project-lite", - "tokio", + "proc-macro2", + "prost-build", + "quote", + "syn 1.0.109", ] [[package]] -name = "tokio-util" -version = "0.7.1" +name = "tower" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ - "bytes", "futures-core", - "futures-sink", + "futures-util", + "indexmap 1.9.3", + "pin-project", "pin-project-lite", + "rand 0.8.5", + "slab", "tokio", + "tokio-util 0.7.10", + "tower-layer", + "tower-service", "tracing", ] [[package]] -name = "toml" -version = "0.5.8" +name = "tower-layer" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" -dependencies = [ - "serde", -] +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.33" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b9fa4360528139bc96100c160b7ae879f5567f49f1782b0b02035b0358ebf3" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if 1.0.0", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-appender" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" +dependencies = [ + "crossbeam-channel", + "time", + "tracing-subscriber", +] + [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.38", ] [[package]] name = "tracing-core" -version = "0.1.24" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90442985ee2f57c9e1b548ee72ae842f4a9a20e3f417cc38dbc5dc684d9bb4ee" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ - "lazy_static", + "once_cell", + "valuable", ] [[package]] -name = "try-lock" -version = "0.2.3" +name = "tracing-futures" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] [[package]] -name = "typenum" -version = "1.14.0" +name = "tracing-log" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] [[package]] -name = "ucd-trie" -version = "0.1.3" +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-log", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "treediff" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" +dependencies = [ + "serde_json", +] + +[[package]] +name = "try-lock" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uint" -version = "0.9.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6470ab50f482bde894a037a57064480a246dbfdd5960bd65a44824693f08da5f" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ "byteorder", "crunchy", - "hex 0.4.3", + "hex", "static_assertions", ] [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] -name = "unicode-xid" -version = "0.2.2" +name = "unsafe-libyaml" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "ureq" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3" +dependencies = [ + "base64 0.21.5", + "flate2", + "log", + "once_cell", + "rustls", + "rustls-webpki", + "url", + "webpki-roots", +] [[package]] name = "url" -version = "2.2.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", "serde", ] +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + [[package]] name = "uuid" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.3", -] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "vcpkg" @@ -2970,23 +4501,16 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" - -[[package]] -name = "waker-fn" -version = "1.1.0" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -2996,12 +4520,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -3010,9 +4528,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.80" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -3020,24 +4538,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.80" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.38", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.30" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -3047,9 +4565,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.80" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3057,33 +4575,45 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.80" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.80" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "wasmparser" +version = "0.83.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718ed7c55c2add6548cca3ddd6383d738cd73b892df400e96b9aa876f0141d7a" [[package]] name = "web-sys" -version = "0.3.57" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + [[package]] name = "wee_alloc" version = "0.4.5" @@ -3097,12 +4627,15 @@ dependencies = [ ] [[package]] -name = "wepoll-ffi" -version = "0.1.2" +name = "which" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ - "cc", + "either", + "home", + "once_cell", + "rustix", ] [[package]] @@ -3121,93 +4654,113 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" -version = "0.34.0" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825" +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", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_msvc" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.34.0" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.34.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] -name = "winreg" -version = "0.10.1" +name = "winnow" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c" dependencies = [ - "winapi", + "memchr", ] [[package]] -name = "workspaces" -version = "0.2.0" +name = "winreg" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf3750ed46c2da9ea420fe3c7fa71b6a85cf472a73b9c1985a6ea79ef164563" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "anyhow", - "async-trait", - "base64 0.13.0", - "borsh", - "chrono", - "dirs 3.0.2", - "hex 0.4.3", - "libc", - "near-account-id 0.12.0", - "near-crypto 0.12.0", - "near-jsonrpc-client", - "near-jsonrpc-primitives", - "near-primitives 0.12.0", - "near-sandbox-utils", - "portpicker", - "rand 0.8.4", - "reqwest", - "serde", - "serde_json", - "tokio", - "tokio-retry", - "tracing", - "url", + "cfg-if 1.0.0", + "windows-sys", ] [[package]] @@ -3216,34 +4769,82 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "xattr" -version = "0.2.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" dependencies = [ "libc", ] +[[package]] +name = "xml-rs" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" + +[[package]] +name = "zerocopy" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd66a62464e3ffd4e37bd09950c2b9dd6c4f8767380fabba0d523f9a775bc85a" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "255c4596d41e6916ced49cfafea18727b24d67878fa180ddfd69b9df34fd1726" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "zeroize" -version = "1.4.3" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d68d9dcec5f9b43a30d38c49f91dfedfaac384cb8f085faca366c26207dd1619" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.2.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f1a51723ec88c66d5d1fe80c841f17f63587d6691901d66be9bec6c3b51f73" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn", - "synstructure", + "syn 2.0.38", +] + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "borsh 0.9.3", + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", ] [[package]] @@ -3253,9 +4854,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" dependencies = [ "byteorder", - "bzip2", "crc32fast", "flate2", "thiserror", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2", + "sha1", "time", + "zstd", +] + +[[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.9+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +dependencies = [ + "cc", + "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index eebb61a..c489f5a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,16 +1,25 @@ [workspace] members = [ - "./sweat", - "./examples" + "sweat", + "sweat", + "sweat-integration", + "integration-tests", + "defer-stub" ] +resolver = "2" -[profile.release] -codegen-units = 1 -# s = optimize for binary size ("z" would additionally turn off loop vectorization) -opt-level = "z" -# link time optimization -lto = true -debug = false -panic = "abort" -overflow-checks = true +[workspace.dependencies] +tokio = "1.28.0" +anyhow = "1.0.75" +async-trait = "0.1.74" + +near-workspaces = "0.9.0" + +near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } +near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } +integration-trait = { git = "https://github.com/sweatco/integration-trait.git", rev = "83a69f7ba4acab9405bf935f7dfc70f2f5279c40" } +integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "1b05c03351009c901a45400687c24f685f8b81c3" } + +sweat-model = { path = "model" } +sweat-integration = { path = "sweat-integration" } diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..503e010 --- /dev/null +++ b/Makefile @@ -0,0 +1,44 @@ +help: ##@Miscellaneous Show this help + @echo "Usage: make [target] ...\n" + @perl -e '$(HELP_FUN)' $(MAKEFILE_LIST) + +install: ##@Miscellaneous Install dependencies + @npm i near-cli + @cargo build + +build: ##@Build the contract locally. + ./scripts/build.sh + +build-in-docker: ##@Build reproducible artifact in Docker. + ./scripts/build-in-docker.sh + +build-stub: ##@Build stub for holding contract. + ./scripts/build-stub.sh + +dock: build-in-docker ##@Build Shorthand for `build-in-docker` + +deploy: ##@Deploy Deploy the contract to dev account on Testnet. + ./scripts/deploy.sh + +cov: ##@Testing Run unit tests with coverage. + cargo llvm-cov --hide-instantiations --open + +test: ##@Testing Run unit tests. + cargo test --package sweat + +integration: ##@Testing Run integration tests. + cargo test --package integration-tests + +int: integration ##@Testing Shorthand for `integration` + +fmt: ##@Chores Format the code using rustfmt nightly. + cargo +nightly fmt --all + +lint: ##@Chores Run lint checks with Clippy. + ./scripts/lint.sh + +HELP_FUN = \ + %help; while(<>){push@{$$help{$$2//'options'}},[$$1,$$3] \ + if/^([\w-_]+)\s*:.*\#\#(?:@(\w+))?\s(.*)$$/}; \ + print"$$_:\n", map" $$_->[0]".(" "x(20-length($$_->[0])))."$$_->[1]\n",\ + @{$$help{$$_}},"\n" for keys %help; \ diff --git a/defer-stub/Cargo.toml b/defer-stub/Cargo.toml new file mode 100644 index 0000000..5ff7f34 --- /dev/null +++ b/defer-stub/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "defer-stub" +version = "0.1.0" +authors = [] +edition = "2021" +publish = false + +[lib] +crate-type = ["cdylib"] + +[dependencies] +near-sdk = { workspace = true } diff --git a/defer-stub/src/lib.rs b/defer-stub/src/lib.rs new file mode 100644 index 0000000..6c70140 --- /dev/null +++ b/defer-stub/src/lib.rs @@ -0,0 +1,22 @@ +use near_sdk::{ + borsh::{self, BorshDeserialize, BorshSerialize}, + env::log_str, + json_types::U128, + near_bindgen, AccountId, PanicOnDefault, +}; + +#[near_bindgen] +#[derive(BorshSerialize, BorshDeserialize, PanicOnDefault)] +struct Contract {} + +#[near_bindgen] +impl Contract { + #[init] + pub fn new() -> Self { + Self {} + } + + pub fn record_batch_for_hold(&mut self, amounts: Vec<(AccountId, U128)>) { + log_str(format!("Call record_batch_for_hold with {:?}", amounts).as_str()); + } +} diff --git a/examples/Cargo.toml b/examples/Cargo.toml deleted file mode 100644 index 0f73848..0000000 --- a/examples/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -[package] -name = "examples" -version = "0.0.0" -publish = false -edition = "2021" - -[dev-dependencies] -anyhow = "1.0" -# borsh = "0.9" -# maplit = "1.0" -near-units = "0.2.0" -# arbitrary_precision enabled for u128 types that workspaces requires for Balance types -serde_json = { version = "1.0", features = ["arbitrary_precision"] } -tokio = { version = "1.10.0", features = ["full"] } -# tracing = "0.1" -# tracing-subscriber = { version = "0.3.5", features = ["env-filter"] } -workspaces = "0.2.0" -near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" } - -[[example]] -name = "mint" -path = "src/mint.rs" - -[[example]] -name = "transfer" -path = "src/transfer.rs" - -[[example]] -name = "formula" -path = "src/formula.rs" diff --git a/examples/src/formula.rs b/examples/src/formula.rs deleted file mode 100644 index 92208c9..0000000 --- a/examples/src/formula.rs +++ /dev/null @@ -1,159 +0,0 @@ -use serde_json::json; - -use near_sdk::json_types::{U128, U64}; -use workspaces::prelude::*; - -const SWEAT_WASM_FILEPATH: &str = "./target/wasm32-unknown-unknown/release/sweat.wasm"; - -const EPS: f64 = 0.00001; - -#[tokio::main] -async fn main() -> anyhow::Result<()> { - // can't use sandbox on M1 because of - // https://github.com/near/workspaces-rs/issues/110 - // ☹️ - let worker = workspaces::testnet().await?; - let wasm = std::fs::read(SWEAT_WASM_FILEPATH)?; - let contract = worker.dev_deploy(&wasm).await?; - let oracle1 = worker.dev_create_account().await?; - - let result = contract - .call(&worker, "new") - .args_json(json!({}))? - .transact() - .await?; - println!("deploy: {:#?}", result); - - let result = worker - .view(contract.id(), "get_steps_since_tge", Vec::new()) - .await? - .json::()?; - assert_eq!(result, U64(0)); - - let steps_to_convert = vec![1u16, 10, 100, 1000, 10000]; - let steps_since_tge = vec![ - 1, - 10, - 100, - 1000, - 10000, - 100000, - 1000000, - 10000000, - 100000000, - 1000000000, - 10000000000, - 100000000000, - 1000000000000, - 10000000000000, - 100000000000000, - 1000000000000000u64, - ]; - let mut test_number = 0; - for tge in 0..steps_since_tge.len() { - for steps in 0..steps_to_convert.len() { - let formula_res = oracle1 - .call(&worker, contract.id(), "formula") - .args_json((U64(steps_since_tge[tge]), steps_to_convert[steps]))? - .max_gas() - .transact() - .await? - .json::()? - .0 as f64 - / 1e+18; - println!( - "formula ({} {}) = {}", - steps_since_tge[tge], steps_to_convert[steps], formula_res - ); - - let diff = formula_res - TEST_RESULTS[test_number]; - assert_eq!(true, diff.abs() < EPS); - test_number = test_number + 1; - } - } - - Ok(()) -} - -const TEST_RESULTS: [f64; 80] = [ - 0.0009999999999997387, - 0.009999999999989545, - 0.09999999999911131, - 0.9999999999126997, - 9.999999991285653, - 0.0009999999999981703, - 0.009999999999973861, - 0.09999999999895448, - 0.9999999999111314, - 9.999999991269972, - 0.0009999999999824878, - 0.009999999999817035, - 0.09999999999738622, - 0.9999999998954487, - 9.999999991113144, - 0.0009999999998256607, - 0.009999999998248767, - 0.09999999998170353, - 0.9999999997386219, - 9.999999989544875, - 0.0009999999982573922, - 0.009999999982566081, - 0.09999999982487667, - 0.9999999981703533, - 9.99999997386219, - 0.0009999999825747062, - 0.00999999982573922, - 0.09999999825660807, - 0.9999999824876673, - 9.99999981703533, - 0.0009999998257478467, - 0.009999998257470626, - 0.09999998257392213, - 0.9999998256608078, - 9.999998248766735, - 0.0009999982574792517, - 0.009999982574784676, - 0.09999982574706262, - 0.9999982573922128, - 9.999982566080785, - 0.0009999825747933012, - 0.009999825747925172, - 0.09999825747846758, - 0.9999825747062624, - 9.999825739221281, - 0.0009998257479337971, - 0.009998257479330131, - 0.09998257479251717, - 0.9998257478467583, - 9.998257470626239, - 0.0009982574793387558, - 0.009982574793379717, - 0.09982574793301303, - 0.9982574792517169, - 9.982574784675826, - 0.0009825747933883426, - 0.009825747933875585, - 0.09825747933797171, - 0.9825747933013037, - 9.825747925171694, - 0.0008257479338842365, - 0.00825747933883687, - 0.08257479338781916, - 0.8257479338232387, - 8.257479332737093, - 0.00032230806451611884, - 0.003223080645160268, - 0.03223080645151066, - 0.32230806450590477, - 3.223080644138863, - 4.541613636363615e-05, - 0.0004541613636363422, - 0.0045416136363614894, - 0.04541613636342166, - 0.45416136361489273, - 4.741577501003273e-06, - 4.739512354008062e-05, - 0.00047393471422484454, - 0.004739338881660464, - 0.047393368165134696, -]; diff --git a/examples/src/mint.rs b/examples/src/mint.rs deleted file mode 100644 index 8dd2934..0000000 --- a/examples/src/mint.rs +++ /dev/null @@ -1,97 +0,0 @@ -use serde_json::json; - -use near_sdk::json_types::{U128, U64}; -use workspaces::prelude::*; - -const SWEAT_WASM_FILEPATH: &str = "./res/sweat.wasm"; - -#[tokio::main] -async fn main() -> anyhow::Result<()> { - // can't use sandbox on M1 because of - // https://github.com/near/workspaces-rs/issues/110 - // ☹️ - let worker = workspaces::testnet().await?; - let wasm = std::fs::read(SWEAT_WASM_FILEPATH)?; - let contract = worker.dev_deploy(&wasm).await?; - let oracle1 = worker.dev_create_account().await?; - let user = worker.dev_create_account().await?; - - let result = contract.call(&worker, "new").args_json(json!({}))?.transact().await?; - println!("deploy: {:#?}", result); - - let result = worker - .view(contract.id(), "get_steps_since_tge", Vec::new()) - .await? - .json::()?; - assert_eq!(result, U64(0)); - - let result = contract - .view( - &worker, - "formula", - json!({ - "steps_since_tge": U64(0), - "steps" : 10_000u32, - }) - .to_string() - .into_bytes(), - ) - .await? - .json::()?; - assert_eq!(result, U128(9999999991287398400)); - - let result = contract - .call(&worker, "add_oracle") - .args_json(json!({ - "account_id": oracle1.id(), - }))? - .transact() - .await?; - println!("add_oracle: {:#?}", result); - - let result = oracle1 - .call(&worker, contract.id(), "record_batch") - .args_json(json!({ - "steps_batch": vec![(user.id(), 10_000u32)], - }))? - .transact() - .await?; - - println!("record_batch: {:#?}", result); - - let result = contract - .view( - &worker, - "ft_balance_of", - json!({ - "account_id": oracle1.id(), - }) - .to_string() - .into_bytes(), - ) - .await? - .json::()?; - assert_eq!(result, U128(9999999991287398400 * 5 / 100)); - - let result = contract - .view( - &worker, - "ft_balance_of", - json!({ - "account_id": user.id(), - }) - .to_string() - .into_bytes(), - ) - .await? - .json::()?; - assert_eq!(result, U128(9999999991287398400 * 95 / 100)); - - let result = worker - .view(contract.id(), "get_steps_since_tge", Vec::new()) - .await? - .json::()?; - assert_eq!(result, U64(10_000)); - - Ok(()) -} diff --git a/examples/src/transfer.rs b/examples/src/transfer.rs deleted file mode 100644 index 39acaa7..0000000 --- a/examples/src/transfer.rs +++ /dev/null @@ -1,141 +0,0 @@ -use serde_json::json; - -use near_sdk::json_types::{U128, U64}; -use workspaces::prelude::*; - -const SWEAT_WASM_FILEPATH: &str = "./target/wasm32-unknown-unknown/release/sweat.wasm"; - -#[tokio::main] -async fn main() -> anyhow::Result<()> { - // can't use sandbox on M1 because of - // https://github.com/near/workspaces-rs/issues/110 - // ☹️ - let worker = workspaces::testnet().await?; - let wasm = std::fs::read(SWEAT_WASM_FILEPATH)?; - let contract = worker.dev_deploy(&wasm).await?; - let oracle1 = worker.dev_create_account().await?; - let user = worker.dev_create_account().await?; - - let result = contract - .call(&worker, "new") - .args_json(json!({}))? - .transact() - .await?; - - println!("deploy: {:#?}", result); - - let result = worker - .view(contract.id(), "get_steps_since_tge", Vec::new()) - .await? - .json::()?; - assert_eq!(result, U64(0)); - - let result = contract - .view( - &worker, - "formula", - json!({ - "steps_since_tge": U64(0), - "steps" : 10_000u32, - }) - .to_string() - .into_bytes(), - ) - .await? - .json::()?; - assert_eq!(result, U128(9999999991287398400)); - - let result = contract - .call(&worker, "add_oracle") - .args_json(json!({ - "account_id": oracle1.id(), - }))? - .transact() - .await?; - println!("add_oracle: {:#?}", result); - - let result = oracle1 - .call(&worker, contract.id(), "record_batch") - .args_json(json!({ - "steps_batch": vec![(user.id(), 10_000u32)], - }))? - .transact() - .await?; - - println!("record_batch: {:#?}", result); - - let result = contract - .view( - &worker, - "ft_balance_of", - json!({ - "account_id": oracle1.id(), - }) - .to_string() - .into_bytes(), - ) - .await? - .json::()?; - assert_eq!(result, U128(9999999991287398400 * 5 / 100)); - - let result = contract - .view( - &worker, - "ft_balance_of", - json!({ - "account_id": user.id(), - }) - .to_string() - .into_bytes(), - ) - .await? - .json::()?; - assert_eq!(result, U128(9999999991287398400 * 95 / 100)); - - let result = worker - .view(contract.id(), "get_steps_since_tge", Vec::new()) - .await? - .json::()?; - assert_eq!(result, U64(10_000)); - - let new_account = worker.dev_create_account().await?; - // This will fail because storage is not registered for this new account - let res = oracle1 - .call(&worker, contract.id(), "ft_transfer") - .args_json(( - new_account.id(), - U128(9499999991723028480), - Option::::None, - ))? - .max_gas() - .deposit(1) - .transact() - .await; - assert!(res.is_err()); - - let res = contract - .call(&worker, "storage_deposit") - .args_json((new_account.id(), Option::::None))? - .max_gas() - .deposit(near_sdk::env::storage_byte_cost() * 125) - .transact() - .await?; - assert!(res.is_success()); - - // Transfer all tokens from intmainreturn to new account - let res = oracle1 - .call(&worker, contract.id(), "ft_transfer") - .args_json(( - new_account.id(), - U128(9999999991287398400 * 5 / 100), - Option::::None, - ))? - .max_gas() - .deposit(1) - .transact() - .await?; - assert!(res.is_success()); - println!("ft_transfer: {:#?}", res); - - Ok(()) -} diff --git a/integration-tests/Cargo.lock b/integration-tests/Cargo.lock new file mode 100644 index 0000000..872ef40 --- /dev/null +++ b/integration-tests/Cargo.lock @@ -0,0 +1,3476 @@ +# This file is automatically @generated by Cargo. +# 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" + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +dependencies = [ + "memchr", +] + +[[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 = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[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-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock", + "autocfg", + "cfg-if 1.0.0", + "concurrent-queue", + "futures-lite", + "log", + "parking", + "polling", + "rustix 0.37.24", + "slab", + "socket2 0.4.9", + "waker-fn", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-process" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" +dependencies = [ + "async-io", + "async-lock", + "autocfg", + "blocking", + "cfg-if 1.0.0", + "event-listener", + "futures-lite", + "rustix 0.37.24", + "signal-hook", + "windows-sys", +] + +[[package]] +name = "async-task" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9441c6b2fe128a7c2bf680a44c34d0df31ce09e5b7e401fcca3faa483dbc921" + +[[package]] +name = "async-trait" +version = "0.1.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" + +[[package]] +name = "binary-install" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5bc5f8c50dd6a80d0b303ddab79f42ddcb52fd43d68107ecf622c551fd4cd4" +dependencies = [ + "curl", + "dirs 1.0.5", + "failure", + "flate2", + "hex 0.3.2", + "is_executable", + "siphasher", + "tar", + "zip", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] +name = "bitvec" +version = "0.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a4e37d16930f5459780f5621038b6382b9bb37c19016f39fb6b5808d831f174" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94c4ef1f913d78636d78d538eec1f18de81e481f44b1be0a81060090530846e1" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite", + "piper", + "tracing", +] + +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive 0.10.3", + "hashbrown 0.12.3", +] + +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "bytesize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" + +[[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 = "c2-chacha" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27dae93fe7b1e0424dc57179ac396908c26b035a87234809f5c4dfd1b47dc80" +dependencies = [ + "cipher", + "ppv-lite86", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +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", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + +[[package]] +name = "concurrent-queue" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "curl" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2 0.4.9", + "winapi", +] + +[[package]] +name = "curl-sys" +version = "0.4.66+curl-8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70c44a72e830f0e40ad90dda8a6ab6ed6314d39776599a58a2e5e37fbc6db5b9" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "windows-sys", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +dependencies = [ + "libc", + "redox_users 0.3.5", + "winapi", +] + +[[package]] +name = "dirs" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users 0.4.3", + "winapi", +] + +[[package]] +name = "dyn-clone" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" + +[[package]] +name = "easy-ext" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53aff6fdc1b181225acdcb5b14c47106726fd8e486707315b1b138baed68ee31" + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "filetime" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.3.5", + "windows-sys", +] + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "flate2" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" + +[[package]] +name = "h2" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "hex" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +dependencies = [ + "equivalent", + "hashbrown 0.14.1", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "integration-tests" +version = "1.0.0" +dependencies = [ + "anyhow", + "async-trait", + "borsh 0.10.3", + "maplit", + "near-sdk", + "near-units", + "pkg-config", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber", + "workspaces", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is_executable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" +dependencies = [ + "winapi", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin", +] + +[[package]] +name = "libc" +version = "0.2.148" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" + +[[package]] +name = "libz-sys" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "near-abi" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "885db39b08518fa700b73fa2214e8adbbfba316ba82dd510f50519173eadaf73" +dependencies = [ + "borsh 0.9.3", + "schemars", + "semver", + "serde", +] + +[[package]] +name = "near-account-id" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d258582a1878e6db67400b0504a5099db85718d22c2e07f747fe1706ae7150" +dependencies = [ + "borsh 0.9.3", + "serde", +] + +[[package]] +name = "near-account-id" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d924011380de759c3dc6fdbcda37a19a5c061f56dab69d28a34ecee765e23e4" +dependencies = [ + "borsh 0.9.3", + "serde", +] + +[[package]] +name = "near-chain-configs" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1faf676a95bd1718b06e5957e01a9415fedf7900f32d94d5bcf70abd678b10a2" +dependencies = [ + "anyhow", + "chrono", + "derive_more", + "near-crypto 0.15.0", + "near-primitives 0.15.0", + "num-rational", + "serde", + "serde_json", + "sha2 0.10.8", + "smart-default", + "tracing", +] + +[[package]] +name = "near-crypto" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e75673d69fd7365508f3d32483669fe45b03bfb34e4d9363e90adae9dfb416c" +dependencies = [ + "arrayref", + "blake2", + "borsh 0.9.3", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "near-account-id 0.14.0", + "once_cell", + "parity-secp256k1", + "primitive-types", + "rand 0.7.3", + "rand_core 0.5.1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-crypto" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7754612b47737d277fb818e9fdbb1406e90f9e57151c55c3584d714421976cb6" +dependencies = [ + "arrayref", + "blake2", + "borsh 0.9.3", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "near-account-id 0.15.0", + "once_cell", + "primitive-types", + "rand 0.7.3", + "secp256k1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-jsonrpc-client" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1335ffce1476da6516dcd22b26cece1a495fc725c0e8fec1879073752ac068d" +dependencies = [ + "borsh 0.9.3", + "lazy_static", + "log", + "near-chain-configs", + "near-crypto 0.15.0", + "near-jsonrpc-primitives", + "near-primitives 0.15.0", + "reqwest", + "serde", + "serde_json", + "thiserror", + "uuid", +] + +[[package]] +name = "near-jsonrpc-primitives" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ada226c74f05508c516f109a97b9f23335120d0bfda208f0d187b6bbfe6eef5a" +dependencies = [ + "near-chain-configs", + "near-crypto 0.15.0", + "near-primitives 0.15.0", + "near-rpc-error-macro 0.15.0", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "near-primitives" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ad1a9a1640539c81f065425c31bffcfbf6b31ef1aeaade59ce905f5df6ac860" +dependencies = [ + "borsh 0.9.3", + "byteorder", + "bytesize", + "chrono", + "derive_more", + "easy-ext", + "hex 0.4.3", + "near-crypto 0.14.0", + "near-primitives-core 0.14.0", + "near-rpc-error-macro 0.14.0", + "near-vm-errors 0.14.0", + "num-rational", + "once_cell", + "primitive-types", + "rand 0.7.3", + "reed-solomon-erasure", + "serde", + "serde_json", + "smart-default", + "strum", + "thiserror", +] + +[[package]] +name = "near-primitives" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97670b302dce15f09bba50f24c67aa08130fd01528cc61d4415892401e88e974" +dependencies = [ + "borsh 0.9.3", + "byteorder", + "bytesize", + "cfg-if 1.0.0", + "chrono", + "derive_more", + "easy-ext", + "hex 0.4.3", + "near-crypto 0.15.0", + "near-primitives-core 0.15.0", + "near-rpc-error-macro 0.15.0", + "near-vm-errors 0.15.0", + "num-rational", + "once_cell", + "primitive-types", + "rand 0.7.3", + "reed-solomon-erasure", + "serde", + "serde_json", + "smart-default", + "strum", + "thiserror", +] + +[[package]] +name = "near-primitives-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d508f0fc340f6461e4e256417685720d3c4c00bb5a939b105160e49137caba" +dependencies = [ + "base64 0.11.0", + "borsh 0.9.3", + "bs58", + "derive_more", + "near-account-id 0.14.0", + "num-rational", + "serde", + "sha2 0.10.8", + "strum", +] + +[[package]] +name = "near-primitives-core" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7929e19d862221949734c4a0063a8f55e7069de3a2ebc2d4f4c13497a5e953cb" +dependencies = [ + "base64 0.13.1", + "borsh 0.9.3", + "bs58", + "derive_more", + "near-account-id 0.15.0", + "num-rational", + "serde", + "serde_repr", + "sha2 0.10.8", + "strum", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ee0b41c75ef859c193a8ff1dadfa0c8207bc0ac447cc22259721ad769a1408" +dependencies = [ + "quote", + "serde", + "syn 1.0.109", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36addf90cc04bd547a627b3a292f59d7de4dd6fb5042115419ae901b93ce6c2d" +dependencies = [ + "quote", + "serde", + "syn 1.0.109", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e837bd4bacd807073ec5ceb85708da7f721b46a4c2a978de86027fb0034ce31" +dependencies = [ + "near-rpc-error-core 0.14.0", + "serde", + "syn 1.0.109", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5beb352f3b91d8c491646c2fa4fdbbbf463c7b9c0226951c28f0197de44f99" +dependencies = [ + "near-rpc-error-core 0.15.0", + "serde", + "syn 1.0.109", +] + +[[package]] +name = "near-sandbox-utils" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7479b0a2c52890000d410c6e4ba4f851334280530fa7446b78bcaf4683fe69b0" +dependencies = [ + "anyhow", + "async-process", + "binary-install", + "chrono", + "fs2", + "hex 0.3.2", + "home", +] + +[[package]] +name = "near-sdk" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" +dependencies = [ + "base64 0.13.1", + "borsh 0.9.3", + "bs58", + "near-abi", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-primitives-core 0.14.0", + "near-sdk-macros", + "near-sys", + "near-vm-logic", + "once_cell", + "schemars", + "serde", + "serde_json", + "wee_alloc", +] + +[[package]] +name = "near-sdk-macros" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "near-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" + +[[package]] +name = "near-units" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a2b77f295d398589eeee51ad0887905ef1734fb12b45cb6d77bd7e401988b9" +dependencies = [ + "near-units-core", + "near-units-macro", +] + +[[package]] +name = "near-units-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89aa2a7985de87a08ca35f28abd8d00f0f901e704257e6e029aadef981386bc6" +dependencies = [ + "num-format", + "regex", +] + +[[package]] +name = "near-units-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ab45d066220846f9bd5c21e9ab88c47c892edd36f962ada78bf8308523171a" +dependencies = [ + "near-units-core", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "near-vm-errors" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0da466a30f0446639cbd788c30865086fac3e8dcb07a79e51d2b0775ed4261e" +dependencies = [ + "borsh 0.9.3", + "near-account-id 0.14.0", + "near-rpc-error-macro 0.14.0", + "serde", +] + +[[package]] +name = "near-vm-errors" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5591c9c8afa83a040cb5c3f29bc52b2efae2c32d4bcaee1bba723738da1a5cf6" +dependencies = [ + "borsh 0.9.3", + "near-account-id 0.15.0", + "near-rpc-error-macro 0.15.0", + "serde", + "strum", +] + +[[package]] +name = "near-vm-logic" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81b534828419bacbf1f7b11ef7b00420f248c548c485d3f0cfda8bb6931152f2" +dependencies = [ + "base64 0.13.1", + "borsh 0.9.3", + "bs58", + "byteorder", + "near-account-id 0.14.0", + "near-crypto 0.14.0", + "near-primitives 0.14.0", + "near-primitives-core 0.14.0", + "near-vm-errors 0.14.0", + "ripemd", + "serde", + "sha2 0.10.8", + "sha3", + "zeropool-bn", +] + +[[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-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec 0.7.4", + "itoa", +] + +[[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-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +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", + "libc", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" +dependencies = [ + "bitflags 2.4.0", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec 0.7.4", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parity-secp256k1" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" +dependencies = [ + "arrayvec 0.5.2", + "cc", + "cfg-if 0.1.10", + "rand 0.7.3", +] + +[[package]] +name = "parking" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if 1.0.0", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys", +] + +[[package]] +name = "portpicker" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash", + "impl-codec", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[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", +] + +[[package]] +name = "proc-macro2" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + +[[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.10", +] + +[[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 = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +dependencies = [ + "getrandom 0.1.16", + "redox_syscall 0.1.57", + "rust-argon2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "reed-solomon-erasure" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "regex" +version = "1.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.3.9", + "regex-syntax 0.7.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.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.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.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "reqwest" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +dependencies = [ + "base64 0.21.4", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rust-argon2" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +dependencies = [ + "base64 0.13.1", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.37.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys", +] + +[[package]] +name = "rustix" +version = "0.38.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys 0.4.8", + "windows-sys", +] + +[[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.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "schemars" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 1.0.109", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "secp256k1" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +dependencies = [ + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[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 = "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 1.0.0", + "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 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b21f559e07218024e7e9f90f96f601825397de0e25420135f7f952453fed0b" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +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.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" + +[[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.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[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", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[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.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tar" +version = "0.4.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +dependencies = [ + "cfg-if 1.0.0", + "fastrand 2.0.1", + "redox_syscall 0.3.5", + "rustix 0.38.15", + "windows-sys", +] + +[[package]] +name = "thiserror" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.4", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.0.2", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex 0.4.3", + "static_assertions", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.37", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wee_alloc" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "memory_units", + "winapi", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[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", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[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_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[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_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys", +] + +[[package]] +name = "workspaces" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b13d249618f197811e3673decc81459730cf5cc09ee7246dc4bede1e9333bc" +dependencies = [ + "async-process", + "async-trait", + "base64 0.13.1", + "borsh 0.9.3", + "bs58", + "chrono", + "dirs 3.0.2", + "hex 0.4.3", + "libc", + "near-account-id 0.15.0", + "near-crypto 0.15.0", + "near-jsonrpc-client", + "near-jsonrpc-primitives", + "near-primitives 0.15.0", + "near-sandbox-utils", + "portpicker", + "rand 0.8.5", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-retry", + "tracing", + "url", +] + +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "xattr" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +dependencies = [ + "libc", +] + +[[package]] +name = "zeroize" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + +[[package]] +name = "zeropool-bn" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e61de68ede9ffdd69c01664f65a178c5188b73f78faa21f0936016a888ff7c" +dependencies = [ + "borsh 0.9.3", + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "zip" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +dependencies = [ + "byteorder", + "bzip2", + "crc32fast", + "flate2", + "thiserror", + "time", +] diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml new file mode 100644 index 0000000..1d6ddec --- /dev/null +++ b/integration-tests/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "integration-tests" +version = "1.0.0" +publish = false +edition = "2021" + +[lib] +name = "integration_tests" + +[dev-dependencies] +near-workspaces = { workspace = true } +near-sdk = { workspace = true } +near-contract-standards = { workspace = true } +anyhow = { workspace = true } +tokio = { workspace = true } + +near-units = "0.2.0" +borsh = "0.10.3" +maplit = "1.0" +# arbitrary_precision enabled for u128 types that workspaces requires for Balance types +serde_json = { version = "1.0.107", features = ["arbitrary_precision"] } +tracing = "0.1.37" +tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } +pkg-config = "0.3.1" + +[dependencies] +async-trait = "0.1.73" + +sweat-model = { workspace = true } +sweat-integration = { workspace = true } +integration-utils = { workspace = true } diff --git a/integration-tests/src/defer.rs b/integration-tests/src/defer.rs new file mode 100644 index 0000000..6db7942 --- /dev/null +++ b/integration-tests/src/defer.rs @@ -0,0 +1,35 @@ +#![cfg(test)] + +use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use near_sdk::json_types::U64; +use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; + +use crate::prepare::{prepare_contract, IntegrationContext}; + +#[tokio::test] +async fn test_defer() -> anyhow::Result<()> { + let mut context = prepare_contract().await?; + let oracle = context.oracle().await?; + let alice = context.alice().await?; + let holding_account = context.holding_contract().as_account().to_near(); + + let target_amount = context.ft_contract().formula(U64(0), 10_000).await?; + assert_ne!(0, target_amount.0); + + context + .ft_contract() + .with_user(&oracle) + .defer_batch(vec![(alice.to_near(), 10_000)], holding_account.clone()) + .await?; + + let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; + assert_eq!(0, alice_balance.0); + + let holder_balance = context.ft_contract().ft_balance_of(holding_account.clone()).await?; + assert_eq!(target_amount.0 * 95 / 100, holder_balance.0); + + let oracle_balance = context.ft_contract().ft_balance_of(oracle.to_near()).await?; + assert_eq!(target_amount.0 * 5 / 100, oracle_balance.0); + + Ok(()) +} diff --git a/integration-tests/src/formula.rs b/integration-tests/src/formula.rs new file mode 100644 index 0000000..6c3b178 --- /dev/null +++ b/integration-tests/src/formula.rs @@ -0,0 +1,211 @@ +use anyhow::Result; +use integration_utils::integration_contract::IntegrationContract; +use near_sdk::json_types::U64; +use sweat_model::SweatApiIntegration; + +use crate::prepare::{prepare_contract, IntegrationContext}; + +const EPS: f64 = 0.00001; + +#[tokio::test] +async fn test_formula() -> Result<()> { + let mut context = prepare_contract().await?; + + let oracle = context.oracle().await?; + + let steps = context.ft_contract().get_steps_since_tge().await?; + + assert_eq!(0, steps.0); + + let steps_to_convert = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; + let steps_from_tge = [ + 1, + 10, + 100, + 1000, + 10000, + 100000, + 1000000, + 10000000, + 100000000, + 1000000000, + 10000000000, + 100000000000, + 1000000000000, + 10000000000000, + 100000000000000, + 1000000000000000u64, + ]; + + let mut test_number = 0; + for tge in 0..steps_from_tge.len() { + for steps in 0..steps_to_convert.len() { + let formula_res = context + .ft_contract() + .with_user(&oracle) + .formula(U64(steps_from_tge[tge]), steps_to_convert[steps]) + .await? + .0; + + let formula_res = formula_res as f64 / 1e+18; + + println!( + "{}. formula ({} {}) = {}", + test_number, steps_from_tge[tge], steps_to_convert[steps], formula_res + ); + + let diff = formula_res - TEST_RESULTS[test_number]; + assert_eq!(true, diff.abs() < EPS); + test_number = test_number + 1; + } + } + + Ok(()) +} + +pub const TEST_RESULTS: [f64; 144] = [ + 0.0009999999999993069988, + 0.0099999999999722827965, + 0.09999999999764401515, + 0.99999999976855979966, + 9.999999976897553822, + 99.99999769017119888, + 999.9997690212771886, + 9999.97690216929368, + 99997.69021734510898, + 0.0009999999999951495171, + 0.009999999999930706679, + 0.09999999999722826438, + 0.99999999976440212546, + 9.99999997685597819, + 99.99999768975543191, + 999.99976901711954724, + 9999.9769021277170395, + 99997.69021692934621, + 0.0009999999999535733996, + 0.0099999999995149455034, + 0.09999999999307064569, + 0.99999999972282604954, + 9.9999999764402165425, + 99.999997685597818986, + 999.9997689755434749, + 9999.9769017119560885, + 99997.69021277173306, + 0.0009999999995378124409, + 0.009999999995357337218, + 0.09999999995149456977, + 0.99999999930706517937, + 9.999999972282608951, + 99.99999764402173241, + 999.99976855978263757, + 9999.9768975543483975, + 99997.690171195645235, + 0.0009999999953802037218, + 0.0099999999537812491596, + 0.099999999535733699596, + 0.9999999951494564776, + 9.9999999307065223775, + 99.99999722826086668, + 999.99976440217392337, + 9999.9768559782605735, + 99997.689755434781546, + 0.0009999999538041167476, + 0.009999999538020380718, + 0.099999995378124997836, + 0.999999953573369571, + 9.999999514945651313, + 99.999993070652180904, + 999.9997228260870088, + 9999.976440217391428, + 99997.68559782608645, + 0.0009999995380432472221, + 0.009999995380411684162, + 0.09999995380203804962, + 0.9999995378124999501, + 9.999995357336956658, + 99.9999514945652237, + 999.9993070652174083, + 9999.972282608696332, + 99997.644021739135496, + 0.0009999953804345515333, + 0.009999953804324729009, + 0.099999538041168484215, + 0.99999538020380429604, + 9.999953781249999452, + 99.99953573369565163, + 999.99514945652174447, + 9999.930706521739921, + 99997.22826086956775, + 0.0009999538043475950794, + 0.009999538043455163602, + 0.099995380432472830146, + 0.99995380411684786637, + 9.999538020380434489, + 99.995378125000002, + 999.95357336956521976, + 9999.514945652173992, + 99993.07065217391937, + 0.0009995380434780298893, + 0.009995380434759511268, + 0.09995380434551630333, + 0.99953804324728257047, + 9.995380411684783084, + 99.953802038043477296, + 999.5378124999999727, + 9995.357336956521976, + 99951.49456521739194, + 0.0009953804347823777716, + 0.009953804347802989658, + 0.0995380434759510907, + 0.99538043455163038864, + 9.9538043247282601556, + 99.53804116847825867, + 995.3802038043478433, + 9953.78125, + 99535.73369565217581, + 0.0009538043478258559447, + 0.009538043478237771822, + 0.09538043478029890887, + 0.95380434759510868137, + 9.538043455163043305, + 95.38043247282608661, + 953.80411684782609427, + 9538.020380434782055, + 95378.125, + 0.0005380434782607852349, + 0.005380434782600264018, + 0.053804347825243750703, + 0.53804347817654929464, + 5.3804347741766713753, + 53.804346982884489137, + 538.04339394062299107, + 5380.4263505840362996, + 53803.50462362102553, + 0.00010531914893616588951, + 0.0010531914893612702357, + 0.0105319148935738241685, + 0.10531914893185048698, + 1.053191488929729136, + 10.531914850419713758, + 105.31914461643948755, + 1053.19105738863027, + 10531.871696309839535, + 1.16470588235293541626e-05, + 0.00011647058823528841538, + 0.0011647058823523713262, + 0.011647058823472423994, + 0.11647058822959541202, + 1.1647058817830711064, + 11.647058766542404129, + 116.47058253659338334, + 1164.705312482868294, + 1.1895246692412392412e-06, + 1.1891116398421971423e-05, + 0.00011890600111673168301, + 0.0011890610437408145102, + 0.011890606307114153298, + 0.118906064103715028435, + 1.1890606420697238388, + 11.890606361840548644, + 118.906058271739922816, +]; diff --git a/integration-tests/src/interface/common.rs b/integration-tests/src/interface/common.rs new file mode 100644 index 0000000..b9f6776 --- /dev/null +++ b/integration-tests/src/interface/common.rs @@ -0,0 +1,13 @@ +use integration_utils::integration_contract::IntegrationContract; +use near_sdk::AccountId; +use sweat_integration::SweatFt; + +pub(crate) trait ContractAccount { + fn account(&self) -> AccountId; +} + +impl ContractAccount for SweatFt<'_> { + fn account(&self) -> AccountId { + AccountId::new_unchecked(self.contract().as_account().id().to_string()) + } +} diff --git a/integration-tests/src/interface/mod.rs b/integration-tests/src/interface/mod.rs new file mode 100644 index 0000000..34994bf --- /dev/null +++ b/integration-tests/src/interface/mod.rs @@ -0,0 +1 @@ +pub mod common; diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs new file mode 100644 index 0000000..d39bba0 --- /dev/null +++ b/integration-tests/src/lib.rs @@ -0,0 +1,44 @@ +#![cfg(test)] + +use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; + +use crate::prepare::{prepare_contract, IntegrationContext}; + +mod defer; +mod formula; +mod interface; +mod mint; +mod prepare; +mod transfer; + +#[tokio::test] +async fn happy_flow() -> anyhow::Result<()> { + let mut context = prepare_contract().await?; + + let alice = context.alice().await?; + let oracle = context.oracle().await?; + + assert_eq!( + 99999995378125008, + context.ft_contract().formula(100_000.into(), 100).await?.0 + ); + + context + .ft_contract() + .tge_mint(&alice.to_near(), 100_000_000.into()) + .await?; + + assert_eq!( + 100_000_000, + context.ft_contract().ft_balance_of(alice.to_near()).await?.0 + ); + + context + .ft_contract() + .with_user(&oracle) + .defer_batch(vec![(alice.to_near(), 1000)], oracle.to_near()) + .await?; + + Ok(()) +} diff --git a/integration-tests/src/mint.rs b/integration-tests/src/mint.rs new file mode 100644 index 0000000..5687329 --- /dev/null +++ b/integration-tests/src/mint.rs @@ -0,0 +1,38 @@ +use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use near_sdk::json_types::{U128, U64}; +use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration}; + +use crate::prepare::{prepare_contract, IntegrationContext}; + +const TARGET_BALANCE: u128 = 9999999976902174720; +const TARGET_STEPS_SINCE_TGE: u32 = 10_000; + +#[tokio::test] +async fn test_mint() -> anyhow::Result<()> { + let mut context = prepare_contract().await?; + let user = context.alice().await?; + let oracle = context.oracle().await?; + + let result = context.ft_contract().get_steps_since_tge().await?; + assert_eq!(result, U64(0)); + + let result = context.ft_contract().formula(U64(0), TARGET_STEPS_SINCE_TGE).await?; + assert_eq!(result, U128(TARGET_BALANCE)); + + context + .ft_contract() + .with_user(&oracle) + .record_batch(vec![(user.to_near(), 10_000u32)]) + .await?; + + let result = context.ft_contract().ft_balance_of(oracle.to_near()).await?; + assert_eq!(result, U128(TARGET_BALANCE * 5 / 100)); + + let result = context.ft_contract().ft_balance_of(user.to_near()).await?; + assert_eq!(result, U128(TARGET_BALANCE * 95 / 100)); + + let result = context.ft_contract().get_steps_since_tge().await?; + assert_eq!(result, U64(TARGET_STEPS_SINCE_TGE as u64)); + + Ok(()) +} diff --git a/integration-tests/src/prepare.rs b/integration-tests/src/prepare.rs new file mode 100644 index 0000000..d6952d0 --- /dev/null +++ b/integration-tests/src/prepare.rs @@ -0,0 +1,78 @@ +use async_trait::async_trait; +use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use near_workspaces::{Account, Contract}; +use sweat_integration::{SweatFt, FT_CONTRACT}; +use sweat_model::{StorageManagementIntegration, SweatApiIntegration}; + +const HOLDING_STUB_CONTRACT: &str = "defer_stub"; + +pub type Context = integration_utils::context::Context; + +#[async_trait] +pub trait IntegrationContext { + async fn oracle(&mut self) -> anyhow::Result; + async fn alice(&mut self) -> anyhow::Result; + async fn bob(&mut self) -> anyhow::Result; + fn ft_contract(&self) -> SweatFt; + + fn holding_contract(&self) -> &Contract; +} + +#[async_trait] +impl IntegrationContext for Context { + async fn oracle(&mut self) -> anyhow::Result { + self.account("oracle").await + } + + async fn alice(&mut self) -> anyhow::Result { + self.account("alice").await + } + + async fn bob(&mut self) -> anyhow::Result { + self.account("bob").await + } + + fn ft_contract(&self) -> SweatFt { + SweatFt::with_contract(&self.contracts[FT_CONTRACT]) + } + + fn holding_contract(&self) -> &Contract { + &self.contracts[HOLDING_STUB_CONTRACT] + } +} + +pub async fn prepare_contract() -> anyhow::Result { + let mut context = Context::new(&[FT_CONTRACT, HOLDING_STUB_CONTRACT], "build".into()).await?; + let oracle = context.oracle().await?; + let alice = context.alice().await?; + + context.ft_contract().new(".u.sweat.testnet".to_string().into()).await?; + + context + .ft_contract() + .storage_deposit(oracle.to_near().into(), None) + .await?; + + context + .ft_contract() + .storage_deposit(alice.to_near().into(), None) + .await?; + + context.ft_contract().add_oracle(&oracle.to_near()).await?; + + let holding_contract_init_result = context + .holding_contract() + .call("new") + .max_gas() + .transact() + .await? + .into_result()?; + println!("Initialized holding contract: {:?}", holding_contract_init_result); + + context + .ft_contract() + .storage_deposit(context.holding_contract().as_account().to_near().into(), None) + .await?; + + Ok(context) +} diff --git a/integration-tests/src/transfer.rs b/integration-tests/src/transfer.rs new file mode 100644 index 0000000..078952a --- /dev/null +++ b/integration-tests/src/transfer.rs @@ -0,0 +1,48 @@ +use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use near_sdk::json_types::U128; +use sweat_model::{FungibleTokenCoreIntegration, StorageManagementIntegration, SweatApiIntegration}; + +use crate::prepare::{prepare_contract, IntegrationContext}; + +#[tokio::test] +async fn test_transfer() -> anyhow::Result<()> { + let mut context = prepare_contract().await?; + let oracle = context.oracle().await?; + let alice = context.alice().await?; + let bob = context.bob().await?; + + context + .ft_contract() + .with_user(&oracle) + .record_batch(vec![(alice.to_near(), 10_000)]) + .await?; + + // This will fail because storage is not registered for this new account + let res = context + .ft_contract() + .with_user(&alice) + .ft_transfer(bob.to_near(), U128(9499999991723028480), None) + .await; + assert!(res.is_err()); + + let res = context.ft_contract().storage_deposit(Some(bob.to_near()), None).await; + assert!(res.is_ok()); + + let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; + assert_ne!(U128(0), alice_balance); + + // Transfer all tokens from alice to new account + context + .ft_contract() + .with_user(&alice) + .ft_transfer(bob.to_near(), alice_balance, None) + .await?; + + let alice_balance_updated = context.ft_contract().ft_balance_of(alice.to_near()).await?; + assert_eq!(U128(0), alice_balance_updated); + + let bob_balance = context.ft_contract().ft_balance_of(bob.to_near()).await?; + assert_eq!(alice_balance, bob_balance); + + Ok(()) +} diff --git a/model/Cargo.toml b/model/Cargo.toml new file mode 100644 index 0000000..d270770 --- /dev/null +++ b/model/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "sweat-model" +version = "0.1.0" +edition = "2021" + +[dependencies] +anyhow = { workspace = true } +async-trait = { workspace = true } +integration-trait = { workspace = true } + +near-sdk = { workspace = true } +near-contract-standards = { workspace = true } diff --git a/model/src/lib.rs b/model/src/lib.rs new file mode 100644 index 0000000..8f04c45 --- /dev/null +++ b/model/src/lib.rs @@ -0,0 +1,81 @@ +use integration_trait::make_integration_version; +use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds}; +use near_sdk::{ + json_types::{U128, U64}, + AccountId, PromiseOrValue, +}; + +#[make_integration_version] +pub trait SweatApi { + fn new(postfix: Option) -> Self; + fn add_oracle(&mut self, account_id: &AccountId); + fn remove_oracle(&mut self, account_id: &AccountId); + fn get_oracles(&self) -> Vec; + fn tge_mint(&mut self, account_id: &AccountId, amount: U128); + fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>); + fn burn(&mut self, amount: &U128); + fn get_steps_since_tge(&self) -> U64; + fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>); + fn formula(&self, steps_since_tge: U64, steps: u32) -> U128; +} + +#[make_integration_version] +pub trait SweatDefer { + fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()>; +} + +/// Copy of near_sdk trait to use in integration tests +#[make_integration_version] +pub trait FungibleTokenCore { + fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option); + fn ft_transfer_call( + &mut self, + receiver_id: AccountId, + amount: U128, + memo: Option, + msg: String, + ) -> PromiseOrValue; + fn ft_total_supply(&self) -> U128; + fn ft_balance_of(&self, account_id: AccountId) -> U128; +} + +/// Copy of near_sdk trait to use in integration tests +#[make_integration_version] +pub trait StorageManagement { + // if `registration_only=true` MUST refund above the minimum balance if the account didn't exist and + // refund full deposit if the account exists. + fn storage_deposit(&mut self, account_id: Option, registration_only: Option) -> StorageBalance; + + /// Withdraw specified amount of available Ⓝ for predecessor account. + /// + /// This method is safe to call. It MUST NOT remove data. + /// + /// `amount` is sent as a string representing an unsigned 128-bit integer. If + /// omitted, contract MUST refund full `available` balance. If `amount` exceeds + /// predecessor account's available balance, contract MUST panic. + /// + /// If predecessor account not registered, contract MUST panic. + /// + /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted + /// function-call access-key call (UX wallet security) + /// + /// Returns the StorageBalance structure showing updated balances. + fn storage_withdraw(&mut self, amount: Option) -> StorageBalance; + + /// Unregisters the predecessor account and returns the storage NEAR deposit back. + /// + /// If the predecessor account is not registered, the function MUST return `false` without panic. + /// + /// If `force=true` the function SHOULD ignore account balances (burn them) and close the account. + /// Otherwise, MUST panic if caller has a positive registered balance (eg token holdings) or + /// the contract doesn't support force unregistration. + /// MUST require exactly 1 yoctoNEAR attached balance to prevent restricted function-call access-key call + /// (UX wallet security) + /// Returns `true` iff the account was unregistered. + /// Returns `false` iff account was not registered before. + fn storage_unregister(&mut self, force: Option) -> bool; + + fn storage_balance_bounds(&self) -> StorageBalanceBounds; + + fn storage_balance_of(&self, account_id: AccountId) -> Option; +} diff --git a/res/defer_stub.wasm b/res/defer_stub.wasm new file mode 100755 index 0000000000000000000000000000000000000000..7ccd9fd4bbfe125e704a42f590f4aef38ca34b46 GIT binary patch literal 90880 zcmd?S4Y*xbRrk9-_Se~apObx(G)Z#;oqIL3Nt?7mOHvE3W*&hy6r^b7sXRQl?Q5&$ zq?RTP1-2;oCgwb814R4I~R`4B2^Rg|g~D-TCaV%+-srt_aAeu zwb$NfpEQ6xyw81`CTp*`=9+WN@ioUBW6Zgtt8e-=&D$c^k#HbjeogBw4t9=tm{Hitaf!{4ce80D1U{Y z>0ax!VUJXKBK)GG=&HO_{p$T@c%)jjeY@?wlq_^o!4G{P1ICT>-tyz zuHAX%_1E4Ig}(Lnl|^}YuXpvXU0473 zb=O{Vl~sXK572OLP}4=|%CoTN#w zz5KN4cAEnJi{ce4c@RzOXS`%p-0q#;(*w#@&*(=tp%wktUfEHlUYx3G+FO~lX*F%9 zog@iR#>vto>Cu_q5DZJ&OOlBH?Y}j(dVFL2(wEkGf4Xscx-a(g^T(skzR3Uk{u6ec zKfty5gZ0KwUHen7-1*Z*_17z2TZP?p%50b=O{fBb9EtHcckp3amcv{OAw`at~V_~+u=;aQqMPU&ntF|83m<%@5YT9RCu8+!yaX zbDsYq-`k!gYwc&U)kW))mXGJMbTaZsK6aePYy1=c$hG%IRgO9?@vS*ki}X(|FlG_g5Z?s(TPpX>dc z8np3qUtjn@J-Y(vr1JvENEfk&l;~2+(if{6!=spiG7vTgQTnwGBaSYLH1K53)$Er` zVAG2t1T|qoSjhi0B;M}*x&RA&oR)l?eiM9r%>cDk=?c&r^5T93-9v{JxnNw9ixjY7 z;D8`T*n5j0QuUIE5h|OpE$`i9kA5BvxG$*;DQ9!hbMPl1uWraQ)CpmAAuOx=^PWEm zWBZRr@HW>k>e`uw{ax}rO45F_3s!5wH-w3LKW|trtxv7Z?(QL{9hU?y5sT(h> zn|5X+iPl$>+ zqY_7*|4ftm5S{C}oW#9fpgkBwofd!6@|Q{is+z;7Y8t9q{<68O>7R^uWD~x^R<^t{Q5jz50OabQ{F@7A@{vvrAtuwD1H zx!xNDZ$F0O=sR(T6k)g3;pya4R%;4LMmE>z87aDr4ns_5@A&;M-T%w{J^cy^^sIi` z?GHoI317by4uJa%Sv+p<&DyScZ1%}`|86v7`*Kr)4dgp(y2cODL=&2!&iunRq`trJ zwbdal#Lxh&U(^7lGYf1SsJ>d3ex_Pl8PzZ8bz!3rkj}enX$|66bzFUf{HEGR2<@#9 zo7rM zk%d>MU@>E`rWlOYMCIki41;FIyc?8vfWDQPMy!>B-V*l~4Y$;=x}$P~9%`<+J!|xB9D(_hRfjbUlliiWq(99 zeBTe(te4YD=X^9ZpcQ6M%&b>1;8#XwVkEBBxxwlS&4F(UT^iGfaZI621O5EOrHnR5 zfg}S;<~l*N&xNuUu(hOGVq)5PLsDa=+O5C2UBrA+uyOi_1N8+wHB{djugaP?iIPqK zz6AQZ#&e_mzpE!xV635}jGv~0U6HF7n`xv`nC=_TJ@Scve%*iE{}21#h3>EU_a<}w zS~mjrrcZbIyFUd==gv)|e#_e1_X65$xE7VAuKD%Otntfvw~y`n?*LKv<9ox3p=Cov z!!>@zB{ScbwvaJR-j2CMd|%4*@1}9RVz0!7EC=J{mqqbh0)3V?5fgW$i>2hLR_2p7n=b3)}@m%$UTKuAvG-qWohV&gU~`{$$rq_hT-7{VV186 zd2mqAFd`&qnniX&@&HUmqIntPz~*UP&%1aMgR_r0YFwH0>je-2XiQ_q`(i3#YlWs# zo5s@0m`!!YJD^os@Mj_z#1ELjJDA~tZtQqOzTU40{i0i3ik7Q&esY`{1jt$o478?8 zHbyP8He<-nP21aLVg^$!a7ThI4tFxlAT_e)k^yV{eZ|7Zl#O%N$Y~J}D4Q`LVi=>Q z+@lzyut1vzVFqu>Q?h7{qx564inbA)1X8Au(iRMc`a#Dz_RT;o8i8pjt}=~S0IXLK znRb379>Qcj3{VtzEYw_0=J;YlCZvJIfyzq7W@3n-u#6cBaN1T}0VjHHl>b-!m@maN z&|*YPf4NrE+OlF_4;B|N*D&eB2#ow%I!u5ITM6`>7_nC@5sV91Zgh?OW?s5T7EsFu zCM>`;Sxqyh-z4#<72-P~C76nFN88Np)S{szOogDPm0@)mhUh~IqE?wV!>p;7TrwN= z-YUK~D|M)g(pnpV6}T>&GyADu7eQ?NC+jkdDQi@_b@jYk+#VPU1EcM7alznLHe6%G zhO29iZMs@+!_{5$Wz`Awk=GudA6THGfW}FOzgDPMTlLv`Qooi%g4wiR4^o<*o328E zW0lvX!0Tp?qfh1nyLLVpvuKr82?HMtzL-RFe2+|_*eNO8J$88#2*Ij++!SgHl!cQj zB?FrToidlzv2lbuQ@sQ8;=uk2Hh#)hpMqRWQLI3*%@~jb-p73ttSBr%A>6Cy(AF!N zK0G+w<$60_YaW1BZ#0_TH>FGiLpss{yZd^bVErvpKdQt^Fzu?H|`r zW4NLDw5ayK}$49 zOKNakXz&SZP?HG_CSw}ZP&Vay3BTiM!meb-G+Xben(lOd7C*C$?}}F?9n8F8XuLCp zuQ|bhiq4halZFv#0CY8Up{9mNz6#MQ4&~@Y&0B-=WKa%VZXiY)W?}yV<&k#WEG*#T zQHgP^)5;VgW#;Oa&S1K0^6De`eGK*CKfHpSE_rXVvVuG~GVXsABIq|P8nY@xFSazp z%J8SnFpnah7dX^3fL$=x`(qKRTkljG$8GQs8YJSHU5ui^bZf~wVq8|!suEp(??2L4 z?rw!jm^}JtdGG%c;?bnQZV=GF^~5dhpjv6H_sPH>>yisHT8;sScP~`c$N{k#(jq)~ z2)#Wt+8fNWE?FCTThLSQKDDnQ$*Q=ZSV&aISUh|di{ZEKo11Di5rtMf(T+d`fWM8h zdY!TcY|)bb)o{+2zHJ$H;0m0o!ex%hkEzdotGi4qkF57$L+oj~c__;7mh0~P{Ko3F z@|&f4(#>zCb<@sodb*j+Z!#^I-d49ZM5}U-O=f~$Utog5{J1{%u z?@pm5#r(V{4I<2>zX0y8#yNlYhxgs&pZvLd_q}LxqC2S`E>I7D5_&LX3a8H!eS05K zskI#VCG{)EGz{~dVk`gCxbCT1DMxz&tV7#y4rtdzc7D8B13n(H?t3!bAq;GrY#Kf1 zA1DgjyM&2P7)%{$(WHbLl&HiQV)(ydHK7{ zkJ5c5``%w+U*PS6JubLEVIGNTMM&_%1@Q{puSrY_Vis}wzuF#MeO>t3ci z)^q5p*fV!1E>T&j%dAhfYQ;C@FEZ~znApLcS^TkwS_|F*si@svAHlDz;G)hC4*(lP z1dvCqhosr~$5tJ!B8XA4_7CWeih1CrZv27%ul#gVMm&SM$=TBhvkbJx9?Yt>66sB$7-}sQsa&{ zs*UcL8r#NmkqvNjqBjm3gcI;dch29bo8B=&2z&$9!In6X3^i5HC8e&WD^sdEubg{*~d~EPg!V^51q@NJX3ifT z6!h*k#A!^WeI0lH@1z>Nsu+BR)V{o7ny|61@t)}ijGQ&lhd6(8lo6Q{LOx(9JE4DF zZN>vL7bdb1CYD^G%)w!I`W9nrTiMez`a`{i);?mb$+xiZeRbb&YB8J}yfdb={T+Ho zYK$=1`eeC6sWJ&?KoaW~m9@68DB#M>L_u?Na-qsmrJIut`n54~7e&wE7ZnxnS5SI$ zvI&S&uvrBfw$b$E@6F-l=7NEw=DvxGBF%+b{Toz+IR~!5Pm%63y!PXO*C^<(oQ0Rz zV&61NtRi8bdP!hk=rLiXnqMIa-Z!Zn5eEfm+$?`Bc7Bzc7x0*wCyYdZroo9(KW**dc1y$SWEC+3BC~~})hq1>O0?CV+>(ti92w#EC#zH7q zjWPqRmch2sv@HtNE_W2Eail8m5vlAJ{rsC~tOl)0?~z-8el-^yr8$TwLR_VuUN;BuJC-fL5R6Qn z_a_6>VPK9_Ml&BP>X-zr7W?@g%RfQwF?bbE1RMSbu#w}P7m@IxyY9{YVckgyVjA6C zKA!X`B7n6}eP_vNt+J7#)k&+d^k(1O;UBYxeGnzUfGEn)kxUsYxU}~{V?RBR^IU8h z3}Z^T!N_8bEjg?L5xM}>kV)HB*^Xiw;l2~0b`GSNF!IE0VM$QKz+G_-`ze%LT2ORFou#H%W#Fx%w@HjPU z_N%@NPlvc+-fi>gE=@$dAB5avuWAmItlJ!DsslwY-USMt>I%-}sz?+YJ08#^n-~2e z)G?(w#x3&#`ib!&UT`11MmDLsVlcfEdeg{M%$%KX$jv;6me#_gE&#(IH9oNQLUA;m zAxny%=vQtQ)~TTEFc(9RFB@n|24hN7YM6O@O(KC`HNK!4=yM`(8lezYd94;+qk_cV zFk}N_T!sRM=Fu*a^J2UzH`zB+6@2A&txPOxW|t-*Rj{hSTdoU!XuzZ_3!>bnk!LX^ z(V>`Rt3>|Dn~rNzW+E)|>G1H(pe++Up{}R*)|0J*57^y_7@m;l2uKv9T~mv&w}uOxzKV-58=C5U zN-xqwJTMKT&IgjAapW=#S6e;{TMx~9|(*AJOje=Kf z1JFXjzZ?OjUdS0StAnL4Yh~~!C=$%q9g{TyF67kA>Suvt;d=Ak2zllQUXHgYf4~UI z_3D$*=!!iVJ zA9`id@SSKKH3OY-s<5ik0zj4o{^kp5Fke1gKnZq~Ed;C?TO9B!Uq09`5`|fJ@lse^ z=vP=Ni2c^g^?qBl6ltq#1a7Kp1oI&?&`{X|AsU8MFNUo&+f~@ND1*9e+)u8kO_6(v zyP=2_9Ek_iHgwR`0;${@q|z5sd4&_dJs6FO<#TNs4*~>CaJGqMg&7dgS&QHCm?qvH z&-nub0nHhDW3)=ltLZ5K@zb%$n4WVQ(p3z@YK(`^AK+CVU@QW5uk)zP2 z-5%;H)Ou^2;or7UnK`pk;t`UIm{;Mgg|Ff_4>d&gpto!!12EP36=poFOI{9AL~6N1KgeFCd}BY~+Y|2p~7@g03B-sYzK^TW+o<83?05j2OZT;d|I$f z`M(!tWGRwapSnrcmKzBT)^U?Ye`I*Vb@J6}A|Ad2&}ZW<$!!_}()DsK^M8zT6a^BQ zOxI9i^Z(}LDt>}8f8Ty8@LSUQNmD2jScBnNxyb?5vz}(Rq_kr-!(1LPw=MxC?JjW` z5OuqLPAa{0!mC+H@SWL{PG zEnU`r9somNIUU-Xai&zAXYj{Fms(3eVV4JEam(|92Bc|+pJ`5+3u(~=cC0`G)^L+% z5z!Yw6e-Y;9~2$)7>IxG$GP)cayT9mjr}J+p&Iv#(h4BjDBHddL(fM29)G9NnG8`= z8KL^=*=V*+?$N*B!V44;>7-JnC>4fCQD3U;Q-yX|T(3`8%|<_Lwb9M%(HHbj z;u$R9mgJ({J=X8J4wPsZJ3!V2vW{!*HA2YdzT-%2I#- z2`FVtg*NzlxV$q1Rf=JAa=qBtxEucK{i%owrkAF-<+Lum|OtS`AmHy-%wn$pK5kwwt0P*u+p$iwXv!3%bp*)1Em9K2w28c{Rng`GENd>$ zQT&u-3ha6YFX+hx5%gN1!0KDIMa6O;Ci6}$q&XFC&{%|QtQ{c_2g-9S@1nq_Ih5Um z^5J7QA#Cy^;4`BSCMX3@g|?i?QtE)+6mGy>Zj}XGxQSp9hN;;p-^5dld#9RvdaW}Gw!!gNex+?rchb`urWvJ+;Z;x%NLF#$kLOrX~w3V zK}psKzD^1;AJvWwLz%HkrkTLxXOoI{FhD4>)=8tuYV41o2^yYp6Vw!^HT;BsWK1_IMP={!*W^0yL3Q&7)dq(Mt zC-dE2Nck`WsCHSBi5kE>A*)uqI;}^80DfwVxRxD-CfXi=5^LuiF#(xt&(G@O2-$LV z;%qb^w_q3b!PcnZfsmR7jq`zYY`4MKfi!I(tzsZ~M%PmfM9jX}KrA;6aOScJ*ZNil zGSO$E*VY{Uy>w=~MI&)FVGS&SL|tXobbY!bY*OK;A_qK}Pz6n7T|yWEw<<}u&WaBn zGs%2r6dknNe;dC2*WuehGgWp=4)9-piKL8JOr~^0rX%*;Nqj@Selzru*Qc_C*hCi_ zvVlD_!7FtH_dXNcZ%74Ui*%{?87p~{*pU+0H7_aZ=&i?x#hsD^zg1NLr&tH|fLM^4 zed&zA>-v5DsaZgozx%%1TYbxkdG#FDP3mu+>rYdWcJ&v>{L<~1NlAbCK>qX#22&Mm z;+fE}@&mW`Pt&WE@^{;eo~@ASmm8od@44m5VP5I9v=ZISkY+ktIhU;hhlgh4{g*K# zVG_=vB$o@Ewp$@A^KKK?>*Ks=q;V)V4`2in+(O_ju&>U>!(!_>=0#cB%WX zY6Rht)AO~xzY@DXj}fCQl+)fMbK8C!>g856a2x*qLAM3CYjSW`EdZB%fNhh?EMeuL z(aLxDkTq~Z>|a9aH8s6$nC!}=3N_Lcg(v?-n_Qb zB98r)EXfSsl>(OH7jap&0sL;gM7bZ4BZ06*CI6W4vpW<39y=aOV0+z|S2@S;l zz>ldWM;sVb`67*)u#jp7E*z?P>z68RvM!iFa#&!k>?^$0ajd!g1An3_#k4Qm>*1ji zW#`NrDT{o$0*qU$V3fe!TP+3p3IEtodr5yK>{0_cGKOl%xKJZhQL>U@kWUff-afXC zoLtBu)acyG5WdQ=6q&>z-u!EL)|4N&!NY$NPj&J=@XTm(&LS{!&eDrwM`Y^D#>2rU zTQ{!wew&@w$HSqc`dXTs*OY{xWsppy7M4?p^P-2QdJf)8Ra1L)|GMz=0-h^%NB&^_ zYVm6mSHew)-gO)rYRfv|rlj}(gf7JHwIYV~NH^{dC4-skoedK^VI`1c8>nKJ$Zp7k zK~lZJHS=$&XR*p`a@Mr8$ zTl~0EGjq!~cDeRW1f4}XZ>e@$WxSH`%1)U%RK8LC&m8N!yF%r3q;jgtJYTxY&(A*= z?br!4AthBCJZjX|+N8FfTyHZ=^o;q@++sEk!+}Q8^0u9`<*$+r)bcm#l7o{&W`Tbo zQE}0++;e5;dDjXZ0ltSbO92G# zUL-e72{MWasU}VmL9L|{d7X30v6$GNG0~(lM#xz+mt&2Ztfi20fx(T`?Y^7lJXyb1 zM6uL-fG}$b#t-j%0c$@fT)9cAH)(mp$bubWW(X`~O_i0){%s0+1A# zSq0|3z&R{yq>kW$4KS0yutM;d7bbb3yaUP2aB-VmYX(1yJvFN=z2n-6dpzDYgX0uT zbYZq+SAWvT)b>xX5Sp@~hg1^tc?20?<*H3v@RG$z#p^fu=FPBXUMSw%~Kjvaz*ldcEjR*Aj!c{2#{00-JAofr=q zBAc=t65-nHb$;e1u)-laC_y~t;CY_FrH%dsNJdag_L4TK+*Ek224@#fWWq?wYY=2N zwvMqJTO%X^7&4+L5v!NS z`bB2Xxi%*q2Gd?H=qLwXF5{lL3P?2yFa@UxPA&9uh{p8BBdkoc6(iVY*UsVL#FJz# zGtoSAV#qG*$55G(SUMTgAAQ9RHKkbiqqk5|K0ec0QSXbohdD5sU|AK5FYS(9BRHcp zWny0qz0aKOttM5h6WT7~(k|_A995b7K+ac`Ll^n^RvuLcxLQ9BG?SzxV0E_cAO6Vk z`RLdzO&^=x+p{svCNG<0I1DYg;s%Eci3Bb_hPTTfKgfH2E#xGnwz&)7|+Hp1zqvcDUK;iI&|Sb zdPqI@dw-z{*fRekG+m;G2=!sBvc9NtYcj|Z7-Y}{D8j#@O-=Vf9Tl*>46lKosc`ON79ejF2cU*qYE7KFwGck-T@v5F0}sdF32G zTB-owScMYdoh7R7qGLU??V`>*$YUBD)1%n=2pa%Ul@qFz5LY-rUZo}p@JDaSAkn5wd+j6TF-RpQ(p z7rgch`~nOHc_SCx|JQS2h}ZElBOXt)dt_HQxfZ5G}aNPu+`@bGTE$gJM0HrOkL1DP-j zM?z9}$}7#&SBBq4Gh^wRe!g6sFpfurOE{x0*fvHdQ*`mki2Zsd^5Ns+n zV3_Sx@1WHycJNcLA?M|Sdc8XWiJmuE*9mP4pMSP^UXwRlE`1&PHb~ySJS@?rQDBD` z5^0b^Vo|2Womx~RPzo`fuWcMP}U4@`Qh^s7)l&s+R~9AT@a~v z`8%4uKN7qiWh*{7U8b|eW07mqYsx`R;UV5jmE6h-grKtO%lEKA_2g{TEEG_2Jt>os zZ$OCGB)Sopg*!1s?B8fqS?6!N1u7PPIW=aCrZgfkjkFO4u9Q=%p{8<1!BvYf%IUbO z)E%9W`y(VWB1T*b2n=XfI%KG&+$kGu71201N02uikk_-OCZ(J~QPDK`9>dKZx7pCh zb*GUh<;agzM-JZQ+AcsB5l3`?PJmO8>qW7{PH{u9cH<9WB*#w9;nK(7k=|jo(0|xN zTM-0CZzvsyN`PS&AFmju36nhqOV}!8;moL}PHy=LO(PWSTIy>}0l7IlY8g?!9N zRC4ccgbda%pL+uk`tL24aEs6+7^1A%wN3+_So6XBGo#ODKym98Lsll#$gRv%vi=v5 z#0Fj#Q@pe<6INP|cEb+qNIR^@aeKq|g;az_ej}+vrIwC=L6eBkWB#S%(l^96hET2X zoSKPTuw0Qt6HH|DTbYS0MlDTbL#vPl`(48YL|nxMll0{Q)%+`+n=hQgWFmAA792K@ zE{2QLaG_b2@m*GU9@N`<?v_-gG!c5+0ZC0oH{3#VHvF+P+lgi;<#(n;^E6-wZHY zDXQ_UT4$jU*C)^A1>T$QU9QE392rXo&XO)OIknjn;G^}?U6PS4k<6bSQM>b_dsXmk zE8sn9ytk+kc|57%jAk_u>DXxS>6dDqPh>`s52BsKRVrCtdL?9e0i5Q^(`;*~fA6hy z6Vi>Ks_>s4BR6g~J+LL+>fbH>;?D}G&%H2rSG_R)Gml`hR>shcA8jA(+ zb7|&w`AWiC`1QhQSa+BxZMOAtM1oXUg_K5g*bSqhY8|LeIS0U|mWPdFy#s1Rqb@rw zlD0}$O_?4P9DEXeq6ddR0wn&vsDKA{{Im7><_10Y;LWl70Tbx-~A{>hCe_ zQDEr_^HtrcvcgyObFq#B+FNy?#la5}SPA|*s0OoScHc{o>m+c^%jAQFYg}?PORIZ; zYO{M39c^XxV?9Ho$Yx$1$qVze*jg!5j0hAnG6i5mkLHy*lgJuINiEsxVx`%M?()Z3 z!p!r6Kk~84E+IUA6@YUa5Ns5u6NaO-DWDnUMZwd91A!nGzC_zlDf0^B%+k+&4yrc4 z_C6-}mu-#$q%@oXWWThi6ZBzNLv_ur%Nu4e!39?I#5;D7#eHg+mg0>O+t35LbyLrh zaQIFwj^kR4gBktG%XavVm4UTHYfAj4;qV=uro*j}spBM_;HrRb53J9Rt4|l7AKOGh zeWjWW5y3_9qO89;L*VwB4Aqm7xCU zW=mXaqyuT&CBc?6@RV!lVc(Crf7b|6VW*|YHg12VVpsq5`zx1&8I1&%V^krJ$_eIrV}8BPt__P|5vTBMj8XO{!5Mt~gGisw(>4(#fL`Nnq*GfjYYLKR z8woC?f=3u5lPMV87_H7Y=AA%jn`8SzKjf!3NzEe#&^CWeyQX|1Ay}GCS>Gzsxt(%d z%#q7DML&sK0uD)TnnFxg^3xmf9MYo#A3<=|Da(UuCD!oHYVKZ?vFh9IYw^UKa3m3B-6e1>k z2@D+REAB2h;KOh~!mQ_%=ETLo8KSJjt-zv=bE%ao#MN!(FMwkIl`24g8AnD}JKf-< zyZ=pSiy6kpgBeDq4}dTVEB%7Bfk8i*kgC;f*brF=G93g9YKo%3ctenC0%yvqJfT3A zg;hEE6V>cIi&255V*f{?{)9D9roViX$F_lRvI)vNd?|z-^MAgGnL=BP?W9LQ{8w5f zpBDxd+GbBYUGt+=L6v5+U85g=oO9%i~!=yZiec?HN22E47Xje9ssVw$Nw1?W{&e}9xh~l-z^v$S_ zYzL)(876t3ky1CO1#J|BK(a&#EInx8paGMHS#u=tP)%uihDRY9tyDHdYjE2z!Oe*x z-NyhyN98!$xbxLykbuC#Ey;P=ppODN4WXvW;Y@KX;Qz0GO3x!E@iMb=2QK_+t6oDl zjDL!!^hmITQ?-<(VLjzQK1%K%hr7rdmh|$lREE@4$1;A4WwnnwpQ$A9VCLmIBycaw zVtsW=OEqegw@}S>Z@C#skf$eyW-=9cV^BFsm!f1TPyDvZ1lZhYWl;e1I1h zb4yES0L+T#-qqeuD8J$N)zY?r(;|^9ww0BW9am^MnuGj@vCvh zZxd&jNe8g;1wtE!{;383kxpWaW>pPPYt{+245o#~!%tFMsbN_wFMV zr87Ydn}R#cpx-|p63q!YY97|Q2B2*1Gm4rI{r^=||LYIbvcsK6B<^R16kREBMo;}i ziuQJG-HTs=QYI6Y(WyB;-bYA6Mzno^&^l)k!AhNiF#Y2FWWr#YmhDJNFOm@?EgWrV#le5b z8>M~3`x@@*bf0#XzHA8ZaTqJ`Ql+ai#li~PbAqpBndLDWdZU8*2lyq$jTSH{Fj#tj z6-<9eN3*~6^?yJ78~Z zsX+Cr0Z>)TH7Gl?PR0IJe53_x*1|HtBqNqp9B6T3!#V%ZJ7^z#q*Z*F2$i43{4xoW zRhRalYkzj`Y>Z}a`*g$yLYxk|!BU|--AbDi3|}#<-AJUW%xCr4$9^~6>!RI9S<2e+ z*^fjwkRu)M@{fxEbLU4E3TgPg%Ah~I?|K%kq2g#24n7~Q_8GSY}VXhYyi&hl=QcT8>vTTFC@9{M0Z z63iEE%=xp~VbOa+ENg3vO}V0Rwa#zWaYkCVnx>H|c~vAzYZwg)C9!skBFT7%)FtdA z@1LHt1!W`lZw|7Z>PmJcm8=A3BKk=VA4VkarOwOXPK7S%#}Es%7PnH^9Uv2zmf0dN zzamvJf?3+rS7?q7BU+59!O!Jvn&Yx6!!sfM*ZaDLhHcJv6-OFAnj$~^c!|2FYAs`D zEX(|Fu?051DUnt!S<<)PB$Ged7&+Dn29%tA?xe5*z;+vBvX#MW9TX0Ep75Il@o2iZ zHM?Luj4^Uu>&kqhpwpZbYP|U3n!%ODme(F(iZzsbYcW@tglu;6$70OfESGGK_9Cy{ z@Y)L$UY>7d9)QXw4>z$0sB*~ z95vBv59fM5U0kni9%xg{-Q1)=KblH5ZE90BVL_?!q&I&HY#nvpkPhB^EULWdzam{K zeO|ttm+0hTTGdWmo8VLbM5ww7=KTu3$slRXd_I2Tj4mOr;q7bTnDK3IY z^GlyI<{(6!*WvGeCy;oRUdTSBJVX*69ey*9ifN7tOoKQEWhrx{vhuI3NFFHKE{Ys} zc^(S4pBV;g4A5^Fj9~%Lmz6*V@ZDJOA2IMnbHJ}H4*sGCIu1GSi^$W;NKA*zKDZzp zyC(!`=fN<)l}CZjSI%TZ#YFu`IyC%I3u`h6V2AK}r+A9C8+a{7?C8jT2u>=woh>kt z1%FVA8Mz$nJM^E$b~x&nD2cVrX6jV4gp*&0aCdFCcRABoZMJrZiGff*^GAf4qc6W9 zl>XzIAepP{{uX*gdlj=ti2p9u<(BV6k225ai^Di9#u@d#CUgqs;@6R8U6w=m%o}VP zb4IUi7O_bQ+#XTh==u=jw0(QBa*u>VfZ1~9A3n^8=Qx_vCd%A-#_W|ac+kmysfHxT z>+^@R@(^jxL&?_t6Sm!=UoT2g@$I=6f%Uj`P5?VIF%|6KKxT3+aHa)>p}C@F`J_{WS*V zR$2~jcK#!uJ%6vOk-t2G_2P*kK7Uvue%!+n_X{7^gnm{~-wOJR)+!J}fxN{51rVeP z_Hm4y1p6{|aDxUz#UJ=t6W!iH%^|D9GnYTR)t=Rco*j?!hllN9bLioGkwbrvJ)9bT znB;FhW)EkIhmz5S?C?+Zg#FId(sX%BxRam`(VXhXPKUg4 zUe~ey5=6P@8ay*!kF^y0bpjye0ErYK-t9UPx zm=FZQl7KMbQK*?h?7A-M%PMc1S!x?ec`^agx(r-fbUSWJi7JLPjucQ6U{grrv>YL= z4ld;d;NJn#T5ghJ5@~4(HW)_Q#7U5b*IC4w5Yn`b7Np@}MEehr)}b>FRKx8#f;8Oa z6{Jm8kp_^9AWcjfRAqrit+wGrbI}Oz(rs2Ww-#kOj}Y3Lx_B+uupo7$C*@#)|&DDIWpv3{FP?j+eUvuK^$6kW zbk)Mw1jAYgds6*Aiv`fP)8{H9^DlCDJSuOc#3V&JOPvk>BDYo37H1B<%}}8Q)^gV_@78hGDepFL*DdchaW`4s zUBI2OrNMb2cT37=&*83D-k}Nnbb0q&?v|E!mvFbNyn7*c%gejVxI3-9yPUff<=qwB ztt{_e&fTi=?ket1FYm75ZgqKg9d|S3-Syn9DerFN?rG&6$v6J#<=tzzJEOeY&7CXn z=Ea)*^7epkEwjupb4a&mmQQch?b`D8Hr+m>yd{sj=Fci`@6hep|;@>ZG#6K-BE&O(73&82-PK?PPvAxFTBt+<#LTnPSbR&R~4Ar$f1r#(G zT#uUqvBFt*vvyy{%z^b#Emv}dHw>j>$4U)^bWzx?M}$E~fYs&T6!6W+?gix{rP zC5r2#Za5lKhZKch4mU0um?NH;clxv-MV@hLft)m8v(5a;sL=7uY8#`-e;>oqv{5=Vth4npy_K&tzHRH=+2kDYdTGPtBjaC*_#GDtB}| zcS5RCzISlw>LKs zL~F%rddX-TZaDuwZ;PCyqAfNyA?z-BkzqLD2sRn#W$OW4c@_ljtpNZX0BA331selAOWQui^zgO!o-}lGWXt58=|E%sPy}MdUe*m(U%evt6 z_8bu)`C>dQ2Q2!~`Cx+VoN2Q*tH&~6T@Vcfk6T|K^RcV0uC=U|$TR6?L|gJ@b);1_ z(-*7inz4I6i<23;jY*jNiktfk-7KSYu~oG=wz{ew)72K5`mgS3;c7Z9*3kG<^L6!i zz)N=fouVXU7ZVpJA`N^0!I``!{)6_dG-M`tPb%KK&)4D(pQ^#Fi+Rcg;^@MsY%ye+ z5A2MO!I|#)H?K@Z5(;Myfs`x-&|!fOplfS;#@;P7bY4OZ2xi!h3^yj)2ySX`m+nKE z^!0Yzg(Et7*l=CwgA&xaMLLnMqa2t?RDk>fy6J0=URUc7bS8(OXpX=Ea}%$<@%B3( zi1;w+*Z=d?b9}Ri^J-or2ak;3r>@n-UzT+pT`{k~$#gBJYQjW^<5PX1q&a$SyPU(a z@kby}oU~&Jx!$uJN3c<}!{Mr@@|w8-=#KHDBSD4Ka0`%t#wO4LU9?MsnDwkJS~#wF z5sKIVJZlBlq&(?sX2S?g7!+;PQK_<#YyNI?N1^)%ydYmMIdvK-Z;`r3^TGu;q8kSZ z%`tn>0#;_9*|#3%iAk1?HKC~57E_z$Bq~$6^SN~N6LHdPk_pgz}-P-}p&#MZ|z>g=2;K6Rmatd)N$Pv@P5 zk6BomeJPJ;EGMbNk!(5FIbhw>B)`qRzpDxjUa2aK9zNN2>@ewl6YMP*Cx+l1%g=BRGFRyw01)BUZH#?EmfX>&LU1VXe&LIVp&7|{*hPl|a=S<%{41X-9l%;;T&7g{qKe_)K@A=$6OzX&_JYJ5}q?)J+ z*kh{71h|n^kc>oZ%{gk#&mXXN6tkb7f8v(Ee#hHx*h}C()1xo%|J~26m_Iri2S?j6 zf#vc3M+o;fXCH}PyRcfr|BSj&M!;efUZV=f5B#@9E8J{A;#mfaN1_`SfYR{z?SSL>u-J5xw4--#VqTwG!iOVvU7_wjXL0t>W7}TXQHv;|y znsE0=cRmo_1ThTgh6Rus(&SnrBCKo(&I2Dao|bUd@Zju*#Q~kLga&O5(!!DT8d($z zvK2bw5@kZP{Lg(l(js1#TPp;mFOTb33=VHg zu&BvG*}AbDjr@`Jz?e8|!i)XG?-70LVc(Bl^Ix=*BAECWoxw_G5IrsguzGdz)Vg{r z|1VBkt)#fAUK_e;VzI?x>!CjG9{G8exowy@+7c6O@DDv2vxpu4=n;El)9mP557{Ga zpIOl0J@!b+a0?zi%yQ05!o)Mn5>$xCRJzY9VOdkD2t15-|7oiuuSfL{Z-g*L>^poT z5<@ZZeU=RUkT{WAWxo$QA--9@EHk^y;1mCj^RdE z+i}%85i&{fMCizVrFb;_;~x}Ou&R}KTvu37ElClB6rH3f6B=xrbuPEFR&h_7zu7FP zZQw~iSa8Msc;FrmH+|p_&kgn7_t)IvEYmxmf77lx|M^b1dHbE*ynR);`P}EZnF_!6 z?(lDWjHQ^~xN3)g_)qiSAA8HI<~-j_Q2A|7Ts+4=YAOU88>~NZO$4tI41@oUY8)oH zWQV^?Sl0OT(O4Dp3EAOdQ+Ax?IZ~`x4axeW#X2{&frZQGaDUP#H%oEAV60TnkN!$s z*;afW*G6BQ1dW1{O+Ts^fCX}NV}ts`Ffr4*bbZ_iJN>^-?Ij2hi4~3WW9x!N&_$33 zmb)lwYmFHDM~~60-{6n`wyyWZ{=nV(@sYIm%eTy9id$qn_8FmQGh3mrHvN0I#D`5_!FNU-FEMWATtv3pIst1zai0!e$ z?(}1aglf|qN|^mElHRVXDdmH&!Vs^NB9s~#uAYcrf=02XX$p2$c#{t;Nb2P&NF-X? z8~UKws`sWaAT^(t6rnPmPDw6>zD$Pcpf!;+jKy=?iTc-~KZ}p!l!@dyZCjQnTAPF(VVD-b5@`Uwf+`4Zkd3BD_}!3Z>Jnn^rTkr(T3 zY$=pag6+*ZWt^pF&)4x_-Tqsk&y+r;NLBez?yc~>*QP8ODC;Btbu6f2cVlQwYimx= zA=#_=1B=C%YG;-dl+8LWh2%Dzd~2R|{?lSO$#<)rTc2wBFu$~O9FM`!X@+W^YJQKx ztN3n}SuPx+lB`9_^m!VZLgmpPW}M|FTHDz~$obSxVx>9Qwp6vk8#GV20o7QovNx}S zo2aNF?OCm|XJHj!8>&Ja#t;@-q38dT0_`Uy!~x6d*pfh5VFj!@j*-as|CWatv#*yS z@QA-vd`oT`Gs<+X>xhry6al;wmb&&j_{d_j^&&I+g`iZ&!|Q8T`lZ~u%k0-WeqBPz zCeozuf(39Ak*Q6aMMj+-(RqI0fI9ZK4T)MEOLho^F%a!P2}D+=Cpf77l(FDA@JTT1p#~Yyb;i8AkaS3YZ!S@erjmzUd?sxUQr? zpoMrM&|+;#3nek;w0Kae!i$YWi+cHufhwOAIuXvv_2I4YV3!5E4RY@nxRs0thfeQ} zW&nsR`Q`yV<_=_axjb@&juinazd#wjvjGlm!zJadxsdQEWq`9DACk2xiA#L3{llf5 zN0Pyb7z1BifJXd-`vL>`?4o7-iCMka_y~LkFe3twg(AZ`;>rekn9-RXXxzjECo|WCnH<_$KXwTVCH9SIE$Rx8;C7}# zhNz}v-v(^$o)4W6QkJnyqD44Y!wwLj7tN(v(>hiWcxH8rFf{1|!<*p@wQsxg!AQ|( zKxtuCSbhov7~T#~C~Ta^GdSjg_A^f&ffRjv0>m-W?m%$Cm=?a^6|snQEnJ~Goq?x2 zFN*k_BM-2aAJ!dg!X0kS;_)N_z_7w|GOeMo*@>!ERw>>&ZY>~*mTOwAB3EeSm)`6j z8{0_I*~XqIcT#01y)Oa`+DWB1t?|L zfgdy;jyqc{;hC@@4jLTpp!4?1ZufyO57-DE6L(1=SU2+gLl=sJGZ0wdz>K|Ps22UM z>C|M2Ccm)>rA1i}Ib@MG*sB1_xL-qtDa~p#d6Vcv1H5XM5Pg|TfYFpvC2$1Fsb^zx zWE-&a!FF|k9x)26PnX5kD2A@NmQQuil#=kmp`^ww3$qg|9{QwrJ912L)%grJ+i=mo(j7$rC zu7ith7Qy;4`@CM@5uL6AzWRN=jTIV}MH3$B-8`Y-l|L z4zMkxyMe}Le?YKtjW#WiupwEQ$SV^z8KOj;vwWJKmILe$84~4s=Y93K{AlB_Bh9wT zD~$-Qpufnx+S2V6wlRxFibTv!LIbgB*ShFOJuC@fmY)=9~fEq z%)K^kp1?g46{66u8yX^i+k1}BM+C0W^tK+6>D`;YvIvTJzDBHbrhndHfDT#NUM{!F-fA8YunfT z142%j%|ljF*du|*gJWV4U!Z`;_y{0!fG`K=?G3>5)%beWIers!R3sMRo37zAHZ@!` zwiH#4vFf99+czMJ?HfaFnqePi$6Bc8Eg&K|(P0=YLdO1lb#3j~d8U9Wvk?WtGikBF zJ0+q6ISp?l2QcGnF)gmDItpC9^YdFK6mtoG)4eT{sHckn<^xmZ$xkl+P=54N?Bc7X zB61fcAsPFxxt|z`c!~d72V9*DvDt5gM@#l|djYe`lcbxpX0i!Bqt_=BA~;AzZjY>&RLEdFb~Bx}r&efFtW`}<$b@=Dnn917dM3_UmCJJ>_pHcf{$;2{3uo3%WR z2P|di&-5?gMn6JxK9t$|SxqK<9S!2+sHDaZ96G9kB{(mDH;t1N)*<_KbMoFvu79qE zHYa!MH_26Zkp_(xuKBz8*iQnrmgLLwDe>muwZ9yFt#}12h%!ZMjuoilAoos^`=uEU z_w=*ld#tw{f;`R2Ah2Fd!m7Af?6=?L>u&Ny*2DcV<9gTQc>M6!r8M*cD34x(Xd!Sn zXVd<)x&Bg3cH6P;_QJCB^U1cE6a8h7{>VO(zpvtmt(;1|%fTu7=SFe$1m}99`6(!P z<9L)mC$5Gx&GrtWq$|(o=i|HrVJKB-EvQiRKuAdyY6~iaK6sRrkM{j&MqXKW`w70C zalOC$C_?(_-VMICi&5YC7KmtH7;l<1EP;0cDmix0tf>sEYB^SwZG^#4Z|~iWsa`Lt z*7qVf?ALM2^Ag9)d#$8sZnv>-Yqtt%GWJ_t7tG#m{i62yMyl4U$Fk1B?6lc^yR){0 zQQwOZ!8a$jS>{f||6cKeSvO4ohmLamnoIy{b`{gZgAVPwUK?Fx2(-N1Zu7VQ^F!%2 zNzMv;5(>aNVps3@hUZi(KY#4=wY&}u*=?v{$v<6>5|-LPoVrrnp|wXiMwP{n8bXZG zmOPxeG+UtpSoz-Dz%0SZJ1uE4Uu2r)()CB)+{hbY0J;m!FgO3T$>=lu{M&iESehDB zt{`OzMSFrzd@hr#C@Am#D#txIJmHqY5lfNv(>4FEMgYx~CF=o9l0ccv3G>?L9YSth zrh&%wI@)Ws97%~=p-XJ)9QCg~*G$)3Za^q)GlQSERK(N$q3W2z3k`q0o8HcQtLR$-qeZ0EH^I*b!BGH{sdH-;wX`Sxw1( z6Dm1eDZ#Qou9vw!+-CpHAJfRb-9No&_9MS?;?dgP+4*<;>5=y)k}VcEC;H~xbkb>t z?8D$_(x&X*>xGxqn)+-0xVmwZ+fU@BVTlFV}Jz2X51YAO$KgPl5N(`k7Hs;tOo1cTd zZw-S^9bnNnW^)@eFa>6gv8pERCV@OynMz$%N>K^uITn9-tfi5=Y_vHbl`O?DpFuUc z6v4i7`@44Ub#<_L&^5+Xs#Jk3b*vYnBdbP7a4>-@SB_%h_Knb!HIny3FC>EN3%!$m z;zbA>c)NcJz}BN#uu~gEl14Ts2E?J#CKarF=*=huv#`xKUA}Ig$#x(IftN<3C7}-u zZa`M?r`fcEzX@hb{};9cVP<3p!T_s^wv|{_(1Hexa6;}x6}dLu1>_RLAnPPYtmcco zdj?1yJk;)Z9X^QqF_g@} zZD2;3uah|^@||Y6xw!1;ui>(HM}Jz6863P1^8^z{NwX~mh;G)p2Ia`bl1q7UE?X^= z#Q2KzepNUfUa%BZNQ|Ogu?@A_-L{iARCCguzKzn!Z94hWmILzYT6fdfeuO@iVA^qf z+Si0sbfTCk8uqfTxfp;bP6MRDM-@Zcv?T8n%AE^D)pk7^nbD>Xf@nr_(klrLo2S6O zQ#~WuMHL~n*gyIU_TWa_J0%Vxq0^=gM3U1E0NME3v`64V5EHmTgYRC9M(@&um=h4R zWkbpYU89hP{kT}ZV%VAGf&vPww1Qp5qKzUxdkeN#Dyd>+Rph1d?W5$H*|B7`;0aU; z3V?~ETkJ9xbBccUB+v~ZW)4B5v$`>(v;fp9ii1fKo)A4=BYpcIk{7EcL}{uzTe z7Mo~j0jVJ_6y9(_HS|~N`f!^qs9X64KRPW>iGCT@phXXFY|GVRR`xw1dabjAHNY%`#p3Ig@G?C77x z9dnjWMJ=dDi{B0Et#K9Vot4jAaFB|JsdvWW)GH@0$N({Lrq>+b_rYj>hOh1HKcnNO zU0;6-@qtz+qXpXMo1les6|{Kz0$NP>*92N1N5izJO43;iC5aZl8?=}{Wm-J_6lehz zpamab$^`>jkW2zC)?h5~7h0HRtOu2NYQ_SbaZ*(_##k8022vU5v2v6iOka|8E|QIv zqq0G(-zq((pIWm`FQ(Z}T{a3UsZg{d+O3oir~yr|CGvS1nlLFnL;7OIv4Oi(c08~Z zJ`W1RinHLqDZ>g^`u}Q%RSUyvDGT*Oas-vHp)LHn} zf|kXL@ZNXS_Ht`&qnRA=D=?}6vlvWaBo4sJOZ;J5!mS=&!hQRt10yK>Vg)Z#2rTr> zTJOot(tB!aUGf*Kbyg-rOjSM^ptL^TT37LSYkl;|z*--EvWT^=5D}h<(WUnYp+}%P zsgd22ku7Ub+N{S!l^fZ7nsBafmIh`r&YYDfQvRYyZPlgZo>N|ReXEL;xTd}%iLt(d zZ)iIEqCCDYS&O+BZezq;N18c)1hb^_2Z}VX>z$o-vV29Zuk|jjLn$5Srx9qD7GRtfSd@`~Fo`X&NGYcmXJK%c+qH#Z(j<=s`mTqOy!F;7f z7nYOmX~h14T!|~JvlX7>Rh@Hyi*}(fEnIQQ75Jb$x21-W_IT7v3hiN-5s76(O8u@n z5nQr%E-b*ZSjyMky*J2zrj*wHH|?S{$4-!Ai1Mm{k+{O_#j+>*`7t-4O}A-b;9M1#fIJEE~!dk;*_tyPE$ zk4Wc}vy;`JTsV7dsWwLKT~-9=j4!p~#vO$*I+ z-Na=aWyW#|JEVBq*>Mv5qtWvpF}e*mr0FhFSa%A=W&0$2VYz zsVa7-j}hc?x)8hL`y@X?H$$;IddOpU%pD-9h~0r#?N}fXO_~Klt;m*AR9hBm*^+*Z zxV-B=JDzW`i0Ueq#X8TmIJ?P)M7SxLA=XPk3q>g>9^V||K%9KM3O3nu0$Q++0$MQ5 z;JF2~tO5ZoRUn`>QlaR9fR-xM7E}m*@F>Y2;R65BtVzgY`w1Y!*G-1b>^|2ymNgC$ z)Nb$Jl0Lxq_+0I!=(u8Vj5r@G`XSW73IEc`hGKZMv>-Irsf5O+i+GoGOJnv2_Ge2E zW(_8!Y*`48Wv97m-L7!U2#~Fyj-toJ(i(d+d$4jh?w~SAMv6fQk`)bCf@J;EiIGKk z(>m1{nMKGN2eZ|Xt-l-`wjCg})#voyY-tgFqrB+39eP+n$c}meoN6~SfH}RlKg}EX zv1m@0rSv)ov`MwCAcEN>7^vVywq|ekH2UW9blskzp-vPXPVCK`O8dLr(+BWO1Tfq} z2r{>OHr}1F8XtlE;0*=b$Z;M+wOz zd+4=1M+5bE{=Y>TfV1=DWn zZr9%JW_D+5_hioyiI=KY8}w9EA2vklJIMT8b{1iP? z986CHY+-nShVi>qx6Ow7MR5qQZ#?nuQZH()}Vtlz`#{ z74WDR#v|Znocm3ReO+bH?g}ebJU3oOZ4DcR5$~2W6eJOmr;?6ITJ9PGADr&ymD6^+mAl~rRKPN~ zW)Eubj6JTu$GJWI)w6OJPlJGE?hJ=MaJ${pcK6$}3CkNHlqXL&w15#P>y`$zz%>)# zNk^EA^rA=!<1Vb)oVx)WzBb?duGJSY*dN#QnhxxR7#_XQme26w@JBu%K8U*c} z?k0p9JAF^E)6VJo_$=jW=XBa35;Hx!e6O3(zV8WsU$Gb1IiU(Ebgl2_&<8Yt$Fv?y zxOl(B$k?tZ)T2zO;iUMr1ZFD%V^bW*RS^a9uoA6~V;1xAv}z359v*;O-Q@QtkEqfk z$(Txq?7M~w-#jEfr};bC8ASBCw`laabE1EyS#jMHA^e=`TnfI3r-ZTGiN894NOofg zM+acaTg)m-1PKWpBhl$ILv&h=^7PCQoTlB^S$Mi^x4dPLv>R^Ab|K$T@ESXa;9;Dd z1HRj|ffnaqdMLvdiy3O}9KCv=mYvJ5b6LY}P~0&ps=EzHcGTZM&s^5=_w4YcB>g=_%d2uewWSz_Do}KN^mYcrI(DK;h z+31q9wzXyjZ7%^i2llBk7yg{xFM{9Lt7iP3Kkbd8vk5>gE)UfKsuqAdbZAO zaQp?2iF^z(K(ZFL^c5i?L?9DI*u=n)$=rxaA~AlkyXM8%k9>hIlPs1I$N&J$U_Ws3 z+NnS!DUl(8_?}~QI!7A#95f8<5%?7-F-g)Lny~=J;*R2seu74?Dazg~!j8&oEgl4l z<>AGllXjs~QH)5JC)^TsT;vIUjImFK57=!ACr!p%N6DQj+@8rN?#C>26Uv6t3!ubE z2_qHi799inGw+<>E{wsXg2A4j#d}UcZ-o9FkvklEc8)+gN92}_p{j_)CD~a<1iMS&lWOv%DxPrgY4Xm`swB}$9=_^h%d_Z@sINah`( znc3qkrbC45tOD7Lo0}5bX9?R(m+Vxq3E^BNpP&2Gh?V9EjLpkKh%KLd_YkXGf(4G7 zZx4;BJC{hc&ej7v77`E2?c4z>&lM`A^&GnP0Qsw_TSu~lPMp1~E^VS|s+=Z5X&K!< zpW1Nxo$S|mOzI&R;iGR*T1K}y(6M;q4w>!2U>|*h(lWaJOid_yhxu!ru6Imi--8nU zo^mn@4felR*ZUj&3v_*~*?$%?w;pn??{7v2oJ7siTSd*T2{(&rSpkfeeWqzxdN@}U zvOEudY>)#Z?w?KhIs>~p3!VcM`7F3jmBQ$4CX`wYjHf9mOoA5wWiES)dC;nT8&lyq z`BaEHTQCzolaT_Db+On)*zL&dMkj=cjzbjs=eiC3b<8KH@&`gbOMfBedFFL@=bemH zu+piMO56ykHszCHAe2(`*7eUryKsNrD80@LRtuLM{c`{XdTkIfb9&L@cY$7*3_M2K_T z_v){yH*Cb@HeE~7fF*E*K&| z_yN(*D*$W*(ZYoszyKBtHWpoOBVe7Y1sl#I2z#zA0?u8ySYxD;HZD8*7ji+`&Oz;c z*A{E%R5jj(xu9vR3#O=VZn0)Y5Uz5=n;Ai2u~typ>?Kyn-|NoR--4*@5;>VJ{Pve= z=h-riWt~=QApR`PIkF}u5&lzOt&uS?WYm85S8Fm17}XC=wl&-82iuF}c*yf3ag>;0 z$NJXR$6D!j3bgBV0Zl>Sjoov>w;($Sj*#CJwL`*gxm+$(AzLeKC4VuCbu~7!PF|n{ zvERre1k&8miT$<@g|=RkpL$bViXfNdS_qc+(yCS>!1g9i1l$-KBWAKWd10Gw^QDl) zo?*~#a-AXqY<&^(l?}2PX{U~bh&SgIP$EkZS`?Dsq?XQ9-)BXMoSi~jj2)8DHd`I>&W?f>rkM0K^=!n+8-XOgW4HchoeTfO?Iv7UDZe}IQXWQ zIJ6w4>UUN3wdrK2Ob zs*2+8hzmri90TI!g!}fexTSxVu(+kV-rj=nG4sfowMG1Qme6>X*4y;8(e%_tIfyqt zH9E`HwN|1-Dyn?)-9_h?l3TwGbe2A%jY1>qTyrFD9H4Qd(6~`(+^Ds-7O{hcEDMt% zx)wPY8%IH7elA3-5L)%67!8U-x`YWSPsc#3)=*kp@IP_&2gq5q59OHagjjg0l!qr+ zyes8_7`fhOjhm-DNYNc{&*cdW3FpmzhjOrfFd>y;PPxN%P^L)d& z($up*@cJx$olE!dbKj4ab-v!JDTN~)e5mTN!M6jfhki7EX=~tTobVR5qU(!WF+lKP zL&m}x8oJauE2SSXX+6e?J@fEG>MeApZ;{I~VYc7ox460@#oCBXfJ^(IH4Ctf_HyW3 zyNvDG#$Ig5O0BjXYQqahVk$S;%xm>)vlkvD3djbqc+5eXOcOlra*fKhqt&;e~b zq|MfhY)(6?;ncy^2?qu)Um1K#cx6B5@KXK10N}}{J{Vo1w;s^T_htRro0IF!-qmho zr-)m^mmP`UN3;L&dk>y?+uJ^L|1a#Dje7qsuHo6b@a)h3;Wz*0UylCC>%YnYsO2+0 zZwaCnd67ex?BUoqbt02d-g+p1@`*_+C4QEyPuHh89QU}KT|C;*}z^H2N@4L*_eF|mYZfk+Ebl=Nj z2U?&|3PRZn?X)w6(sriIOetk8P(%e~5d{UMAR@9TC@Lb#DpW*3K}7{Y1VKRoMFiQt z-^rcZnbPX>z4!lr-#3undvcSL5U0Mh;VuK?g}o|E4tRHO}t`Ah9xlM zVLhuJ$VU|k9&i0I+2rAt=sMo(3=T6C6zNU262XvlJkH-obqX{Ne{2<%)my)TaG`EV z+6F?TqETQ-+Cz*-?=P^U>}n2<6L9DVeN;}gqW~})>5RwKDqy1n(x~5%PmiNF`Sdu! zFo!Z2C#2BlILZN{09Tv<#T8}d`ffzWYe>z}VXPTb;ev2R0)0ZLB`nK=Gs{jKWMv7# zt6U)~=MjuZi94^AMWXBt>AEL|49EwSL0Hr9gz+zuh(Y(Au0V1f(@M4+k%T1>N$^z z2W!)*0s^syH<}GQ-Ah2HYp9^}z3>IE%28T$wifzdxAVRD2haDC?^1P(^Pk>afSN!y z&=7Q}20T<`3xlzV{yi!g`#{H@(P)JS1L5Kk)ELg>lX&!$tQy@iQO^wvjP77j^!kie zRPV|OYM@(7mIV958W+xy!ckB9?{10?z%!>wL;5 zog7N7gHD)~*c-J&<(xh`xr+J&{Xq&F$b0)U^x*J#v0n67UFe_u575IP9J&8T=%4xz z&|@eF^qoXqV*R;axUYsd3;qN2*pUMCU_<%L!#cFz=t95nKR^#H0TD+~#j_(7UFcy- zKvlcXg?`b0fF5f!j9)mJUz|t}xsb9`afnN57`ZlYV4PJCf;0adfoHu4uK#lc(1p~K zgZUrU)at(~0?ZWaL9pVVBfyBE9t7+DIRcC>>OrvepCf=VMm-3s|2YCS1O#){=7Tf; z904S5Jvq4f&k?ZxwN4He?*GTthz^tSD78h_VUpOdb4gerf(cO5E8``vhY-kl2%RF- zA3PJ#>m<)9(is@#j?vj860Dqe>FN(5T=7Ba59Pkn?Yv7K=J`s0h)&7C1ETUHj?$y@ z3{tNC!I%?4DC=%PUsBOE zg)nr%Q8J3Afnasbx!tThxQ7sA#vGeESnCy67^+&f}Av@Oe(5P{frl6Sok46(JUlj$E2Nxg(ih-NE z*rfwB1!<0%RDk|4k)4L%WWq^zI)-pR-=ZRM;0;7Fa2>ew zNCtbMUb>>7m{rs40-i(?nki#Cv6vEZ5-Co|!iPh@Q5wQk zK=#%ZZ+*y$FogclYy_z|M>irR4uZ1d9qA3X1najEO6bIVT6ts95638zKA+8faE7xo zwgTHwPO5&c$%%6k!%73yUXWEGBp!0Eq|`FlJ48__uf4F3k^ z-_YqFKnE5u{|{>UH)Nwu%IBxd-`5$wfj12o$^UdMe}8Wp=aK)<%wI`Y?@a?V^1oFp zydND%!u;ocNBLLq`@(im_J4-?EBW;CW+NToS;zbpI(TE-g&ckl^Y8A=rVMEI-xEzq8X{M|PRa|2p#zcKU0{0F(JI``$hObPk*B zzn1wc`DbT#vheRR|CUZX%mR%0f6n}!{6I5a)}=#Yx_79~Sgf;_)mU<3PU*k_qEpXj zS5znsR&LO4J~XMtOakn0p!SbejAkU^a#XPYIQB;B0k<|mjU2*q**PkwqWu!}+h!ti ztzl_^(x{P*5V^&t>$g%GzyRHqB9HyNIL>{_Oj*3lCeXE}%mKhog-8E^K1eMd_?j4X*xnG5Jp?(We5ffONjj|ij z)CT2vba1;GRFMa4IDnTX={W0s|1KgZbY{vC#d^Gg*{(8Oz$wZz=jBV7dHr@GAWD$y z%42Os06N=RN&t)yKuBzQ+`>rDsLcMT^o$y;iv;4G^qIJ@rfck8UlLT;lx;$3I6)ai z-1C&hK&mh$vc$3LP^cb|yqpqpU30@=O*#BnMG=zsSOzFjA(>Skbo#`_vZg?A*A!51 zkHp+G1u&=}O@Y@)4v|T> z)>aV7S*h%50M2U`&yZq>C8F+YlA-9t3wU4`k9!jGwHwZh%+UlG??^&TMpSh(Lc_OZ zL;J2{FQQw8ayd} z@L(+nI{=h&(PjYshg4+eSdCUjP)SPVQXC{geK`(3uf?DLebI2MYM5Y-TDF7vbV#v~gcM`5vV>u@9I%ODIyFClZPU_LF37Pl67(~e+ zx~vPMVmhJ`OHJ~D=5*H=t|X9&7D%VZX@q1k8CY%dnC8IM+dIIC@2`a6H`xu0tMbGZD+f|1^UTss0gz znEt1DAL;!i$5*KZZLQYqHe+K_51b$x%5kYVF$6e)j_MQX?rTXX48+2qe5@(SM#w!j zKn~LFLaoxdoAAS_hK1NXg37`%kuX&hT44YMuUmWla`7B?Fh45#XC7aIhGoHkoZP)?P z2JbX%Wb}Yxo59lC2Zw?iAZ*z=>Yj9IT-A(TJ}MfUc^Xzi&a-2xU5Q}z%{>uD4cu0V z{HS@3uqluBQaY`c< zNh2?(G{UjNB#qPtSO-w!M+<@?fQB!$OibK@)d6R9Q}+mlprv>@cWAvBSF%v(!)TF~ zhB$~Xt0ItWO&0*-$^YNbxEcfoQBHa3Vg&(xJS2**+iVpgjj)3K0}Rj5R1s@-byYzm ze9#rp8UP*`h)_R8(f|Xdr7RYWHnGX!8S2{fPmyE_Osh;JQ_Fb z{2h5T(5;9M-1Ncb^Z#}RK4j?7E-7cvx$;2RLb;}aB>V8v41$kc$cLL)nC{5HgL9aV zJm7;Ebi0e0F>3ucG0U1K7T_;#VP-=aWnLiR&Snhx_6x3S>ndC}Dy~LDmERH?iW-9y zG*VQV{$<8NvK9<^3`CYOEMU!9g}Z8TNkW7HRvH{xpx_P!7?r4)MTv+t_dt>Z`ZRPE zn5Rty2hfR|WLiY4=+ppt!-1EmHXw!!Gv$$)Yw?_PYJZht{Qp9N)W5^ZCKz>CfdXMd zCF*a|J7rmUOO)A|2^do8aE3E?Q34u*Axk^%DDQQ+%YB`&?!54C7ZFhpM2H~zBN5ZE zU9Gg(jJl!hwXPYutDNI@7SgG<@=|dK;{_!8FR3y)uMc^bViF@lUMVsqLX$5%$(~C7 zM-oFtCnTZk5OI1YTRjOB(BZSoZA9=1LLeeFawcDx{TOPKNn9q!QPp>@gEUkQ++l*O z(;FmfD5uw-kTZoaXrvH`N{ofnvi>f{T%lG!pq7hafUpe_E|Rdt7?H-C?A=)y9AM1s zrbD@_6aofhWSvNNG08BC%q%KcRQ8503=@^6;L$adB~sefOsCQBNh*?z=;j~`De05W zq@mpgHXLC^d0?LO^&EYru{9khXaa#$zL|(=sezV@-o$vN}j3XY*gydFji1g2AGlp;X4RYkS1Q#qwV7p^TjP3 znB!5SLjst5;DH#F3>ogp36d2Cqz6ywVk)Bap~wM{aY8Z<HexCrgM zA{APRzaTV8S$uS(HA~oiiV3nc z*Fs{T4QBO@Ak;PGfhqvlNf8SHihnqNM6jU|BRUOfs4oGh(9j)Y3}BGU zy=JCc2@O}B<*x1f_hI)@&!W(%2E%c8%5_9*1?`9wq%5lmw8TAe1P~mskY+(~^E%~H zsfSwmnX86k31!DXPekEJSA-km&{>jP;Duxn#KgLR=oApLm~j0iHpD$4tP2JfI;CFX zob?Dblm16WO`02dKb>#@RU5#eCT{EPiU63g_3$g zke0UZqLZ1xCe4%VINn zxBFiyE0PaHbI^LKxQKxDBs3XNN~@!87SdRG^!yBw|T7{$1#f zawZLfQHvx_aRDo$u%nN7xfaoMowZ1!9bZ|sQCQiKfP5hw5R2KHva|MEUP<#ws9ej^U6q697p=HAiCZTd1O~b;-iGKD$%aM z*Qh{JG1Kr84M)TST5vTum}yh6o`jRaD0iqfhA^F0@oC-`yLJ21c6J?gyNGgYuD=4@`*Hn@k3aLXihZ7YEJK94a&mvMY zk$LFB&a_~$oH*;2{t|(AoC1P#Vt<=PZpe))A#UcW`7ocuhoL67)o&go=49}z` zX{~}F?dXAfEy2oExs*ODxqKQLwxuymDAscdY3wFCm+vriyG%{n1zxHR{>(rNufet! zNmNcKMCYZv;#@{-?xEufA@8Qsg+2HN$YVNPQYJl$od@X65m_gB;Ot?Xe71=Wzob)y zD{;J?q?LCg@VF075~fd`ijjbq*Xh|jPd&~q&g=MWzO<;wR%$jD+06wOhuLN^7D;BC z&1y@M%mkZFQmMseHs*~p<`$WyJgdnZKE!Ue*~2Fq?d8Vsusow}tTo(b9$R2{*viB0 zw!H8Hi^)7GEYD_inC)Q&*3h{8$aqs!RBo;@GBzS2GCv&gP3G+JcB>^cGAtr2G9sSE zGnvC|_9#xzjo~=%ITc8brvfhk+|CWgJcMfs*ywPWi%T4m!zvj~CaJ8zF;22hG~4ov ztY!G@{@q@h>#!N~9CZRIX|w{)78J?t=Z3$yw8&9VQdItz@mnLl58^8LngW*G;GcMo z>*NM!;d?_j_%Pr`fQ^!)v;@?)=1ca1$z~}Ee$CX3{@MN)1#YE}YQn2HPR z_5#aTDZjv6WRh|arn{i${O~*$sAqXCuuL=-6_}(Vvt=x*hRbn&w?yeVFN8Cpqy>3k z6*n9e2;=XDqo>hgLDD8O7^eW(KoZ9|Vn&NxpLPf0htN94xEgeT<1B;-cL)dXTJX|_x(uvsm|Xba(Z2Y((! z-tv(*f05(D@O0+wZ*!)^X@odLbA>++YJdl@dp(6b0C#W;AEcGTEAc~}uzUQD2%qUr zoC3Q<#4E5AIAq$HdQu(Q%z0LuDLdEb$QzfPZ?$EQv!VuB^WlCI$%f(qJmZXZR6bRD zxs+=*Tih}BH#^2zO_If2CYh{eyQMw&Brng5W@$2)SnUOl)JY}gJO_kHfu*F>0j>t$ zO2u+4hS)Z?l!$B(GnweE~|i|f?Nyb7rjm!q%TvW3jaq8G$q_g{VlQ{JOu(B#M;GMP|w{7p&H^_DF3-XgFZC z*nxc9L0TkRbCDK>bC)lX55Odw$S+u<=c4h9fs2KscUTzKk|8iKo%LnC=^&m}KzNi6z_-PT_prIyKYGp}r%Gs;jL`U_Q@^T)Rt zzti+{g5~F>uY7&|*26!F1Bg1ce|-06!aSZkE#6IN)PCWCuWx^ZnHs|l( z6dc#6)yQK#y833`&)a1ma;V9bTjpOwb`1IBz{!e}KU=OJzH&1AkHPBtX`El=h%%YM zdSDudd2D&O$z~jDwGhQmYV{oP=x#Wow*vo(ck0&^7~=<4w{`2o6jp4sIHc}Ugc5cF z!cyO&z!L!vbAx9)aVg);fZfyT2RI1fPp3BTCLU@2!|vOM?g8Wu?tlJ3lY1o_PToGw z-~lIhd~jz=+5H>0Pcqp1i$cSdMMFREzjKbkUGL0TxT($2Cp+J{%;4G24~Y!PdgNHI zJJ%Wf)<>DN4E}iDFAtRkt@vrm9o2nGuXymJAetUFz zgRZl-+zDWC{LtI|u?Xd}O47{7d;4TmE|LpYf>dL~q=?vcf z$+70`Q%-$2=WZs0pZ%!qdxuvRK3#P;i@}vI=S~YQ+W5`(yCw$T_&VEXc>ac$KEGSU z;C9#ce*5&zv%g)r>tOJ!=ZF=i1&wEoDJg@K6B6W7|+_v{B89X>*cTCRx9Unb> zZ$5*EwA;RD{+x_wN8Ve);PlQp+lJf4pds`V?*vN0^&8xa6PT$+X;I|_q%|qI5{^ZuZeGJ|>W6II} zXCHnp;Qk>7Yr1smxKE#TF6{ns1|M5&FL*9EczxRalMMDf$j$!st+{ve?w@1urRM&N zO}g_trr*EJ;6slMw0a!cG5@*y*BRW|-0bY|ChvUu=KVViraFhTSaJBiOAzQ^K7R4y zed>Yem%H)9OOrNm+nen+zNq#MV5W8TpGDcynDC%8-oKi_IXk6W!q@B5X@V({<_E!K7}=)c&9H!=99Crg@} ze&N4v&lfScZ`qaSpL?lzbr0Ub;5miUwoaMk@oN@8mBD3APnEAam$|i!uVnC^50{Tx z{OG7h7xVKO+->x;)gKOyt=`BlVep$(OaIK;+VPnK{0attpI!Cb`zw2W`yIcA!ENU! zeiO52`OA0sjSS9Ox$Gs|^ZRc!7Pd0@@CQF;4&Hh4ok(E^gU=d*er@vGoyXFJeGGni zQr5BMhowXL!XXBq9vnF3w~>vP%@mF^I4Ppd(vxphon0=RWbm_ZexEh?)34UOEu3R; z*OXV*d^L6X?W4kF2J2JSypo8Wc+QbmCXeZtQZY{q zW^m}Kjbie-z@0CPof*8~e#)5e6=R>;CB`t=uxWv91Wc0PN_PnFK#di&2hvVE+rz+TEa(``O_HU{xTY#L7}KezdfsbFG($&Asx zG}&ykB7hPn8F8pTP~cbb&c+~h`s2Xd()_Rjdp1qU%0oIJ9A(xM&IET6<6k`{5>=1# zTyhUTuHxBc9QWPtYVP3kT@>8W=p!kA3S0!(J#B3CVQDMhzsGkPA1Lq@zE&*6quyF%y2Lg zEVaikERg(~oDHSA4<7if#O9i$ku~{IfC}EBx<>C{~3gv+C;kb230}rkm&jxsQhEq9R z7d*Rlb5&AKkvZQXNw$Kq;~Y7XJihdlFm26uBtetH{F5Y(y9ZoU0$+bU*96bDcoKis zj!99Raq&%w(+6QG?r>)uB`)Dr=u(MqL@UaxHyq`+D_l3Y?r;+QrbwOf$FsBNG-+B$ z2%e)OCe>R9sAMqqN5I(vaSPxm&k@kVL_|eIN5n+LM#M#65*(2j84(#785J2F850>B z85bEJnGl&66%iE~6%`d76%!R36&DpBl@OH}9T6QF9TgoN9TOcJ9Ty!Roe-TE6A=>` z6BQF36B82~6BiR7lMs^_8xb2B8xF zmk^g29}yoJ9~B=R9}^!N9~U1VpAesz5Rnj>5S0*}5R(v_5SI|2kdTm=h%6=|`9z>j zM6^VBxoS_D4|L2cwb{^EBNLS}lg@?OrF-2!3^*Ci0GEpTB-+Fx9JN2t=D+$W_)Z|v zHo%upsx{0d&2DM60K?FnT?rciI0&%KXhCa*Hp51Z6-qQoVR-oqwL3esB}_BqRH)2v zDD(DLpUZ{j)*^N7Mzt@6&`SrYY#d}NF$(DxauB$&p7X`S7f+%~13ZbR6dfOB zqLyT4Ie-q=nTHgFCw@}G*Go^iyWkuMOYKoad!#m7Cu}MD3DQEBpdWOQQko5KxGKbJ zi}2L0NbjJ)H1;5U45z`W1g{d*TCJedc?h1cU-wn%d4HjSx}kpn-$-a8H1lbxZl!C( z2lL}qg~IFN7GZ~QMEF!V?)|yP7s8jq*ZdjvcftkLMd26es_Lfjr+Az9Zr`PQ#()Jc zzPNJAyr-XC{l@l3w`jB;aoxHP{q5+ds(_|(@k58rSpVAV@5i2LF!%ANUR3$``Zwqh z8IzRSE3I$F0FycE?RQ$V)apFF0-D4nCart*#8)2i3m2`^dUolaU$9`YzcqX3FIPt9 zUcYmHaOU&N!@}E#40)ky)k|w$S+{BXj(r+0??$bX9!`B^?JI{qsnRxU9@Mt`!xt`J zx&PsQmGn^Cb|KLTNqzdJ4;(yX=OirDnomwp^;3tdJhdL$WT`zCCF8^-b#pDuvInNcNBcx;!*rfA+YRd1N!PJ) z^L8x*ns{U&ffS!+T2DXT~+tb`e_+ z<^7_3W-re#^{UwSM0%c2WrV)*g7vd{uX=Y@qPC+dOViG?muHB&;jGQ0%>7h}TK{BX ziKRDnm0xu9Sbbq;v>)F}q;8+njGLA;62Qv zS;gF$y~Q~_{2EmbY@^XseBMdjJ&-R66`QMsnaOSZlhpjoqaA1cQ1M5Hbd{${nC+jE z-mPL!R}HTkqHYl*%=GQ7GI`CbR>(`7&KE&Fv=tw>^{mvu7ErC$XaucBr}gmnZ0Xg^ySb0v*V|8}7aKHa z=+T&OqH4-F6Ps&W@GXTljU};@80rv zldB_!4WBoEVarp#e*MyK-w6wUIBRtF*~%xMTD17pE!*GwaQ{aKzdd*UKBr;~9iP;t zTUy`Il~3X0*6r`@KX~}ax$|5NyLTaeA7e6CE?WM=M~9F2_;*O^lA1PbRMwbmlljR- zuOiBaADupT{;H3EYMRMhQTfJ>4|ab3<<)Dm=geEP_Jf@t9ys##H+`19|H=NtN76C| z3>z^f`|+n1YoeZl(YQ(L zHobah3?TlWKI5$qkAHsh>b2i(_63g8XWNB^zw-J!I}aTB^7Qk`OP56~X!F_e!}l`= zj2xxa`RUt-|8m7*jqmnwkJN>W29GVR{^;nZC%(FH?>;AG2hBRInw6q!q0;!z+~`}e zLEXkIj#q`NVpLj@*J`x>o&)_FXoqM;RZC9~Q739~y`3m}tJI>GhWBlx&d|2d z4$}&nCf);8J;hLnCx4Bfcao}A+ia;=HNI^{wR+ZOvAJf}U2%lAu}4!6Vz}`dPfc^p z2yG{IFVD^@@P-)a)mhbC<0V#X#HaAc{$j-%U02ah?5a)BbyCl|@847x?jI@!`UUz` z%va4?+RUrbV@uTG>Mr24rXCd^1UbAbzG&{PuDGwRIPLxG3u3&-%&dTlZMuq&)t*he zh@P4RT`%l%b$GQFN2*46RLpML(zCHgx~k#{&4xAJO;nMqR5QPBhyAYVinaQgziWA^ zqXu7}R8@Q+wh;Y%{!)fJWqG#A=rBTzn_B9zIi2GM!qHQKv+z#+M?_>)bWChqd_tlz zHxCO1b?}-=g-#tpR_PRk-vNBoALPQ3cDGJ=(mCfAjFm^p9CsPvTO-^?^gZ}rkG|Pr z&9!26w5;yPlg-5JQdcRao|&H&6B8PiMgS@1z_V2nw@97Cjc!=QHE1HW@s@JhTjXJK7VXzSZKVcb0_?#25#ad-Le;&{)%_+X#!;y3sj6T_RXN{nb}?DJde zRq4qw#(`JIuX<#FHE_@iJ5~+iju;16# zRYXwfz;9Ylp%tG*(N#JG@f4c#f{=*5RV9GG`PPC6s{z1j1mFXN#^`ww8n|`5R`e8F z^IZ_v8!UhD+gGa05 zONAhQqNox)c#ZfCh=AN`38SFXcnW+(n@CjzU^O4&;SDPe1P~MO5fQ~Coggd|c^_U& z35vr0WRBk($caz#ITEKS5I7a@DG37w$Y15LMXILo zaef_8PERosIJJB?F&M^R-LZuz#si%WpDhw8K@|Q4Ueq;Wl;!!xysuVN@6}OZnh;e{ zR}_vHE+KCkJX;7ubmTLh=z*_h5tXXuJb2-E)I2zXUx@TnJj_xwtfn-A7zToKS`dUE z)EHR-mdP3<0Gfl_C@G#p?Z&9p^u}xaIEW&Se^~Vh{JAip2?rXe)HCcX-Bx~V_`ZLyZiskkcJ2hjRAjdvBd&`;034R;Lg7F-(;vL(KI z!_io_2V74$nyZnlpdYn;32qRxYCy|HdzZ}05+?K{&;HL35#JWR5`DoIciErdL zpoA^lG2e0UBl=^#m^4vT60Egy9IkU^^9;qZVF_TGvlJUkxHWhe@lJZH&3GpoIn#kn zfW@%`e(pFY8kskD6#it7AX`)@zRLA#W?d zcr;gZ=ht|^X>fhv20Ftj`j-DR4>jw?$b$P^ydqf74L~}c8hP#49S(%Q0^d{D{!TD` z|L^ld3L2;K6ZrIP^;~~EuYoQ!53M_Lu$zmR&YW6WHq&fkZXbfSkqs432ZgTRg5il@ z<=<6OVc{2?%pTkb`I)>xem=HWevZG%o)wj01`fZY4f5Et^2?>{Y5wFBdP><<0*S$k z6Z^!|bM=zu#ds#4UlFky&xNh`?f3%En0CJxdiUfi&cv7RHT2}FPRtn=GqEREoiVm} z_lBNaw?#SUhJV*HdH!3ITD{&VW#E;wUz}^+FJd-TAO1WOc|G-~`BjM{ zx_9Umyjl0yl_#@%HLR)xE^2Cw^Lf^j@!7{SVlTJ)(PmFO?s; z)nHuj76rq4Zfo*l?=7nucRY6Zv)--xuDCvTmbTB!S$nT_$m`bULbK-ae~z~GF;<<~ zH|h7aeafqw-uU8;lYP>s9T~CzihtURSv{}5Q`jqQe{|;Mmo-zZXrr(f4`N^bdVoJkod9-BS}kGtTK7G3}Xv-rKkL?QS_$RJ8SK-@_jT zJT~{c;C_ZX&Bp)OY-GPzyA3=WIdEaWhW*ct>~7lEZ&=O?*ZNPp)vtJ)%ChQYczVij zd(NHvF)zK*=HFV4Ikzmm#fp-bOIsaDUu4XmTVNCW|IX|W68hV2F8F?5uBCtP+ljvK z-CfFSpn4|wa{w1)H2(+Btm_+I|v^_c@2Kj;6-p%!ls7iqdQk$8t~lC zIcMKV4IDTly!|(Amkt@2ef#PoSMEG9u*C~;PdEB@*TCEq)y?M{{XTHY5cS*qsE&^m z583Pg-K3mHsyoIEZMJmDBa>ryZ#ccHKYuyKXPaF1glTiEM0a=?aj=uTI z;Ji0a&?c$ee=kW)lG9wUK#Z0kb|u!9oul>y&(@b>}2}5rw-#eo3heNw1Z5y#;#h*j-gBx!9eO1J;il3Xb zvmZ1KJ9F`cD}HyM8#aH-p5HrkKRWEn=xF=a{;J`HvE0HyW8&}+dvMna-n9;YuR}$` z*<&va?-*0H|Lf`#!($D7Ci&m?9kDwk^wLjRJx5%#-F&%i%%l;U7EJUDH@r6DP_y*~ z?_WGS;^C@*eV11^89AW3+3&B+>pwE8Rm816WwS<351ty|qR~4eUkn|k&i(rG$XR!W z_nf8+8ue0_@Fgpr7&>acXP0+-hRz?g^oMxnMs+;uo#Vqm0sQ&A|4~nVmlogS7 z_?fCGW7gDf4Da=s@l4jJK@EOte)?cmxxL?KB_DI6hYkEz)Bj$~=;CwF^f}XQ{OEnJ zjSk(IUp2b4`CAFYDvpnCU_7fSuJRbOVQT;26jkz=FTTkM9in!OIn?0YN$WMQj+rs+ zLgOKQPLFy0*@0oPPd3aRwc}j*tdc(2wo9X%zBGS&cKbJzuAFc3X7;sgkHXWZE@c1w z&c~_4K5vzCebCBzLth@0v!(squ#FjW(KbxVX&!-NWk(9T4&g+FwFDS{28oRvLq&L^(-AnE< zeCV04@>Y)P@JDQCy=niR-yA*TQ%sZIj2IMgk3ub1YyFdQP{9Bvf`{i`*p8SLt#{abR_Ko~UQ`G0DZSOqxc;AO!f9kq%?BlI2 zk9=dovtus>zjCd$@1d~`%XGtzJ;smwa>>EYx=XR+e3I_QA2b(^>yvUX_r*4=#*O^^ z{o8ZKem-tX-%XRp?)EHrJ!9j>Gux62M&^F`Wz!3ef@?{i_?(v37krUYHEv$!nF8;j z)jeJ-2pGShaPqNcm1*Pcnh|}Z^E1Zl*2IU#TzPZ6=aX|1_)8bZr(a$B={3L}Pw zTwhi;xbVHgsK^;Z9xGh0nQ`~q@gEd+G+D=dEc{j&+s!L(`rh_Mv%H_$J9_KrqE8Pb zJimS6;-dYx_9y=sbD$`G+s%a!33rPgvM)~>8W>f4X+V#UHoTf&{KNN)-)o$?qPXO6 zm)NJaep>9k=ZQUA0yUNew$SL->$_N<8++&UpuQ6oc zN8Clg8JN7m!Ig&W- z=#b_EOL{)GBIS})S(3SaZ=-e{-YxlYNz8Jq{Yr`dDQG>cv^#Tck6&N%_(ztdwhfVg zUYgSP6Ps7|RQr<|g8h?;qmD+LjkC|pw5i^IzQ}&maUkgJGpp>XLFF61AO3~?(Y3># zZF$AZ5m0^O)Pz!lqv>SFki(yqI$m7%=}$9zZ*b(@-xIaP`#VS1o%R{01~e-5dVS#O z<1h6s9b3HE%e=OtbeFCyD@agHkvknb*Ha>n>cbs_`HcnLdr^J-ww?bv&-5=y}u$L_vy0D(=YFR zE~&aK>%|K($!Yh>Ztc+rR{tC|Y1?m^9g04*^b3>5j_F$xJN2_k{Ee(b zJz8kXXGJ?^G(6k2JhEzCc)E|Ryj%6+E-M$VE$=_M%=19Z$?}qoPvqaJ@}E3^SZGBT zk6x3ln-X%Km^Wpzx#*#(aq(Lw&*&Z^DPp533lAdsTi&x>*DcPFIFCLx~JoU!hroDQ+GGgkVnMVpA*Daiy&~fkn z4W9d^9=LAbHq__V)SK59=5HJrKCR2r=DP|P=S}nM7PwhcwrpDZ{0>>wOAb%l{Ks>N zcUy|nSCn#(bv+k9U3{8b-|tlM^s}Rq`wm#YdivM4qbK1STB1A1Yh21c+F z*$U7M&L|bZ2)`bGi)76m5BuACJ~?NR^?hMeHD&f7O+*-ue#^jl5NLDGW z;fB&9vR4PEeZ+&rlIJdk=5nc+X6`U z9xb_J%O{g-vlKEG*4MBJA&PYh4~1z+ha#)R4C?@+iE7P`6>IBQGJprJaaggH2|^~l zMf5$-S`0Ja8c3Or+g&p|wseOzKUZYfJC}kdU<6!LP>i{_c~YJkrn1bq0!Xn|m}f02 zEw)IhwACY|GlE&nNiZsqy^|!^EJVudgeutS(;VCzPnySnoLJkgpC<50k_FpHI=cvk za0v)cx)_C)a=6-Iau9~*ippMq;o*AD2$*bqNGGDe-vSPFgU&bKj&9#?0PgGtlZ^oBOO*Jho$&u!8zw7yG~t%fdM*d)u0ndGcUIsvfN7mrf!93% z?+4t_?fVhHWE-M{{}?dYUn}tEfRo%{L6FOYs zCt#{CsPq2zCu`Oa@IUyW2>;*z6nd-`p+`V&>7Mp~=f^>*EMFVoj3wV5@Yg8*)%U-S z`G4gLwK3Aukqd<*{ZKkw9u!CrMme%hFe$0jQf4!jgmgf!Vu29O$$)&!aViiMyD0P} zv@?RXvM_VE60?nMK0*xiGX-W7x&aINICm*pNu~nGaEH}a4$}&w3###EgkTndBuhfA7Hmt)$6&x- zZpVH&>TB$XZG<^dvDs8mTI}|%$Z9R20I&gKiMYCn5OdhrFv(tCjP9UNqHrBxB7_l! zQYgX#<+sIDgx!MZ9kH)V-f@E=h!NX)uszG^P0Ddc0n(;Uyv#-&Az2GrtTp+vW3LM~ zbeRjO(n~G$#rC%gvL}=`n*4MhNC-0&R$< zc{Z!v9%?dAB-<%gIF#RJwosm7C5b%?<;)wyD7jRW4t<4Ym+ec!SMUx?*lHQ;syEWC z+iayJU=$Rgw4{XbOx>=T@Hs7Hip|BSR(VB`jpa%$d9)G3YQw%Zle|-BfSpWS3QFJfe+G$e?3!8#`j9{=B!K^K% zaaL=gY+GuSeUKtH6OAL5ItLsvz@g};?G6*$rX$;FA{_cJDM?;SnTv4Le=6`G^as?R zWx!ECP3@m_vLp{^EI}}>@w&s003HN47)}pIVKU){z|pcP{fGwCj}38=x+jKi)?!xv z46CCT*@X_QkqjwJF!Zbu41>%}F1UL@EcAg`7~AcgDew}lGD#@GC(Ax zS+FIRUhu)72m&Xb6v%-dOb!f$7%<2i=u%npA4W#CJ%~RkUW(G<)9kMI8c&2sC7bF& zsG0$2?7hHHa$9%3rK7zFBskdFBwZ;yLX9!iIhZ8xOsh4WOo|6NTVfA1#MGLGNFm54#n}vdQZqE$Q&>B+ zBW`~*ymZJKyE9W1ftsDc+3eEM>L>}cxinWx8&b2Tk!sCH_6OwmXKiW#t+EesZ%wX- zYA?-$w6W)x7J+|=zsSa%Z1w1!9F2DfCLKGCNoo8=yi4tf-pSEA5`Ckvw7!@CN8=u{ zsim;g255{-_{fjGQFy``07tw}<5cpaFw~w2FQq~66pr2r|GGFmw+-$ixNqPt!QF=Q zjfYJ$Tqs-@xPfq4aAV=7!YzWUf_n{aH{1odHVJwz0d4@?C^!?G1#UXrGjOlL?ST6T z?iAd4I1cUK7p^tQ0k|}{Ot|rIWpK0Ls612-q9xIW9MOs%0zUb@+nXHuG9h1 zgUYYaoA44XDIPh6zVw~&(|3wPFr`WKQo<@U#BvTx?;vEE{;yFZa_c@!mvuB_4}hJN{qpr&r>?=8UhvYXMUq@ZZy`%xunPtC);f zv2MiLnvC{@G+snP#9Ip741HRl8{85w@t^XY&JK9U4GsiMZT){Iuh{CF4WoqO=qPl< QT#iA{Gfb?>|W?7h!EXYZ4&Bq!uZ0<67>?TIEOZ84#gXS2>#fkF$~-2438kDnV- z5`~k8!z1Es*{uy)3F~%HY%rWN*Hg11)7z9DMFFyN{c<0WY;m%9K zoxvrM-SHb-5`@=X5?yy)a7ldKb=SFjenX!STrxni{sosb-HmQ*E@d!JAt_Yhx+QQ! zTcp)#QEk-RMF7ywPSp?!6q?kfPKwg3v`e7)bq1@!qO3cw6R^H6E2K)fQRTiZt3;22 zCE#6Cd0gdW)9Z#MP*tQt;SN=OozA5Adf)c9uRg!|I|q1%~xEz_^NGJzWVa*n>TFRy#1Q3liN33 zdgV1&Oa?W*8{R&7<+hEl+PvYK?fkm5)>Yd!U$yb_O&eadal1=tZoTqV8?Kprp zg%;)&{^rKXOE23ndD-SGf`(p<^uD-s+vbgvn}Y$pI=%PR#!DwJzw(L=F2{zAmpYJ| z%DKF6&P|)I+Ir=00s0k_+bA3iDr>iI)>mG0g|B_%)~&&iGOl>$j2m9F`SMp?HW{>( z|CGM@Y59unuiU)NVd3PydA3h(+_E`ntCCfHGi=>tFD=J8Iz5ZlN&F+Z1biK(8ZP8FZaof?U!x*g%_-G z-K~HuvUmMxU%PSZHR1&8g;8_C0G()?qdE< z_6fX-7c5$^cuQbGqs6BM z!D)*Yp1L4P7buC=7FqkJ#>yoDw{Dp%Q@<=uTaz_7_nFErs#eq6I6S zciJNBH*cT6(ohhbW*u1^tRm}zpIZP@C_&m8tGNvpf=fN|w=f8UFiz8-=by3#0bN@Z zEeIDa0>5;A(aLyHczUQlFaCvJJo5#rY9&2U9Uy=z7DR$80<%f7hU9R;N{R~)ix{ni zix$LSdSOU)`WJ$c1tAqXL`RE3Pp~*#yJQIyAph2$6$HQZOG|3?@T%~VOX_hLENDC@ z-Wg_7Q`13fXOLb0#Ru%VN7sP^@yU%>Z+`Wa+kPtwTAMZ_Og5Mh4gM+|L>_M2eCd_j zHU-DR_=?T134R<7Nm?MFFWtI1__q*V66xg$*GH{aZJzW`+k+dU<|Kmr)t4jNcSZB^ zdtd+SqS|kYac_zisSr$h)%FeBFTdi_%^S!W+#JEXYTIYOB^r3;mD^r@&DM>H(qcjMpqwF^HNUpqM+e<}K6^ukZXFaK8j?dXDE{m=Krk0B-wMjws78Q&Wnh&~v7 zKK{e#uIOXYC!)_q4@Z9<{YCWU=qu4zqyH7XD|&srJ3bV?J$`4rH-1O_uK4}&o$;SW ze-wW@zCV5-{%rii_@CpykAD#VDE?pZvG{2Gj|iZlr#?IMPw{sfakw+OuD5TK^Cluf;M-grJY7mmdEAYFsq$!6(kdBJ>@Ao_^$h>g5-|8mXWM>?r>dY zld&M^4A53{BCA6PVRKsR>bGgsdV>Uoq=dw z8jn96-pF(9WdKok1-Xz;O4t&t>A*0<+!-7XIx+Q<5T*kc8O%p#H_(pgXF8At$p>6} zFNkWLSYQR+!L*qUByZRSerSSRYod#}0L@Kl^PXL6h+(!!V;j5Ip0 zO{4K}ZG4r>&aXQ5*xNM@cc~@eKRc3Fq?gU20cwh`S{q;DOD%RelLM~zV-Zb^MHeQ& zr)N(DW8Hxl3uFPYa&5GdJ5Vu3Nr2^dY$Ew!-a#tpG5~q)S(qI%xIR?WXQ)cU7Y~Cr z>+Ry~k=+{dg?`8f()cddek=R>P18mUcdK~Nf{GgMRT>D@H7K&@^`J_Hg=MTJ7PmcKRaTR5cz3u_h*7_Vz3C8T$O{670$MwwEIiICly0NP}S{Ff2 zFj^YDoLU`L^Hx)q;qn#j%lTx zykB_l#>0Uq9{TslHlEX@;zg#2F3xWM65Vq|*BW88Bw!dAsOC%RW~((FhK-#XP>4jY z#hr2XnVl0^W)oVcmW7>qv@Tx9yn>yLd?H&7BzFh0*OBe%@apW_;rYxJFL4k59G-u5 zx1NRP($GNm8xvWiiUzW;2j>nm7f>HV2WUGdm{1yN{c0d$x@o12EWFwQ*Pni1*uW-X z#sD~LUKqY;ZX`jKLQ*Xa&kmYgOgg}pjwu<78a0v_wC017d(z;Ze_m0IGvmnECn|Bhc}E%5f?&4obCTOROaZ@(Xcux#t?z4LWnH~Yae#SPMj~-l{I@Y zA*R%y(bT*+2mv7tpC31+K4h^50v7tEm}$Y_%}$%h_FS*-{Jvo9gswYAq`(DbxY|s2 z8&^M)^(GTTDzI^723SjVnp{moIBg>NsH#$F6FIdPMzxHZz4#N;_N$Zf2rz*+XMONO z*uPFmtzw4yLRjLwBDFw(VOlg47zFTkkPV1a;_P(}=H)`T2_1Tq9rzGql8KYk2}Js* zATQ-@P9(b}266$kaw0FTw>OnFfrQjmIA+DNhpa*gF)EDuR5(Kf-QL@kaxSnjQ+J>^ z5r^rsxx5uFByWA6^p>u-xjZTg7Li3In2`uAr6Ls*CvoQ#siL16>_RYxtxv^aq3uJ| z;c|KmVnW(XgXCU42*0AjRY7~W@-W<`A|X7Gq@!g7NjJV|7)gK(Oe0Mn*~Lzh4V^z6 zwrd*Mi(EqUg5eNBcmhQSFHnui9}1E-ViwSbB`O5t$VBonrFUv=#epJAuC*KO3()>Ap{ke08nfWEjO=3r#dJcpuiEOtXOClqpuO5!tb=7Zp zfOKZ`9?n%RWd2Mz^A1R*5Z+wLben@n5F48$hg^SDJm-$I)_PUR9;iH#AH7KI8z!Gn z5gR+qf+nmUbVBgP!%$|I!KG&ho(s{*+t46gcFcWtK#o#-IKv4~jTf^{H>9%tH{B0I zEz9Yu4#Bi7TQ?}#V*nbeg1=Lt#cK!|j7 zt3m7Kr-GYwGhAU4k#&{69T~?6?|2>KXGE8C+eO2k+In~mh9SAiFd~2BkAiUG*00h( zx?x%ha>w&7tuyLU>doK)v7+M+oD1=YB$#6-(wg0gkUj){wU|x2%2^ZH9x~^B0!48;JMogtnYJM!aBWS(aIvKC)?I28Oes*iwYbKBdOAt;Oh?vaYIyF@j)51)p0D>6l_AHFFK2_1Me>!;Zm;j`I^Zls3c9O>XjEK;7ohF;8L*00w_JAKe5YfczVCX!E!QYCD~6tiea z7KCIe9hY?K>StbrQYPLoTcK+%2T85mC@{&5t(QEas+Dmh`7679doQiTUcQ)hH5C>{ zax5(!8z_xY+SW!R);yG%$^no}tE#RUjAV#L3QJLM9ZcvG4hZUzC^bzTkHLtn+)=Oh zQ(G<>S}0tF;FG#uLPiag!Yw3&PHOg)oGPj|mNI&lYLTvCFrVozsk=DUw~bg?DfFe% z!m#|lA;pUkEPN$#_A3+FUh~!TxJt~&;ihh+eivhb9wcux;g8Obj&I&1YMl-y@;R{e zfnFTf{fj!7!Ix9uxGo%zQcK-%jP=1(EhA%DiES*NIv&mB0mFC$Dr44P5hVr2RiZz} zkyjK(I_YO5$9TQOIO4M~%$X~zVA8SAt3?%U%1Te`C}G`37E4*dRdseCzbAvrQ}(oU z|Ew{YJ8!8#E=;>6hm`K)UyOgb{0$&KGf}vVde{xh6cd?FXTy%xXzlvFn;x#St; z2&y0}YWEw>igjE%lPFy{<$S2ra5b{FG`}8n#wbEgg=Mcc}{omVQt_ z(eOw%=kdwpz$DVN-9j4z%OlyrPfvs8Hm#4!kpbTHSlcaW;1pQGf>E@*hl0R3E zTCLL!Nu+i|Lr(Ht8&-R$C112m5X>tOZT7xnZy< z==4?<+HcXPS{H>kSO5`B1pyg(B1vF~3Y-f{xbpK$>-&=9s?f3|KfaN2kV*Dhly_5k zvg@vfi85MvOg=FTmoS;y<#S1_izV|vjiB(7?YP?YJrzr=^ttxpVW>=c2A%0NK##p*5}^Y8fVi5$K|`d* z(^#}O&S}kBqx+MtGYHVmS>bI)Sx`bq0b5)VT;`MU%|RF)w3}fC2Xi{qHnWPKK}KF?F=Jl9JsL ziCTES$8J17>;34~iR4d3jDj&00tSG}v@`TfO;Hc&EeL~xateoC$VdXNFMw*b3N#$q zQ$YjZiB1KFtEH&JNWKX|oC6`B<60*NsJ4%5;B91$I+DLLLTHl&OPFHe<gEfQ-9i(^wqQm5G^+Jm%$v3U($A{`Q;IXE*3gsG$0(;t3bhLH z5h4pn&?=th9}AiIjEop?u3GI;cIHI4K^C{L*l-=8+(W^{3mD}nd(dtYVz}>xsGj+JoGRqOFq+MvcxU zuU8-2P4U(032@ob-Kbu5+T0~}H=Gyi%;U}qcII=JT8ShLxgXR0+ITe&$=Y~~rsk#d z({?(X4yCPRw>2}M%FimAaSf^&*Pxnl4XPP~)0%M&CZxFrnZUWPG`PSuI6qBjZXOM` zY4T=kvY{qf7Pg+LSW?2-a>a&{H&|B2(!T}?$~rnbE2+Ksd!rSVraALfURiRBWx?gjSE_6jLD z`_)_Ys+A7P;^+)|xsr%MrTdv^z{MEyD8opVyUsw?V-P$% zouD#*KrbZO#mt0X=`t!&fas%7&N;xEe}kvy1n~tC#U6XNpxKuTgAw?NVhIrkp|Mih zaN~9s9KkCHE^B5_TA>@vTQ=wgXLQealy;$$zy<#@Em0^jh3V$=1XdM@A zA1TLL!a{%_%>r$!3W*k^zB81a5qn<$C6+6WJ^#2L(^vnr28RWZZPGwV=i% zb8RVktg(561GO+3sMX>cG-MM(9rv-_skI*c#LNt&DmoNe-1b}U$I~U0UW2h@mZFFjCW6~>?VByS(efhnE*gT_sCK36zH z>k@i@I=QHJb;ac*?Osd$FeFR;*)Cs-dddYF))F#^YW*KQ5XW9B!eml&WO?GmYW8?xNGtT(^Lt9y zd}&*+x7Z0mUh}1?6GVMM;H3a8-+m>i=3`MmM@}x!fOpEGf+9K5`;1MX8z1vMJ0KTVau`b+HBzJ z?5I_o)u_i75}@ULrOu3M?28||o|-WsqLfe)ff=L7s{#g0FRlRLngG;kSHG-JibmiO zt=({^nLNjT7O=EXkaXz|B8z-KR2(KBH8CpvSITNTx$$}pKv_pCVK~a6p~{cRr1xx6 zsngFs(lPQsBUA63j&q~26K8>;C6#$6%I{)rf+@4U&9G8~$uZ%_Og{lz`bh<)e6WHT zn(+Z!aHp;KadA-~E>xo0k&jkPY8DnEM~ykGx*ELBu^_lCs3pGIO`D95=m^*w{5PAl zrm0J&0QRyx36V)$>%GUt@dI(AS8y99cj`m_hz93RT#w=ZF-e^W+GLlR zTpfZcl7A7|$RmYD!Dtyri87cNXD z-Fkw^{DXWV_$eV%3lR)TA4Ou%x-}>oLVy&RW>EL`ki#?>6Qyx^t zWP-edC~G3h|K~_il1bQe6l>ZW3&aS3Qhxo1U}8?DwEq9^V9I|Bdo(|etcJ^h(qzz- z?Uo0nYB0U134+7}q@uafk+wy;EivRXlFw^tl2DqZYMP*(Xwei{(R@cutWue%Qh+Z2 zz$qxf3uMIEUU-#0y#v!{!)MF_e@~{I^>vZ@>y0t&#GsTr3dsu&fR78=DvKE)ek%5 zM76aus)tN9v=5fm-|`b6r%m-5Pzynhq!p>shssKQG;%r@Z4gu0r-CCVUcpe`3Z6Xi z3h=b|f#8`{n-W6oz9MyceIUlO<`*EKuL3Sf|a9^t_ACPCObTrrGM zlEcDQaEnG!DTb|PZx}~~VH`1YIFsM0(wH#-&_ViY!tr(w8?J)VHkJyn3B+&e18TH4 z0War__l0RmJ*DT%xG+=U$Ce>9LLa3=e?rO_ZG?r zA5!JjrupX-62=-u9<^@qVb!ShINv3-ZcQSfcbH(B7 zV)UgCmP-UtYXRW0@|J}d6`wMYe?kOKJE;C02wds3?lAeJ2Eam%Kxy(8jj}};fGeOC z=4!2PR}foTb&QC)lZsGF6rHFDy4S6RJ93?8dxidiph{x}NRvHkYDttXsvVJXMq?Hf zC|06k(GB$M6s0oidlZ1O(A&Jcl>f~~yF#0fy&knAi<5V#cEY~HG_Z-r9AsKVGCj)o zjf)AP!mgVGDYuqLk+;z!<*ACNv5FL+sbEAsR3BFbxT5o0vw=xsHzr}A1zx0jR?Dgs zVeqc_AQ-|rH=T(a7{f*4`}h^I4q;J$+X7eP>`6jPVM7-M3|_u7123^q*k%?fvwYXG z)C$x^NSUy$c|yX%1|Xzid^U&Q2$GYJ2rHC7sB1AEHa1!tDl6_YCfaV}Jf{*|ZcH3% zH6|KTYF4baVDJypI1Aa+nq#QmS`Jl(em_*NHP|MOotf`iIvNy;FtrjG0K5f7x-k>l z+4$>Yr^cd-T?CC1*LNEP$)s^7v=NONTo**okqhQEW1ZeIX#Gf@U9e3MXvaKlY}7EH zv1$xcgnn*1M(Su(|2MJg^BHgk^;jR(oCyEF*GOG>6n zQYe@%p6Cu`#MdLuv;w*!9vu%}mJZ;%=^~d`#L13sD{Zdd#*P*FW(+)~D6ZKp%` z>>y)%eU~MEdl*bx>sfVe|JS83EGvAjV-nXraP~HiXeV@`3Y%+7a0m+RD|amouD@po z@e&FF>Jo2+qKAi6763DsVad9VAIhUt6v2!0(n!_^n*a-q#SNa!`uB^1{taY!NgLlF@jEaH4M_4JMNwHL5$Bry*boV-%4E24E;5Lbre zV~#_5$6BtXd?O>-*pu$mfVn99Z3SgJR5;1}KvYh7M|x=5gh_>@MYrDTh5Xf!Rrjd( z2;cxnty9&gY*UtK`YeZRb?wXa`Su&8HI<7734RrpK{j~RxV+q5UgR$47_v2QUTk-q z0&qxuGLmM~n6(I=d$G8BZJesoTmcCSS}?2GdF~{kkQ@G$sNzVDPL}1%o$a)8x8UvF z*gl6Sd3#@kU*C!w#5xrV8>K-_tJ)=972qOC!j;9!tAe_9w4VUiq$rP}$w5OV(ob^G z?N%(s5t|dTzcC3P(%KoKNqXZXv0D&<^F}4H7^9&rviE;Me-SB z21*h6x$w4OY%}86g7T%Z7*WHuP6)bN-H6s9m83(@>~{{cyQ=%khXaR>=bB_gub2Tw z+#YHvyE6YwH_q5Pf`i+(V#F+W*k&}^;&g*q1rZc3gXSaK_+tGlfl{4`bPVu30;Xg_ zt_l`NMsr>0oisKZyGvWObB1V`dzK zg&>jTuAdr#WWVUucTiYF+fk2W)}WZ@<6#Dk+z`#Z*NbT0sO-FR6Z{xRkx?o#bP)GZ zHDYBBtCg4zKqYvk@(s$n9Z5>7)Qr7?cpv5(32uY(J!;lbg$HsThcpF}E*hEvDQZnS z-GpEur3|G_PC8-6%z9e(;7f`&i^DPGZ8HRGp`oSWOk3v;6MU4mU<08n`IM=b)!=5)I-R;oZR)D170BFzqJ)OV$w!BYu7)j8Tadyo-z=o>yb0Cyh#& z?fw8BplmEVIt4WsG3$P?wKY%!ryY(`#+jxh7YPMHa)r**AOgZ=;taG%7`BF}o*6(A z4tVJuRPXTQ0_tT8YL1W^;0H9Uq6GfWQ4-qps~+cdahSl2{&2*G^(QL&Gi8F`$KZo8 z>&)TYtS%Q|X#I;bW+TY}+cD{OQyXQo+&%k+TCMR8&hG&GV35u!Y8C6_|LLD3yQ@O?D z&^u(?|L>Nd3|impb>&7m#)ViS92~-HThb6@11xH}_A}Xuaq-OX2ZUYLwD5~>f^xp14M)9k2jiNjSeMWJH=g|x{^}WY#B(?7-4jq3K<%K^^O*V=$gf%hF8bnNq zowRaHw-VgN`oZymHI=voUI=lOBMnZLMJ{n`KVB0 z9_8`)rA#J~^X4Hc4oabS($n%1NSvb&|Fd#aZgy@Gdy%T$Bs0@2w1#}nt*P#s$!ht; zEoc~i-Ka2Hl^Xgbg_&dU<^Kpqa-8nmdH>F74tT)<71nI;ja%31Cm^4ZkpxsBAWx8y zsvUXOj8rXLGLpHpoq)_I;zB|?H>i`4`8wcC&a!UI;4G!}aMoYUF{*v%ydZZ{YHyBd zE{Yu&eU`pb&XrVPtOlY9L?u&3$Di|_p(e>jhLp99enW~F=$Z434Oq9ggBT7;A9 zT+g8X|E%gns+okd71D~NIR3cyne+Oysx5~6N3-g_u$%;|8%Eq|5FJe`7(S2b_y=5{ zKog38r4W4XvJi#5W#!upF_ zy?e5HEIn~!cDHT#R7l4BiR```rUBq#g=ys58kmRyTWgsFnwa&&{#eb09d)8;C}_Q; z^g4irFgHK5NAHnaD&Gc$4Xz_A71-mBf}xtKwOZ`QL2&#)lW^-jainefr}IEPrIz6& zn3rQ%0*cHp&onpFK#suv2b<#xL%r3(=2|^P22`^iaB6{UX|qg0tu`;{9?tfgb_m1i zbH@2-x1p2G?G*F0VG9CC$htfe9*q`oYM}z&$D1}-q%w(&%&uzz9ji92+u6^d7xy?U z#T+_#HIIdgbilbe=TU#y-0O}vryaR687{ScQyOx-xzp`zQ%gUHsl;HD*fUUYO_t|w z)6FN0D0+_F24{tVwkn9$$-^MO41|m8&!10CeI)xctm%`wP#xY63e9epUSOv#k;m`$ zKzV%gF5bRahb7fGN{1%kqYFHz#EJJ~s0nTTXkAkhA4{9wXTo&%L> zUL3ic_l)kCE;xv^#A4h2?tN?;dXwvf_1FBYTfHG(+V6HbK3uGa{D*`fdHq9JN0rx{ z2^IV1kt)Ta&PZz>#mHFN0Iv@kJ%7X{6} z!9}q_1f|yuw|aJBgvB8EY8`goG1gbbL1rJ*DV4Zdt|ZQxWTA)rxw9n|wvuYgegg zD*ENHPfgOgyfGt?dY4ChO+@ZgYYO^SB>N<MDjIpcC=304mgp>3^Wc=N7UjCHq3C0h@5MA#qJxnn z^|hsc$8 zZx$~*UZjO8IN5l@pv=Bckju<43-z`7Cm+>l*G@iSW>eS&bF;!O%mXN(6m~Ha8qr8a zQ)9iYT;k^i3$){QUcOB@L|94BdxXB_Wc{vj@QR&U!Lmjsq7ZFWqcQYaGtfGs z9yGGP%J(@b;KpS|d{(zL9{m>^$<|%|ob@d1TOEek5V})`b$qO?PFv>Kx(-M7+yy9z z1|VD4L73M_@rO$=(>VjwLJBN$H=TE`R$|k63Mud*6dYqi9H3Y^N{8(`Ea^Op_)0l- zhc5dMzDUnION^j#pQrG}S~}>XDdqtKu`#3$qIS8{OtrIOEV>Np&=iw4oQ>#2SaG(G zBp2F)KljJMz^a+z8)%O85$84_4EtYA)eZfDH`MHRgmb>I&H20-m^?m@pV;f zTLh{}KdU)yIPVzAB0bKDdFF@?`qVd~BMmgX(v3}<4@{dETb5Cbduui6F?=eZVsLm} z#tmQPylCYRWgE7)2b@kk$?~}5QaM?ds8NPZxcR3 zdqxwKlah6h>>Ib8G+t*II9{W!SA;6)XnNl;T;m$H)u#IRJO1F?59$AN_)G%Gs3hp) zP>rl%MRR3=($@=YVKf2b+&n)XWyjh$ww#1RF6!#zL)UfDBMsmk-FiB}2Ps;`dFl@; zB&CRwuJP2EYqfeWWjq{IJ>DxdWmE!Jg&IQ-?7Omv#$H`UW1soc ziN;>t37L_r?vElGdjZBISQ$XDxe)A>sO<5fBL14$#DcAxJ;Bx>@@2$$%!;hG?`RQO z%~5b55~p2Db!VZDIMl>csVXl#z!0QOf};l*#xgiM*B=J(ut@+>g}4yqf%rh#$EoA= z8Bw|ylA5~jagp^rSK>@}S&0Iwq`CpW%qasV5Ta zjH2Rn$)4a`D(@4V`-w_OL+P@hEdc4G0Y1Bh5qj?>h>NwADlz23xk8#?tHYr;8gXj^ zrn&xcZ?I#|Dhm5?gCb<4A>&uk;vwK9i@arCEb<8moA*i4w4{k?l+zFj{{%7!_X(-+ z7A-md1lEd4J}wA-bah+P*XZYpdh7Y*fTAS~qseZN9oR)*q>7Vxdw%b?PW?u?!e8+@ zDb7PWJrQBLG?VW+L@4~j?FSRQGClp2UU5Lht?z_UulSF=1))i-vPDK%4yO)&_a1d%i>0lPZMHXD0)-dj3hLndnLn0|sd?=VgBvl36T-%0hpMeUy zEh<&Ve-ENBDea*i63vhPh$L0o0QZ#6a?`{al}CRd^otG9xbpl4XmaG^$l*#4EQ;qL zG6(Y@3~g=;Ju)>eM1Eg8}70VsDt5?zf3Fb^s?sG*@(iv|JoG$dumKCQyuoh=S1gjkNw z!E`XKy`)dcqiZ*wG+!>v-{b>pIg!^W9E9|Skq;~)1ve!ln7bzYg%`MdbXp{j5hLb|IDOkpph zw1|COKB+OP)aNI&n7E=@0I{M<2eVs@ai5UPM}=#XZ=a<+BzFxdkgHG0^QhE)z3fiP zLp>=cm*&!A$=Hn+Fx%94`=qw;3_3A$XbPKn1 z7Nt?gzCKZMAq1u@^U~p^uHv+=;aaSsr1Jm#rFwS~3RcIQARcVy+k+Pk4?&!W2)0yQgohPj06=7T(CCQf8VtXxN(amO>RZIKsuH0Lm21Xaf=~g{ zC5V)?X8LeQTt3Lq7h|9J5VJ}0McEX_mCS5sYA)xxnreG3C!LAx%RN<=6MmI{rRJ#f zhlkv=^i8~odNBqP_T8*@K4P{DNz1e5xpa`bbVU%1@BjR#zWLP;zw6`a%Sc3Ca0*&F za6XvTy`f(l^sQ;Cx_cJL%RI=Vvp~j8b^b7mhEg=t;~G`oZ54dU!6J_hU|?Y~rzhVM zmq?#KONHd}k}c45WpzOBeSOMWC)<6>GJ(_N5=|UYX9+?5hT>g?g_@#|E@EFt^YQ4~_BReas*A%p58az5)QG}^QKa6|(`17d?yi;= zY9JZeZBmG8@VQXqWI(!vZm^Tg9XiSks=Yj1SSV2M(j|$V=%Y{jl8(@udM)qR1|$7s zi8}P-kLzc!o|IUgnryu8oDIcsrfSRA9D9)yEy8ClAVvW3lDp>TfV^Vb(gvOV?VF-Rk zgQ8Irsa|-&jBmjgWcfD>JRzAIQjBRXR^pWjnfr@cq zGPKU`p|zSvDs&-Y)!H8+2zej@HYG#z1yLgd1{P!)yeaY$pc1{w5CV@F(*Mouf6?PE4qNy<38u3W>^Y;P-RAYMU73FlvZTJ9=#N2u4e0oR(KZfFQXLiywB zM^%TKv8Lzt)AJdq<;8iLD#=T-T4#zqb~tACSU3w`JKT4_W?SJoXkAsc=u0`_h9p{- zM)wdXG5*`hyKPwbx&gzI))*380U8nrOf4B<10p%!VY8%zIC-ZYs&b&UCZJX(Py7Sf zm)-y*tYTL~_F>mjEdxU(C}JtvaSA&Ly+P_UcC=&&z`PEO z9xj0-IV_4~u3!k+*zg6TcIZzJpSK6g=PA4DF95kSyRv2mU5{UvyypZcTi^U3tKqP9 zWL`tzJu8G!j z2d!TWX&#J3pg8lAyZTpkkcddrrdCAv>HrFA;N%P`cGTvTrHh%PNy?_*B{I81omRec zq|}-J{VbF^^lH;Ht65!a5f!b7SFbgA_~c6!9#yk9?l!dNdPTG^?wF~^EwD7D#9I$$ z#U4@LK{9AftnSyuWWup4Fd|S%EzoanJkJOKDqkDjuE;Z1drbiTT)*Z>O@5*?vGBbg+gIiSa;;s~Stv0`rUP`5wS|4Ul=$mv& z1w~_^NF$xr=JAmsc`T0uiyJh{z!0c=UE7lFKK$+gmi^*h4UIEsQ%6s`(XQ!B^&%Yt z5h5BEu=nW-LiP$mc)o^YpjBzK7bY~$cT(o6#CWg(($yr+@e2US|H z7IP(Uav&!iwKGPmxl3{dE#a?FpN$MyaTZU^dsplMkY)jZ^T-J2 zNl!3GjbO;|!f2No0rfYr_(J&EQ@tegCD)FqTnnqNcjAv}h7Kh} znIyxwAMLWA3_%95#)pM;R<0k>bJf6gvi5f8IN;e?b3C*{Wcw-H=AzxRRd&Ug|=5Xti4<^$7Gweu{e9g27F=J<3pkKm`anc3Mc_?TcZXzU?y)=y5{d0$mm=; ziv-&hMMAiFIQB*ZKB4dhFt4h!uZQs(=Sm*f;20^mXP1O~1yMW*?w4o#UO&xP{0#5Z z!AEb<(}POOBY5vp0Btd|mahJpQ|SL|0%+6ScQNf+AZ>TRnHXGNCKti~w7j15iDbR1rRZyipM@V>=uS6-Br1)lmLw zklC$o^1y5u=u%@sE~L-w{8dhsuvuwH30h^)A06Be4D*7h@()WZ9m+1bI@^zz$f6C0 zviDL!gtw3)16o7X0wl{D@*!P!b#{f0CmE8X%1%PCJM&v0hpWw5gL`PO9tJ@mRv%Dc zy{%?)qM54r^}GtgPVB{M21gV9Q1%vJuu!WwV}dYT$s<2#C(~6rDg+LKHI1g6qtab+ zG+a1bcO!KK%+jA?*ffN$n5$c#psNLROyvkL3pGGynGeo3 zu0fpm_dIoJD4@Sk_OHfU5#0d6=xcPHEr+$KikJw|T5?myPMO3pogs+*DU%-ydzN>j z<)S;ykM6)xtknEZk`om%(768Z{}RWKLIiGH2_W*2J7^8oE>0uSRwS=1z@rRz8b@6hg-(LOYB8r}5G&V&rEJSmL;3_1ESG_%ivrss zx4t_9-1t(4YDO9G85Ur!B3M}`&K$^ID|;@@(Hs5bi|gFB4I0w@ca9#f$2!!oa4h1Z z2#djG#;>@hO!wB&uILTGFU1snE%4t7;|8ll4cf^iznfbpIbB4Eyj4N!99Gnjb|Zx^ zVMM#>#8rkV=F0z*@UF5aQVL7Zda5(@dLbxE!(TmZzEofBpl#c0YH?I}X?tO@D$SUe zMLwfLMaA^Dr((^GKrK|;hsrIWys^XJ=N*w8Oa){I^c1Wh#mrb2o?tpgM)Um2Il{+HDB3L_jC4VlW z)2E>$ud-2ewb$)h=gjbsAW88y;r!SqQtLWbQ-;^g+)Yv80c5nI*8ka8{E6+cm2=-M zvO#AebFs)jJDx%^8VOJhbA;Oq=jgj|HJ0+J=g46#i-CybD`uq0vyE6 z>+!v!tK=nR`P5&^;hlV2*S%%k{$!6s(%kRfSG;)%Sns zKi$!-CASzv!T8R6u*L!3BSc7umhz|%-qOW$H+36J&3Uctj5B$8uQaHkB+nmkMvl!6 z)fn9RavKciUq<{vqkkzHHEOGCuL`&p4>Yt)9_s+uf%U8$Yu2P{*P6Yn?MMd+V`P$~wIkh^$V9LnM!=UKkn@c2y}W1SzrBMeYXj6zqU@@UyBCeq1FXm0*+;Z0_8y zbqYAJ@ty8{)BU2Q+zXr?u;<13^Q}ERsWVY)zQ;9Ni_s)%QcNc0tv3Q8W<4LvOZf;l;9eyj8kMoWc!}Tb76-J z8Y23sF?T}*;T9tT2NOr(hXV;%j5_7Onj4#XHWhlhO>0o@8{Z(x?c|jD&2t)c9QH%( za%%0Y=UVQ=wJqJiQEc+pVju=}cgPpvb0!sCo#>xXlMV_h8%toDEoxY`@kj<2du?NGQp%$%Dl7c)>7P3glr zR@x$AvtxJ*|6Jp2r$pums{zQfMwl?3-HC@|fU8D3M;wmxV-Ye#Thp{I+KAR+;u_j~ z&Vnuu7j*FjM;9!v_8lJ`QR{d>!~7?r3_C73Kb8@j8l^!5!pGv~sDbTgE}I|I0$|9m z3YhS{Dma#Zx9%xL6;qb9ACWewn|}!rDpj6zBnDLMz!ffaSfrrg5W+d2(J7xZ(RR0r z6wna4V%tIU@zeEKn6WEV(P%tOMKt(UBZpS3j|N z@yQHT{F&qal-<8mB734;M3|0HGoogko0e0O=jaf}j-pIw?=g55I(Tr6E8fO+bgux> zehwW$TEP7#r5c7sF6kh*+L4&r5es=`Wu~64-CpUM^@py({}|0ePDjzHZD%+e7;%S~ zY&<&(RssV9Y6X_c8@aiF#GueIsbkSYF#xfu@?D9@Y(*~0_3F-;b0inH3dQzx2v{O&Y_WjbN-R+O@#MuZlK**bH4>aet05Y{2y(ZrlI4%!JCssS(i`IiUWuU~Y z?g_Ns?zy9%^X?&Oty?T3ShrXU`l)n_Z8#!ax+Of6-E!lCT5^&VB7CcQe#*B-4;1JEqSSRJh{t%X&CZXa8e`G%rB)(VS}4sJoh#y_Xu#xq9A%DA ziNns?XNaUiA0f*E{x9VJBGF*Xf1^c?&K8Nc+_AtI^%xtB2xhCS7_S4arD`CQBU7JDo^y&#)NLe3gd7L30ZlGH&t%i6G{!*W=caoSJun|H2q6>8=X8Y=I}C&3 zws4zG^vWJ95ZNd~scmLkuq`Ij%gD7VsMQvTmja_EYU!*-4x2wD=!E2AQOr3c~zE5!vT zs8SEsDjTqPUf(gEx)`ND-+)D+1tzXrlY}JCpkKet$hTQI~Ls@cR4_U9@_%$5Tx7AZizHj z?K8sLV!{vjnr)N40J1`vvBmF9fZFGPIMAndj7I6aSYB~U%y}JXQ<7tVapxTPC|ZZ# zXfeoaWQr&nIDe_%VH4|lOBydFN+~#(SHXEpHC?&|5m1xe%|J1TLbadbm=5&>34(Z+ ziVY5(+A%%gg8B2#nC3q@c8nkRk8*r>?euXwe5I0I> z-v3*1rA=D`&*vEx5Xm?7O4M-7(WwXyEG!X#roBSHLzKAJ!Q4n5Qvv4RLaL3@FNU2D zFUQ&Kkt)@IEwNO6j+sp?#y;jfQT6i?w$KZBbWFuut}Rv872H<8OpoYcEV49J=CB?I zRs_gouss0JOIVl#g84?-l5bfr;%qOn0hYiCp`QzrZ@b=Q(?}iiCf~7V(W=X~PT5|R zJZ{N!!?i8ZCL}y39re9&vYsS%rFe31N%W9U;a0dR2M4cU-5ojK(0#drl%9-W_Y<>`A5jG++e3Z2OY>Tu60fW zao9O1tXhujhRK(WvWcB$ktAio54k0Lb~@>hE_HSCwVkfR*=60+EzsBzZMj%?8eT<4 zRNoRZY5r(V*zSOwbYXh>j_&E{LPCz&lvu~HPHU&7i`J+7ymaYs6s=(7JrpZq-RMX z?#zVSC2?cY)H&U`$6E4)>~%* zO4XPXg;GqET~;WA@V4*V{CNcA0iHArX3cUnesX43iPxhZud0`&&PMW&EKz2c>P$JN!m6;V&aqJA5zG{|CX&GQ1}Gvs`Mit+N&mz6Go4pr6)PX;$+3Ld2$8dc zeQJr$YvwR{_TjhQKNVymOl*MUpKL5xQuA*=VQ*!iFrvv1X1u-mGmuw?kIMQtv+UdL ztw035)v_3fEUwbTD!@q&3u?b}#kn&mp&7VfNph~B--LR*L*j)I<`?US7IwxADN_1! zXKJ7+jA~Th6St{@YqO(rXD8oxI8pA~O$3GLxU>9SphL6PdZW?Glh5z-PfC)Kq4ZN zU7e?xWXPQaw3YnOm6ddHMk1{+SGc3exSxxn*y<>^WVBB8yEO@b^3{W+^k9ql^~C`VSi(<6M4As)_t$e)bzS4T}?zpENi9YQLiChfPHkg&;*g`Dfqd zy~vP1vwM4!Q$e3DB}X*+qIH$Akag}Ku1&Z_Th@7V4dCdTD%t|>vHzv|i|rP3YXWr3 z>OSbOMpG4c?bjUbssCX5cI)8JP(ak+oHTCv);no#iOL;}M63r6NTEId!%rC<)0x_t zf=dPzY?JKQYPl8{^zsS4l*1+4xyC)DEOO2)Mo3YhaH%JiTYeaY!XfZXz>?l3;oeX4 z&LXPH^KTTs$|5E&lHa|7Ryo<&TDJ!C`cgcV4w$}>%9X4I+M{Y4n8n)$HEouWBUJs; z8T%JQhYmI*A(^q(birD99I!4H&wq)mnAOJ{{IH>_Ert+!ii9Cf!%hn(ak68nbTlpdog#9v%(+(};))_$k~s%HlJ^mBV%Q`Hb-A z=+@M+SYI%lI;iQHWNr`H>ECgNhi(?!tXxy(;Ai;6*wb&hZ|AQK59;%TZs?Ln+<+M} z4Q(3VnLTfNPu@ZY<{p-EwaxGsC#mQ78uH=3SLJ!q{92k~|u@7qZZ5OKkWRtj@5tZilfo2-Ty zd|(`<1QL*R?hA^za!%3_3y3zwb?0G1PzXYlFFA58L_U$fFDv){GyC~=kkh~8@z!Tea~5w^0n zeGSOp74gM8(vVkWiSZZi#@QcoA>t{zX%|aC(h|oP?Iv;6O}oZFb;k|wfAfcGQyqF> zakrY?Xb-d;Ir#DSeth2#D_zx6VX%W{zeTU`@T1@Tm2?sj?=4Jr5fgY?+jX&_lRS`5 zwi-FJbt1W0$U2!q2;EzNmF9t=CK!n7&Y|c+wsW-1o8z=hO}-8{mfxmvwY;-zISua0 zR&P5y*bKWMqoOSIZYzzUI>gHN&*F_uKCLcEHf2NwdXi~ajJ$Y=SbFnu)@U%C-2C{dXd;NpC-LQ#gUlU0Jn&NvzkuBfD_!8IrLzU|9wIS zb|7>@cIct>vCfmZqlziz9_#MdMubnn6}IUKHVIl6_i$t2`(s*V6KAR8GFn2BZ7LF1 z@(oqhVCL#qmveoNV@Fm723N}#t#VeB;M4xntd;GqdIo>NGP}=hL}@^V_EztW#SrN0 z@_wfJ_a49g(PygvxClA?6Ch-3Slda*a6D^0Rb*jteA+h&N1&nVYsLt+Mp~1s)3R!$ zgH8fShXsZ`G4#SvVWE=aBHV&HFS2$%PC`>z&6Lx?+HgJ^605Ai>Y+pSY(a_MoYoqA zPKm7RK$ngZ2guWb{tQy2pZx4v|ElYvopq_ENI>JtRK}H)!M1RdylI!1m*Ms4CU{vq z@QywpOal~klyGvV_;2@tivjC9MNB&vz`$qSrFYg{9l<9Ty1}Ks&iQo}$Pg}d#3pUe zj-PUg`R#Jvqt@fF8Pi?yb(JHJPfyVs-XUT8e_iEOOoHMz<2a1%%pZ)(x+W8nd=Zb! za5^~)!R7m<8Tbhah)5};I^Y7cfgB@hyn5!OKM8wg+sN}`#Mk4YpTZNvT&{&v_T)Vb zn_F~W`*X5^`Kt#**f3QH*g0@wner^Li28E}!wOan&Zjbn`{3*wk&XOUe~k(*p| zhiYi6us$wC+3nj)-swW^>I}Vr_|%r>+T2=fJvbP1lFE)+ZpKy4s1_Q_KRKX+d5wAy zMsdxKUry;QNwn|4i2P6UF}Y6x@Q*(^#KRQ^=7SaDd$FXyhdClqF+mdi^+mvL&V8Wo5=CGpGX ztZ>p}#29UR;!t;Ife(&Mp>!L30Tn!z$Z2M~s<8GnW0CodykpJe8?zA;0RzLQIhM8s zCdhCj1&!C4qM3pm zt*1>#i}u3C?z~y~D{b5~1Kqt9%gD|NLW2s`oQIvK5vyd>_(vG2Wrt^TjozZJd%>$C zxO;X!dIQ0bA+lkVxzxHi(wofOe7Odh2)1>e8?WV|g2B17@G2Q+_2k_~50n@Y4RGZE za@ z2EcuGG}!@V$&cok%g%cn69t{5KhN6EyRMwfF!O2-ryz&wm=w$N8f`BZGAQWkCwZ$R zBzP+hLS({a!nSum)H_?HsA-VdSXN|{%%=9e8htY<-D6#Hj zgn{E`;+D}kNhqi2*4O5yXZYO72X3HftX)e0sSx#QE@xuOkd(1uBFc^$eL=8y3lBI# z`ViQWDuHDO_lqJ=%?rQ@?=?>F=k&Pq#AZ!_}o$1-@a+m%aP>6pLnNK>a-U zU9-?_qGDm7*m4H>{scSDv<8Jz<8WS}1yFiGrrl;*<}yu@MNBP%X&K~6T~XtR<+gx(evi^(v8!kgTN0vmQo(K&FS0OB z_^|SlOC`vgyOEZl?YOMBX*12t-Da-9msp?g-EFo646~qT;b^crL+y5(?T)CdXSdlL z?b_xk0iAD}qN|)gC16Qi6CL7Sfbx5Y^|<}g(KYsairr?n=ey003Y{}{o8fo16(z_| z`ckE)_qm!_ISl#WX7p0?EH^G@uEBlKuPW^y(>AXcP}Km#&0aqg06^KR(=4l1SAk^y zRUUvGq-NN!50F+fOKJiVOKK*N8W`1LpbiOC0#`2<3*_Jod2oQxz-hA^Cx;B)$l`v@ z@=buWk)QLYO<4Ij0>ZN&M-f8y6lQ3fYcZbV4(t0#A4YYW$A29Mt`k4!^Nw%H6r180 zU0>43*LAx56?lgrVj*Hx@CirGNYOdSYO#^C!`rIhlOpNLHo0MhVr84$9CbjNE*k__ zc8PmOj_PE|Y2olm0_;{Nn^pz4g|;!y@c^x}z#^<_JDez*?QnCnYKSZlNLHp5Z73*P zWz*BwayGb~W;D`!2!?yf@JV3D9{0i%nGa3KH^dQD!CF_Pp5*q~wRHI=8RKtMl%Uxz zD0Ynzqt{vBLZ`Kh+ebE(m5X&?ixSM_w!C_H736Sen>a1qoenb>cLzA!Zx=ktbvOLf zV7KNth76QZ(-DdOT)B`AEb8gNB7Ju4cw$g|qu7`^28RVM zaC095+Lpn9(MM_cU4A%gECO5O=XUuK#n~XQ(u)CcoA{#kLYE9*usPLoFrh%-EwMe^lhM7uH8wbMG>Q7u^0-Cz5TbC3#7mYwuw}V!mm<$p^{*p7aH_-D#}FU)%NcZjgpF&z$33QAHmv@MU-4SXJlAw1JqNa5dF17_x%&cwZIs-yd zXCJo%FO&|TgZlO(@)d!5yRJ; zvm%@H9EoJLZAB0=`&-o`ZRC@@I1DYj{fTDzBK(ragdmp( zSkNkqq+Bl+#0e(ZS>mZ}Qx0^cGOSy}bO~@XO0VF;V62Xy3LE*J&5Wyky;|3_W>BE* z;1KE^%Z&=?ffXSl=mgn0rjfwOGMN>&VamywQg>KWaw>{q_Qu%hP{cnG_bA02t3XDJ z!L^(VCHCNG9Oahpc#ox4?7^~_x}EQh)S{Z<;R%fyC9rT5F(^v4ZL~vTbnV99)rFi* zXXWXpl#}4P*iJ{ogo0DSc*xOABFyAR5-ZNdrrDAy!R^(`P@Qq`{>ZhX)jTv8?edpd zm3-ArGnyy&06{P73Uph$s8|R6 z?c|**+2sqAEXK)ryuPNzw|Fu;rU0sITmP*z-C1>x9MI@J%O+%dNCSfM?t2Tcx~CCb zB<>D(s!P*8NGxOMGkKfYnGvo{S5fP+h4ux-n8QO(2NHUGl-1wBy*)t-PDDQ2QX4A` zHGKBkPEeR>M?MR}OEZmcC<~3tO-h~BW23DrO*FQfNJOvXLI=mF5#(CE`3K-64bhB( zh*DA zp-~t2=1`<5jsxl6E=zxc#+hfDt$D;m^V~I-^8}#sf-WZS7X6p7j!`eLqMXvS+3hQ$ zY1`F|9>v_s#L)0ltvyNw#6XbM;%^CRd-(H=K#yf7cOZCJrzthIDV4~dknRy<4L%*r zHks(CW1A=$4VxfYtW{Svkxqw(Q2BiI?Gsw$ASNUx+xc5y+@6U#;Uo!7CM>CrE>Y zFv%EuNZOGgfXF_wM_EYf0s70FAef5Y|EJ^I=lGs~3CH=W-3Mv$6j4Os7ZP~2G@?qsY)k8optT{y@Yx#=aCM!%PDL0u2u zy3;tGk#9l$49=xZgq##obv!~?HEk`6eF!b5-=gv5lWPxR zpbQjQ>x?QE+3FAnbySpED9COYu^VR9tR=Boby#t$sHcvm9O4`TL@P$gPCX<}3ei&3 zVQXB(&S@OZ^2!5Lh9=`4oB+-bnsncvF<_b3eh?&o;Yip_4GN8QQ5OiOBe?MIg5)Xx zQrZAYqM{nURitW78rrq|D+{fKTAwUy1tHEk&d~{>CP=eoI4#59YGMR(ag-WRFS*J? ztc=R^us8;O8e1D53KQVLC}3@{SgxODAaT>-#deGKV38<{>>FC(W{4sLCSy+E51N)O z;-8G52`AzAIEydn0Dl%<3yHwCVj)R~2DPE$1pe$k*QieaTW`}QH=Of$1h|Ua$-f$+ zRIq{wmmyo7w`;x2b>)ghpl(j7I=It?-`j1j@g2;sD+t;pJThaxA(e{~!%gBzvql2`^?`R5K~rqm`5JD6y`iP$-psMb0iMLI0Fz z)45TH$Wl+|`4jNywaY0+CjDYR;s*F_rl#U#EmmtDSonXl_cp+GU00pwJ?DPBkNci< zCCj$rC&;-sGI<)TiJ1zvang;>E0WmQ6i!dNE0v;Z%oJ6Vl3gjwxQ%(b4KIeYPaypsr zsv(Zvx#ygH_FjAKwb%FFJD;y~)I*a|hFKv7DW`N?)1kI$9h>Q;FakbS-t%OZe)@by z4?x{I{t`+uiy<{()4~XnMKO$Ukl&h%>$)P7hFnpoL;ZD8eu{|#&Y6H;;}@k6I)&A! z!sHjkFhbm%%nSdmRE%*o70~(S#F(BMcNW7(IHsuHn^D<_raHA{Nl&4r9!Pjr9kZt) zMnb}an?>fLcP1%N;hX9fTD^7z6B;g%t!*I#v${Q^t^zQgpr6W*Jxw>&R^?#oUZj1^ z-y=})beJySfVz4bj06yhks!ywZZ0Sb1#tPcQYfQH)3A0)jU&ypH<&>fCoir8KDKyXD7CrCd$k3{6T+g1NwiMUFBNMU}A! z(S;kS%I9A)4xtk%nYH=nY9<7F0k6XRV>VXv59+iT$li?FgiSNg&Ks&tH{~uwZ;k;q zTZfcDR&}CzV^lT2Uz*-QuOp9|F*+2tC^PWbm_zJAzB$-~WGF>&=9srSR2hA9iBO_% zPD|1*%8&Dnf^=~$t%311(_*NLZ9B~bQnZPh$=cKPAV8Qt0gSp|k3e~;(7qwvkY%i0 z1zD+}g%6+f>VsT4=^Nd{L&6XC10z|tWRB3bCoKm_td1` zGrn1@%N|7pDCuAX2XG{P@@zzq_3C82%gs9sW0ijkptYhzg10=pi2@dc?|Y=_hPb}* zS+Z#8Npg!6z666u-$Ks_dt08?GEEEJWnF7nZV}a5 zMh!#pPRr{^`6Aq5V%~91tBbx>^9vsNcIsUBTbM*}#*KoCeo$KeOrEdT_C}abd5#Qi}fk=+Q&Z-4LTNW&yVT zQRfoz2G5Vy+?+<|njn#gMik9)LOBzi%gE#(b*}$Ub*}s14*&h>Tm}_7*OyG^`rgFL z|54}C`NmUpuEQ@$=Q<&ojR2XhbKM^ThYz~MJ|mqgwjWukvD2V?ofM;=(7m2D_V2pa zK(Q~^zI^+%lR^JN*IG>a7s-dJ=h*-dx>h(gS5Jok?N%}w*Wy{)kj@1lPKUXCpQ~hD zMRvg-38RlotvgSS?(S8l2T34xiY^BY_kJO2F~dwdV44oKp7|EO2Q#+tttu#%NUdlQ zsr_Zur$B-!cRFo^HxYQ#-r5FLh9;D>H+z({H@v~Wc64*tD1RVPyfyt?7Q&-JDfPSZ zJ}djOST<#$oLHxhq#uo+ZVXt<(Qjmq&7r74iUbkPA}gP@ukVn~W}}Gl#b#;QVC$P@ zCxFPUXs1P28GocPnwBuG$8HUJtfQjS`%KWFE1l(#RJd|a`G~1uBKvLiB27CoS_nZq!y}w z!Z3eUBAN;Eh&cXs=*zE!VhWs^VSjU}%Inb8d0M>59BTExEHZ0!zr4Wu>8#3up5mPp ze@J;A3e4MsU`y_4?$cc7;btS)lm$5>Pw_0e?#p$fm1Ec_8zMI&Wkz%zO@-C4IhJzt zqIumSd-?qLP)+Yw{S%SEb#kGR$6mBnxR5+vwysziG|OLRd3i(2RN129S{1lb^F;-E zf3L6I_XTzBp-q`vxd$46%MA(3dQq>mj0-0oGqT!v%${3dLeI?=Ymo_u^5W)oN z_CqL%hnq+28Dp@*TIz4?^D`C&#dv;$Ses*JPxCs}b(41$Y_J20y1SlxJe#wPRXcoy)4Zfyvw(v3?vL? z-=c_}RUD+=+kKMDs&)ph=@-0aLt@?XOW-`RC7CzjP*QS~ASQ{&JWU?MROpMa-<_(A zw)SAtLn=hAv;l=76hu`6zfiQ$M@{*YR8CGOR&Hs0 zAT-MiP-0wI5T~tOsEF0KS`OzB#HDb*tJ=VUgD_St7?CeR3n<(tA>A-IwJkU4G?B$+_JBK8Thf@^xN&?Qtf5`mfCq^)BB z+L#nVp3rl^X3)7)%hWaNSGAI3m{xME$CVtDC;Q}{>u}H)NkB-onrtP9kC;Yl7}j$% zijFUmxTm&eLwi|hEKn??C)|E2-Dt{zLgwBj_HUYpB^2*%7&dmjWKtV*( zT3YZC)gb)&N9q6osHksXW*Vrb-So zg;BO5a%_yz6k>G1EC#U}kEFy(sz^#zg<>g@NF?T}lXH|)vZP>&#eSwkO?XA|tC-2} zmWmR8B>m}43Y# zkY4QvZ2b)t6FForS{jkT7~0}jYAi%i&_}}2I+FZd%h_KdXTM!6GjWJLM!bgd79G(Z zRp4D4*6XC8yMJeM*eJgzYQN!?b$ez`kwyUoC-Z7F562=?)6p)4N5Kgrxv~L;nMIts zVF0S%5auPWWhoIqXv+kKV8j|8Ps7((VP(YJdvc-Iv%*{f8@dvIIi#z3vbkDLe(pGx zkU|etrjBt9WHwqGy|VNpei~~nH(=GCb@Zag`;3BXa3pXohHRwuUjeRS924Mrbj?L> zqXO4rSUG()Y}Im;swymXojtTQAQuK{Za5kZU7d*LolWUvZcK!(v{1;>z1Ih1n4eVt zN&dcz!!y?hWYr(%fdu7r{|XKa;{_r0dECE(3hiVQz_hZ-?)0tuBwFd5<(o61>RICT z*o+Z~huMY#2@ZoI>e=9it1}3|;B|5Rr51o0P4oV1b3=Szno|HQs;y`I1iZ&+i;0F> z%8%fhlJoQKv$C`*c8WzfD_=!~Fik;1P^XL)%cthSEd6LCq59s@bd?QI8TF$$$(C4E#>n2ro{$RjKbYto(b53V^|aIVkVNfSkl1)n z1)n9BQ$L!R7ASr9K}$?p?@v8}dsWKbl5iNMP5GryZw}ECV&V+rU|tuE;m1W*qzv?G zwN z`;<;Ly(rKD%v40WD#lzjl}{%=M4f9yrAi6UqhcnO9eHY!QmJR84gGu5?JkIND8U@m zL0i!=3+BK(z?Qg=IJj@KU02b@xQgg+l&hrVofqXQnuW0ZQLf^APTGx#D{&Q+o+EdP zf_9Z7XmS>1qhL9Ou-{XBs9F9@mP3F>B{glRQR3+MgFenjOx+6lcDQrJjx|f3D})6|93|~tQ3hO zrmWJHkdQ8M)b=HJ@WZ^hk5_EVW6otofciNPtd#-#LeULMo3ayPs#SO%;k#|{Zzu)77xlDRZdgIG!S)NEDd^18#`Ffec^*? z+Ss3OZMHbSKJCFaWtH1(jm!m$hG&{)hW?i{v*RYDNyWxXgew@G4( za}6PQsn@10rySy~CK@H0w$E~0O|Ehi%MHF6=o@l*37#u4djrIkv0$s?z0$-KfSQ{I zBY&ahn#0MlJj8M3`*O5KTuyk2_GtT5q=vbiw6tw5tag*ziI!}A7iw7iIbHRF+_L_B z)ECSkT(DJd3m)xR7&8bL02JM(X!+W4>{C;k@%`Tm%5~a;5jwnQUH2$03`JN1H%EqO z;)0_BfW153fD@cG|60X#$WB&Q=j42lm5U}}e!6efNfu6k!bzt3p`NI`&{V$(@^Eqs z4dxabqp*maF)B0j$13BGXg_AEy8;%etfqaj&4ejXqD{0c5Hp2F(NnyX6G#G-7OZ&X zu^nd8YuznoG@9IE5GgK*m*5aH<*0_0afev#m~1&hM07(OVg#Nn>sk9+Oz({nmPr~g zwFC?kZITBn7sBI$!5~bMpD6g#$e2vXN_|fof6(_uZC-4N^iCwysdbbKNJU*7SxLRh zARl{9u}*3$DnhI^!!Vnj%u1WBah5WB8BQhu`=GE+ z)#oBh%}9DhjS)hp>n=w3siPLhgTwmjHKwd67^~aSz#jQpK}R5O!Oa2NEFvs)tCw=! z4Ptbq$F`G*T6oRpV_ON(p`hEGq0h%AYE*8be2^N@`{_G|LjV?G>u=2FpbN+8Li~h@ zVHgy*4lFKY&>H8ers^6nx3(_YBZ2q@)(URH4Gcog#t8ADYq ztQVzCak~6b)>0^5|6XC0m(_lIbhkka|DHQ((|B7;eq9uyH<7lX-Sc!iS2W*5$hB#w zkWpOv5P#VDx5#hNi(87$L$`z_Z3TRKr)qeM!9UO$AFAOkUW2K^_MtX_Kpg06wf7JU z-%wD&WyC=FiMx*u8)e#_r95o+XU7@$_N-b3c469lzQ}-@|I<3q=eF7pA1P% zb~Lc`AZ5(&X$>GDg{`@~Rn>`rFUoJu_wn;_lOlrVog!0BQRT_^_1Tkpw@O2<<&$6jE|q}` zDAg%w@zlZ!Qc6>YW1P?U0ez%M?~^2LyfsC71p~73TGg#it>$E6SZz{`fGt!uBhm{v zO??D7ey)(+)n?Uv6{W3BrP`4|Qt2MNV{=Gm!d(RMq; z4$sTH7=Is!kfO(Pbb;PGr+GYqosT{>=J9Ny2}qCGgz!c^o|{>|&vh9iIku9R-n7Dl zLQGPY(6B8(#h$vKOR!RkPWJwd5Ss7v|3q7t`8>E%2B$Fbq%Gty`|OziYz5u=N^|11 zrB>Uz;VBzPu%EE^W+WCwwemA;>gup2@8z3##8_O#1zY_}E-s zRpkdhDgM=s-bWM`OLk2a^nS*fgnBhc7ev(VKGEk!$)fx}5Cs)RZnlvUilEIC2#$eO z2$w|KIq-r(0QD`!-&8^}cT4`c2#KrCdPGM=uw3Y)_bM=jmV&h&pH}x>8JAD~+qYH3 zyX7_{$NctB3qjQ`ML;k8$>zJw8%@~=yX*EAHub&O#e7DltB^E0U6WhzMW?HjxXI~i zenDn#;xJ*l&U6gg?6;xPPNiZEAJY|7AIWn@*cjf3V~_+<=Mlj%_%UcqJBTE$87}if zUKQV~rq>o$q?U@Raf+V7in@a8VogR>7|U5op{e-xV-+znFnT?b^)^M1s1A1jU`>6{ zR2LTbQc0b5R3}$$>&gp=khDy_WfH#d!Vg}7Jwj^c4dh#piHYQ8wX)}7vULjSd&w|4 z{wU+0vZd9sDL@+mb(XR#vqys?LE1{2eii%sXkkjXRQp9sevdidE2#d+@f|yFsId-H z;i}0~KQB_5VrUh?Q)n+^?`c^h6sv%lniw`34Wige1aX|iecV=z0}F!#mQ?Bx{-tSa z<6~8(GvF|u<|3s-Hgi2`bq?&dZm81RUK^+dxJ0heG|}&{j<4LT!o~#(J412G@cfXC zt|kAzo~VYQ+B)O9glAe7<_ryGpz3qE8N=k}!6L6YTzek-1rnrym%+s4^Z7okp;!n< z!?J~(sL;5vLvy5pW&i;6LzWK~tPd+_g}lTP%|~YG^UdD61BoY|l?r;jp&c4!?0|J0 zw89Ed<=b{W;}?O&22*Svh=1EKyID1Ary^PZ=~L(X^Cj<(=8X1l1T7(#wSM^XG5bCq z^E`H-b4qu`msSp~WIV1cn)Vy@?=^32w%2{miJwGc6z~t%jZv6KImHu198Q|67rX0B&Gu2za}Ee--{%GXM!K7aAGjwmdy zfW*Jj2~K3usr={s;uF}Vtg4i>9^HL)?d2<|uoDT9_Qj-M*_GZ^%}u(Jl(bc-Yb3}& zwNcXv=|oU;3@$exXLN9CmyicjYxns3S2B|`NWL~gn` zcfFmdxt1she8->~wt@Lu!S*gC4IAYc(n+RN=Cu6Ai{>?+O;}TL&)k`c`_b+AjG$^R zWIS|rb$DtG_>n3Paz!K6z@<3-bsnc@Yh4C*Z{zyOI6a7}Z7e;tIrAOYnnAAZu8|3n zHYHPPnjqee`P(jj3r+#atsH32UB|H>t{U4W#+Gm?*Q%F@ z6~+<^qRV;CzN18kpH>`ciWj@)l8#?hF6mTZY%;#G-ZK~xZIaDCqj>nCG@*oD67FsK z&?e2zj^jt)^=QB*V#;SQ1FNZC`KjA=R=R3Ro%yLvyF$6Uv;mWLT)JY7dV5f85FKr( zD^e1dmh9pixZt2>!A^hC{L{8>Vv)c(Y~#iJ(-I-k5sxwD1aA7JtJfA?x4fTju_!jC z&2fbp6j6*pb!u^oPNG+c{*(K+?V$=U3L zy5oHe`x?|*$LcQiDIIf{IutPCQfCQjl@kEKa?eFmLG>p)Ac?%_!9=U+{hHL^uvDwK1KqP{cQqIQI4Ytw&z|^(U^Vc0j4n?J8BHQqJv45SE8+meQ@Wy+Ji|3O z-;~;M8ok6RQLK8JTTVo$1s)Us)2CBCbN<<+XHE+*_BPhBJ4V-StYfZ? zswp#Cw_`HYt>}`$HFp?fIH;UAuh9ft{$d?eYd6?;R82r0?D8N>d8w(Gg*bONKX)o=tdgfpG#Na zIZ?L0oQ6yM(|Kr3o=bmOHvQ#e=Kh^Yfue(tC1>!jxic6gX6m>r@1ag}zba`a0xoyw3R+HJFyE9lcH6ICs8+F{ii)p4jvv2|p>t*uhCCl-Nd zYAzc-%^tSNB;=%MImqd0DgYG;?gxvmtmOq#-PfTDt_LAl_C%M`PCZa9-V&*7^0{2rNILg#*h1K;8s#z3*F=NfUWIBXsqi}o`(7ANeH@A%FseQZo*TBkbp;+sXD*lu&$^{_v;ESl$WcRp(QDp zW@y~jVDaN6v=Nu7B@8Tj5Zr}D)*kqc9wC@$3I@Yb?d`!F&$CEL%(@L+M<78@`?j@L z)Yki=^cOFKX^E3KI!H#7H_$!9IvlGo$jK3Os26O^n9yPBq50y4j&%CQ>Cv(9okd4* zOS|l=Vc++_ON2W9Bx_?swC*B#OkC8 z-mA@4Veif)1Ge{Gi}Jb>6`i%K0>YU{i=ophq1Hp|#k_uKCEPl%(Mb>ar(!BTzal6) zQV!VW}~Pc??Kx?e8!JL7ZyI#X%WQJ3XtA*gF5o4e zvrWoENMX^I1dFUad`jBedFtHG+V|qf1)B+^8suAP_EZ*OjtS6oIKd#FpMwSIrle3>^w=% z*D*uq{$}6E`#}~TQW7>$H+4367EK)sGSYDiGSYKpj+ci`(Ns9{MNOT$4tY2!pC5MR zlW8r%5lkobAi89?cjJfgDq;1@QbNb~3RSbtJ!1T#9x?lCtg=)a8(MuZHCRJ)g^}%1}gGDzf7R^l! zW84dZrTmvTk*0hrlvxo*GmVNyAONDbVBgG$52F-XjlYZoh&J)ekx@%S9`Ql^aB(i(*{f5~(vB67D%Ip(qkOyQY zUpyyq5#^@EJ8d$v)l5GKkaGHd#*7qd?j`TbQU9}^0fv;BLHj#wl;TMJ97A0<{_w-q zjlUUna9W`k3o~Y9#A?8XQ9D~#jT+<6RDV(9Z$_)BTxwE76h)tzcx@DT!4J$(E|RU@d9R z3zm~~vu5I)0y`3e&&b4)Lm!E75)%gq9_Viu2xk>}pM$IcLC$!&@n?*arjfGFXS~)_ zCqApi@k~nf<+sfOZ3ayP%5t9$0457`E*_g0&9-Pkh9eYpnqoLMG2%a#KoC=5LRfr^ z^~>a!ak-QL2=A)oG6I`^rlv+!W_>1KguE73 zgT*Q^>;TdSh`;p0b5g;F#Rrzv$sG}yvhfyq#b$tH$LlQ03W*SyAKhZSe8d6-O|k$t z)EVKpGKfj9D>`Wn4M`F7B+!>H5h=ELDP%5#hRL|7|SDZw~`O!cXb%*vdu zAyb|dD|nG*OcO`4q~nA{jt4a4VSpO)*y2m6c#1H6N04UrwIPjGYDhEtnqe44nvtW3 zg(MsXNO)yjYQyxrC9(QoVL>H>_$jPx1wM@h%j3ijK_8p6mg!^TWRb4&l3-sS zuk35($eYbA7%Eu9ybWGce{FQ@;X@lUz zq~R)QLoR-ElPfI@H#dIqYd`a^Zq`vkRA5@vYW{@v{K-64pv5<42jKxR`=^-PZ|(@+ zNJ6vZAOuGkcl=>ezfanX#VBLbkM~Fa!buof)UTe&iJ>>`Y_o#pdQYn^r0i2%OHs1 zv0hk_M`~Xa`bFluZcr6hF-`fWG4WMj4M3ws&;e1_C>}hqGh{f$lX;-ts@Lj0lxBZP zlXIT#&GA?0SQk2a9}G}aF)4+AEdY7XG7$KC?-$h#)w4?m5GQG(z&7?Y?$MVQH)yBq z?AL>ziw_zl%=kgd8q?JkP;B&Qk$Tk%9$!$yvh>DKCnYHNO@K6xK1R8Bmcj zeMzLO$)~qL)A3$Ryq!+yd`n)XE%&BLn5Pk9` zB{pM;Mu~E;A#5V|%nJd1)`o-r(OowK4YV_$PXG};5JgB-$qrrC-{&LSH@0s6d8+rR z08V><7p5DeB9=One()_H&W+89Gy$@Azi|@wBIW+z=|=}&zX@3yIjGT~=W;_$V-DVZ z)fX2bxyLJQH+h&<3HtO%9#R!dLWh)DdlPw0zR#M-fH3bJ7ax&!RL`kB(%hfCcTqta zQCQ2bj8PO=Hs#^-BS6?`;QJA<;A>S+Rs6i+%T@efBuVEh0J49P76k~@_*gbDmi0tTnz6gbQ_Le}%#cFsz3)DtEJvPWf1UW zmiL#GTWj;UIX@H>LHtO1GmS589OB&?WUp0bLw-vTD*Fk_Ap0pKr>ecvc$%iA-U?NG z#$VQBMnA98=lnkjkEzMG{>^yyt*5K%l;rUxXNNM#a3ueBYRihB3ZCSZqU$HsU3+>F zODYXg{*V?rc|OTbF)-ANcqW{w*;1S#2j~&&iOg{o=*uaS4x~EGnQ$EGTaUyV=6y6A zq@Gzz14d&vP~uoAxL_fYIi+d5GvDWCFV-E3$HbX%1haudwx9IK-O=>3{6$djc%)CD z&bP;SDR^ARL5btJ!l&BeU$eQ7r=C|kK{6Wg2|}SmQ->?AO-y7`%SBOsLhVersoyi) zUWhJMVDfvXD6$5d8rW%!MuTVR1Uz|Ja3-HOnUVtD(?(cYUpA|G^L9;rX`Zq=DZk3b*9IJING;X%M}^3pZf#Iy4Bj5?L3i__?U8WFOB z-k`#JL2r;FFYOFCpKob%I*~r>#l-yrz-hf$ZN4%4s`3v~11?Q3L_KrPtpLr5 zdP3+(&p|s3L)B5M6J*WmPt#c*MEboBlnPPTZS$w&oqru|^F#wda#1;tv|qv(f(~b! z+xLm^Xju)+LF@~MYvdpf4M|3@h81jPT~dl@C2MBrT~EQERps$0?d+}wE5cw}ifA(+ zp{_BdUe`3Hn`%LFW=c6FNPg_)Ezc5dCJ8!aUH4Ong0BUP5O0YN3O`Af4qUBX=)8Je zG4VcZ6F@8Lxql?$-o_;z92;fZi(kWfIs(V_*!_hd;Sy;V>&klMMu5d2FPR4ZWR{rU zB+Ey@J)ZXgOUid$%*(=yVqV@&$#+|0hb+05`|_Au6sYVb=*1V0aZsJeb8q7hQUKQ- zClQt;*v~b=uA-mk^pFs=&B}jZ>q!A~uYK@0=wT+};+ z5t7*!Oa|SO&sj%4qg_RPReN2mKcep0Q$ADIK%@RrYQsm|PHAteYZ^V>ZF>8v$1*jWU^{|$u>j}HQ{!v)l}O;%AE>0yU2dUU*#J}J>h{~O;|jj zK4UjYL|;1Fc!T{Uaxg7Zl@uvN!J!t+Xw|}%33U`j z_CHwBC~xYys*li&X!PL}uC&`tNH%&_;u;*19W6huf<7q$RV_MHiIEpW>yPHDvSCPn ztFlNluo44MLA_|Qfk;LC0)AT6tPqB-t?JQ8sH)zUR-MnlOAHUrc1=;x6*fWTUWdEIuBU6P9RPa$H4=EnTE%J znJ;>l)4GkE);SW^4YuHE>&3!E*N%J!UR$OeqRT(C`|~Tu7Yj%fXFIDqI}iu)w8K(C z`&mm=9Z_h~fQ0s8Jlmo(xA{5-XDQ{`x}_wlG|2Tw%eN%*Y?*oWCHQGF%PbnEbm6KJ zh@c;L0yx4vMrzn{C0}S*mm?{iQ&f`fVyowzjk0V&9LmT_mN^|WXKZ5Gi) zFMeDVew)!@u{T49;HuDJZovt3Alz*CnerKPGaRoax1MM~5DEEcR4Kdl7;(2B19ArZ zCN7M(qHy%%&G|k)5Cf?x;`l((6KxPY{H76}_sm%qDWN*2fZkipXP>3$+KP0%=MTSs%=6jiUbR{TC@dnju@7c_V9d*@?kxSi7b7vmvtbm`P~W`g7q4vtv_i z_3_-C9QsKlLIy+Iq3a9D!bxvL+0@jD%H}4&h2Kb5V;uei0?dI_mD+=bDj5dNp{A)8 zY%7rWx94ESy6nSaspTkJ%u~Qp15f&v=f!q~nJ5cAD2G|qfoYWjp8$h~9MyNN?q4Xj zzlj9Uj{SM#%Amc%!11u)$9A*7^vQit{FAEH8U%L}b@@zZ>Ei!s$g`1P3&0|a_8|I# z{-frOC(ODpLSu=Nrr6sci$)p-zgYkT7zbz3>Z))t*b%<-PqN}H{@bp9ZzAu34)BK# z_tfK-mq{?Lk}o<7Q888mn@%~2Rmp& zp;jLgo^@_6nxxxW)BGV}S8r7--KFKTQe%qJmaL@IF#NsTpNQimQWlXZe~r$C1XhkwuDnFeV}D zVQ=EGjMSqy$rP`)4VlQ99tr{FxlwCKIU*z8nend*7=$s?x6eoG& zj!l{y34y#XvttUIwKzx~0|hpvvfc+YJcH)iZ8Dsi&U@YhRpjEe%?Ac}Cqujw#>s$ye_lfZhl_%}pK#HQ;(i>+dw7d7&I7NbB-d-y&f=&?q`5MR%T zS#;l(Wu)8hGoTr##z23zz>($W0aQJ58$;_4vfdvHHlyObjaKO=)Wl*ci*8N9fufb^g#VlN|GGny{bi_%RY7XvP+FBwychzyLi zzE2~8c;d>Bh*mV&v&pR*?eUtRB+@WzpT_mGTWwO`n;h5{c59q+0*OKx$uGjXU7+Jh z@{1gNd=nQ#I^6X6U_@~qtr+;dqv4MYx)Vi}IRjzza>mL(a*%7uLT0ajG5{hi>r@t# zY`?}YN-;+}9 zZOZVN)`;9CWVM-d++dNbUU-)#om|HfTeyxl=o=6StsbgDk-LOP@DcE%#J5+|9XVRq zbNd1tb_0fwu^Kos6#qIubv~B-v!Pj_%=cA;O$&^#M`&KkV6$FLO&fGJ=-3bzp#h{h zDVe7mb_ZaBvgzNHf!7Yf>RkOlCj@XmJ8CnvCg`+juA7M1xF|Z2P;$wv%G+Tlmdxww zCzb&C?2WW%wOB(EXn}j($G|3{t;b?G=f6Cv^GTqM+(MtwO=6o+fM_L+eB-J!CR~jc^0d=TT=?K%ot73AM#1e6novWHZReP z5)C9Y#LwK!XJUu6jv0*6q9EvLY*bvEd0MaPWH>hYG$F#|GvapZUaa8a{rvgMZ2#T{ zjK}7UPsA`S8?PeX`(mqY?JtF~ft zA-;4E6p!r{%_6%SR;H&ukEUm$1GhXax^Elgf)vY)kb{~;3EzbU^l2(1L#qIb&ID9* zr$l>F&}D?5qD}G1XEQ%u&El@kQuv-miM;fFUTTX~IL}z`X9zXv0m*08Y zTBG;AbqbIgZk9_|yUhViFk0Gg;--zILgS%AK5w|8LcAs8yYAan=IxkSA}BPA2z3zW zdJ;1alis24WO=lGgY6Fq$nf=XQ{S51wM)uBd>@)oG$U95NgD#>%-dM#P1cOS{HUcK z^`q`t-m7-Xe-iI$g3;q|K;ed<%l8RG2eY-tKV!OY{Klhv@xA4t_w!}kkdZGAr!yVO z4gV=*qCUwiHyj^geG~)3SUwv`$D31nJ_zX@RsZ=Y;VKy}uA`-Nt>@8fR1ZhR_|7r{ zIM^-rqDGCph-S;7%4`uF#t@D;*D}tO=(=Wb9IP80;3gOx4p7JwdZ4BmYdvh!tqoW# zYl#7KNq=?}88rDm3_~c`@XOoYd&2#ztstGp%8*9BI-r!Yl#d$!rXcqgd4Tndw-}I2T}kh>%P9y;00$ZywC>iTB!=FD@c3f^zag`1YiKU)jMSn zw8~Ub_wFpOtpFy?EL60Ht_86eXg>R7RbZH~^Y!$(*MJESb~LZc&h!gt!Z!78U2Fe( zz*@tnsrgTWDzyT$gWr8$k0Wnd7y-cq7*2`b9>;o(q0y&}!g(^w1b8~@XBvqU#(HR| z9vLN-0WM-z3F27kPc0$J@KutORWv3w|9oHkPs+!!EZP8nz%S?!QFk?U;DZ86Hvp8t zq;FLI^HWrR3gd?z36Hu$Kzhn}%F|A&8BzKt8&kSd)b^)!Vk+2leY__5)FRNfYBThT z+JD2y2u5Hl<88X+oO~K*oqMh9O*Q!X`x$CXmv2y!rAey5eel*XT zr8}&!{6X>jCK{E5Iu^4S+;a?>i()sr4Et&~s^MpVeN*H($sT%2g8-E5-Ge9JK?zaO zG5VT1Ec9k_Se%;ZQlzKZs`li^M5mITodASZ0XGC^RqfU0f?Umi0{keRwYTx(wzc`* z#{U|`^J%p0sf||HK+WFa^8?J*PH(0yk$wi;}|ZbU5H?K0`*Au)=YDP z)@IwLa#!kh0~^n0!)WNxjJ_~k+$?2A*lBuG)w~x`2}c#rsqDvRo9(+ZF{v61L6}sP zHvR3GRLo!|6`Z#=sb=cSHd=rZ6jj;CAc%oo&3i!%+7mL1Y>kMIc+^Y7ohhYhKM)vd zQs9g_R2liW#;M514a$%v5nPN-9r-mEoZkdc?$Wu!zC_8wDYl)4xgiMsNC}#w)uHP{ zvbEtHdMZ+DzLi`YYbM1SoIuH0gRnYDGpa;aOsE>ujGhjf5$9(F&8V&xRmey>(Xgfy zu^=Mbud_(NYYBHh4hGAE+JGW#J^LOhXcy(r@til$$|rQff1|QpByC*J!Q(~j(!wue zS0zCAKIhzj)xxBL#0jqJ1A>j!mg zOi>690aR27zyZMWWR^lO%=>hQlsfkbqTkjvg2TLvD#5+{mQEm5Qc8h*ghG_pAK7Kp z22Ot!3w<_=y29V_i(1eXl=lU&{3RbO`U|T=$-X{CT?pmbNnlK6a7L}|9?ZvD<4rxgaJfkn{P;dO-3TBd>}F^IylI=$ zqMW}WxTR19gO}4`uS?uBgk4=P?+cEvst?T5vgzk=HGyy1;7uJE2y-fm>XO%nW<>JN z)l-kAeh-*lNTZ*?n6d42>>Nt2j-9Ku?e6Q*w%N+*`T^UrT&QjJ*wtTc z`vD!od~hbog+XkbUJ!GPa@p?UDYBt=(R-9AWmHg$kHi(imcXoX@+!Dj0PjGj78zG` z8uoz6EpdyEy{B397r@e7In1^7A2Cy9(3+!;nt;6bjcBY~Ho!HZSnx4YMCPbqfa~!s z1%Gt#K)HFBgjc^jC^t%ShJbC2Q*_eF+v=lMcQzz6M9Ib|l5}20H$mJq(MDA;t(ugU zsEJbA#7&UW7B6RKJ}ophvBZb^t(Dt+VbWVEyu$XbafJNZ)grG8@XzfglwVw zxiE^d%jSfYTja_K=e|k#T_7xeS!hFu{VPXokVmwf9AxgJd-E(mK>||ahbv&6N-gCh z`MFftaVZt-ScKZx?&syfpMG@66c=>Xfe3ENM$zTn{!+YVn5B3xVkn}E(Z1LPIJlvE zdGB|vdN#Vev@y)xJQw!D+Bwff;oc*l8o#vq42)}I$cvl9YSrRU1Hq`T8*Cano%QVM zs-RMTr+DkfFlUT@ZFgk+vltD{9#O#J?ttoL}WFom3k==m58-K5MzcY{Ev zs!|<#nk#$l>(9*<0r9oBIE#R88rXNkNI!NLD&Wg$i!Zug+=^;_#s__nlt)F{pgSJ) zF&1t=p7pI&t<|9<_EBB6KFGVMT8kE#Ey};6$JbH#Sgd@OUMyl^f0PoUBc9srLfqB>@j|c2K^*G_otp(3Z&f9@yOp={kP=N8#D4yNRah+L0$(bxRWEaHfK;t_`%<)K5$r^bncw`3^3uQxd z!76dxtZCZ(43e2jD0FD*aMc$Z8kvk}^v$|PKlOWt+Y3c(#$mT17Th(jS}%CjcA$@n zPWCpog~f*3O}%&WVyp&4BEjFtV#8U@n|3|*rMV&#>KJX9%sS)l0I`j!?0#IMt0!<}ci*ihc!(=9ff+Of3QP@St;0^hd9h6dHQxY*F= zTgn&_>EmIm%{N!~A;{W%WA;_^jggK$Fwpgj*p|#9joN=F~P^chIZI)i=X`cN`g_k4{FBYh1ZuIm;?9GRMdG5yqxkznSZ%w=gO*=fmihrm%B(F@fZJ%}U9rZPCa z<5n@s^)M8y!k^f`|gS##=p~p*EBR31xGm7zuYa=jm67K#awNCOa%vR zeM@YTZ(09kkFbjMHR*&SU+?Yxgf z3{#@Z_c5zROf>BZWBaPq+nf%ISE2pxgC3r`>l2?59-H{5nD~dPiLd@?C}oT*S4Dqg zmV;?`Mi}5JP5i^3WvqKCrQsB(py(q^RJY~qE>?m08hL8szobCT1wKpEDlF00Kw3T` zU9XvZDf6LwWt9R@Tr z>Tm6BWaSSYAPr@qeE9*@#gG5x3d+uxog0e9>)`;clBVY+Cl>XLPjWuF-WJ&{l-K>J z2%F+dH+bRZSmCA$^M3mc<#2eaao~EO84e#~K{M7R+^0|S+g#DQrkLMPfBYSeJ%p&G zbGq_oy_hd=`(cCZ>dWnNoh|{K0GT=?Nc1>1tn|LrcxYOSPU-91>kPwqFsMqRU(O6x zTGP1QWyRcn@K^4;O#39@jufZ_y$M``WAMD<%U3NsD`c`TMrK_QbK7P#)bLY5T7BAt zNP2=Ak}0y1ox5&6Fj!!pcxA;l573S&*93&=96g+=VA=Su>n zziVkqP5*Azi~0Th4+JUMX28sYV8J9kyN2$uU9k40o-gNbEMK_&`MCr9wCn!z_F?PV zvUekc2CZu)COGlF4Cd8VD*)fBfM+z=QI_dkP@***OdZg;BxA!0ajrn9hDluEfI`r< zXwVQjC*v2Vkj;9d%obBwgvCE)KIjSfn@9VY9r& zfZV))uwaOqmp1@sI3SHyYNa7PQ6S809zI}}_vz*qgDX7m(lAd!v(I!U?vFr^T(0qe zhzN^bqc0U(T6rVOu>$5i-XK;-Wa&nr;KFu&H}++|XiC7$gYN+C8UxRBY|xX80D%~0 z&H0IBIWSngZSePDqoH9gGv@-9>=rAjvxpK*0}m4&=D^31c|;b_6tv({F%RIBjS(Q4 z(i*RB16VQ8xy$X^-DNVz1&`zrfS?BUe#J!4V{^?VTvu646hi>ETmS-=D`|N-P$pe( z&+IBap==|gC+H9hh6I)g zxul$MiyAP%La&sXq6IN&-YQ*@tud5SA8CX>x*XrzIBzgl(t~pGiWQi<+8J!2B>#A@ zjp?(km=piIEm^MzzJKSIMv(JhtyMpUWVmlaqG5P;{(%lsb5w;4~#YhsaE=mZB}o1U^S@h5=!@dHG7(%NtX`7W#qJ?&mXB2)@D;u(HzU9X~K0tqufATj5t` zHz32MHD_0>u;~D&sh9Ki3r*tXhyllkn8a4w#G+84k z{No!d@s3@E`{Ii@XL~VWjzDBo*AUFV5Eg0u>c=X`xyh*yul3q z+xC|)@IRDklYC?pJj zSg^T^CmAOZ!E6kt+?ZZ3bg~Fk0QIG-o1PRfsXp+0OEYWakOZ3S4R!ztc1^Lgf3O6( zmG6~KpwIz#A|LkbDB%(UU{UrZS(&me1AfHNY>e2XaSKhEGL+$i`+o?IOa6v>wtR`fV%1R=WbR~3H;HTxTeU2 zdTM~leRQ-58%OxAO{FRFba9D#56c ztU=cOZW`nRN0a!T`b*s|f4a<{#@cVa{XhNQAHVxE557z*M;dD%{`F5EJM@SD?$JkX zW0^)5!4|$cuX&sHEqY5eE_5OD`QS|~+0JTlebLEJBDGUWO{SJ{Gch^D<6(>rr}#(j zukM7`nEujO`;~8e?YX?KcE!_dO%j6t&E0v`O7~w@V^SAZg3`!X zf_2Ct$`oSC0pv#PDF+>(}r+83Xju6IB%B^-^pm`lXmnA z_V|f+{Gh330jjU&O`SxSG?EG-QjQ$G$ECU#K^#DC`F7k2kl7P$B-Sv?lOD-iH(12F zF%gH_(a#txSYjD#PCR7Hi;KNjuAjn#_q&UTAY+Z=wdW(eLq6*fP;px7ppL1a$|kH2hP;^?49Zs~xWH}h zV@NuM?e)VcmY2gQ;@D4CZ+HrYx<71E#Ki(RO>Izu9IoJ!_nCzpG=?eY_McL- zC=ns)UR1F?#78m>BuAIvp~j+&Q#Qrg^4?JqSfl%nX7$~vM(xA$u@jqOY_*TW6YK}o zil(Zi5EA)MdeNPrL298*b#@ynkv^(Iv-Yvk+jW2QTI2IQ`21z|Yo1?BF3RuZ*Ckw^ z;=6-?4kYBFHAx&Tn~Ce|)rtSWtH}B(P-yoQ6YT77q1BM~NTw$&IX((UA{V@Taulp7 zKp(35Fah*c31|numL!>bpi5hVtM+C{L__dFij1+2JHW@WM43KK$DSxf0?1ld_vXrO;y!1T%#{E zY-4iR(}0}cc6nj>1?1@i<<m9J%&w60 z1MT92Ut#Ew zwI$W{&$Oou6T$owHlrEE4c17Ndr;g()!^7vjt#d#2w;>Oe@X*(kd(+HSlCFG9CUzS zeDfX6sj^8GYwlCE&Dq-J^U|^i7{#Y>H8yEtg5UTT_rE47Yb?yOo z@HER;USXmECUXPR*SQD+)om)ybTPYfH8mVub%uG&a0xg4rpn22fR9@0-x;7B-H03+ zWX=f6?P==V+VIgYyy{jCUmmoydbWo3_{I<)UM9p(dzo-Q`LZSSD;V=Fpg-1DgOCvj zHC7|Q)T&`0>j|Qqg?*_Z_)1)fD4#e6A)}FhMswvne^-QePujcI$h*x(czMEJ&W*er zYSUp&mf;_$)-9ti^YHRvd$|%{YSuywkq!en{AD{QwjT4dH{gXyGLq)Gk@emIQ-`-X zsU%`)yM@r!+!d)4i9|J)Vj@cvQYgHor(LLGp}$mg;ec5&FZZI$UGZt>1P~eDaN?`P=6~^xmR>}hd~V0siv%46#&fwVap`ubZ<@Nt+(Dh z=!w#LA_>W18lX8fkP!y4=9V=-msNM$*K836a0ePzi^9z|zXY8|7 zgNf@XGr;<^fXkjfflVQ8-nuqugG=IvbZovt+I+Fh_Z(z+r>JTwzX!>3k5+HxIf067C`B2s6S5oxkXp~QEJ5`}m1HhZ*xH}ZeT zBs9x2e)f!WSdcpQ;oT1II_YjFcLa*UyItHd@4{Wd9eEVtZZ~&} z>28&~Zo0dGyQOq@A$QB^?$z8GSsI*|aJMzRdo6dpbhnSYZRzfZxZ9rYF5~X3bay3p zJJKEd)Rt$byEk!nPP%(Dcju6TSst#XxH$UG8yoH4u@n?sQ1=#%oVrH+)}6`p>?HEGucES1W{*UQmdC25qP z#-u}pXtFT1jFRDyypib$DDWw$9v1?{jC<}zTT@_Vtyo}k(PsoxnRl&W3@&wQ6jE!E z$-w+7+Vb&cihU~^#%JSAOjY<}8|RBNHide%jRJ#a5Ea>ttZo#H=F6cLf#1gC0@s#0 z0_X#xs1)WSmBhIp`&-^N4$r@CW^MDIINzX)bH)6dfs4y6`jz<$?%C_L<8L}^*+jemJS~yczso_7$W_ucd)$oI5gOc z44XR2=cMr0pO|xv7Y9d*GMKN)M0YqN(KSsxcYmRo$;t@Ww=ifXOkDUQAPH)DP1eZw z70sh^b6qCN)n_d|GT$GfMOki?Y`i8z2arxJuO;>}Z>|A+igLbSnIrHS7prk67i?-% z584F7%HJ29lvSrw37S@g<~db)d9biLMQZwp5oux>>t;u)i^PRkm%=ijHvbXBaDENh zEhr+Xb_Z9!27&v81E7>KHB`0Xzo-_ugqp`~Rj-^SY;^!wKY}P=xg~Ro=~+JiMS4^A z%i*7CSOSwMKc^;mddkKmvJS)BZkk#PPT+EcFhSTG`*htjqvk9-TNGQj zv!^t5F;#uLTbi`51>vYM4VjKV`VK@8?)j?57D5nNPmdsgMR``r2fwVM^5u=?b1J%H zC4R$7Y&lJdKl%jz_>!48QOB2BtR^r|4@$56K5!W>^OggOl<6xCPl;3u#tSWHH{^2= zg+nqyAesEhi;*GVFdcNudFFU{Liicw?!W-YrBZyjTqBMOi|Xs^#iFra{DYUBVyS3A z8Uq5;aMdL=ZNl%%Fct|h-Eh7J+PiELI5BB_k~|HffPD7Odk!CK{ABsUH~!(L_7jLD zQq~>eh$63M($vR+Q%Tz3-R0pxxTaX zDst#zJ#6WCCZCyOf#&ExoEKDxxho+WXiO|ebWtxAVk}^>%;O;ALq^0pP-1};b3D)c zl9x)zbm7wm(bBwI<@#4dRY;V|cWb%DN^oLCENh7Bg$r&pZluEQM<)4D^^xgqmp;oF zqb;GRUKaw>(xG7Bo$eQ#c^ltUU`X27uD#otQ)Z5(#@>b{p$VYGjhh7s3_+5{o30oE^WM)UyB#x{MN@ye9ZO^@~hL`-myD| zgl;75&_hBG(?haMBoSlZRE*6G%byO2;O5m8sua#(5H4-Bp#>J{Na$^*T?-rCyK*#w zFuFMXqnkIEF;%7a#2ku{JOM8v4NewvJp&1Zf~2K%r)^%YU>jL`o!cq5cw4PN)|>4;S+CiegD z@LSHpFZeh!6yKeZ-JmcYN>dJJgX2K@cGOVWc!Qt3#Pe`col1xmWqTXDj1d)-6&pIF zVMKa!Q{yN)=&n^L!P*MF-R4p@R)~d*)RL=Y-u+rW&KR44m~4p25wQI_0TXACL(>{` z#28sO;f#@Fv5GOi-^i;amWU?1f@5S%Wk4Phq%88t(iGvRUa8v(_gPgR2%VeuvDzjy zZH1f8&YC0a47W^RXY!pnJF{oT&Uh#PnPr0!Ra1M$&iEDB8C+ECOdmTtLuVJGiV!ne zNUVxcaZ_hhmf+mx*lcjD3=47C<_NEPykoHvZI7DQtQZY*v)o}yi_#EYxbvI8^u<5h z_Ah8JBqhlIDcy*y2y6~%Zr5SXssT{FpHjo&x_zU>h~e=0+yD3%e*SH@k{vP7tFPYq z(J!7ed|*7;fR3UwgrtfSoPvt)nR+T`96kH<>Tr`?-d^F>K0>&SjB*`G@e0upts?9`UoW{T_@jIJ+R;~k7fB${wXA`A_;3=6H$m01;0%$l$qnEJ=l z8Ww>=+u~(3gU7>~u|$~gs=I}$!P`6peD^lM5u8dYN9G&*u-Mgt#Hz)2^C9l+VdMYU ztt`|kPe6Dc|F6ilthVRF|FY)%d>(J=*N$%H(3!LHX)Wo~Aq)g=a9=D!(~XO>oZF|_ zFg|Nce|5rMnW8iP)zkJ$tYxCYhwT;oVDi;*`~{|z=hAZs7G+ZkJ!XZZ!IW%uCCz-Y zqR&|w@#*@1eBt4#tnB)pdwJQ%XzP2jO4ACLx1p(JH!5Z@hx@I3_!~?e8dF*ap!kGaDMs&BsZt{e83U+VhJ zhYoY|p`Cv7#V>KQ#ed&=p#1q$7{mJF>I3ER&xYThe&4@j@xGTi^!yvx|LA#DCA+U# zcJLzLa&m7V1cP6e&smVR^+5Txhm?#*|CEcY$7CjtK9={BAnN#I#o)-)9)GO0mmQSg zGQ0kNEAt!0gdi|{1+QwnN8WDj7oZPY;~y@AMnTDO^(yDU0y(U*L-|pd#9f+uvd+b- zjdNfxWwDd3-srq43tJK_Udr&8GPNixJu8o#qT2F;^5EBWeJm@V_*?yWwAuUO9Yc&E z%XrAj_k3MXSIaNj^+W8)@|+%gB==$jnpCYj)Nlp?r;LmibX1-gq1b=KyJ#<3K;5%~ zL}2t=y+0Mk8{KE~taF>@BLYxiYxvtY$rPQx(Va@%YZ3TjWFyQ>5`HZdTA+4kP*xuk zQoqr|70A})CgG5kVfZ+@{j6YyYQ+>xn8gj6y-P()$vsUisLI3$#YRSp+t!iJQLJjJ zf}9n$UMLnd>*cGl&CRtia6@F(d%`=U>cf-hQKt{cXX=320B)HXhp{-lb*zxvWsq&+ z7Hh~OzG#`Xz=hL99qPhOK*67wdV3PINxc|CUuG?L$23FSeF%+DfnvOeYS4CDe+-l zFN(~ULD_1C5*AY4qOdtWd1Ar*HSTXU@(e-I06174?V;6KJ}AFodJ7jcwBlWx8Yq3m z`@#2o0Vsr#V2$-6w}v7(>S7Ub&w7ztCW`>uND<;|wq>H%Ld*XL544z&(3PYCE7=Vd zsBS_I7fleejnaZ>7Io4EUh%JvZ_S&|iW1)2Xj1#jbqI%%lp9G&inZI@{mqr2w2hs~ ziL3TYS(I1VuT_3s#=8smm-qh-B!HW)T|Q1FF?Uk0X#AJL#G>KyDHTjp4SqY?<`jqm z7y@ttqN@``4x3C$hfNut0k&uUTCmBdCD>wO;RbVCk^~wQ*Sjd+UBW8#q@maFIA23d{gkjBEksvZJZ!nh zv6Sy9(WxySminQsEUa>-m{rVliVILpK}icxU29?U2!Vo{&sa;T2PJqGb^307n5T@u z`$lQv{nhQn2)s3ofRBY}!pCBF8VjYXhOyYNu@FINEZQMSb#yEuPlR#;KYVvqtyw9O z{}J3aL8QCXdcQ9sV}P`V&z4T;HFqFuiOc<8h6ohd%d6!R^5TF)bD{8je!p8fR6?DY zZ(gTnTwbPCvCZy@ocxywZ>U2f`k_`7JB(u-VKJqgFu+T7NPx_(yVAcj>q zGEIvJ64Z`{Nf%XhRxSdzmQH&k1Erzyj|cP3eFcktv~pC$hW5;!#5Al&;2C3=$uLJF zDBg5uq<-6C1&qWt9i>sNu)HHWFuE4{xALjZK=Ye53^5>@)(K^4{~8cSPnYz2vh@#pMJF5RW*jX9YA(a^zFXEH;6@aTLW?-v+eXuJtsdO1~al`_M~NdwM@))sHY z+r%-=cz&5ILH`R%AS1dHG2F85V6IA=5+OqR1%;fX|K$`jng_xOeuRsld)F<=P z8rtUBq)u#JD8!d;SkZ6vbD@?l6tYs_%6$vEs!Q`)m!MVMbHw60;6xJJgaZzd3AmSY zx-XUs4HsneEbvpSnxGkw9S6enURo?63?+)NUVI?Pw{}5fgfq5=l zS|Ww#2`QmpXrg8-wIePA@o4QlZ|7S9SkimK)~q~+q~QdcjYDK z18Cxbjwz124aku2&zVNm*CKn1ji9sAFuH{iU;He!0;8oIS`*;rSgzQy!EKdn(%7Ta zr#x#g=TxJOn?KL-TULbJ4urf&)wH1f!0>c8OA)f{2xxp!L*5bA>`-2%4-eQ&PFWR; zMkKks2#aOAd`igaMf;x2KVO-|0xtGzfsXTd&{uV>d{7nT>IJv0PH zuCzg^W-Z)g<`z&Mzse(s7T?BHT)fUpQw=MEyH-Ox)WBE7Hy{|abNc>zHEs16BLGyX z@GubGiK98QONcgF^DdJrgZ3o{0bGdjtDH7PyZeEQ7ZeWjf6ZIxS*WlrlJT)EX$z(z z`$X7-DJ!xchdy=WF<59RV&QUEv;4~%So-#@vhL+eEHd* zB1s6i;zvb6V|Vcw&)@&4@`<0q)K%^hN4P9rg`2mcJ5d;zHXhc2g7}A@ z+_IJq{h21t`}CJiHU4L+EB%@AbXA$J^tUkhIE^Xsg9jhbgRMA{fVY|DO^`;0`9=B1 zmbt!P6 zOn#*#96PJNCVSXg3lM}qONH zI=G9y#fVabA>3?)_k=u|O>4coVA8es!(kQ*5Fu27`H2Ft1)_Z_(3&XVZSX2juWtM2 z19CT)t~tt4BiEKk9$=DwuJ^XGb%P>)|B*q|9>vT6r}u#*NB+=VreY3IHFuzD+F~<| zro~%t#%%J5v-QqF`&K?hQtX ziiZZ>y9Q^k-FEX}@lNWrZI&5u4lc1gwodu?@q@m!8^r&?2iONqDgYz3q;MBydb)YJX3jbG#vg!nrX5G>bV|0DDu)k!sTImlk==R;ONCo1VZve? zOs6F=Zm;bG2R&ejsv@Q_+>)0IR}9Y414wyY0J8!1Ny}Ic2ES=8_+{_zgi7du?z|dg z^UvBGJ-^)4HM$9mD9<5*4@P@*aBgvy+;+~q`#THn!Qs(jI~1{}MrJY5` zew-Z&OR^T*%crbMRYb39fVr;*0B1P*DO_z8`ox_pzE~{$)BHY??j#TD?BJsO5p4n6 z5I=yS%0;=MV)vs4=@jFTD$kS07WCx4+7mSUO?}Mu_#$iEew#{eyZK+;vi9iD9X;8) zb#3?ypWXOauDONPceHPg=0ZHpkbNIG!o)#j_Z}Bs&XdsNWFa+EEMIdpJT;c7VUrt> zSiImWcCs~}KK%6PhYUjPv3d;(jxP>KhIwKOAH#)13maiU)_Kl^fofHnHhU#F6qHm} z>^a4DvORffgrekYnqcvpIXw7TE$QtTbZP*NzO&|=d<3FE%`sAy&}LDuNSQ)QD%6A} zz~``ti5`d}FR_?yT`XCQVK`vaXi@|A%sv11=39$4*u1OgOes_=0$FN*EvAmN8f`9v z09WQHk4dTMcuQ7EXopr{31qUUvqGlTY{;ZuL!|ZI zqT9mbBMb1vPH`>~kd<eA)c^My(- z7caYJ$r%8GWGSxX7jbI*?2V5blNcGolpffr%yG2h zV^>LxOc@DAZF$-oERd;hQ0j`<{PcA_*)^kM=k&4b0K`7#>=ZwU;B8YP(tTbQF zu_?5ZrBKCLmkqv4!-bY19fJqgn3^$fhUYmpyR_V?RUib`H3}ydCxn1MEjf!y@}&RW zQE*(8AJ)7(h{wwXQxY5glocla#mlQNW(gX;kWgucFA8T3{d09azQ{6fuIo$vzOILt z`vYB{*wTLm-Q8`ZzPrETETZ}gZnXOZ0|AP5b0^-)2R1vx3}N0$ZHki<1|mXZB*ZYl zJ2YLqLjRZ^yHs7f*mb%YCJw7PCC8CfYIn0{m>4=UtgzVyWal%#SZ>i2Ct;@9vJ*y= zCe51Xa)2_sBG)@dMI3X+`D_L`c?kwILoP~ALVRN2!T4S_&iKxajL(XR_nmh+N?D!v zojaTNog?0Nj`6Awn%c5N&Dy22j90SfZmZZO(l6(Q8_k7ti-GbpX?xN*der#eV)S+uwbA>YAi1C*Jsuss zm(L!(B)Av`1Q!v8R5Z+Ys z$GBUXAB+ZLf-Vu{G-HBLI$!)^rC^hU#O!!s7BnxSV#TKHFG;b&mHywGVl|IqwH-tK znEWa!_4eFx4T%XkrZY(phdwz$IDE9HBqx@5!(BX>Rtsa=giri_0K`60?Y_# zR1zz&!jtkz+o<8ZQ4{XJ{%NHI`7bPZsX}0ZQz4N(J$bErFRra?{<*e}Wimok=}m>w z_H=DskEd(v<8LZ$ee}%?ZCxQEJQL%l_t-#>L3LUsyC)@E+Mu`@=NCpLyQj%&ng(hz z&YW{$r2K=Cn$@L5t24H`zEws_Tysm_$WYeLc^z8l|I6Ng$4OB<|Ks?^OM3@P&M>>A zBOFNtM4V*~kf?%U4v6IABpx72IN?B4K!PG5A{ms7Vw#nlCFdj@aO4~%^L;+MXEq#% z;q`uf9km$ zVH}3sV?h}A5Rf5?DMOO|=3g#Vvb-e+LVFZ8OUAz2y@C53?lfXC3j9O~=iE>`2g=)p zgh2pegDz|h`APKoO1+>bCHF-2%j<#1~R*}_StG1ra6aMT$tu! zntEM@l$ek-!!(D~2*WgIhiMKfe8birDNJ**N_10%3&eH_a)?=45g}XfkJ-UysN55k zXiKyzc!)EMb*LJ)Z&?Ef=Fxv(Vl`}cxQqohRod=&D}Z6AleRlt6!HR^3A5dy1;cg+ z<1K(>+U@{Xo*v0&x557ilbV(-x(i1MQ%iOGP1xm?*e9*2QP@Pq(w2pNo)U%lXkth( zH`xlo)(e9c7$uc>xW5fSr;PE^*d)Hgpas&QK?_6^{4NYyA_ELs%m9N{rVM5aFlaG@ zwtBL?rqKdUFo;Mqokm=91y?xB=Z!2jm!dVnk&>sCM;wTgS`cTHcxKA zFh)TaV%TPme%_p>^$qD}%Q3QryfE1zpX^R(GlkI29Q`~wPy%`^RL7s3XfL>$%TpvqRV|fc@v>2v~z89Cd&T-Hp1z9G*HbW&>f#&#KrW@20)C+MQHu2O#3b6Vy&*vHrKkW4AOg%P zIVD&?HPL_*L--Tru*z650YPo0lz2i%5C@wF7>a_%sHG;ou>d+p##oR)1%ZHwzTjzq zB%`T8+{FXNCTk@lC?tm@OldhdAQ(fMV_`&kUyQI&-`C=>yUCGgYYv5Z4y9yb-##zl zNs=8mJ`Ti2K|KYOXo5yWxMbf^Pl4v3LZq{v0;mUetQ?8C`zg^pk{^xdSNfsvhysUM zs6?rZ86Zr?Qic%AA+%p4WXP^ys57ykN@wK~FwBM+j0NLZ#*APf>2$PO2CC%9 z#m6*Is}iT$GMFjDmPMu^D3(>pA*6FuKMSX{V10H!()#RL?kO&$xY*^={49bW;A%QL zj2TM&g0hS7Zj|O|*_psA#44n)CvfP5#8FIor~As!{DDP>tS&EYMFr*hcCm8ad&VrEy$V`f`C zPf&G^tcuH8SSFW;5)&!B;F2vgS7mW67gFZ->@_aCV9P- z&P9~u(n@Kn>0>c8!}eGjyrfh^@X1Kp9&!520$v*15UHhMdn8j3Mn}ZCVsjNRv!H*E z7y9=Ep~01KKyr!~Ul6>C4X|SZrc~h3B3as~8*_rTNANGh_6TkRJeHTcU|Cmr?t)20 z7LGs3Q=XJxUIHDa7^gR0DX-u!;Ao?c!HP~|FD%?w2n1|UeQa4B=)XcvCtV| zcO+$aY~bh)TG=B_vm^al%?}b|h7mC=nlF?M6Sl=;W3$@m+OYWzb1wiUGNlkMQoRMLGdmmTDGXY$9HQ^wy)f>AFtDhA4I1&T z%bNH`#FMf_w+t*;mR%}KbaRe@RmFo*c}oc-gY3QdYg1r2uq&nh9{k{L2K>Q)!{8tI z^1nj>Pa2gCfYe-%O9fKSeJBL4{{+Y=Loj3YD23$^ldF^oY>XQ(0ce*Zw6R>`2!U7- z%F+3}+}{J1oJSHi3WotU@a2C8So#t?q`3LNfzhs%gQZ&B09%frG*(4`DgerI1SPqi z0$!U2|5dvZ4`&HRb)MrSH{miBSSDm@z`9)#xk2f(a9-mQ*@G0qGnYVWz`Bi~sb-0> z6x*f1p1A~41J>=zTu@jB>sLH~$3}arfQeQKEJm_I&tv@E7~!eP-%F96$1&&10G(w# z)xZP(g3Y3}5H?#_zC4P{vcurAl?8`I3+0F*;pc&e@>F10J*ANzFS;GN3YJALj8!n6 zndIojN=UXU36D#VTm*&v7i-zytb-!k|6wUCYb=FeXAiA}l`&FuNHp=Ng)r7du^T)= zE_4WJ;VGw-_rzm8`6qvX$jA8?$gCi=?n;HfLKR5qpQDP@2vk)v7DI_By5_}uDuBD- zy+USuRgh8(e!6P^9R;IJFmE(aiQ?BwfXv(Cyg?UNs3 zf{@?fM~I#picZLH{lU=6aPebnv`fLr#d%EtQ+p}0hFE|_NhlGpp-iw~B}<|fHd3k9 z7$_0nAkbD)T&4wBv;~tdWsqu^?Z_ic#MO)pU?SNuX~B@RO020k+b)h&47p4!oc1bY z-fm%u%(Tk|z+2FtO~!pLp8(89!%V`5W-ZFzNW6s!OJlme@L#6~gjMat`0s1LGM zXHXmUs4xFg1wvPjAaV_)fRg^TQUhg-{dRRvDMGP&=zhC8CLdT8m08tEf29bJk9B=VCUM%Ybk^= z8Fyy5id$_6c*{ee;M9q}kG%FlioGu$`@a~-lV%MI>|vLKM^7x;wb9FAgmk)f>bMwQ z0pI~ZWvgh~J(?X6iSA4E5)pa$86CB`Kjl}Wn1d0JSz2afgatd?Yz#;{TzNzhT<^P{ z^`LDOu(*bVhc9p#*{xdo+!g4V)yNIB;Q&2^2)O2ZBJm3=Gyh zu%%5W`Q2!Z|NgL_FaK z#-7Fm4MPFS3oLPfoAJ{SPpJmPHGMdQ)x(oV`pQf4HyUIKd@ zphG)&X8DKqY8Dz|V=@KO%r4Rpj58z-DDDbDA>8K>AuHj{b6_91+D=54b7@1Squ*c! z8`+|XEdvXL56|8aiiErXD-%01aFYRDgSHr+AV@$L1qIXNOVSqRn1r@n8yX7jpR$}K zoUIn^LuL#RBktz|tqaHp>7BCxeHCU&WM!;%^a5**Kr|;6YjR&iqH}W zTqhG4MTX!GO9-7>ydsz59boiPjMr6MbOsd3Pewo-xA=td8*{H|R?)1)u#8yrm}gc& z%YrA!zC$_ukeMY#RsE3Qddf)-E!9t8t({09ukbUniu9q#FD z#|%*oYlm!@JV^4izhh26+QL|*&18{;2Ks3PwZmxPoe|4d2Jn&}7{bc}lClP(YyFG+ zBm!mr)9WEXU4$c+6oie!kAp52U{&txlFQO<5fcO{m}?9|BoJf=HG=z+G($Vi$YEAS z8w*4ZBjI7xjA~>~+91X?i))_E>M%V6LqloxSd}0c3l9oggvV#-d^NNgMqBP{Y~&vfN$7<6$mm(UMm-6uBBG)BN^uw&+?G65Q4Y_ z@Iqp3#6a@c!rITWdXlf$PQtr}svH|L(uM}3l9_c~XjTPzg=qcgLep=jL5t1&~aI2kyUEpS+P^ve$1haC?&J6chk>_d>$NgWQ3k zDHc~O`i8;n<2TpyS#fkpN0RCpBMDDY?%QH!;Dn&KaF@OcxE2vr5iE`nnm|-I8~uNa zqkfObcL9nhwJ3>W<=N%Z5*ZOc?yDL$g_)G-U`Z74lt8tb@#t@?P z_3Lkm9F_R5{~#IO)f}ni|^=^_wB9il9^5DYSrH}Ay zN>q2lZpH#eou<$&>%zD&i{&4?@hjgXmJxe16w8qU%TWw-D8hnzqd87QS)e41llTpQ zS)7EAK+n2^4x%)rn;-#4EYv~B#N!iTnd-$w1$#b(BQSdo*ugMMLSe)?_m3R8#|ruv z4l0s%>6hu$;{G<9z^|1Qr$o2~G$9xRjP}H_-=Ekx4u1>4JxnCD>xd9-O^HJS7f z;T}W^0SyP5%m@QhFry$P0>qSlUDF(PhX}k?oOEx|5W6-r{skA$glkPCqPt>d3!IC{ zm|$|~hL|n}DY7*oFZ?12(;yuu7I0D~LN^L707N3tE%N40a{nX|N&biR+wCDA48y6g zZK7y4P?-pi6-gRHZA5hDYO*NHMTz~8gF?vIPy&u30h<*^v0^qy%%BC_;Ls6acZ&7U z2(I_KW0!{QXCwT8oC_H|11AI?&eI@}CpeQM<=iF<3r^ff?RQX@r3vw`kYVM9)O%xMDrzXUv%xY=%HOF%7z7i3$?K&a9}WDad@VARFxIQkg@; zT^M0Gotha@*!8i^Ayzr8bOxP-@Co~`p$q~b!j;KAypi1rsz`0Ih-eW}*JAwFGLA|Q zM9~q9NrO_xp^!ku6c(6A3e|2AbtkPmJLu}hBmJjhX>e#iKsW4&r49-HTq#=mNXQ3C zRHD$s9CvLq<_%8lATzl+o~C#s#u?3C>i>>dbFyv?nr|sWvVw^5@Y2MpOmL%L5V9(8kGPnFM_=Q&C-l zMf3!Ps8+zV38)o>szNYcL-D}CeWAMpS9J?|ihf$CSo?{>dN~NC=JgQ3nISn-oW@Xu z3V?N-4cYSqBc)?#shD%_>E!)*!NwZS?1~MlOkPY0h=415(U<)Ai1ow<(lIqK1h4=y z;taBEet`za1;~j0i30AWq$iFzzviF-YO8F?pXg}DCrG{g$L;=>jS~z;;9fXkD}jA3 zash1MmghbueHU}jVQ$Lw=%vkFUGg!`30shHj;wXyR^G$#EYtA5 z06QDar3J4Ht4d}LT`g|Uz|mi8br80=el(SXA-J5}4B-}0O_9O>kyt|(C?S93)uO!A zf!=kzC82PV`xCYR>@mJD{=rF7L18k?GNShbC0+{Z=mf|`aB;AAfhDoYlGL76cY)%J zL8RyEsCTRY`OU$2ch5Bt?$nl?qO<`2G71#_T zJKk*w1d6Fa64)cj4mH^=Gf8z?jU*z9PuLyv9{3@{1hU|Jp^1L-wgehwR#|`*I3(h6 zBOmLE$HI7Of+XBZZr92uxi^cs2Vz!8(eXio<+!kd3!24FOQ1^u!P0WDH2~vDMXa%= z79t&ku^MxTYPbN)z*9Axz_5bvkY!K`B>%*D3qiMJ@}yg$P7@jdt5zZj88orcwZiAc zO#b{!G1gkhJXAhb#p7W4SRRkK2sa)-_o$)4Jr|-SULa8yiF++%b|sSBL&XdLe|!Z7 zelV{$yx8=U@mLj*dlUQsv<;9Kw@e5u6CK#P3y%LO3&T;^%D$WZcbG~9QARr=6hu+( z3tVcDm;8=5R@@3xp~`g8t9V-jFZRynvLX6vSaFz(+<=Ra7y@1;^Tf#vsd^J5ae~;z zSOTgy;})ab$sUW4Glc3*){&L&Exb|s9KkjmiB3W9Z_)q`YYWD*^+NRyUE2JwP6}0R9al4|a~| zLQ{Uin47ylH_IYtZid#!^$2P~triYoviR`q6&Td3%uGTUMXvl2>uSQSpTI;RfM6oX@!$LF_45I!$97RQ6vG2 zngn)5ME;;=HDpA&%cCbSL6MtzWBL3K&<*ub7UbsQumHM|RnWqI z^P@z2=I>}SZ3(bYvBm&1@5P{GI zg%AO|ii#w+Hi-a-iLxXDHf#_=@hF789CWf6UmlL+W7m` zZBmx2+xY*^>V_`;i`C7NX?3$%tN|`KRm^19f0qlIEc5TUV94qQ9RRLt`j1vOs`LNF z>h{;{E^Kwn%iQQ$n`aPPX{qxl?z}SMT-y;}X0Ppui zmm>ps|F1B%{{ZiTu{pvFijq10y;MW<4i$0aX8&NB`)dvshIfO5h2T|iGPjA>OdQO> ztJnkwR;oucDat>gQcagfN;Lsq6~t@SyoxGZxiFp2gjY)ESxGfa|N8~Y`X5WHVsrnW z;gy@5e}PvJ-CwLsVR$8dQj`tO*KoW-{0bFMvcxNO$XQ9N?DapzD~~=(`VI&p#7EX^ z5R{LZ*C5e_+}sI>J&SaHVYl)dsuhw0-moJQ>H@K6!xW)7Pd5rgA`)g*YE_W0u%O0D z#$FUF3oW%~W(8X>Z1S`(xNWXxdjpS9rNrYWW7P7%zO0NbwmPpcLNfP)uZSnm7c~vk zN#P&t)#UyZEuz9eXZaWfH#+>d-Ki7?rCu&pjs+#t13T0N3ot|#0529kwF%0Cf@sO& zo=S!b`vtyIgQ8foyD&CW4SHxYI;!PDO_|l83WSTq(N{O!|HJ>o+Dbx?lQ=SMcG|{q zHwILt^^s0K8eD$4lI;0I*10ta)_r0 z+zpNw;K|*PJ{nF@-q6)y_YI96Xfz^)+jk*}60_tSHlZ})FI7CKnHMLz2N9-1X(!w# zp~j%546rr2j(&49Wfxa*zQ-Lmn*!L~cStHAEgKXQawM)6LG4Va<(^2l5MNq2`c;D{(B*TY%QmCSMje2<06jI!cC(MBKFmmi z7K=}4mm@bD!(iminb4+61uy45kPO2se!$6Ma{xFX52~D_5|{sZ>(s{4i?(TlP>)bj zC1xC2J7~n#L5KPdN^4587xjmC(<%~$CPJugjoyQlS*@)w;VjhQqO6d~B&-9R1mtAu z9&OrTVBjvHrG@Dq-GU%NW5V|mURT@y|K4i2>nclcHJb)%2UbAHxRry9(mg>;C?JHZ z7yfYsH2i@{4VaF#1}9~u(CH;?*)vEgk_TByy|&u4EFhRMCpp>+8WXtU32HHn1eluS zREp>m{!x@NMN07CdRxW3rZ*io2?W)U8kPGS@mUhWdfP(e^x&Gkkh=#4gF znymNpJ0bOEovJv|^{Bp?YKA9vNK>xW;h=R$ekYo@gX?g)vh(scyOxTz%c@!_5gZGuVhj{cK1v^~^eikB0T@g3 zxqSeg0kRHisachY1;yfeLHhjIglfz(6S9gW(V6PC%+x+e2G!X+;=*g-=^=kLZNyZL zr?B=zSkFNg&$$LU;7w-h=MWZV)CbB)bu%cEl_Hb4n31UG7hH{$>a~ksM8{&-B`e$$ zF$#3E?@U|+hcI8A;3A2iE-=I64mbEDSW~n)A7jl)s%Wu1Xb3^Zi;1h7d0XWd(Ob?(&nA&Qid!KFQ zRbKcgqLx^-V|WFm#N~a=fGlF1Vz{{bOUgPBykRAH#5im?WQKx9Co_-I=!R2R&VzlO zkg2b{Dn_)=}gNEUQIC<;3YK7aSm=G4}Ct)%5 zI|;C-p*D*~%7Ac#?~0`(;6`yw^jTXbrfV^6$lVa|qKr)dkELz0FIGHc9zN`vJvCc5 zdXnL*JO?b&tV!8944W9MT{zSt$eV)?if}T9R&AXL@j@ghZ@WH%W z*&^OT?pC&Hc0iPh0O1|2S@Fj0Bg&W;A#=1r4`~ZDd(uHZBnu3^GK*Oz(5jgrE5Yr{ zkzM5l%urAYpC?nK#qQ|8B+tJCo@GJ^(6I}*7oZhF5T_Y_aCxeRyO#I}(OC%6!9mK+aIX80)CmfOmgkb>6{R#PTL0JrHaSgyqcui+w%UQ*>3=;dg;HBxeKa4`jjFt#tkJ+Y$xpjt)jIXn;@%s+yn zjO`D$DA>Nz?Za?j5!+{hLg5;ZWD)qy{A#xYD5NToxNx9G8$_Bm)=n3B>^4pR9Bl-h z=1dWaLQ!?hAoPkOzzQNUMg~BXqFT^>Me8UWWwY8u8$)p4E%9vUYJ(;!T1S9~C{8iF zU^ACSgf>G@Wa%MDq=A?s#pWI>unocF*hz7c53NR_N$Q^I7S3$<~E*T0^p|rf2WOfOW~ZrS(loYs`ydpe;_h*ca3jQq3}oe zPJv9YO*cvG-~Ni#I9q}IFv{2+&WOmU=onXQT(<1)96594&XYG^evpX#L;n{?HU~3O zy8-|iTiY5zb(jVPoG~Fmq>Pjaj~z?A<>OTxl7%G2GbLp#A2NZSFLu7&T4}u566trc z%vRk7LL`@|g@HnmNBsp72@pcVIi$qCsw04i?L=2I=WI!T0rw2Qu_qhpCntLXCd5ZE8cYPNKO;DDGHN={P>T9tbszyfLUHy@_7`K7AOO$=Rp4u& zpK*m_3jz-y8WR;>s+*-s;#-a+u25_N_EoM6;-kopCoBZ!_2zK}W3jN=h?tQx&=oDe zTPO36E5Hy9BK=#DUdTw#ADh=mUnSBD8tM6B^BC!eM0x=uJ#TDoBmGa29&4oM;dM@; z{(&>uZZ0D|H}8cK>0`pubH(N`(!Uky*^K--V{uJ`$p2GVdX88jabsMoMY`FpI~F&y zi2U2a@@MD0ZzBD0Sb8>uXq4&aMY`F~xL7FCMgG)T?7sElJZYV^~^vkxNw zUXh;LNRN>hp`)MYM0!;tJ({N)ME*(Nvi|Z$dKAN7iu8>ly@Zh-2^RyIeo3U8@Zoj0 zGX1_tH~TNHMi=#r{Eqb(HtG?9_C)$zk#5ifb!x(1MtP3XyFpk+Day=Za^kZnY;Xq) z-p*mp3Z5w^tensxDb$0&EezzZjg=Dy(+Ks`8L+*0q5?8xPH>WgS)LO8!|EV-gx&p{ z5LyDe3X#c})aV90X!uVPL$hzwE}5ErgY$trNLN*VrQpg?$ z3s|N-&ga(P8U^vyDc2~$AspPxa2=KME2`q^fSwBpN(eA`16RcHB=A7fY26eZLG3(P z!Q~#J9hnhsP}P3s2|E^XO8J0Q(wkD7^ASF{XOK}?T=2k#gyddojNqMMA0Z~$%s!%* z=9bIG&cy;ZRzMjRop}QE0?Ohahg(2{G5{-H#m}UWfc&Ip)dX=ZswIp6oE=2j`GPB> z)<9v!;>v{%liQ(r*%IKM!%Pc|Bj{+pOmu*aVh|`vn-8g&eo&}7^yI7*N`VFeXf{Gs z0=B)boJIpIXn1}Gtud3R)v-dWqvbZe!4sjipkBu&c3?<%aw)afR&4x|N|}lQVX--R zmU1BWE&zao-}*thBd_k&sMA5zf=qfEJM}3#(00lAUB5+{hk-7=d4g`5y;)CUT zD!#;%7LX%(SW5_w>7SC)p;P3qDL4iWT!y7`0P+vxghWEyz!Mob!lc-tuAxW^-3K>Z zazqH3$0+|CL)NMoAzna8jKM(>V20OeNO%ynfX71`Dr_pWEc=VHI8!BH$r~Mc7#O+> zD7&D$a3bP@tj|e2q9MDM2ea)FHNoXau^UD*_5y4R`iv}FeMG8xSTziGmrT81kV1eF zgzs<+VkCQkc#;dRF@Xjxw-l#AF5*in@F#9{#o4t0xqyO9a=|$~Q%m)*3Q&*>9Q7o* zAa>VZtN7RsiNqim#Ml6>!ZGUqKrTdXD8Ybs<*h-2U_d@{ObB*q5{#jP%tZM_9?om= zTu}sxMI55z96&_VhsMp7FL=}rJ27N22t#PM7`TIk#`_jP7|5PA)jtBu|AHcnIb*|B zFk-%lv)UpGmtBc8(Wz1KC#f?x^oUuv3f}*Zsq@!d5!5u>``f{n0tXaAcD}aXKz59x zjsGGCa;wk#c|17h=!pchaB~gL&VuQ)W17_ifdn%vd)MGmFq0c({R`@}@cblCd}4LN z3(DIN*Br}HB363-7nP=funXa|n{6-xv_$hxAi)*Tegy90f#}zF}246wx^Pxn!XNvOJ=NkvIX%KLup1i!R6w+0MHfYKV$y#pNc>ns|><#1WXbml* z3)wrePf6Zv9gU9Q1_nOY3PN?*%jOpp~TJ|oY;TRz^14Nv0==7 zsnbL9abT!6CefK{m^)%-!rozli*Ppgw*pkLm@=Yw=!7^Z3!`b!mNY4}Hg*to!6Ic8 zp6iXKLBox!7et3ySD+&!LW^>=O4MBRmp7G|ZO2g@<=iD{RJ6?DaWk4bKw;QpCRpY% z0dxy0#_dYbNrT_uvSf3p>7gLuP&x79&>=(vf(Q`j0r+slm0!Su-H9=&UPw;-!4(o* zVW6_eu0%Az%7P$1Gqs+y2RUbUe41C=$C1s{Q)0WKYMSTb=jo01)@H5zj* zMxJzJ3j&7j#0(2+Mf&yn&&E^H9aIJb~xX7-A!v)8i!upXO+K)i*wuYuc zhlQoE8Rx?D>`?b^UB!(!xP5G3(?Yl*OEj!GpXPHcI$TJs1CGYs=5iz zseua*j zYqWf&oQJn4`8MY$?#{Akk>YJ>+EaXq5HH^hi{Oh>yuc907l(K`8Odk6cs?f5ZJHH> ziGHb&2RmZ$yat#6;Jg$>V|mVBP;qupS(KK8#sffucm8RJn`05r2*U1^&%gmW3FeKl z9t(+0iKs8me_&37UO9J>FA0$Y_-I^z81-x%)_hKUn6SLqddwy#!sUdR-dOIV(IXU( zgV};JG{XIz_$>HDtf}EZ@BwV0|dKSGq^Pd9n}ao>Iq<=T|>~~;dN9uFI})|lxYZT z#&U!L3bsH4L&?3(sfB*U%6_r`fqo$(zW@M<1nXER@0t)=Tmh0p_Rv8seu$NFXy||f zy_gW5$|VE)q&eZK2D{vtWop1%InT>-uZlSb3oP6QfO0Hl)P3U@dv5%~ z&d{B79-D07PnbLS3A^NP(rwmYUe#?>zCdZAqx_43!OH-C7&_$2D(nN!wl z`e~W(MmrE}=)Bkzs&Bl^>b_EUz=~ii1pu&8e9i{-BJC`bS^g~$1Fx(j1YlDNR8O6n_>I-Nt%qru|t4|1Q&8{ zzD-yg5k?yk0y$W_*veL;l?b*H8E6I71X{r-*^0O*$Y>=Zpcrut1V|X8#%ZgK?qXXc zxvf0di$;Ws2|rkwFoDot;1k?7^-O!rk;3bp{)<8^9saLjUt%0I>mh11$U})_sR5 z9xJd)s}EX7-C@SLPGP_f(_ay`=sAc)3{f+z+JHYvWG7KT$XLXoWZLdf%g3bo0Z(UeEVVnmrGZBO6!+#0U z5<;2jwDo_BPC-MDq|W)apnErFmqX4jVlene*lfWhxypmKSs8;*(7*_dT4pC426>{3 zfmT}cFQDo$S_Ugn9F;9m47Y&KWK`fnd;rU&lm~60pcf~0PZljB4Fv_tHAX!{t7dPM z$ZQU~#cBoL0ekEz4atZDgb-bf3PX9Z_|v@ZPb?GQ_2Twp`evBQWop6|J0pkUNAuI3 z>ek6Kpn?WLyMGqM1x^N?CD|FS;Sl3QSW)Uj+ZujZ=)C|0_#Gw(s1#EpVBr_8^ZdYx z#3dSAAkaG439b?aJxgkavYx6#lj((pq-__5d;={4u4JtttBwGnGq4`m!b6x!Py?jq zqA8jV0>d@SD)_Mp-rz45UZMrpq%yp$9od{#TNFZ0*gaN^-7W*nMkCz;z}Yn~1IyYG zSQdx09}&0}I}9t#Q`k;esaAl86F2n{_(8Bg3w|I%TJZz*W|Z`P0`jfsyU?$92!n`I z5~{flhp&;DR$@nZ5Z%9BjWdN$-A95jW2zpUOOl4kS0s*c+MGevSy+?>=$Apr=_0#T zW+!kNwz85Sb&QzH63Dy;Q7R)_0JB(7s+wr96VPyHwWBuoem2P(;%z0QBaZ@SW7ffy z5R~e0A7B(4Bw`Wgy~4f@Z558rZeo8Iiu%@Xu@VZ94HdY*lT-X z%Zyi|W|FxG`vW0IX-hU9PBCIkEEbRB4CK9{4x9$6Z4@vfYjemrJ!Z}clUN5C0f1#! z`vv8wplh6DDPVB!jWEK32uKFtTVN;_ct!Kq7V5)7$E+|P7Klt)`mpfG6DECbKB~~RSZkOa*zRcyo6`4xhVT!;JLLE0^USy=HZG>jX9YW zt81^#>NK|ysn#rJG8-)n`N7>4gRyH$SBOC9s{5RvFX{h@VR%4QSPAX50ehSwq*1n# zwui))y(^r{V;UC1wg569s(?=;1Ue`TJrVeE^aPP`;UX(ch4V6b0uF;3U~p<5%KceK z_Y$K;3;~18y2a}M4;tj|Ak}JeWyWu1N3|c=!+^;7aMBYJp@Iw2EzF|bT?-;K0#@u@ zV?IAbl7H=665@CwSt${e-#weap-@WDc=?Y)^o!HSBqMxI1$h(|Vj?p+0!KcHO~aSb zVL=`jDsf-n!f)XTpU|+;R%2-rjnF5Ac(4Z;KKO?to6SP0-X3R@z9=3WBqU)8wS#hy z18$b&445e_jMX0a70UwUY4k-K%gH6Xh%B*u0$+rf;l3z4g*=$q7`<6y&fk^z$QHI- zIpr`ktO)V8o14%ab}tn6#j_j^_9e7Ma?MEHj2y5h@Qo42pEH_Zi+({+Y)_UTbDxvH@eko29E>=TezNA8V2_PI zP|ijnCGm$6uniIds=~C#sIi38-BkfEV7fePT0Th|LZ?Z{xARG?1@TS9dZQqZFzcci zy~Gqod*dNo$ipHP&JYk^I1SN&6qHdy5)1Uq;>iw8DENt$?LxI-F7)UDL&w=5*z(jY zWh1(ggR&J+j{p=&jx8Bg!g#wxppKhPtn3&Iq;^R#t~n5LgByjQ;FC2}(1IKx7+?@8 z@C6p>(!&=gTP0KsA1Fe_=#5vlPLR002qRA3iBBRG8+HMbu-B+~0~X%AJ?G?aJ*EEE^pz4k149;j-H!5D2O7i=@KERipzepBa zir@(jWCN06RdC%1nP|{M*d*LUDG#t9{{UL4@+>>SLO1aL-@kQXUN{th3PWXR!b93l zfZO1iqO8ubV&VXVK|mWie~6%u05rKQJ_b(9ASYqX*H29sZORTv%vmGj8e~qyl(GbmUrT}v z9MC2~J}dYWfrMeweNQNGsdf>^>a3lpXxV`IiBp%U{57pd+A@&}yG>}Sh@tOr-zM{O z&9eZ^%DvXw zSl6`vR3KSB;Mr1%1i^ua)v#2_2TH*16tC5NpM4+#P&=JD!9YnmNicU}5~DbU98 z86Pt4AAS!VcPigBj~1S4!YDk|%)65-O8|0aYDOsJ%3`)E76A$>(KR#Ew9v+p!Ipx{ ztVGr*WJ51aJcPCUkrRq)jGf0>FgWU-VO|jXAPkkNW*&O7+6@Ll=!X6w8B)Q>B^b5f z%nT$)1CLN!yHnE$O_&*lL}bzWboC;dcSD$&X?ua~AE!wpp`s?1;eFIFj)A5TV;ga; z6(@9-JkNu#AFmrDGM6blDI(13MS`9zk6l#0(`O!2nh9 zt@1;P!7PUYIF5`W;xM6AVi8l^Yz6!K4F90J;@sJ`)iKBH;{;*x3kTnUAu^cGK zD58)v*a2n1OvRJM1yeDC1)w%N$XM*fBv%CGcEl;xxr2cLJ0HA`A!#09Lvai-n2<~# z;=w5~d7R2hVFHbS0lVf!IO)=C?eDEi|Ccd6FqzUslQDgPE&FQRsR;V84x{ITUNwf}u!-{Wk8oZmL@Pam? z`4df?%igng`ptonH>YAlv5RQYd`JbSu=nfh!Hy-7gU1}W_l{rN!^dn5QG1X?K zCR*XpM_)VUZ_dGre*k0%%@`rNXa#Q37rc04M1R@m)czhUB8E>2yki1jbVx7)sO%x8 z1-eIE(wPudqIY8Ait!nc76UapiLQr1*G8}cO#$e#QR*eIqk)Rhr`UVL`Y{mEDgr?KGnM_(s|c?LImd z)_oWI4e$iIuh={;IFrE%P{HKqo&!8kObyVe;*ygDdR`K3K&a-?!H1>^AVBy63hse| zX^K&C`Wgcjq7LIBGbK>ha@uc6qL}ZvMHh2Y?v%lk5eonl-;2GL6Q5yt5+4;@)`7JW zYZaI>wJF>(V&HcC&@CQIFav*~D-KRTa2%|a5Z_P*%vM+lQ75Z{_Z)n;up&abiO}+Q zC03a`hMPM`FLYT&Dz5({6JwKb-&JfqhI4Lx`f zstg@H;1AnADNT0600CSGBnSkc0R$i^6A;M$9|D3wX%7Pd<2NadkjR44D3J$O_W@&27I229~5*G?Vh^0CZ zguxyd1QV=^=|O_AxE5OtvvZIhg=#E_20$fr!lP150jW35Vu}kHj)X2K90b96LgV>| z1Ja_BJvI~vGayJp<|tr6vd7}dQY8A&>Gp727FQ$mTC>Pjkl$7t^2N%nyrV1!YuJT{!_kTDK0w8??`r+T1y!#2@KxU>}GwoI7{ow`js zx}+pX1_v*|KYsE$ktO|pVucgFDfsr_0b;C7Tt5DRJxRC=TGN&Ws+i;joa^?i)%)>_ zPn>yb3Trgmt37Ed7N%fAx^D{Z5>lWeoq}}ygHOo)&6@YNMvq_Vn^JfFd&7&Y?z+)8 zX-Zwk?JviT8@CUS$S?ENeO^7B^YRMhJ7oWTOzWrDGT*DCy`Pt8xSfxqU*vzs@i+

)JcsQWX4vQE~BeyGWA!X83{`54g;f|DJPgE)$3c9AIbM)&IjvQ!55@x~b9 zh!WioA0wIzFyPaWv_23-BN^igv#}rNa=$)(DA~I%Zn9Y|f&^R{n`{+d?B1qZ_liAR zcJJM?Vue;MyS3|Fv0aChimlqWY1OfFkCg5eJGE)qEunksjtSkmC$wt&c-uBrs#mJf zvTd76?^LT=u|}(^HQuRGEs&{V_in8!w(6Xm+@@7Zht8e4SM1TLbGO!Qy0vNDqI;W^ z3f;PYo9MQ@1+p6F0HeUK`TiN+OX0n!L2_377Q^3`N=lC|$!(O*ZI$jF-fyE+$&^PC zdAhgh+M`XUR&Ba>Y167x%Xiy!@BQvOos&DX>fEVYo3>~jp8^jp+PCc9zIB^c9o}u3 z+&!gpO3UPyJzI82Zuw4fn|C{Odbj0!77yx-#b0zu^szX8OW<#4-%4hBXWvWXFU#<6 zJpPu!-zej~EPg}Fm%}^%YnhVL=G`tSN=j#?dyjWgy0vVTqV(#J(q8G@vrV_Q$(?)2 zY=M76^0#c=Iy`HKPCZ*DcWABP-yUshDwd5_w)!tVHJSDV zy>{*f`V@5E2GHrysdbz8lv)aa@wU?P9iXGU(!I0tHr^Fgsq{AbJ`-c_fZw+GTN!^F ziXxaaq}F#j_vqBRyD_xZZ5|q2NcnDfjt+S*1laLCi^3`G+bE!FNhjS?fQt$iOP^=m zq7OOj77Jd@a=|9EC}oz(gEFLVa~^Jpun2sH(kd?C4t)1U%I{|W1mit4KV$$)Hvfwc zexJ6?KO-h1+5gNe{}b&mZ2qMEIDh$%9zWW?)@S~%EnaVQt;8U|vigsYe;wS<|8n~k z$_F`n`4jrTTk}tx z^j(Sjy=(jHzEN{}?~hc!bLN_#9=uV@U)`fe4d__YpDkOnRo!RT@SlwDcA;i%ps z8%(J;^KpN*BFFoyuU7R>EZ?cq;P}Vkxe&179PnXPD*}u5zyS2QfEBP0F zf3{AUuPgXZeYL&U<8cZ84;D>&qwrVd{3Cs(SN&P1tiOKW3n@=H%lPjtuX1JL!P5R& zr&>H#dR-}hqfswhjb2mIU%1kmrVDnK@V|Iz(cpPkiu;E&sxy2^(c=CWBI>5;FMIv! z#hZ)1p5XC+Q~8@xz0N8A=r`Z^sms%fzs|fP=ZC*g%>Vqp6DK||SJZzZV$h(4xr+GL zem{Ba(wM^j%3qWj`F-|6{!2Sj{ut{i=&!bD{^y_h3iw}mFs|Ajsa&#(M3#{aA`>zUWwG5+b19d2Ig9PPj0t9(h_73ClE^p*Y(d{O?? z?`~bVJU`OEbj>d{_mznBe^I;S?hhtL`0G4Zq|?;G5&mA|`Y$T{jnltjd&lBGm2~>I zwrzE^?gEGZ=T9#T9oB!bcxud@wZ}UI9 ztlpb5pRoCB4z7~;`2nlHN4X{So=>&Lu=M^t{rQm(iWca0Pfr+l z?bZ6H@9HDE)f``{^ZmsX=qiStAHR<$i{i}POH(R^i)-y&g zZ`u3aExl-gW7E%ldQ1OxYRwf|kz0DkPfM=0Sa?(aDsQ3w6&u{t4|bk1b=;9Z_2t7J z3?I_>PrdiYi;^rt@Z!*6y>_TSK7F0ydLv=%q?(dP;*_``8S|Gn*)pK8vzuBTib zx8}PSuj@VU#U&T9Uf0i09Jt}Fy82`JtNN`0i5DhiT+#F0__%w~iC6S@+Em$9{M9RZ#PXI~r{}q%pZhlZ z$K!Tf)=M0nG3eT;%X;(8e|$IRh0FTLYb&b%oaeG$btBBC^L%y)Np{zqRaxuCW*OyH#c+H<@}tzul_o z^(Sgw(0fH&pDe%UygsPryictggVeFNi@tPDPw$bC z*#7oe{q~U`EyXW8#EK{t(S$+KK6;Zt|pV3Qvob*(O31{?=YyJ82*#>8H&jE*i z?Z#>S<-1EZzdz%&UaDuQbtx~O){oUnS-vm&v|g|9*!+`!JEc#)xh;7`w^RDvS6WYa zyv!;66IY8BSJF@FM^~p-y)y2k9>1`{hvl1})LW;gzB@kqNqwaMovT$hp3qzLTjRU_ z@d>@dzB3DUHaMYgi(IsGW7G+KLg(mqd)6P<%a?4~^unjd_1<4rndW-#xISP1;+rzL zj_VKdWXw$5o1sr|c4*jaVuqe?dC_W3+hpi7diAPXGa*B7pR-D*m>b7*Z@!va^rgpi zN7Yf&8h&z2A8&2gc>as{9oEZt%5zMA^67?!E?qdPFE|=IW`+N#?mY9%z}G)Lsvqln zW806f9o28;?EUH1vPbprS6O#VyK_XJetlj>#Z5=_F_*XI?)1$O{nLh(w!Gf$i2n5S z*T!70cSJw2?z*i;!6SO)i2N&yT};>KPWg7+x2w|iUEi&IbNl#o{mzb}x5so%*Pnm8 zfAX~k>H0iRnbjwibiHen`ArU9Ijq09yT?b-(+}%acU)T8?3Kg%g&A+pnIC&tU$P+1 zRdmH6ecG4rtpD=8L;95L*)Ha*bV#>vD>r%EsXz3?eN#O7r~IKWubQ%H_#1!d1xBqc zax32-`j;7RO@DspLA~(nYu#UtJg67F-n-{?WzWIRu>AUB9 z5BThWKCs5w)y0|}(CxWrT>mWB0sY-l%U{~Ed%s@eWLo3>pZnbpE-5wy$i8>^u~J@4XX6VZhiFn6&sxMcI%yIAAdKw z|8D)61>VB%G~2CL`Qw%08O3+&u9G*0T)weO@0We?fx#Pg=~XT@Z8>G)E&3<`{Z71kw>+j_c?$B2}Sn$)W#XIy@zb??F>WCfs z$)~n7JCL+PU%R`-@^kfe=>AV{lx^qPpJ^-F-(j=F|)Td#LLaJR{Gjo0g|N*}x4rNnx@VYX41 z&)!?7zh{lFxOC4t-PvLL>jqk+oyLYYC4;*@IWc@{J_46+*ofrApTK&ex_$TrvuhsAQdp79S zaIJoITg1(RrPu1$tM_l4-MLmT7r$)rv&YuxW0&uW*}Hs=p116oVc$(!qhGjQJ!y6S zHF~?9cQ=)8u|{9hKl#j7b&X!(;?%24i>}cxubZG;yT4jLkjpbW`S5BzTdAd6;+L(~ z^KAWXQ|Za8^(`yhC)*ELtzWJ1%-d&Mt=6|qn3y`R-fBJJjy`f>>DBtFV+Rjkjb5$4 zm}mYkDd$${If^yu^4OMDdL6Ce%M}-`(hKx0x2oM2tMt*kT4q1^-YUJr((0o>ePfkg zcIh*7demN}53JhrmvJRl=?k09DfDO5D!qy7sy6KWO8uGEtKWTn`%3+r6NSpQ{As0L zy7o&uzn-vC9})BG9`}Hi`o*&YCjZiIrQZ3w{gb|YW~E-I&9&uD9BeygPc$a{a~pBfeDTFW1W~EBSG&vCH+B9^3K6_79iqUv-%EL~_UF`sdBR zdv4L2`=7k~?d9#yywlY8Qs<-f^2gWr<*TtH+iyoS-}%wiZTs^)<+HmIt3~y%;hQsX zLrm4ukNcFtck;eHp^C4A{ced16Ds-Mc=P#M_bnBC>&th2{P$PO`R=VaF@LX8#@DRG z)~HvWD(!pl;;I&HzAovT)UsQlwU3qXJwBt*;?x^npYr(PpO5|F@!e=v==gH7xgu&R`1LY&LX~Qch2^D|K~!!Z=SAf-~UlTU((M*_BHNOz!%|v zIp3a6`F-E7eQNNH)O^0Eoa4I;oR-&jC8OizX?ybcmcG?}-irKrd>xjptnz-_+`g~6 zr@k;|X)a&YQu7j`is$mZ6H~g~kAPBbrsKPn5x(iK*SVkg zT7>UhL4D@uy%>g`+cr#eU9SC8d;u0oNy_tYl8ZLNLh`Fm=wkM6X&ar>_N zph%_7cc$G{`=9GQ_*T=qseNnimGSfLsP#w9drMQvV!N zbl0Mix74RT>RR+*#!a=Or+ISI={MCYLoQx&w!5h=y*IM<)iO8L0@E)v$$sHa^`k~p z-){E(pX!~i4+<{q{io{g6qQ^``%|so|Hl#EM*pd%Hffjru^l(m>kS9|pnrWsZGWus zXSF)qP-nlFabe!$H`D@MyR?Y4-%yJmY&-MWZP(SViH_BsCtX)7_c(mELznC7tmh^U zsIFaCqXw>1cI3qO=|2vwe*Bs`?7&yQwD|d&+GoV9)lUz-rXE~h_vXpBuc_80Z!c4; zT~k-J-@oYT*lX&`mu?KXbM&e@dC7&Mul{;f{k`6&-CiGcRju7?*W~+2SJgxIou}2h zSJjc9yfQt1(W|QM)c(dpZeCG)oM_qQlO0#oAI847tkC=`>deIz?N5AqMIF?Qy@Y(P4}1Gk%}c5y za`(%-id|B>d|50pxAT&EXjhTdFYUUh9xd>4_9~Mvs*Q_Akiio5@FOUQ``5 z>wmT|>Y`fYi}b!caOaF@6ujkbZcg`fN9C}`z6jATeTIhibOtjLS3-dY9CVkgxav~pu%-xPN;W2`+92i%g5E{ zH@~y1_1@!ZU-k7X>z5u^*FI>cww-xgz53E3%M+g=z00_PTCd~kgRds#?%(3LTHxNB zj?49rtM%t~m@%f(akc65&ot{?0Quc1Z@q6juFkzvuh4TLagQoRy(o?S1mi&qiga%J9TldY=q+;;*0N%-b$QjjUeMHL+QS`u?bWwijw; zs9z_pPOe%yL#>ng+!8HkhT6Jwkbab_2>KjWI4jfYanA*M3pgdFE$JAC^4{kqt@2Fbq-CobuKYLW2ymm?9t$UBE zrEV*E2sHRj)+md!zQ0qw3ys$t_YTJ{o2`wGs*NgKp18EeQT2;+eUE)z`l#yt z`()_pQAgAkg>#L*HQ(sqsqRPAE-%&acW!k=O`YGU?yeV(sJnmj{_s*=luIbR z{A$%B>gzMsdghcoqHe14-mw08kErjio8x~s@`xIHWM})HH`CQ06JBmI?sU4kvBfa& z?)~X%j;Lib%Wq6qtAFYpH{rK*wRO2IKa`xGu2v|u@|U%f($z61_O}}_DqS7kXmkG; z)6&&X@04FzyJx!U-}lkSGV~#F4?c9t4F%kc<#x{ z_`Uk(^hL$fRp%Ga52>9uUF}l!^wNwd^yBq6%cy@IRww_s>6=3b538LT=IZs`io@#6 zCsXTAo^@E=)OzK_6~hm!PcJ)KBwG*s-hKS_fv+D{%NB2W*^_u!o&DBxeNM+8R-5lk z7`HF`VRiBNwkIy%IHayz^Oe2Ip+oB75mQEvTYX5q_x}<19so@(-@b4fy(NJV2rVF8 zdIupQO+cDd5s;Qpqy$3{PC@6?xK~X896brp5qF_TTh$!Wo9mtW> z{_oy*zxUogXWaA4tm$iJ*34Ra$W73YuNoo6V!ZYZ=Z%n9VsZ_x$BmHe?`OVmAdip+ z){K~p*^H2~PpC|)XpfLCH0q`miH(r>DjV+zM!=zth@85Ob z878IQ=JJ`nFif)So_oIj@GxmhUB-NQ+%W08d}5kj0HBY^lbEz0CVhJlnsi-%nAAOb zWNYP`VbVf;s^1-+VbTtsEZdpcArkMF*WK1*L!`&1#ie&14Uv3{%2QqIhe*=MCQ0ry zL!>v=y9{1t4Us5EbTghu50R8C<(nt{hDd4R7S#m1A<{fW6NN14rebXBEn`;J1B{Xrv zdh{S^t%Y{oqlEzypG;TQ{JQ}XJM2rQMc)8P&qOD#{J{W8xT!-<{>lJpq9NJ6v1ov_ zqoZtynms_m@+rpa#|@C~V3OEGw-1o!*e+V)w+xWzFHLyYS`3iFqg-X(v<67quk7_M zkQyLa5B|)UMGugU+;pRbEcKI~%(uM%{;{9*kUaC?_)tITj28P7r}lo*v4oPB(hdEj ztr;Jixi9pS9%$@x<~r6-f(3bb5%>0!?&V0-ZQ9vSy2Ei>^#G-xgt~a4c-*<4w9e_l z=w>tU`&M$}GtGXIor#rT*qVOQ=5^;92>kt|@)k_$FruH-<#F7i?n@uZg0*s}c&v}4 zDY{1N?2|qcSi)XhYw9Cipq4C-UG5|8k(lnQXX(Ek8BOt}Gqj9B=Y>Uu(t{&HWB;tw1BA@DM}QxS>l+4iOZ3R!S&$(mC&&bZ-2nMu!CM44 zNGC(1_yYy3x1TTFKgc_PO7jk)hLTs&2>?IODvbXN7FxkB;l5GyASw;0=g34~f1qlO zlqA}RgVIug&JrkS{e8oM3k@aGgM8_d<}pAMO9!OE;SoR|2GoxJ6k-?!q(CMD{VNgZ znWG>TUnHcjVwM@Go*3#v3!sh#QGrTywcczwr2rZ=jA-p-Z>RE`>d%TU8igK33tv`( z5~COjPX@j1a_)?_T5b;_nM#Qam!mW419Y%tN(41Bm>x-|L_{uAK#c`7rrw~!P?LKH zlOyT0D4?RXf~vLJzuajWOx0zip#&Nx3hD#ZkEsJzT~$}DmAX>Hy_dTvfI?Z74M4x! zMSq2Mr3QaQ`PcIQF5+^rwEid-?CDCmoL4IngCmKM0ya22n7*umCEG7|Dlr=BD>9iv z#uL#npz4E(gEuF5ZwRGPe95syN=$GhJyP=D*@I3E0UA?kbU1~^;1Nh`z05LzfuQ7R zlrW%Ng?N&gM?A;_(!bk5I&puX3STY^L>vHVRsS2gEhqj*hX3_qlBq=JjpmYnj6FwC z9&O;5V-dm|R$*u0mt2KifFH77VA9ioUvCwT2Y$$2fEk_u{KQo_3iv%&;hn$_@e`9C zvI_tg(fxsAfnVb<7#i11dPo-!)XK0w^*duEu5_dy1$5IY4p?Efa7y&Qu-OU$=uhvJ z4*KWev_iMs6aOVrdLYFcm|}nd`H$msB|#?De;mszw0_Wx@E=oKJx~4%C72xO0l_hU zANA_Y;RV`PV-1=y_x_$S7*p@^oWhs}y+Oel@Q=PJSm~R;r>x0LIWh~R3-$j>g#zec z+K8lv?xc7FTY&ILF#rEcssBR+Fzh2}!8?Hw!EZh(Tqz5U5(ox1%@?xb@uq@#9;_Yy zlmNQ2x{8{UoB0N3vM=4&0NBt3QdA>%2Cj_>3ssWQGzDJb&R|Nk2{pz@PK~HWR99m- zIbbpp8fqjLP7SBX5dm>{q>)?@ogQJJsu~>~trD%NLZt<&YN)BHLCML@KK>2Iy>1o*Lfw#7<4pB!< zMO|GJg#S7Ef4u;zfy*rhmd40sAJk3`P^$!kX8CiY{ja)4TZh>rE7e}+Pbw|UNRHtR z1^gzj25OxdgKTf0xla=~AZ^inX|bw6 z5~2Dtw`!Wa}_-Gbx{NE!+!QfM?P4F;|0&;!l0kbT(S%MuU<*}!?qp<$3* zL05E<7qsl^h)F z4Q$7Jq09iy9S~O%yzPL4?23FNfy4w2Y+?XI(lQ`Y$dpjJFOg(KgxZx!Z?i%ViV1_{ z#8%+CfDk|g2^sSsVM%E~!cpPqkNIS=`!0glr;1){9DJTA@5lymVa*JfKa*yup(4tOp=tq zSXDC3H;@_*wYanb8r(_^S_3$!y_xtY@Iz}d6T<!1hBo zZ_n36FMao7(3^8QA`qr5^R&(cCxl(hS^UkRsEbPVa>+C^7K2{KovpoqLKz7PJ`nb)_Qy z7^l`J?FB;y&c3Xz_$yHFvcrNI1Fu`({ABc5Yg)*H4FfkkeoBxt8-9?!;LN~B+hlHZ zoDMl$wBX6WX(fK~(xH`u4GUxj{yyN%vn8P7?DK_C2A2JNZ{+Zgv9F&N=nQ-C>@SxjSKC$+m;K1(;-)-Pr;u#0TN!K`$GIFdSCc)VX=~dI}6U|9F8!%et)r+fkSY7jX$Q@ z_m3{#WZJ%55>c?}7_Zhe{ad%hq*!trFOOF_sb=_LU`)JQ`m8EA4{Pa*{@NsGB za;v2w2IhSTOZ`%}cfo&YoPpmHFo($OuWu$SePG~684gsAM>n&MFMVTRC5rIa7JPm8 zm8E$GhWZ@L7KI&4zb688$+OAHC1}Qj9>2;5?_;Wvj2Q;Za~yd;V)WN1i!)|p80-p; zt!;Nl{vExQU2}xzyWJfc2{}$MB}VL^q_-94^qxEqTbX^$rB2{wCCU80fr-#JX?vCO3;t7vq;Ao-Y zSa8r#8x2om;HC!!9*6dL>^TI_Vqhb$qpc5|v|B6Tc?^7|DF3Htt>TduI3$U|V6VK3 zj^8?MG4c|Aj)7&e^ar(?3QFeTl??28`q)|8iRSNuh*}2jxc%1Isd1=Y9dVO^$2LfP z!GE34utD5s;F1{6rv)9vM*)aO3_R*2x%=x@!DGpYXAEqhCXqi>S2R|D7-Ha~S6+EK zb@!jYiWp~LL$k7T{c#1qx)2{27;Sd0%*JNtjrWLe3`{6AzWOPoJOJ>_t3j?$7Ahj5H!?mo!lX%T%14u&#z990d_Ryg4 zsTrgh1NTRdHiS1Geb0xoVc>sUKmRtj2hxHgqm~y_RWxHy&k15fcF(KMZ^*$rgUJ-4 zUo3GKg+_%cw?b5<;@I#1;Qb@fQdf= zY`qFUTEYLZox-SO&^Rh;Dt}+eK!rTiyueE4=P9S=DF>5RLo@7+Z-G3ZaxgK(tq@jT zYv*eh93G(dk4dQj>uY%hNKOHE`oRA?ej+F*wBCVZDCj67!j~3F0oz$RB@pb47>7oT zHid+6Aki@`-O0h=TZiRC1wgzK2qY*!5Q$Eu5<|f`6$Lto3V`Ila3USTz*s*vg0hM# z5`0Mj&b|HvRWvmUSls(j7@Pq~mf*Z4Tp3~$Mp}PsTp%Z^t~9C&=x=p23{(#WEa7R? zXmd!`T=v>V(HRJY6%|0Ii!c~#{<1AU^Bv(E9_$|iNvU+A0bnF82GufO83O;Znfsq? z)(yZB9tE;{CxQ(k(GMKoL3o)E`~o6rK!5lQ$bsOE1@G0exDmicM!!1`*vkjdi9{N- zZ}VA^H#vzQ^#Hm7_(Fy8y8%ed6{H2#AOO7a;2jU%5a0eeCKP2QE(l}BDO!nJy%L8R zm)Ry9piQ9mgUZPb911uRaO;6H295|lyNOERA5LPtyga8`%s=)B=yJv!fY)5!;|GJd zP+5Q1mMKpw`bW`dfa%rsnY8a##@*_++5qC30A~tZI_P5&@YV)&5Fdk$@c-yxrq>4s zmBgy_ML?qxR$&2vr2v*!0LKV`*TFXhG>Fxqj~|FDY_S{yacv~{{)6!?4&V;PCn7LT ztz{k%1#c*wWm-x&bn*+O;Q)Sz`jr{JoWgP#BQJ2i2>1iyG7yOYU=bjWAc(UEyrH&; zq(*_Whn37%at5;ibe_XFw*=cXf3SfErz*kW%X_osT$rTiKsq>(&UNsHzPovI>d)W1 zM9~A3^}y#R%ij<|A8&w3oDLFa%p1#PodV85yXZ6KYlIa(6>_`z*`o)vASr+c|HNWK{kJU_v8o8%fg9U|if;TianBPu8h4|A<%qRg^;#bO$1?Zu1!KDAk_FP^z zU^f9RG@l^Be4+&2f1`~8>jITbQ3WS};6wv_{I)FKOoDhafF9y?Xm85IkPO23W{nkm ztPDpXSlHMQ?Ccx}P8Kc%FA5FEAh0a_7y&pAfkz1Qh_Z;WOTeY!+fgBiOUN3;O++W6 z8}W?$IY$qo7cl^T!SWI@fto~25vNf<5I>Q>;M{WSNOtx)r%s*Toq71^nad4(YFODg zbc{%@U%R?d0zx{vu5O9t7cboccB^~$WuHRv@M5qE>RJZo7FO1F_GF6Z)p`+8Hg--f z0lbdB!TAe){T#Zv2hX!{t|J8m=N!UNy&I=KZT0&$zvSe6qCiDePTu8YQSsSxW#_9J zZr*3*;>L*?tT*3WTK4F15t}eUN`|z4;=`w<2hAwr8W~x6O+5okYa0hA7uPLYJ-7LQ zqtKAZnE1r~=gKct-|4z|DV%!y@HVO4EJ&0xG5`rzRY^(_L#p$MqNF**S=O?cp?DRO z%2}mR(kOX$EiOCLWL*wHPIjSn=K4r~b`CW`7D=QC3*1-_wTVR)#mUCOW=xa=x8>*{ z4Oj?lC~h_fD_u<5Z|1qrgE0(cHPkbxPGFdHYUCA%C)6qgA}k#!vl zC+lWbI13udl9cHuZpqG>RJu*doQso{hu?seQ%4DfPr7bMcH*|=;IuFov1E7Rv0~#) z`fkA~hTLeSi{xeJWYuTmOx6)*TZa^Nh4X3fq!t83aV6c~Z{yFCriK>GDNos0d_6^< zO%dhED$8lXDbK>6Qtd(6gwkij7(*c9=?2?_i#Xwnf*m(gd2U}9R3}+fExTKPWg_RY- z#>&pdf#DS866PlGpn19ZP-r9;%g-SQ$D@Sc!bk#}2wW5)AxK27MJjWtz}1lI2n~1{ z;sT-^Rl)uf@rz{vv4~vasEUcrJa9(MZA)fWuIMl?-zJ-1^D3&qxYTh^q?0jfB)u~V6R9&O>Cg!;ZodTm;+q$~@`X?5bU_@`Jlu=ZQ8M_FI6_Z@an^eIf z!I3P26lRB`R8d+eHYA*ll?}t`z=vgXVMC%sIXRH*NH!z_tTfyx79hOQkxA#+4Uv3ELpDA3wJa%17$J65j51P^Pm(Vw z3zd>D%!SLyV^L*U2RKcLBk8sjoja+Az|E4h#F8}1{pBQ5mm}FzAn6)=QacN$&^jb1 zs~)=r_!G`_E^*{mlsiXKs*otBAcqYqX+LYlIc_{ky%?1|Aj`(h!je>qPM%?d6BSuO z=mAvHZKMd2kLO?K@RhmT8`8;uX}r=1&G`P<0nFLZy2-?zzz?k-e@lk~9gRZ^fM?Wh z5dICshvt7j;GomoztKZy%znXvOnF$Egl5@qu~q7s0T2q69b5N8*!G(ON|{ zq7t?Ag%aYtkFxkL9~IalQRmc>kIn-8r4F1^QdgSirEUeUufD2KvA&w9ujN}4Mi-2pR#DmJLb~!OqHwfU8NUqtpOqfy;AngG*Kb z0a6bHf`~{1b_C)W63zo>gEB-SnvG%bdy+8Z0k{tl#u|)(q2Qe0vMvOepF!D$5iIb0 z1Odwfmt_~`QbDSLx*-s9a8uCo2=He**umeI(gdj@5Gldf^cDne%TJS2MDDg zL8r37IN*pG(DQ&J;JF|_6u6X2o|Vy4tO%qEXmA)CXb`xgASen*Wfv>R0JJ&aHYh7N z4D_xR3k&3fv+}{fR0M;sM{Neb!&DG>u;DjbFlk~K8^{Cw55)zs7jRDsfqO!3|x z2~J*s5*z4Jbs6!<49S=IJv+ECn4y~kRcAb_&i5e8mA_rhuqymt?{8qHEe6ttWb)O| zs`&qE|HX_i4&p=mVI~#=n79fx&J6bi;rswcg@)3iDB!jW%I~la5C-j`B!Od| ziAVvz8F13Ti30~cAW6o4z#P0$D-K#yR)<4*>e-@U9^kzPI4F)CID~^v#g_L{kgd>f zn$I9y0643a`zq`s7|KW*B?8zqF!iejL=_@rtP&7Ri=;D>A%;akJ_@iZ07nr(=^JOZ zyk9I>c^iVeMZ!S3(AkbMa7=8qf=&N=&qN4i#n_H<$Hd=)8TV)`clm09)kbN5C4ox( z`}z}TLkG0O&{+Z4TLPmGpwnBvw1H>_?&$#4-5E@ciX?&qL~!Wx$Gr}e7>a)sqe;Nd z7#P9;jwVKhQ&vpsLSvzGtJUpq@fW-i;C~t}|GW3PFbk#(${tSkrI8~U11BH~9HfGc zqc_9E3*7obqj*C)a>hoo&m0X)0Oc?N4w^%thFP(RAwtap9nvljU+8ie7%a$Q+2)H5 z-q7CP1YFAk*$gsO_0G^mEx;Ts0y2>N$Hb4zQ!Tc#80GxOIK~4@1U|b|aUtJNXdsob-e%Hko zv;#2^*s6h08aPu52K93QyzL8m9Qv7AcyJ*Nuw`4xb)}?#1g_2n97E7SMZw5`$_H7& z0c|}vcp^iym>S?(V8Iv#F1mpXb^rlH%WP@JbOrtJM_rj2K_Spt1H-K6|30&Ti+6y! zd=eS3esON8h}ps1^2O#nTDBAi-rQjQ&2@Ps-S9t!4Vu56$SWQ8$-A?mUba2PP2 z42uk8m{)=yfw`(T(+@27{_q1{js*4|ASKAIjM9^LVV8}A=|9%o{RU?^)e zEFQEqw7x)V2PhUWI%C#(neRd6{$CW6VPXfFR#&W)5o|k{W&EoF9%CAWOoV@1N(01f zbm+~j66A*(-VR)?We#iOOhlwmc7);H+4^PA8N z-Q6bOw*d~)|sp=Xsm@;7;hIoB=kxm#n3urw`27)OCIR^fh$U)ckdI)yTej{^~kv z>b_b50h*esf7^dT$G56s414ZK&^L4&Gz?0&n{`<}0t>W1Etnxx05t&^wqSSzjsqi? zybcU33Rrw2BSL*+A#-&wyZAU#B7y0>fk9MwG|e|cUcrY5OryX6_W@f?pJhYxKeZJk z@B9-p{`bUD&^nPp%4#b5Dw->D=!(kE<&UKv%ytYl3s?ad*6$!+rks@q{Lolo;`9~# zKW#&%IY4Fr8CEc=%4!ezc+Acu~Ew#NNonk0X<;YvfbZjP@k=!K9D>P%p@7ls`>O^_jfC#f2IH1 z{QLiV(a9Rn^tn3w)${+q?q^p=SXIApN+7gT`STXJax;LNT z;=kZi07Ls8W_(G&U(i@)VrhUmR^bWYUmgAf;MM6vljmxBS%CQf4S217h$p~ppQ|2W z+{KMAcM1IdXGEGc`G{#|=)^C^g%jwb&p3jlLSuH7D4B}BAJZXJn1=5WnV$1an+|%F zQTIbYN@t6n)z_9;VjdE!eiA;Z2mpk%|f)1&%XYGc{4 zIJQ!(#Adkio6C7UvXfjYm~$MP+mnMX_S84r>g^wm6M1J)c1G*t=MnEC6725gz`0JGx`f2)YOC`-?oAI~dvjl3{^cj4bGcjB_m1jH?mPO-!eWLO|1;9^k@*|% ziJ}VAC*58&tk)i%U4}*hC0dnFuG+Vyiq)Lz&GXL}-|V%<HXp+OMyY* zsoXE_V!5XhgZ5E+^wHi5)wN>xe%a(}l%0RR=DYCa26wL-?W0DO9uf`FZ|@7p`@M{p z+g6e9YGw25(B6}1o|8dseQgzArg?Y$s4qD}AmJMfb`{_B*h*7TKAdKTYd8O;(n@%E z>0)-~ev^|(j5)`ln$p>!%huyD#KAW8E z)q63#`#)W^=g+V42{ca^O34&0DQ^5h$3BM036V(#J(fy2A{6 zM6l^GQrvAu8(b|E_R2u4q5{r^6slBQ+o!s7zr7#cb)Oa$@#5wU7yhsJ!@29Q`_6x? z>3Y<1=#%)hXV$x>#Mm0#vW+>P4u08m7)|~48PD1}x&!w7eB2C`Z(z&39DfgYz+255 zWj}A&Tvo{TDHX@`rtMXjcRbQ|HrtttkS@eq+4ZEM?R+^~YTr)k#gqK6DhcA-h6aX9 zy6?DMuJ)6#-*35TQ?+Hn<_#w*v+sxq_ZL5X{@gvRecRH3Z445c33;&jy{pT~g91m>V5}cw71wl^NsSK2 z)6uSMT4!J840k7UcdH+rcOsaFexD>nj+bc}m3=c?;KQAA{oynwFXrTx@94EXzaQ=A zcHla4(D%K{7l$M0#u>t-`MH)(OS_v}JO+kKDF<=Hkkrurr#t+s#$Mtj#5Z6bV@_Ae z?-4z1i9&uQ`xl6C4GP_M3aNh0dQv+_>@8043~pmP-@dQ!LaYzc#)%ae-J3gNYzD8H zS(J;Ug~825z5VYt_uyKPEG|~a+b2#63cr0EVm_j$qZ`c@ym%3hy}Los;*9@Y*DYIU zy!ka>L^}d2x|2oWqp|!mJFwaE_>vDU8#)BF5`Bkq@ACHT!G>>i)sB}YQV=Z@LE~BH z#ANhiX4S-!-oZn!6UBP3;?sUA&3&ytenV@GuPwgv2UdS}qr8)yr?<0S5bjImR&f=j zr`Myn;uB4MoXkA-TMBJiGt@HsTTZ@ypwm~K5 zESn-tzLe`*%gte-pC@jY*z4c8yGOjolQn;w|NE>Ohj7!j!d|uMpFPsgBz|~rWfKT` zZ54Y!R&_LWr?AhPmn>-F=I|Cy$Hv#4+XM*d$=%#Z1D{!_yvNh}H=$>q1*HhU?%Vf_ zzxq}*gC(qu{s=EW9^8+q7oEK_J1B7T!G3s#z*H6eQ1t`Pxl3pzj*+0!k8xJc?~dAb&&Hjuxji&MyPRm;N%X{}?i4fiiCyOxS$=V8TaqB=)UDR;fSI)?uc2!++BMxo z63Jm39Pi(Z_u=`Lea3SX_vq^Wz`@{!hi{DT_1VQIVn+8z(;o1tR`jZ}WCNpWk)-E` zJW!EeGAgsSlf)V+f&peGR$cNlPhE{%j#)3g!<;Qbn%Hj0xbAl3##gjPh3MNih@jrb z`o6Kz^G(Jcp9Gy95yaRXz7xuGZ9$K5?$|vJCy!^>1(n2k?4;vdJ;a`rTE8S6ByL{7 zJ@`Is7Ki7RI73)6wk>;TrhBNSs|{=29z09#xX6VG-{N3j%O}3haO#0WU#4N%=h(>g zx!gi+ZJ%`qVmThBe`{&dFgD^JGxa|2!lUED zM?HQR3qMb@V3|%-60mu?K;4r912R8uZ5D_2xF`0y`$8pVw~8c_PeO^XO#H zTgN_$`r&)0Y3Bv>hxpbnEUnEx1op4yWuiA;$ zBQxfD0jJ`!(UR|W?17=XBlXGV&X~9xTmuP5b8vZu`B|Op4I=rfJpxOZ(&(Mlqdl}R z6~Wl75!0oz&2tC8UXGc$bsLjiweVzdy=ar@hx)Bj{$$a<{bUmj&1yJ)+8b9_cNGlI z)Pn3LcX*}yo8jF1Yq4jM`rdfd_m0Y@v-5;!Sh3VXWt+<2ZM0hjq7N-iP4I=U_V?^_ z7MfWY6J%!#F2FXkRNUfoJ}{*k@|nAj{y>Z+L~4zz2n4feHZ5x+ITqX)vM+=B>D?+Cb#EFKI<)dASeA$ z>ro1SbVrPH=k>-wDtDNvWR%SOZTo7YAnRgO7uv7Eh09m2k871Y+7hJBpf5=NgzCuySD9D1-v~pO2B74 zZudnFr^7;RHv`X1d!dgP2=v={})jzi1sE zG4=KkCSZG?oE{GkD;{G_z?+JTzL%`}pmfeC1WOO!jV(+NbhUH4H7&ZBG3dEve#5Ip z%o=MMzuLT`8@zoF_~@{-i@tp(HmOiv5tuk(Wc#Cw9lv)NPrM=NdR^l>xpyuy3|n#} zD`0K#nx=Pm4Zbve*exbD(j&gFA*JJnmY)a0?I>PIXmk^spLWUo_u4Ud=5W zFk@Zb=e@c*{OaN_XHr`%ti$Gqwz4)KG?5b`tVOb(4tG<-Upm!YR^Z5=JJM~~9xp?X z5mFZ|J@ii8_;s0@;i8yjeeBj(Y3FYU!8Y%?)26=Z>4TPwDJPxU_#fAveQfd;uHQHPfec^3@lQobE0;Fi#9eXkVU zZ-{Ei?k3*zx}h$zkDws9{mA_%T)Y!OHGX$-#k(6Y8PQ#XRFcGAxs*Um!67eE%00ytfI!PG#_c++I-c5vc$bn@R^rGcur5w!?JBGn;%6y!8o;Dd9}$+*sOmc z+^%XORrG?v_Y{uUjmVezG9~*zbP6{7x*zn+C$uvuHtk*b^m?q~92@UmtzEBA%sfSJ zB4~<9<>_;U=BjKSQ#2i5$9dxGF0?$qS(-VJ?9%!2DY_cFm#<$+Wyff4q04K8Q}P?J zP;LSH%&j&9f+J#`=TE%H?>~E?XZiBz zp%N!={Mt*xO@+L-yL3G`ske%EJe0~3=y*kHkDRk)&&scrdoB`zu0BnU`QX7jP$}cg z?J{RWxRdDMGkuA)`&Rvh9<(nfPBXwb>1$*Ak$k18kx0UGv}45M0LOsJPg^!tldtDa z5eD7QUE@t(BfBy5>(!s7nK-M9R}c4frHF^FQSd&JZitDh-Y@ZuaB87a@BHEvd!ERw z`}4~Rmum8F9o}PjOzp;Df1KT<(O$2@Zaa3EN>T)}UtI+{4SibSRCt@6xY#qOAwiLM~a0 zrdM~7_`mu|;h*)&-ux2&s!MjDJ*sIk8M`OzT=P5p>Dpcei+v}{3dKSq99TY$3MpDl zp^EW)s`2~2_Meow^1?YJ^Q3L;sjpbN<99#m`^S4@%vIy$^Bu*#&TmU;l;V2YyuGn) z57tCz{Q9P#MFULCPs zp{us03PmwFdPB8C=MGwr^6$SCay~#VajTD{Z*fX_yTqBsPuJh4Yv62aZEFi|P=)P| zXZh~y&Mr5~J@Bn^P5t+gpLQg<~9@+WbciJl|ZO?JwPwa>i@@Tfu=f zsYW&Ki7(%u>9DKOaK?J->#5c?wFkv^$B)~kIf=be_G$Fe?s3X114=mLPP}O58%m90 z%!QpFu9jwZ-pBql>!sF}%kq8Z&+LuA%qH%)eY8k$61AZjd5T z_+_61QIFr6=aD?!`T>=4_#I!Z<{j~M=Q#F$FW&B+#wQi|z3I5n(W`8sKPINCboy&& z4r*WIcXi`_@pXNImGn%5RH{_Ggn4C;&G#kpv$wfNCW9u`guC~}82wmEHJyqy`{+cJ z6QCC#&ToEH*!ejJ`I*mF0_}*nE^}_9Z=&cGmdV76?ZSN8E%k4o*gg{U?EbLy`HVn+ z?h|iGJ}x6{^}rfUj}-LX35VlBn<{)At|+pmuiZ`vylyPea7N0`*wZCs`%OulQyy$M zZ_b>cC~V{pEq67d!t%&6_|q#hEpIL-MXV%F@!o$@A5MGp2gLbjk02y@uxC zo{zHFsncIS!-I4T+|%A4Jcr{F%M|`DS8#pXuNT2L=?)k}e9x|Jd&Yhys7~zl_cEp* z#kw9`=;@lxf4!q$&+qY`TVfRh4`X-^$EMxgr95f$QhE*2aR%{+!MYT+AS^hj|I@_41Wp3LScTaZ8xPqvP@X=Z*yN zP%iph7(ZZ1*yX7zk!tqQsQ&hqhSVKJ7k#V02Mudbx=T}9{ao7)raGyK!O(JB05 zx5oDs^yaVsJ|(f$PD%Sh{KM4ZOQWM2KQe`JC9bo?#p1$=FPCka=BNVYV%WJW>LS+H z<#Qqm^4!tGN3P!eP`Ax=hUazCgOBnA>yd46w{5Sr@1GM3L}h*ycwQp}uS}@FA1s#O z*u{PuEp>HkL2SNEF`ueh{gtvdLh?48m2YLeZU2_9Kbj=MaRr;q*pk;Y_g1}_IjsFg z8nd?YDXDG>?!SjEN?Yc^13^*VSG<}B1>SZ)$(?o3JryI!CAvOmU}pn8il^CFN$4jgrdj=U zuJr838aCL%Kk%No{v%(87d z;p1hDksX#UcKX(-7p%p1j=43JEu7=c#lLyD$@WPSY-4P}hldU&{n#^Rv6f;Tu)gdE zRc6WT3gRhU%3=6EP5$-WZYNJXB?@(vN=wIDd_PYqtF*@LwB?UKXHb-Fbc;?c*%h7P zIwnqbIP!+1PWH;G|Mh?sTPIXsTK>NMz*XxArK8;;y!ZLt&Xr^N1*I{Bjnk7@e38WH z+bP~5v(y2B(63G=qc*}xl8t?FClO<&YZOd_5{(2jlQniN#0S~whypQMLmhps!y)%b zo3Zt+=IfgjHctvSbCs1wKhtDaf6_wTJ8)efgyVyF^G=1L1H4ZgpIppCj}BIn&$^kw ztnk;C#1i%rgkPG$2O;&VHNz`~obWbRy zTSQL#VMu97{p{PPhbpGUHV8`GFTN=*-t0Za$LD&W<}rry6yZzuKf5G&rDmU{eVpj# zp#ob6(YG3-^4ZT=``ZM0gK+ds%`NkZH&22fZ2qKV%lP`hnB~s~%&CRRDN1 z`2UQz3;hW*E+|;_OBeRf^l81&=UcxY%44zL0O&8gi~dyJ$(@#eqCb;ISWR#Ix=?L3 zeXjWZn~=FJ^U;!>2@z!i7%b_9ZtOkiNP6Wd>PvUiT1DS#7Z`STmARPFL7(w0zv+#$ z>SDw$K_*N~g3z7Zzq{`7+ATd!X4SeCSN&CN+qh8Aui6i4 z7|&fbgu;lDC@~3&*yqEy_s4#?nCly`H<-r%*9$;C-I8xC0CZfC4$ zLe10@>y5wkd2cLW{hsBY9rh~UD<-_FwOip9es^0ux64f4Tk`2+1{U;6v5zM^K7OsQfL(gKk!3 zro*$zqS)4Yd}L@;RF%lVyk}8o&I&e^4Ck~wd2-CJ?z$C!rj2Oc-gnn;-b+30g%RNW z&~phBt3a8os3o)2;f`a<9*GF{Mkb8)yfm_s@>qJ_)p$lEfIY`nwyHU7=2&C;SiLzW z>EV|b)Gc~#8i}fMgEILzV!Ud9X84}nOWS@;Z~in-(7Jdl5YM7jG?D6CUhxVYv$TAV?V65B_*0O}!E7au4$|1}(?62CEC3 zvVPa1sO2i0FEIVMqQ@-h!ti*k_T7rno5ELp*0Qdh-p8pLdUs1Zmmqpv?`n&7sM2GD zmd`4;vqc2NTF&a5?u}03(7)IaMw1dAzsAij5PamtrWSVv4!#hH?5}L;mA+n~Iih{n zDR0m4)26LT@eTBiSJv3cH=fND$_X9HIXSsmxTwv0l$-;(EdrOz+wyO@a;?^**Ay}nQ^qQ#4&0efh$ zyROxC^J}DxjecEb5I)+`;*~*h$%vWC>AhzznuzWH%GGf{O^)k*+`T-RDl2T*bT<4u z^9o({^ZDZ$3lkPs1iubq9v)3MI&@3y z{d}>I&(J4F!T9+%kG?CtmWg{P9`m$fLZrhBZA>t{lz)K4zn0t{fiZ~^=pu3zEU5AJ zX&Ws*!W}v!jC%VRZgdM{m-@)aSft=r&Y2pbq=jHR`pIcoc1+4oO|Frk3%!F2dCeQu ztZ{4RVA;5PhaWo{8C-L}SxC5Aa3|)Yd)ytT0BQbfGsWn$P18L=5e3zgi68N@kq-rI zzE*Ol+B6M~jZU8Y#J3>KC-h;Wn>yF_F|(#=MuCLp7oYHLZjUy6JLRPrS!*kB?6uF& z`rAh`&u-U-zaVa#NLhwsO9Z z{Y?8&BBLdAn0~H4^E3Cch^m~Oe5xD7hgzE*X9d~410D&N2j7~+^6!q3s}p_rJ#l@J z!2J(r@V&=fcZ{8l`{r%mDm+t`DJDzo*%S8W@s9#^F||3%Xsp`#%t>}1_$(qpI!;#v zhc`TQQHtx@-P+WX${s9!1ELg>su@=PIR{$G{1(%AcID>s;W#+lY8|(i15-WqLZ{ zJa5OvOq=tsq_omRqV}(`S7nGrG`QIQi+-y^CJTl>un24OxeI?vK46q7&-$+>!*6H&cJ0qXuOKu)brg zVMW5951AJzDp(z}sfe?cHbbGSW(7^6B0X+P^bGnayRZlxt1CR@=gsL|E zXy@M4qk3Y;doQ80S>iUTyO$=WUVFjht{8lJjpvv6<-SzB-8<^ev^Ph{=rDdFRxQ!m zy#CPihx&GNx94JNHVHX)nU_5Tzd4@HbS=Rej(TZIshs{IQX{ulrP2=1<)(e7e9q#N z-^tJN25wSffv%F*I6bqTdm-}O({^fO;gt#jJdvNQXPV}zGS8a82X(cLUG^0xFMs{j zuCgyu)F-hT2>)Ms(g?WrK`RaV{ownBnSlaQ|wK(GftePU7l3M!|_IgQNN`$?b zYukw+i6;(e#82K%Gid95*)w-c%2+8SlkarTYv4|<{i3mhf3xN7jx(>#9TN#A9=(mS zl^P#)?xtS~Ih=#WYCNW@xh0-YQx7b#h`Az=pKvF0Ug`9c*9*obTU=iVi`#GM6^lE2 z_R^^!g;{MS^cz1FTN#h6ERW`7v5qJD|KqUI=IF1&ZwG0W|C1zew8 zUfc|DKPr)D;~j>;YzVB==GJ*JdyBt8qMqH<1#?%*G{>|rs!Hhm#Q4L*l#iCih}j>}gcW#AWT6$grrN@}moN%kIJ+Abzu zvo%9{Q479%uKLE*s2`T%wWGYsDCKUy?#b=%@_z|7*7D$lACIYbrJJ$5j&Bg1&6TfG zy`wB~=Bf3XOWEHr+I6&J>(u5-_h*QG*m`+~V2WQ(f^}TIL)AO!vd`kYq6be3=Ul9! zIaXq$+1;LIV7{YXXb{}_0^NG^9xAcF$7!-2YxGflYOKs-u%P>pBJu*+7+tuKYH4U` zw&-_C0@HW@;t}M+xviVFKEL%VJrKvcld#*&&`y1%+PZ32;9Wx7zUfEhue(O}U$m>N zd~prEu2LxpCy{^D-6EMdn^M)sH$1!X#; zHHy|QZG|nSp}AdKO)drtkTSmC-jQTfDv%Sh>#1;>u$^M9O7@FKo&7XccT3`HiHH+w z!&|stNVc+_(^b~`#Lsg#PJqg{MX`b7K)N3My^zD_f_`iMsakoP>C!!SWh9>LgtziO z64-HE)m8r6v1tB1&)~bTOYV;oZ-i*5C%Ooow@MM}O{l)(UCx@gFtS~oBYZQ}!alrj zw<4LktsTLi*(Sp!^lD!RLEDH+C*dA`YTYNE5f7yl-xTibdtS9-QR#K9+pl|kj_YpG zJJFDfeez~(*MqXl%0mz4nvLIT;rA33^k3a9q3@)7?MLn!gqX7#+!A~E3NlYBvcSMq z5*vI3KF||ggwlU+Z_-wALGa$saPz=vualYgsU7RIvuiPv znXkLp>e4ROaW(C4s*x0YH6{MQYD|W3Hk+obDPAsO>!K+VUgb6|b3AZ<)X^GKtOz^P zb}THEnwb16f1(g)rJck%znHOc)2Q#ycuACqon-DFuhVthIcwu@PUVfEixspcwb)*D z(smYxC>n_1IJGuNA=(C0`SMa(>)8DWd+r3e6nh0<-e-uF-eDe(E}L#D=cq$URJIF- zJw93}&|MjcvpI8LHb23$HR(SFKG@Qq1Eq1k() z!2R!EY!X<93Qjwf-^0l&2=A;_eIdsFG-dB(o>l=hQlhO(tP=bBUX3$m7-Z7|yWP_ITZgvEE%HS{nS@D1=Rt z#Y0@|XO`sqrbXD93) z@AT+W8xssJbzYc=nkhb$HPLUmDhi%Nu!1v<2o!6iKNxv=w8*8tmq>fg1r~hqx%EXj$>FZEiA~ySLwAkG5Ov6sV@K>r{o8 zq^D0m6c}4T60+An*q}t&8|l=uXj7G7g5Hs%;}}f}c9_g06>SlB60p;}FN@1gC6B4t zwNAYb6qYiMia4?3+`@?l-(A~B?@Hh-t@glL_KXw>#AlsZ+s{upF<5pdMqaSZy-+oC zXQxnc(v$A#qnAC_MWp^xc1B8&bJwK0p0XE~k=3|WDB#DRK>x7jL;6|oi~W7%6I#Yr;)omQxS~7t2F7zuXvx-(*n4jU3R&KCWHzr>bY9hl2YdS#3;Gdhz3V!o)?nTDd=9z6fJeP_ohKp8l8iOgH7EbsT~ch#X;gt=6gA;Z=G* z`!hwHeCPO%6OCMSDWPlPbaXN2ug^L)24yLxCu~#_L8arc=V#9ZgZcNG=D?j z+IKwmd5sZA-$1^B_WMq>-TS3pYw-hI+1*C_5O0t;sW(dphA9!*pUn@fO&v8OJpa@f zQ@);c?&>DJUo~7I=!fq=2_EU(SbuIC>#kEB=>oUjRCw;XC;Zy>`(7anlQLnQi1)Ed z1hq@kbIzS1``FQ@HUY=#iSq-YdW!d&D>wz5M-vlX%iq9cG=Gb{=E@_i*efw2{#8Lx z@yF-ffJz66U2mRRf7KnZC9KOQ+zC0vFZ?1yZ2E!2%NHC*lGUuyLJ~snr9)@W3A@{5 zDR{Q#iSvKL=AR|7Ro7pdJ+8kX%HLPs8)x&9y|APp3YK9wj?X^AQ+QgK3z>sB3@hI> zEEXG|aThuL#`pM34`XZla%^wmyBbubPs36_txNQkGoHtcGQ!gP<9uRn4r*LPQ7prH zsoZ~0L7RO;e@giO*W9^)M^&DAe7MO~8x(03yB#iSq6wK>W+pLQLM|kb`<0LhnVHNa z88Vp(a|s!eKop_qLn~B8YbgRnT9s8?x?LBv#gz(G6l!U45!)hI6mL+)Rl4B*-}gNy zbGWT5ls=p1d2`NtuHX62`ObXj{e9p6E6cd{wr~IH!T)aV|J>ok72{uiXV>V+k%`;> z)^EU*H<=@wGQZPx({GATS57)~=-7!zcfG&lliee`)@MGky!H|AM?1GRH5;amzVVe; z_I>=Z?#uULzNvR+?j3V{&X-3{KIoic`XFo9-kaScH(96532(FSncQ4{D(C5~*Vhc( zlU91{s>RpzJ8B9~EU|K0(|zc=TnnWH}M zN?K*^7(TddpxTf{-IITYj zzV=VkUN+p~gEST^V4dA)R^7h_JC23@-LDC~AtI4jDwAX<8 zS=FaDu@rQ>QfVNaQw&Q^vIV-tg_4FLI3MMs>O%sJ+wNYmG_ZUf+7jdZb8s%YkJK+f z^;Q%Z)a8q0@SIq7t^{K$pkD@-Q@*Q8To1sfX8|3+bsI200Q01~w;A&TF|V8lqs9j! z&taMNm>n)&tlNv_^bAKZcD)yglBLi!!g6}f<=mPTcS;(fX4BuND~-$JYDe~k(HjLL zUQq9JZgM{c=c&W_)prPH`A_qHIIsP`s#-`L1UF%Sy57r9WL#?StbSrv9Gjkbwci*$ z&$MjBT^H7&7UetYgfc&bE=1^0g2xoHZq#cwAN$brOTqU`O>a2j;ocU$pwdeU$7;uM z3ouPVzpn|HYST+)rW{7gU22D~uaxjUtDE&%eZFqSaV|CO=xd{BkxPl82OxQIf{yy> ztwuqmXTFKL=c63ZyMo>=^n8<5z$#(%PS}onPWz}DftQ+|KCN&hN2|Z~9MVL61BW3$ zM`5bT?G{M5DoEFdHm}G=tS(GuRF3 zP{cPHO-3_1Nv0XC=tOBZrke~Vqse44n=Ga@lhtH1*-hzYgV|^{nayU4In8V}+st-z zy2W5IT1*zR#bQabSS>b--IAVWNHeBEgrD^P)2wN>G<#aQ)nGMRO;)oNg9BKtR-4ss zO}81)Wzl3a+blL{@Y`%QyDi;rup8|dT)=Lzr`fG`j4)tNPe&5dar$%|Ivu;EW6|aR zj`<=%7xzI*=R$!FlJrbPmPlWl{m83+F#6NHPcGb_=TdK4{GpEP9fVWek&qX6(AAFD zT_hCaSDmik(gd9oX=z8I=pAyt3Xsp!2??O=tkSIPg38(}k)!~$?kF`6AT9LXy$|{q z^c$)AYZd?ew0S+v-ib2sgnrT_bi?;IscwqisP4b|qWeRXUy-fF-WWef9Cg2&@WYAX z)0d9bDD>ks{@Qc=gYYL{{r@eUeAP#;Z*(CM7`bXpw{l3fJ z@hLK$Fjc0tGM###OqabV)48AXwD<0bSvvgfy|$63ckh3Qr`}gzr74;P^q+<)ngiHq zie><9m=gY9k11jQKVV9@e?+!m{;X^rtjOX>aX^iD7bNe%nzb98P{PtYI@1N!#W9*)kC%C;K@0*O-@6QvwzAI0# z`k6ez>E`K&8KbvM7ks{Ex?uCyrwcA0oc|bO@=5te8IOnZU5v#y=EoR^AIvWl3|=7k zJFh^ncXxq4_SPAKuaD1ojj{EFnOTghXU}|` zG4+a>*D;>nF;lSg7c&J%rxpr^ZY&i1{BYqI#?E^RS2AuMP;`>VnXnfLUJeuqR$gBu zIC+1OVC1WdJ&cd16;EPpJimAZyF zG{%$H)V{!2GP_oAWM{2l$fs%rKfYb7V8_{l8;fR}7&G2ATkzt)&0fP;@q^id6UWsF zMy#$|&iHV7onXTk>I4^lR#(KB@OFoR@u17m%~vu5jTU#Gx%(t&z@ZQilg7v1(5u6v9vzsyA<8u}uHabvDRUag0sA%7-JQC1z#=pzRTF^S+C%#kGzu@Q;lm9JXO;qSn7LC zf}{SU$<7$+v!CMG*>WC!Q3$8pG9+rF!tFpcNpWIcjqdY zr`5oCr=nG`&azg)IlpWbjPpsW;G0|hf^F*kf@^-@e~B^8PQT!p)Bf>{WlU{?W189o z!>n#=XZ-Tpwh@e7t_s}8xaE$3V3v6S!7Gmi1gpFmNEVzD6pWG^6nwHEIEk^z=HPC| zB}amb1e3H29w}|lW-M}ddnMzLe{X+}G04a5f_}x? za8JiJ#st6WxSsLACmpjH3nb1L9MCXdFu?uuH*@%Z*L(+u{m;yoaKEYZSq}3zcS?Bw z$DI<^f4x(}`GaG3aTq@{X5{dFC?;Y1jjZ02zIfQ73$3~pOEfWzNy3*Y9j_xgngINZH| zp@g}wUL@h|X^WCLtlhCl!r7Y^t>rNGp+yv<3I!nX1(Bm*2qRLF5Ag{Swt@&02~9Yb^(j|4Go11HWGK%dOjm#YqMrC7Xp|#w)bUl%Iodd<8YB`; zSJe}VGx@J-jI&g~x`84g%XuuZK-QxQ`dKSoB7ljGD2+*wLK97K}t78A8f7e!8n9+u@3PYM3(|jjQjFlsgni z;yXh`D9S=wcp};mJT$s|B zFVqlM_5TQetj2#EKE?Ue^+(~4(fIG3v;AM;-=k?L?enj8T~$PvK^ie^ii)n-q3xf?OkU|oH3S5HRr zFx(_{|B1LkX6&!}W8qKL__x9z2|ud*xg&vSQ%LpVQyEzU8(zYn;}Z7yNAH5rvAnLY z*o`IKP>v$#avzo$(mFg#)W}=)H^8Sx?W+H?bNrX!6Tec|?}0yAhh+*gncwT0knTd^EiW3ad~C3&lviEbjF!=8WLc zzvy+6LW3F8n8Ds~40@?;RDV$AL)*L_U$jlL4hq!mv;nlG`6QHM^3$K_o!C54AC9%* zcfVCn+a*E15w%A3qUb0P!wY!)UiCLyMzBY<(gp28FX$~QLJ)-|vAl>6=cbC8&@&nt zEP&C^6ypiJC|$`oB3u0P}rP?|9!8hCw-7o%z{$*1$sT2#dWIKhyqwv755 zMo$X{n&bD4YxtokV5kR|03ly~X3no}(eac~a7f)W6q8W^xPBfDkcwk-Fyvc+?BYcw zVfrj+#T{zH;|5LHnV98zm_9KGX+rv(&?ohckM`yosT-;Fu13*>#;7^ICe%Wq9mgZ4 z>06*ZF5^EzD454kqe^3>g&rZ@qY13Rr|MFwY_e}V{A6Wf8)BZ{g;8Bd^~>@8r{Awx zFqN&=VxG!B)eGqzK5|!TEPCP#08j@+AM$aSdm!p>Of^dAkZy~nG zrSTHWacfFYxbyG;N!gCi6{3JvQ2A6&O>6SGa2Cj8To7oFMwIy+6v#>{kR{Pb4bkk` zD2^3U7V}W2#0e{uA{akI85O=<<%570R|bQHC==dtrR1R*e=L`ky(tT53tEz+6uWHF z0QQD+xZH)YZxISwA&OsENfhls#VkuHW`)QmIt9vD0eve=$*Su6ddUqoA^9auMO=nT z@MMRow52CrFvHPCyj{XgQ9qs^dcLS`OZ8`(C!_ie`NUJ``-19Q^z70%2F;UE8w*-T z+uj1R!>FD^%%8TUGCu7sACb4FE_UW60meDq&VRT$N2hG!VG*8Fhhp`Ti zz)r#juf}+Ruv=jnutHcZtQpn~TL!xy_A}V?u-&i&un%F^{TMtQ=7Dv=Am^rA0eb}Y z1ndRa0oc2+ldz$9cZ`H3!!lqqU`|*R)(cw&`w8qR7+nut2jwN@4H@Mj`D%X9db%dc z7rH)mO6%2oK>0z}ujV%$m-3SKBUAI2*3^}_CjJp@|^dkVG{_6qDR*!!@4>(HhK_AQtmmISlFrogIU zZdd@;3tI+T1zQh$2DSsX7wOo8=|R|0*axu7|Fn=Fkp^lk6o%ZcWuigL%-3#^Z^rwO zANXw4@^aK!&Tf~d-Inr@{=Sm0V;gn9EtpsLqkZX5v;Rf)LDl`A!uGVk>Tkq6z4tFa zkLG*54Gi=-gGAR<8Wrq#49@}1u?8oi=SlT%!0*^tjeiq-dgj#iG}gs-w+`R z7vx706laiJAZS!zbp{0r%t&X8ZOf8*8OC3658#~lNi#BzrWu~^y=leWs z?X%Cl=O#gH=a2WzkF)n)d;NIU^J_ipSCWvGP9~ML zKQimfuDmqVzV(tzlAbcIKX%3~uiAFe%P-uSOez14J1^YwvMVpSM7`g(V~3YH?Rd(xySG9uoiei21=}v! zwsV^rb8L+!LC6(JV0eWsoC&sGdV!O##TGlS+|Au|ItAk}Q4d z5B*U3L)j0lDzc}pDb}p!|C;n^Cq3olf-Gy-tjb3Id3u_r1^<`%(|)y*mWtJ@(p78L z{F9Ygkrde}1%Fl*O3$)2S(ap3QLIVUD7pEQC20ms$*Ke(EtRZmlBch!o}K{P%GD=Q zLk1KpSEamPnWj%)Saz4Av+d3v!5^rXO+W&bprC3jM!U{44v@-;M_2sde( zuYbA&y~=SlD`XJ*3D!?LT{B%|Nq%({LuGwRkEsBwdU!hCE1!a zPk%~Evqd($vRaj->B?f2;Udja-qUjcOZms6;3!rXRFI|>^q^r1WW_4FwQ4nwlt@99 z$_UGp;VqC0;Tw5TJiS=`%oH%ynZke)M5nBw{-VhF2Ry6NWDSGj(|#;@8bjkh|K~sc zv>z+R)63J3^0$+x$%$i6%Xg*q{QQBWw=1dlAGyb_2Xr03F<&$GifymBZ2POTB)@dq ztCAbCNvRdo`}vn_OMWRs=)|}&;jLNk<=b|Krya?!WZj(%1FyIUjk_;f5%0H{Hc#G} z6)%;9|7x~Mg^=dUcWl{l(WU2a+d|Id-5ElD{$<-Q2-z31@t0k;{S{YUvNd^c)_d8` zEsc`AB`aHxTh5m<{m^%uTzUEBm%KXpST;@4OSfLKRZU#>vgG60DiRoe zF1v&-G}Z0T8VQUt|LLrZLMd%}!S=1MN`5UZFx5FIVfGHy}Q%- z{Mvkf`gr=`^dsr5`FpaDapb&Ca^H*puE<+?f7S{-*TH*=y6g^IuBu$gfM!n@`WZ{QRB& z?&|;hKfe4w{QE0j{F-e$Ub21btIxUYf~)?YSN-BOFT3*pedWKsK7DKP#q1BW2eLoP zzLfoOb~yX*+5X}a#Ut6*vu|V{Fa9F?X7;V@NcLCRW7%J4*XM7|Z_eM9-=4oae^0)U ze=z?*{?Yt*^UvqMmmkc3EBkoC|NDHtxVHGE;+KoP#hZ&a6z?nERoq&tgP~K zK~+_#oZ0ELS0#0FdX`Lam(^#^)!jME%XKzO`W;?XS(UBNXZ!gX`I%mA)v1f;Tcy=p zO{=%{$Er^G-dOFrx_I7nss^grB$?r^UNcvbr7p@_Vy3k-oorK;PQxuTV>P+>KR%WB zNbFSU&s*(}Cv)}cdhhM`(DReZ_o?XA7;vI2XS&o{(xo~nZ;f@Xo*7r+i)T8@Qvy}D zO3N?rrrb20P~T7^mHj;b}ne0a@EY(RAEp*m-k~E=rHNl+jP*|!a+)A#sGtERpaHa8PsXLYi=e5`$GTTbV+|b zd-;Crdq9l}#vGrKe}Nt8?S0XSeD)c6zqJwSEwQ zvU(w%D{og``bx*nRe!R2PpWs1CSnI;1_QvjMy?WHpJheK7uX&|y-1AcD4=Bhl={J65rS7b z8&d1RApj5^2M2i)o2l;!0AxZuVmr5vrstCr^yKxW^^so_9`00nuYUCP2aL;qU5`oc zvNVk{UtQeKy>zw-pd|EFb}q!pEBa7=^I8g2xr8C7=lbcE-?BtcF8|VV1avhb-=k0! z;OhNIqN=O>Z0bz}e!(T97eGvMxleT@y=N*Lh?RVT@A7S)th`lzv6mwI90hy-G0j?C zD7*_*A@t;p#1&OBn@ydbt*-2@D~(fD$S-Z0;GV>b{Pb*%-qXkOYuBl}fT)5=z3}A& z5r@2Qx^rVXz+brtf2MLWM2@b&rDsjkCvG!!$!J%n<)2$CLgkEd3e`1#%ZFonGLu2d z=@gulw>3y;;ms)GeeV4dB+Bp3HP0n=#0)3YgXi6C~lfW_5ZASwv1Po1kpUhaNsuBM`S z6W7k>?2K$JiT8f{fKt|QOP6)~EXsE3jes|6cO`dc+Fh5sjl4t27v=8@LrL$=EubJk z9JA0t>KQ-X@;d_GQBRs7B$Yl9>(x_I)iwqJBtwH#B={L*fZdV$0s&i+JDu^o>YfIP zb#wqkeFxh#GUUdFC#>{LVQ?g5Mu7{(Iq4_r;n~T!u>}y-*GDuls0xdDz1vf!$e-8a zM!LK~ZSKg->%)I@z>%q3!q#k+io?NJ`32!?#>U?~HlXTgpi2(OWV(b=UWCc(JC0qK z1bbuXb(Qqa8WM%nu_1P(n`wid6MFUTyYHD#>N5=S^}RNp?D;53aRhnkprV0JqOCGm z4Ut?x4`~<}gdvmmA-R=Q4asdjklRnBX-A?W2I*(@XLiliwJZ&B%}idWB2>Pqvf&gJ zUMEVZa_Gcp{vL9FFTJ8ZNhQYW7x~j9Pbx^t{{_$cyFX2yH_f;~jdL0|Gze$#a&ZN; zpUN1FJ9T;mwa~J$q?k-W&EZ&mwNM*2CWpXc8T?4C16tXDQH{_V3 z_|&cm<|twmBwO<1e~nfv3TD?iy%)xwnL|5}oIg8RBewsEyy6LMkzth9cU-R?eONu3 zN!6pDOoi>j2T`*KA+hR_wOeeSpD)faih`LM)T+wj463v;O}*tuTr^FxK=;2)Gq}YS z11&&gfxDz$>dcN^XPricw4`2I2!`oYV={?}08u7u&niF8&Xd18SKh6TsMaXcy|1PN z;nNKejMDquot{-Z3Ig$S z)KO@pkUi9D!-(lR)w*X;>uU$K!cx>VT>0!!<%^WoFAaCG89$s|)J-#IrQqq9fsjdA zHlSrvzEiy3`&#%*$~3DRfEa`YknBb8EqBt&j&JWR4-w%g(Wih=8+UE|4ImUt`b4ApyE(^|L(q#4e`x4dKtO8*CcYL15}+231z2k~IvikBJOsEy?J$ zI|i3RqK0@c&HwRMek4&P+xf9m3MNN0OvDmbB^oxXG0g)^NovkWo@Qj}-HM|JEVT{V zj^hdCxnHf(<1u<{T7NuZ$`d^~sm6t|`rpp2$kQyz)JFga#ig#Loy$+FvWWVsvmxn% za4r*uWiu^>W`?8xq?|6q9Sl%Y3_j8(X8pQ(NYTkKj`YWCjU<%DS}j3tyBa!fqjamR zLy>RN)jP&ivdscr>yQsp{jMrUb&LUMQH@_r!YNnQz&L-^4(6cab@Bo(#aTN}wn=jA zI8~3=_rK#KUy~IZZ=W|^RNZ>~>}gnJ{Ep3&*YqbgS9@-&CT{CbQmemC&Z;IWrfK8V zJ`m)aL8DN4|I-*=s@CH#AT`~(bGGOc7>?IMYc+o7=I^D~U)|5EiE~6b>h>JGX8|2VtjzjuuNloBoMhV z4FVYMVH{Rbox$TTfTl62DB6uGsv{LOu6c&3s7^JGA9$dAZX8nc>Pl$vGwQdPRGy@g z{@U=KKQmwBG)|4~Hu8%J!N+X28jgftT!>{)_{ zYZ-8+H8N4m7_DY*F6eNR6m}==@%(2eX>WUm5Vowcf%Vu(Kl2NzDTy}M@{b0>pEtsf z_wKlb|C4eqNCJepHnpQ>gr1FF#PAzTPGw182IgF31{Pdp2AU|*cShEMLJYKpHlTYB zqq5Mr-|?ZQ8Noj_L|SJg)nbO-2(|iKdD<*6Aew0$cTHE8_e6d$o=8nJ?XGJ0%AzoJVOIum8+eXhbOKwZO2YUd&6Bza(lx0B=PgrK;CKpb zNDPLuxVa~-DH;i@j1lSus2qSwZ-jaPH&W>O&+rq(rs42>7~r3u&W0*z`lYmzyCh4h218u$Pg#qO4zw1Zgnl|AqJz`W+d{2b?n#Pp zM!cvW62}39Rgt-LGtuBuI(HN`bI6=;qDv6S+(o)D#Tr6!kTW=lgr!`AP zi%Sn7G3mX+^ms1GqE7LHPyrD|DM$vc3_Gxvu)?tSDs0aBhp?~fw90nYZ^gqS{vXCs zh4&~$Uk@w&-ltnm-5)d_0ww_N?}Ao1RnzpeUbPenQaJ;Gw*fG%S1!%B2wCsS20rOF z_|&zChKZzLLy{T**x-w)U^)*(8=;J4$(;fFSH2(ELs#gliD-buc&VQ`BomSb;}rQ^ zzk)-R$5CCDdKrnc$~+uuqAs?V2gS3C(DVE-&43cp(tS87S&=2F^gDeu@JK4ZrLx{m zF<0)n)@o9TdUaSO`HggFjO(~)!;)H-27vjrS(56=wqfC;>ew1Eh(2@o0V+q^HQr4<3gQEa0QZJ6^&QjD9P?bLLB5t(ORsOOVsSWTZaWa z0BjX9_#fJRU_Pl=l!v0AS9mdGtO@FDwS0}%tv|7R9qLcZFBp&o3}mnVo4uM)H`=e7 zUJLZ{iz;L0g&J5byK4X=qtAzi(V91CWfrywt+}HWCtw?`EK8Ad5n6@P`wiML>k=gl zrRL>P?je+R9Cv1ozh9+5>0ly~4^aAoA?+SurF|jib8Y~(mQX*T6jlXtr;|bH-K(w`8mMoX1^oASReF-R(KzXzc%0{?S z$S*&m4!Fq##=8C7W@K>{9HKH{%J(t@1Vq5puRC~vj!n_XS}7O|niIj$JWThGn`7P- z$>jfWIR0_)anSrq`B8fNgTTlA*Ne6%9;KCkoZkK*T3Nm?tEH>bVSU$o2J(PLD$p?q zof)BM#k72AH@y8^Y4)PGhJso=H+9b~O2uw_tUSCFi^?Vhb!X>HYVtILROeJ@MrC~- z0au8dm(3U+2=QQ2Nqfjph_FcO?|tukKXXNuhRLnK?Cf+qqt{!V2sl@@O&A7EKbe0F zA4&NarXliBHMCzPRD8_wA zE4)uWzD&iClEq7!3O-G8hJlFT)Pw zou_AjNm)vZbCL=bojfCI^B1F670+)txERgBmk)Drxhw~NFBxXxqG91RP{{bexEO8; z{p+0;SZP=kmapiEM1;A$P(H4Zm!$W@0)av8Uz5xwhM0-4m@iypu=GNizx6WfRR#{h z)UF@@%z^o&KBWv1b1G0DPQrNE`|*%dMhZq1?yp~!L@~o4-{_bQ#bNLgP<~mq-}f6i zbNB|qH555>F-U!e4bC;zM!wE&y(htlYC@T0s1a)f^BP~nTAmxf9ZU{Yi0P_7e4m=w zh+q(vw4n9?I>dRtU@)UxY}vSiDCFTvtHeTd@Ty9CzDKxOY_ara)ASn4HQ+bjyO+%()Qc04(ocD-k^8L&eWZnMk5_Bq}piZ7_v|$;Az#5{ymx5E_%W;O_6&@35V`NYaj0$zJvk!95LP=+k>-~bP z&kSEv3*nrgMq63u0%3_Ojd7C*nrovtpj!Bp`keNDZa`1mBS~NlCPyKPDTz@`YpO(1 zOt5DCz#-(p+7sJ7q^B6a^fSnYcf&kW#CoX};APzwr4yDI%v;yEKvMx+C(qMtt{#Ac zYz6k>ttLBQAT7TtH6=eP;U*a5<$v?%hCIC&8#1MNqo*`jIOT_gFnbYZV`0_925T_7 zbFNPti#3-&_r9sPxgbLzDnN!Am1mm-n3hGw{?IO08<;tDy0fn^5&oZjGF~{XH~Jl> zkH}j5Y@O{?BnfT%;$@XmgS>cPO$=M?R7h#23PE_OM6jrUEW9e9g<WeA zdPW%ah!Rur7JYhEs1;O_6Cf#2n6bxzeW#%&8_eYY{g93e`qb2nNEJ2&U;uPyG>&kC zTU&RwGzlh9Az$7NVAwRap54|)eZb9xG#Z`1%5)`$2gDz6?4!e8k7cpl!n9_({9lS` zj7$)n@1)CxEY^;4>+d3Vltp8A~BOu*Sw{s4OB{{Ndf7UEBYO@v_*-hkf|v=<%PS(C!ST_ zE|5^(uLk;f=p%0uKV`MKLXkDWo3WrX#R&vZNq?HpO|yqeF-tTWwdnuX{QQ;Am9GNRD2lI{tAvTJ|`6SfwVQa-6_H^N9Gzrv?gsW1~hRs~`Pp#?^|INt)$F zXKcJXG1;4%UU5QsA|@v)64$+4TNb2fR+9xNt|ei=JPIbs_3H$NbZW}%R+0jY?%hFY zDq2yFQow(tYmB!9%X-8qL6O7l-8^V-&y#M?l)gmhxY~RD zlWq?)7-Z5OLB&5|5w%PDH$Uj#8=iD~E4)367O?4M6OrH0@9>8k`n~ZKTz3)Xp? zUu*|JR^LBp@5U$H-W2VrOK_dcoDdTZi}`+oto~GNEwE%{$YHi)dHd+q+QJuLwm5& zbx7vCw6_f7Dn*)5R%!jLx%yF8PkP6a_L;m>)_L{^tnuu#eyJFqG&k4YDrH8=UneDB zF357VSLIh_7~3FmAPIhgD(PJ{fMqaZiyjYI3&;{sNEeb;LbXz(eyeUpGc zJv-G#npr@o?9R6?nW-7J1dw;*pke&EsgJChVw8U(yR7$)MW|`4by?o4%t~yw zFDhz!h(*r6v>O}_p5j)jLk=YS6XIs6XHi!Bois4UwZt>+Zpv_HyR0I(dEG|TiP!=E z0xw~T5&0bh_WMNLV^11&Kj!m7*pEqbd9V82XSN09v+}n@WyNi^gUox^b;cCsrhr&& z5f29Xd~1WaZ|ud%>eHuL_Q<9K8%8rM?IJb4IMe8Rm<_$!QGQ1DQy9!lSQIzjXBTYl z#oSS=82p5@AhgoPyt#whmi@=9x$>M6xMqy*Qx0Q0?WK^_?U@5?4&tr+nCdBlr&Y>kE0aq~3zli9E9pOpE3i1kaRG{GDGtAZ!>le(`dds1&us7_LUndld| zm%Fc7986Mwi)+VH9t$ads}yn!Vlu@JlOtM{HRushbmp^f0rPcUep)E&vs5xRCF`wu ze~-N{2JbslvbN&;@;}9L#gur>({*z|NK}Q{6qbyZKiI~QhxK8kcC~E}vZa1ar`b$Y zjVV+Q@tf1cmgRTz%Xp2Tp3X7-)gT!guMZ9bKRpgUts%oW!N5g%yRijWEiE3A$^C}p zM1obQP<}I5k`=Fp2)W%=7M^1-fX{jh-S~>eVyh>Q$dDG*X{96mu`@Ct{QUMhf;neDE*E)NGs-CbA zdZCqNe-3W&5;}n*)fiQ&PK&3jg!3WxoQhbIl2q|y_3vQ2e_)OcBo@0aXvK|-QE1e7 z8m<-xU~&6&KCL;~5R+*`t%vJ-XofF?4 zrX@t2Q)J*~0>b3Jzd$!QEIm?Kr92054GcFP+-4($Zx*)heq%#|P3m^;%&@6h{+ z`XSSh6Vj<-@DpNgnX*H-^*ErdOUyrbQc87ABstnI|VJHxaHVhGtke?Xa}2e-Iebk;Zy8_pWpkbT{5sp zoWGX_UG`QSU+0*wnom?L13^*uUFkgS{kcOtRX(7BLBc35?<%H0t=R#BH|m(AF;PFx zye|E#X~FdD@sUQbG&0xi9fqS?GMBl`fi6I0r-Ck=n{=`5cq0`}s|W{M3e2@YLV^-; z+rv>*-9`9N9b|2}n{CyjwGJY6rx78ngMvZNrhhAtt!*%UuQhxXgJVvWDc| zPs4H@C{(=-cAj;VY1Quxup{e9Dn+D7de^eWI3lP$fgXXNCx;>(HIO1-7O~Po(-1gj zw>hRh>(;g7N}4tC_D@9AGmT<+5V*lp5Vl*z`4)6r+0TOsoHK9Gu9gAyhAr82+VE*o z*ARHvm`#~>0k+mq@M^cau-a#R0%LZr-v18ii~k}-)7*o)Iwu5FH+0kDDn;VpepIgh z?0{}iOCZ1jy$@squ0D(hCWyLhjbRQ;3|Sk)nI&Q}mp9c#X7jsl1QvKx0Qs3w4SV{M z60_CdrQ?wWRN4e7l7$FIHub)B{%$0!{l zO+8TI!(`TWp*Eo{Si0U|=5j+I<}Rp+@>9}Ys%j0&C&<^VuN#qUE*uXR(nwVPrgFo} z;3;p-%#n7=u8GISm}+6NlsQgp%(cDI=1F4YZMUkDCe_Di)%qktNL2vZX(>VUS(I!W zC+G!cfonAI-{`T?lv_&{6U$-BDS1fiePbEHl%=&qDgh4Mz{YYDnpAR<3pe0yo z^2f{2nuSLcsRaCBsy%Tn z+*BajO!g$Y-+P%9)nnyH zm3bx&ViaVXGj0ZxPuhvbIbIj}vSy_FY0h>mSRAv;kv26~KBx=|gTt62vHX&rv05++ zfKSQp^WXw=cgcmvVQNu%JQua)B#Sj-LKHfX_nvAx$hyl|Nsr%axOuF|#s(*DXaPLH z9mXH*7rZTlL!*6!)5=CszFjqBn*`lD9UN_~+riNaA!V%fY`VFyO5U~PH79}SUK@C6U9V0>SN?6m2;G|!&EAk)uToGV?MJ8 z)&VXFgg^-47^v#C)!3aJ=2&QOG_#^p&sWqrUoC&qG}As?AUq?V%{Rp!*m9*$E(Z;1 z0tnV=&Q`wsC<6S~+P@4PnOCJ{gCUXJFjT~z%C!Vkvn&*O$T)y;&P(I z4A~Ae^VqfEUaTl5o^h0Zy1s3;_e}Tv=pBB(^lX?z)Xy64r4?0Z?OgBLbl^L{;S&}T z$SuzT7o&rnpcq0E2vWFS^An-fLKAfI;X_A2fds1wO;|_SoO!w&Gu*`pg@S~N7if;= zWX`#)l3%+huLP1 zUsq{B)MBx8!6ON)@ga#d6OLK8w`=f#b9Mr>BhYbGw5DHe zAVSu~2q~r}Tm2U9{zI^!gA=2uSOR5bPk6+Ov9vsk#hxQ+b&l=~;8Crc%o#D8J%?G3 zmX|jqwbi*H+02r^kZ2CqmaAcDOImhr_f)l9Wy{{&cn?RAykNPS`pNPioSqFet;s%1 z&$g1G)0IR`ZN(Z%O#^&DKWyfmC?yDcIr-J$tmXvw^7F3f#YR%!o16snTqosf(9v1* z^^xn5qVnU)JJZwXZ7TAtGqS6>Lva(~(5my`k~*a^&Uz8f>RNN4G%nNkBUnwf^fR@CXt2?nB9$m0r;&8ZleZJA|Od+7?+ig$V5%v`;U(W#&R&c4X=A;5ygBDXP1xh11bMHaNc3Ko34C83H}u!4h5HLPYsZ(VxmOH()}OhR81F zJ!|XGhF$2c!gHKu%y7efEItrdh>liIPYhw(WL-0Is*1HHP)L@8kCnv08*n_m*8qp` znYtJMP5GkDXuMbK9>upI3wa}?X;9iwbJsV!Ejqz zp>y%69tR7?T87(c>8UdcxSL{Foel<>GV&;6LtWH7g@JrR#&k9Dyy*#WGht`((|t3^ z`owbm6ma%_GSvd?q%1xgVo&9QHw25dnijz=5+Yh$;*;l2PvRo5^UE|6r1WwCzFPwm zX6rDPz~;mykG0jqm|07*u+6BMG8YILuxsv$c1>4P9HJvM{z@BaH!#DYhHVNF?W{R+ zF1u!;v0ikvm&ybKrVNw)QS79hF6)WX(A-Ij{}YOyjQzNK$f{Y+Qd3hev}mBwM$)nt z1w$Rg2wGQw(Dm{y>NtRCsyZo10 z8-X?AdaHL?2tL~CDld@-F%|#Z6c=sfuQGPhLXDWDP3&fsb)HX@hD|afO{y~`Y0dta zpYqr~=?RDJOyNW3(rVm`*ZwYPo!trw5jVKAp=;8MxZ?hK^Q#nFd@C0&cY9>_wWeYukzMQSq=Ry(*X6 zq7nfaRj6y{ z%+?=tVRE<&lNXzDdF(Fqj@5;L>kh6d{-50+Ke<0uPx?{W-HH!7@J-TcN*`qribWO4 zH#hq01ZW6RO@$NjZ2ZNUSo8m4icVGIe9_b>vTJ7CAHNkRj-77XkIV0S*4=2`mT0LWFFi>Rp)2>lVTpK zt|pCn&_kRHi=BhhZn(2pldw(b?26;*Z0`wl*7<65XL~Y|a2l(#y?>z2!XGeHT2CM- z>~e&u_<#1vv?hx3eW3&tYfIy_2GFrOzrs}jx9l6RFQ=HG!#Pc!tFM4dTB-S_&1^KO z^SK{OlGoa8Hn>fjTfMEOck>6{V?wVLn}V|dHECqpD?{9C3K=aIe2W&*lG23H4)b3; zA>;D9j3dm^5^mY}XopB~%c4+)TTiKc`czq=l+*IIO7K-78$gQGdk@eCma^2%BcP(4xJxtjr@VhM8NbImou z-Lv`=5}e7(J{&T^7bR_*YsxTIN%wJ{;#m3XDreN8#HpHLa-H=-*~TsRUZyDiSg7NL zlyRN3_VcxUgppVY6{PHzZ;QaJt-EZ0(~C9hlVtP4eV_hsU;6c5{dn~Y)8iRy<_v0m z4%{_$gIM^s71k4mfLa}ZDwhDo>IDbxv(7+WL6wh7-p3H*6w!-c;W_dJhLh;jrxnZx zB$Zk7Z#bN`qyvl$et6T$582EC!(@}37+PJ?0t&0pK(?raVXGKXq5!0O&s`@OooC|M6A_nrA+sY@+%^=CY26x z1*6f}l9R6Oq^htTtuI3{oOG@9!AaLvk#_P4{_E36t=wIAJK8sIPClg>_Ksx z>cm5@H8M74=CY?-KYyqa2H%1a*cHV}QxD_kxkN&@m>UOAnuS0C8f4$wjNGtap3b{=U(W z4`Uvuc{u(qlUU+u*L;wPIsQW%AhYDL0Gx zCM5G9P(;s~S%?l~QjN9%UEj3l0POXQcqZ$=9hy)@)S=LA_AJfLH|L~Lw9Yy;IOP+6 z9cURk<#T|6-pMeX4QTLcrDYZsFCSHxdS4jk#ZKUTzLG~EnFe^YpZY;OiF6kmHA$?Y zR$Ve#>i7;^20~7?OW`NDg@cp<##dLa(oS8e7jRM_n6hI;!0%|h3N@r=Us`#C(te`A zWeoXLA%P3UwVLigqMQ!DU(&g@e*6Pm<8XQQXe3h3@hB{c+p0`dra6!&7_kBjCoMkg z&9ylPO&3TaPH=9xvr6yW{F?G+Nf960O<#<{DsEem!E!wfKHv(3Nvd+PeL|d0lX>|` z-L;kN@D?u2&U^N$Z(mCyZwOL5^%k9Cwp#C<%kZ^9rqAB@@q+wh^4nGn2=wrm_7Khn7h}h{cJFkK!VNgGPc?78rhJ#- zC^H<1gQ^TXfhggrPUVnFdsASCtcIuFcgnH&A-q5Ge$EkOZu%Rk{I(y6*@HWL+9+6lt zXk(*c__2uLTM3$QbPbTUAZx`iyBFQ!_MWrVUzgO3S}?kkpL|WW%##G&By=CfIySfRAk8z}B}LLS~wb z0swbKTHj$W`V-}My#Cp2!Ge;6FY=s`-Jw2WG2X6guZfj~FqA$}h<#xq$F-b>2bAuZ z)LT2@ru=}UEgV(De9cOkkUNR!(*eARhg5VwFQ3AdOy!4E%&Uujy7l>fNFo(x@L5QU z9JydKzYSD^3laBd&jy~>O*DFNf)}5fzEv%MN=D`B^q>3PYWei+Uha9KBd2F~`Tcuz zZ=D3f0Nej`+^O3x)!xH~1?k@*`q!XLM?{i0_HUN@@WjCt_revT(OzEKn5>0SRwX?~ zxqIhs1aML@V`+UOt^0&pdSYI{!QCe711e>^)ft-NmsQR3e+kfG))1$f5>Q9)D&(X$ zVe`J|Nv-+p^jug*+Tm{_uP{F)q^AiccGB+u6{*0zHVWP*JTkOIcFGT{HVN`~RR{6V zJgTWBA|gg#0BMT~Xii}I02k41oGqdXe0DrDMO7>|IEX=9>cgfU^eI>|(m|fYuMPvZ zW?jWM1jtDwfR1{aH?CkvS5-D_JJVuHJxpf=Cvin+Kix^g91N+CkmF|E6DoMSx_toM zq;sX*JF%Z9x9(_PWe-yJF6Bqz@8jA~MrCCYxQd{E<$GN)m~D#yc%N?*%AZL-ao+sx zqXUDZ0gl!z8-^;Ap-#!q}_viUA17NY88(!nf32TC;kk82XgAW;e=NS^5-&Orn>IaRt zR+jH`u-51MGUHFGD|Z`5sTZR;su@hY&I9p>MCUJytn>Zu z&M-M;l)#)i+U^XO6*8?6E|q(2d+z}ibQsE#&ER~#*}G%&M~z%|9E}La&BZdyAs(8K z2!{@u(rq(bRn5#sVd{kgr9DV-dj{q~Fp+c_Y|r2mxNOhJm*1X|*U+ctl#f9Z8jckI zp$X6v-<|>V7#+cDh8@k2Y#TLXm=DHb6J6^b?!d9~W9IZau8kSv^v{MKTrJ1gnBl7Q zcsFJ&s#t?$hO=^sZiOaC*_iRnM8vUgtZG_PzD;7K$%7J&z|vQ_XxqDPEbp+HL7y1V zq${b(RKHr$EtKT66^%Y4fmqF+@%4N)({%=qt7;BkfO4!p@;6AjAg!;_5sE3F1oLXp$IqXZQ@%?Cw=SMM zsiql{s!6#fvE|0<1xl_+^VXj%UtB`kCX|Q(P;xINJ86<63Wpf4Pw>Fl?Ck03YEmB! z*JabsPh0rZq~i6>^}G=P!~~P|FOx^;s51?50H$Wf%xC%;UQGZt=Pg1ie=D%#+ZRrE z96^WaTEvh7<|ga&uBaDw5sjshW0KpSo7U_GnvU0}I0RGfO}*xd`cg%-8LYYht4)L^ zYc)SEB&hue9V1=S{tKqH(P;^dhH_vt$$9H`p=fJnq39w5ArwB)hCf?cqgqkCQYB9{ z`lg!Dj<6uBI)_Kz20b%xv&kCVBpEns$TyU_I{+leTR3pX;UCz2w}$02NMtbIX9L;L zcV={;DXS@{vv{ECTZ*(h;;at^{lNWF*1DifX%63y68SoHzSGxG2s-@g8JC(cO*j5bbvHEdJXmLp|k)ClXCi_)tfa~SqdSSSp7p~`q z>x;tmEW3`)g+H`2uB8H7BVzGn0ud$UIV7;qC4KAbOtHZ+#gvYNEDChBs6?=d)++pO zrTML|RL~cWIc2OxaVxRr!!WQUAGZ&yv2+bTc@lcP>xI@-TH2>dv@cLc_{10`R9zj` z*`c{eEVm3RQ;^=jIgnK(+6-9spwW1JW=0*hahL!Mc3xmP=_M#fHDa87_Ycq`+~Rfn z!gXj?V9Dy}senr!J;eL^$1O*FlRfPJ0!h)xIFe??t~{O?JMbR{toYz145(g#C#KNQ zRR*)2;eB;o>I5k6O85m>6EQ(Y7wyY}!M#8*4CF=x394;OwyTMN9eA2*YoQV(3F07& zEn95M!_qPY0LWt<+rAlk98DlA>m%MlNk{DQ4?{R<@}qxh%09tnCKlij1NWyIkb8f~ zxpY`h?GvF=mrxhOmdiC&C)QM{OkJ!7&V7a~)TOBpT`v!595fb6HzZZ?w64#qes){m zPfl^Ks~5vu_F@aM7@attg2Miwy{3qP)ozQ?5j<|5zvlY*K_7z_`Dzt+rdYmZq5{lg z%tan!GA26gNGxOSBl=zc)$7EN@zX_SUXyyHol1)|j;C3xveFUO0oz^t1UkUSs@N`? zSCD{3JD-5fT2)p*4D3GTK$kO>!&?eCZrURGD1^}@26`T&P#a%WPu%I?Hd`Ky{01;;O{8U4;eSUXgQg0;;B)_sO*WVH`ix%QC1sK3v>Nx4L2*QX*u6fsdFVSnM14*4T6&NAfxXyXndQ-sdPmf7l-d~g(|FiYfhsGPx=gfY)OTU z{8kwEODHTN4x=Ius-3>snV6VJssGKYSJ6V+a@FCY11-DtFMBe^Q2oYmOMw0B!!6sv zUl(q(UVTHjWm)-6eki#+NK?gZ_7 zYmNGQew7ZR;lk$->wWh8l=%EkmL>*+{t-47#pO6{aRaWbe8eW8xdp@6srg?E35PWz zXf5nT`Z>4!^N@akbP~?f&xO8Tft5gRS4@UBUTv~aRud_EtMMt98OM#r2^-p(@2$@_ z^>NoxopKbnf&Tv2LwMO2-V=;<-|hAO^rBwROuHC~5*C=m`e1 zY#Vr5EObUbFFyzLyNV0c+o|}8H?UXDAn@c%O`G%ax?(FJp zSAO*~1hCfSK=*1g|cnRQ!VpU9ezG?uTGj)UN@(^V8X z`d?FqQ339b>%7%mxyS2~;3jo7SO3wyV4(iddj7Lq%XdnlR|I2}2qKp?Ga1=7&f!}$ zai3>P+nJ5yF`uo_pr>c+xS(|^vMwNcs@HdZC_HI_7?W(1?%tasHY~-So*kreGVyZ| z5%7(bd^W7-`EE&xo6wgA5}s4re5`Vo|8aD{Zqd+>L1opSPjpfDnKD-RgeJ3UJfAv` z6_9|H8Zv8@&3dC-U8zYW0Q>eG?CNJHHvyg{o}TR$qzK=Fu5?bjDXCj<>$c$bRQ6oL z==eL#Aj_OEIbE*z4Piqs1nWNV;CJtEj1WRG3bvFJEW9$6dS^=ibmW}O9NVWouI^&o zG0ZJjfxage4$L3wB;Zr5O{RnC^a=;+cl}e`8Il@Ub5 zKj3J`BV6$P^SR`tjb`}#RvNLyz~7ED;pg`Rm-C*O!Z1(P+3fz5#jT{i%kaKmzu|BZ z-$A4dglYh=iG~*4t?&|)ig@Bsj>s5@GGfN`htM^XSj_d!lZ9SCgh*Jm)>}i2udH6nfMAQg8 zcR>Dp3et_K-k?#X zuLTF5=fSIe-rbeQsg04tpyPIkb5@+Gmv2;QE6RZM_5)zBoDaj4RIaQ>0nz}7JyL<^nM}EZtHzRH6LmC$#|vPjB(&740mF%Qz`pM(3U>T z8xJanl!30rik=su+^>?)K*0 z{U787;WkziZ*H|W8Kqzkd*D_kLaabifDwYCJCTk6qwe`cbV&CAa_OkSbd!GY9JjNL z`V99&Uo|MCM47$K{~1s5Gu$uE6bJVV!@bP*)KLI0DYC+OISrRP%Y6b#?lLV`04O&; zqhk(5`oI=loe+}vcFV0h54w9(Z}8QXjm-?fnzFS;wxx7jx|jaK?j4ZAiWV~<&D0SF zmLx5TLd#9#Gm|PrHYWA*T20^`+K?pdp=y79h0RZLWKGJ!ttCZj(S{8|h9wj1H6TSx zez5pmGSU59t{#pT86>@$?b_yPmkS+V01gF8ly6s7&Abcx!3AHMmOz+OR!k+zeR^G| z0v48~wgS-;gmL+ppuLH53_mVMbTKcq(;a*!$1!k=v7cUpMR7orGL z@;5{Xal&SJkPES%3=f!DSv?&dfFomXhL>UNbjM2g2u*%kYM(Xp{#QJnM1So=H1_Eh zk(wL-5KXQR(Hu{AFh!T*nDcGGrupq~94;Y2c&!i7G^PDRGyqkx;LN43kK`P{12Omz z&2+7A$$;{Cyda*=*J#M5KvZR834NYm=}Bc-^eLK?)m2JkN&pb2m>o~wI1NuVeP-8= z@I4ztDSE4-4zaZLt^5^ZUE@N;L%WBJ_2mpa{N76X)bz4IdfoJ3F7`Th}a4(~7 zx2~}CJlA>;(ThH3_^jI+8iYOzl`gVU8Be74cSPKk>@`Q=nvd@ z0NMU8l5M7e?lRh!j`kVtOT`h4ABoOd9oeq=jHtcsG`d-~w!uiqIrrkMJ-Swn)96N) zRuo3Axp5|r#MChtdaM7&s7&-Zo(3?u(btIhF6Kx`QnPJT#PhBkb`cTF*LD$A)UybM z>C}*isNE%Vw<)0^OBFptGqPj>tq(5I6y_fqS-H7~I%HtRb92@+Fqd}^EmMU<-Jlw@ z%0CBM{RLw};~%QrJv1wJJheV(PKwFs9LkjnYxzuw!UV9E_lhO-!itI+%Qt(H?oCQv zhFt+;zhN!!$sl5;)lYK@jfC5MLVI9LMaw4Zvl}xz)Is#maYU$1ecj16)Qe37P0L|4 z$&1*5j|RSF18q!-jw5U?2=OFX+1x^Hx+AkUwpcl^FaQcStwU$UaW(?$vW}gE*-`yM z>u`V2byiJ0C@f)usX2%ax-gu?j*RdHNr#AYOZNtep=M*`i=00jt3>K#9T&|3fXsqL z2|*HtO#WP*ifmP9;0Pke3UX|0`GNk_rkk^I=Bmy?xgVS#NO(}CdvKQM&d}Mi5j>zZAtuR)ITrBa8QTl%bA&gR9zQYs9S~3?pERGOE{&MhVh&%R% zd(s0eUv$9F{*`gTHl;h5bk0>^lTveR>q)`VZ{+g!o(uETN#~b`op0{7&<1`Dq+a!sx;cs?t}< zZd0$5-U|oz?ZEiPQ}Q;wHoH2yO=!@~Z0|1C>+5!Vo@iq)TiLICKb4)32*1Ek9+tnW zN5F<{vn+Yy@oP_QTaSmAT92^J6Ip1~1kBoL$UsWrE;h-AivNUkQfCzzntIMr3T~| zM;nlyAID~W>xebSg=GxLg*0m!kR#hQ15!w8uR79shY=wXA`q-Yy3RHRB+@v-fJ7d= zTx-UMQLsSQ0ff8vIufuUM*y?fhP*|nXst6YG9pLTFl0owyTveVSRasPHX4!ZgAw_o zEhBPd7d~G9g){RJv3T?KH2G=(vIcCbS{OCrc72eAr z)EJRgR1Db|k=#oe%fo^|wvEU`!$#ytxZQ|6G%z9`SZYMxiu4SuNP+YHT9HqJpUsMF z6CNw_ffhdpJ_h4L&JrtfR`Ur=_G4O+r!KJ~Ei84B6-h@%Sdj}NxM2L8NNKjy#J`FwgeCX279yknRU(MG6nX*r8}e3avh% z1DzS!W<@T-M6eq`|mPzvFLZ z%RE>~HqGE7yN>~>vmH_b5&udMoTQ`e$8@#>R;4WrHlrbD8ZC$stW}?`3M;hJ zhhdbht-WMMva1}49@MRp(o*tn;uXZgE#j=ZP>AdNJrakX7>Gj+Hln#DRQY}V3Cs7i zn6FuRf9!RXk86e_j=mUlMKA>e-3(=+&d|94kFlzk4b0|-n6iNzYMNNx9xRdtvq)r( zn5AKuz<_5r`W^vvlgznn6HJRwL1^iZpQ|yKgmLWmYV6;b?*{gz1t>orjC;eWC6z}4 zchEiwYTzTU7p~UV59vAx$U0!~AGBX-)7k97&=(t&R5TvGAu;gE!U-I$?vV~S&cq&_ zK|vC+i6SVAN((zAHGB^THus`plm}5U-rr0=2D1iPYxQA~Hdt(7)?i|9@Zd2c54j%I ztU+BBLHJd#nps2B?Ko>7PtznFh_eQ6cL%g0e-Wm`ty#mzMZS7f!)HqlQxU{!yEQ?O z)@e-;_OvGmWF0j@_@@b+fKcdsXzW(ZaXV=FB)mVQA|tn9k28_@`UIOc(`$;j3t;aE zi=2b`%Bapv0VtuF6x#+FMMa5M4{`nxUrRMVb)+h zBfqeoV(62Fgp18wt4u4A#AjB2+Q9P0zoFw97)Acv)N-Q)FYXb=Il6Ck{%}rF}%Vxm}?oHwNC)nF)HYO;CYB zjidj-2d<&KKp;fs_0%OGpPiKEXlF4$r2_k8K{zPS09bTPo`H)@;9jfI)SYSox%^6G+-dPHv4B`ZVyzI$^6lo0Ff?hLr+_Ohz6JUTDZqhy;+20eZ@lJ_gQsJ6Z0yrbIllAzVK%|LE5 zti4=KA4{Vm!#XB=T#H|(pAXu|r0N@#9L($_Rp9>J#%nPWwh0zd2Eb*Ra$V>mj^?inx4{|(Dw$o`E>e3C&aaG=5I)@LkBmDV9PYIQlXd#AKr%Vqh;cH~@hdy8ab|cG z^?uUgk{I_IAGATMnR!?Ub-o`QTC^#(5GTD%AMg`dlh^?YMR+dXjY02trHNXi;=Tgs z8kM)7NzFmkor~6}*+?m6DRJxEslWaG?u~`@$16o{;^R=j4nL6mxW`OwT7x~^TguYSZ!>h9G`4~H)ZDx4M3xD zg?0O}zF@AQ%_mfd19myjVU+AL(a^qzc505atsA;1$<8>U{PIhE?)rLmRCkN z0jCK_Fzjd*gVntw2M^3cCjEw}@7!2l8cs74s@r2EI3v4%xbF6cB}3g#B>%MJ$eP{5 z0ckAwen1;@Gz3nJ+|y>6gRqRLBOJ+M2Vo&{hG-7jI|jDV-Q%N4*9Y57Sz_kd8nw2O zFupswsY94_*HPfLs^?}YC=}lkr{~YKO9(DJDCQMX7K|kv~5z= z9sp11)t{Nm>PO<7NQ7U9f%lYU;@|cDew_q8)@yjz*QqT@EFEPhvNVo>ClWNDn_trz z5PJ@?Np-s2LF4<)05PrMeX<-7QtYyXkex+@yiY^$40so7M8X9^b|PU#NR;FHd|`-? z2uoW5Vy-VGr2EW#4b4fYPkKh;1QOb(KSiZLRY+)uKZGRCe=rhyAU}8p0~J-;8BeV~ z`|gwhF_(3?O~`BL9z*q94DAzKJH8KHK*!jqt9J%-1Fl|h78^)($cJ9Q`Vw|Z3{S}_ z)*AIf&A2uyunClrqqZ7Q-@=&xlt-mDYx*{W}uMwYaWdaXp;E#v@LCGZM@&@ ztvJ%iN!65_$CoADMgJTyZ=soMYXR6yu{hU8=rubN&oteO{zE`({D*WqlpOdE^*#c_ zd%uUL-I%aXlA1;%7_(PiYv#FGS9>6dD$AHT8LwHcFw9aZ^QU)&+@n`d8|_Ighodph z!paeOW$GV`LjUiFRy4D9;B6iaMPRzrlkT(^!|%$u&9?J5tM7dmQ#d zX6~+SZ1)jJSiItR-4eTfC~R$H4gY8>j^91zuEvq@*``KuNVL5`?QyO+K5kZ4Cpyq` z@o5NKQ-$|RCNanqxHKEd@TF*K`U)friZoRtRvj0Gu8oBKctY29XEr+9kmM00i&h`qFSHL zZAjjb)n8%9h>JsL$IvVeXCInP7+JFn(?46ijDb}egqpxM^RZbJ*-!)=sIzst(NS}n zyBKaTK^AX~TtIb6w>_DK%x{W|jCxDM;hH5q_CD_U+yU~P8V3mV{0ABi7Z);z!r=@! znLGcd7cz&jw5(laT&kr=EhuWFd_=tKG#XmSd<3Fdo$fJcEo3sVHkN@%8(sa4gh%tk zYNwUZ+E5Uj3dZHjfhY{j5514(2k#e~A1X2?_dSb}zvc=>k?1q{@n_O}6J07aCrZ>e ztw_2z-?S4;8)kr*KvMHfp?K3_u)!cWVufa5V2!XOg2R#lkfYIm8@4O|a8L_rcMsC~ zn0b7Q!7b{>Q1YVp4zk(c?x_#7Qadz*I*!3aW?ab>x45DdH~)+YSTn|bP+-XGx!7E) zEFVaHa?3<-JmLF3^g)JhLU+va9_i6k_uXb*=A?&5Qgycp-+uyUJ(#l;d(+%wVu~eE z>(Qav7}0J8DPG0%D`5R7Cq3M2d#hvEzU#!}*#SQXwViC^=Ja6A2dTjSXP-KQdSmz~XfnDbmvocB2wGJz zzRj`2?hNI zFIhTM3y#g_nQ2iQrwCFKHt(B9B}G;Z$0Eois3y#rppUZHih9erw42o#yb}HF3Rdqr zRkmHoR^Gz%nWn%!~+QZ2oQ@MILt z%pHh-b%~=YGG=rNDIz*C)@Hv@OB;c{Jp*p}cI99>^d7_!zKz_VL z8;{`6@Mzu%N}|xfV~P`ngO0#I`|3yG(YXonx!cUAel(vN|JTsL3Zsu(X!1U6N-%~t zAHMFu{L%v^#_)d&n$F2?j%t}yVK}Ltg$7Z^O%Zo14i05duZf)!=RA=>e37$>n>v_; zL57{s-SXz(icpSdZZHfrxi!m7Y0*RZ!KZG?Fz{!T?+R6@Sge8`MEil;7~#QGbREK= zQwQk3_0vaV>viie0Su@4<8Uy2DQzF@);f>TB%%BZxiw5@%fH%3j$Xrl_RfoKO++bd zM1PIM>zq4Z!`tx}bI);ewzz~(Lgz4ahR&-S)DTATp&D3beldh>9a!h*z3QYh9at9+ zj>465=da!~pVa@fVYNjE)?Jqld^>F1PaSEPRb87ZTH~3yBEh2Va?)1!Q$rk&zBfV6 z%{PE){CemF%{^6E&LF-S;4YxG+=6G$Y?VFhE+Bo##vALsyLB+!5%zQ@o*vJ(vPJx8 z_%eO9)$4YQ%Xx}zLAHSq_8X2fc#uTt5W1i^7;+pEM?IvxFx(?t^)Zygdfts+XwMDE zk$`7!-Ln(%<7TmuzM*`f7rDwWms@41^uV46ZE&@i5;19cb1+gLQu=JB2DD+szoTas zsD=Y$V&fZEqgt0Qw##v<2pff0WFV6kftnllQ2H7_I!J5$yzp9rV$(cBkWxFpBi8vF zNPL~&ayG(*uPsW@k!Dw^&btPKH5#t`jyl(SB`ZMitM9ZdcHezaKC7jcs~30#_shK_+;@kTadjL@vrU8H zb#%kFV?bz%z7EFMu;rB0!Isn8HJAZ$bl~wdkH(bE#DEyEwrJwri^e+uFjTS_ocP@* z91o0pqrh40!TaRVJ$R$57;@pYdj|Av-~`yYao51VGq=lzYW&O8wLgq?ZdXM{6P>dF{muq)v({2zvS^bk5;s_P|O*p_fE5VtqC(jO$f ze2e%-95G^dtA?uPn6odLLHeW7N>K0V%MWg20w^>){dQkwG!}N~hW&YqkO6nfDsPZ+ zANt$3XdD$8zRJ4H{?dk8KN{vSkn21*UN^d3ZF4EyfVL)|uG?7`?_ z3+19|GvL8@xVWo+9T^~}o^*PxO5>WMOM+73P6Fgad88#3(XQXST2b#Bc^_h zME)`hgmTo^K&V<9%Y^>jkjI=U`nljzKAw*!?zY1s3RWqy#I$kRL1sf#=Pb3s7i1NcFNjn)TKO zh2$i^dp-f2T%R(9r1vsu9!jcbIx=e)^^`8H8p?A>RYYacnVI!=P+dx-bD>s zm87~`f2V2pG(w+thnbo!xZ1Zf!92T9lFc2CrTfZmz@sRW1!_67&v$Lw>FkQ;Xj*&E zIH!V>%D3j~K8F>Zv)v>2tmtgj+x##bSsu0;CzP$*pL`7&Ctj@W7nBcGOudF#=%nUf zoa^;soz2Dk3$lqfn5#`*-JfP(bzew87DA!1YU=8$V`q$y>5Oreky7Hr_2MY4_9GJF zGsnWi11waEs(ggu~R`6%)E6%u}2e; zs!<~Bg7C&38#JcV)zp={QcXL5Je|5)y*x+rOVtCNoZzBo<5$>iG>smFyRJJhpVTw; z-BxQ%jgdL`4y7Kpyld+R+Nm+xyMFk$Rnuv4FlpMmshykfa2U(QsO2Y@qHJxa*x#O- zBd?>jQ~Yh&DVU7p{7>UniTM%J5gpzWClkz?Xq%MfCKHF!8K7e~jRwyIH%WUgF&k!u zOeNNUV5rhMvVeIL1@LEmb{+z|&Kmxe?V(tGk!(ZqSKLtmIb=#nIer9bbcs*)JlnU^ zkuwX+|2T-bdnm+L-pLKg?4pxw#Iei|W~tHbcmjM!Hfl~gx)AMK3fUT#yJj?LCiY_{ z-<&jah?YB?nZ&>qJ_;Kn`;S^02};`;Za8S|L0;qyA6b6L8Q$s=I5u<-W_y=UcOBL4 zIp2_MZ%rmf*4=i5KYC0@_%c;E6cN*mJ?lt`(6#;Gm%AJMDu!D~cr_#Ip5K+AoiLb7 z@G0qkV~%h-dau}zfB-3{SY7#*Ye`gbt89IK)l7G@)>GS)hLLc(Gh91M@P><>tKvl# z_sUU;^1jRel7)kGxy>8c{x^H?18wD7%d85UKPF*+f6kRlWqpn#x-L@YE?r4or6?NU)6bcrPt zTDDOO%t#?Y${}j0QA-KQe7<|1^ZRq}eMtr5%&aw&T6y>0^EwlPlFay`!9^l?5feVthR z^U^&HtG`%a1SMiHsw`SJ%LM1tR`=Xa2`1N)c7gL+OAw&3gD}JP!wpa6w8arw#neRt zr`H{w6JZe?Zj9AYjt8LpVziiu_&bSnYCF3gcKm1k zOvN|Pv5rIjXRx!M0ZYOGOOkB%imaM8c}WEO8LBHjI{)!-DIL}g z;WJ(vKGO7F;Z0b`S(us?t#2Sc{U$LC_U-1`0m5JMVyTG#nv)CMKC~Lm)7TWs2ENQm zG}FY#d}2ZFEunsdm1o{gA1+5+jX)Aqdix z350`B2^svNHU9E=Je)~7qqgr5&eSlJQXlA|4Bb2^FgT<10UBS|a6DBPhh!XXCwqDK z)~w&S@MVhF0fAOxhnaFIsHBd2#0u+Z-npScJusPrCD{}@&hp4?(MTPq`K}3;8QZi_ zJ~6HH=M>o8Q1FPnWus5g=hi5fTpGoaTfABRYA8`Ixm09A{mZ6`C4fQwGsw}88mYyz zdc__{_?a%4aAjUYGMV1*Wn!lqW!y1g!XfgA(y_=Rc2j9)0z4W%QO5KY&Qd;%3e@Ej zhG3Q)3q*o>&a+$=97o79^TUk4rvK@0#IMG2DvKh+XDYksG^l$PI8tL>?|yc|Hagcl z*`MCbMa`4_CK4FnIB>TtUg$IQeZe;R{S9$udh=W4QZ9MnyaJLoY9jy==Z874ZKwjV z8IN?!;spXyXT2k6SSQ}dHNWz~kF6zTWg|`W02{OproEL`KoSGx0ZP?)Jkk{VXoyGB zW#q^kF%rS#4H@>B`Q6g*8r@Wm1c2(nI(_Y(Yw2(iWGz4{^SayI{0OFF#AAt$O6zA` zV@oj#h764x05@Mo6M;ylQ22%jq@agRf-?uBul)^fF+CXKg)a^(pwu|dQ)+yo%|jU= zvmO+pQDSb{X5_CGVN7+n)W4Y5ku8S-L}%1QLji>lcETnmByp$&v^wmm2ND%K#Y*z) zHtOlBuG_dpySmv#-ed9xapF2x%&=n$=z7u^zh)dhd|bHD#uFsBIB&ie_jDP9w&_SV zvDoe0494CLmEsU$B@d{Y;7F1@;4J6Ekt`Onxfppb#8VkZIutmNPmIS?3Cp)Ec0sGq z9pb2tn_S$CqncB84gjg*sMz_L?GQ)h$Yru?*9mVoQM;m1{3bwPIjvzcejae*(V0R` zM}hd&uHE<1XcJgzkf^jNkXnOI&EA|JR`UH+q;;pXSk4nh;H2lFSpr&NTF^dpTBZbK zxj=sFP-h87G#}E&Z!)>EL#O>qYB{Ve)qvQCvSE*^6=Ar-VMSAAH=7K)qGv(Sh3th% z+puKjG_ll7n~4*L2FHfrf@#VxuqfLQ94m}%M5vYj2G<(jsSq=C&~`{iO~gn^f(+Fm zK#b*(l=oU4$7!sigw?kew)?|wL>kk=!;l5?>f(lYj-yyFgz$Xu16p_%N~pVJf-u~$ zdA9`G0-=O_vW^>HfVRNx!jew7umm)D+|`o=VEJ(nE3Ju2_TLsNUC52745)K50hIx@ zhrr8{V^tVK@D;WKf@4sYBiLDCg*@`tk0Vd%{L{iivRY`H7GD)`=Nv@}&2$8|DY2)+ zk2=0e6w{KG&)GENNzu4zLzRL6?HPWkOfN z3bzNcDp1!wI4o4_p1M?2sH~78F%Agt=Id781BkFyz%s7R&!yUT3>sUOe0PE-4@PVA zxkYQ5r_KOIIJZX{X%R|{oLDVBmzW@3OIaNqQ?F_}NRa#M92NQyh-w{4n&!0gBX zK7QL~-9{MYv7On%K`rxm|7WKj_d(a~< z{Ku(!q1WHvA#-NSUVQ~zO@1cR^}?eWZB`cR4Lat$#m5{K55%y$kmbD;+lb_Ph~P~4 zJQ6<7>GQ*xdw6S3f_8W$x368EVq`cE1@WNGYK3(T=wKcd#P@lI8cb7D!S5k?M|A5` zFaK~33LDn$oHPfGoBcLuXIoQ66fhAT49!tdTfEoP#Y?@fkNFYr_T=MfLrdJCi_02n z;$7itW|NJ8ck*_>4I2s2MEIB*>G2{af6}yl1L;;lsx&pDRG%j{QWVdC^QxKsc_VX$ zhRc&Pl*P;yd>0#>lDXncUP|YX3|OS7K2hfgx+2GF(iNqkIKb+u(iN>IxM|SKj;9S} z5u>Bpi+V_Zo$l#Zl zb4lAUWvDL2mC&-cj$Kr#ZTFxzc|2&c_q1CLK>%tEq$g@u8Rvo`yHUFm;6!PX;A)}^ zGbvyzMK(4nU`>_Xut^r1F98}{t}+9tO^WFZ4*-FFN?aed1hcMp+XD7|3XU)Ew3Zt5 z#N!uK0FTea)-3peBO~`pAP#1I59vK=1D|y#G&-Gz`*Sl(ri%2 z5gzNvm+%rn z$py>?k=T+AMXDtf~wVW_D zaR~fP3(9)a&qzp}ZbAv@)+Au)hLu^^uI!Q9k&Pw0G}o zv}t8+{m@VR)enB(t)r!4(<`-sN`XEeK81Qk{hZ=chD4nei&Lnj{otP{_Rt>X6=!k8 zH8FZaU?9;O5DqQ<+h0N#H|CZKdmZWJos>3-2|j;;0aQ_XELL%i>uLq*M$G; z^ZUH6nq2}_(WLC_lK8?)sjtYaIZ59 zWo+vRRRs!qa&_{6I(UA<_EOHQs^FJnL84nj*QhHwKu8vN(2~$6+KUlrJOF#zKn(y$ zs{+Hx3aD3Da>ddL_tFNSPQ{^9_juzw3pu8z*l3ZitR4E|FMa%74A_?HQ3Hi$_D{gH zADE5`DfHme>YNG+t+?Ge7RYf8ZgSn)S~Ub%3jqnn7!46-INoU8V#gLb=$zpb8Xz!y z-7@rP>o(h^S!u7_GkWU`_3M=jN~@JCPNk>etdn0n)e4SFJ5&e{Fsa9-&4V~;MsPqj zZDlBx^;514cjeM*)m|D~Iv+9z6XA{H_fC>IkItXS2dm|UO(NgoN81A@@>6QwiJZGc zljY<~D!3*Q)nn9#>QBcSqZ;<`b_+30)bZ{gnjD+6E^7kT13`mmr%3PDZh$^Y}b>p>V#y!U6nfn+J zWsx~y%KtfAYJr~}G?=BSipObE(V&b8v5hkI9%ahbug5;jBh6P(2A8uJp|H?BV`KfS zi?~4E_yRB^H0@)jKSW1VvUOx+cEXsJyf7uVmPoXEPGcuhAGmD;4~v7#c)&9!rxATw zhDD$Y>ELO!ngnCeqCU;lF}2Rq>711Zp;bQ-`w{gegbP-?`=N@2{QKx)}I$z zFQXBR7P69MyY!+A2&lym=%Jk6(!nq2t5yW^QgtqLptD+?B0TmXP1%4NGJ!vESieqb z8VBK+t~_d!dPSVmvi-*To7Z_`-&^<_-}s+6Y;q|8sE`55;9H3){bk5K894xd$B>K4 z!X}#+l)2hA1jC|utfl(s@BuCfn2(P9928y1$y%_a}3LmrVt`vIslqCNnwc zVKGgBuJQo7YO}hMQO^1Vy=GBj94EA6kMxu%5RIdL$6RK!T~)Vj$;kX^r?lv|v=7dh zgaq5p>fz@b4gYAG<}r|h;pcJq)r@(gQf#3P<_l8L#p)V{=@q3V&mSDsq-bSu(F0@Y zQCU?23c9w~@$O~Lj07y{`$)xJzfoCPc=HwRgVqY$Rf z?Q`)6S%XOZEoYa$)_7F}1#oJnGcx3@e^})H4{A!&-?z9wzRZo3j6^5@e9n1x>&)ef z(ToKj&VDDHmQYULPyg#u?xJK*;jyH$!ehI-di^1{GWWo$*I+_D2#2(F|Y2 znXV)VEZf3p-LupR@Ac-%-ZVb}lfHLoJ^LU4wy~9n#fbN#)uuqq7wJte} zl#7RVDL6y!aKTC3q2OE?yv?e@fx}~vpsFElb+am^ZT$U!y^4u^0=2QR!Ch8`ooS}L z%FwBAmscoud}!>3LQt%}4L4epsmwP5bF61WY``4P3~x9H^apRZ?qI$XuMFN{k06-I zNAJ`l;yJZ8@b_iKI`6VIXihR`+iQ>%>8y0tV4<9Zwg&ms8l-*Al&>oMZ+$ra(?)=j{J;<6k0f(A=(%RM!x_bi5yO}nFvDTtW1p$PUBPsSQ6V{U`f=2`OBBD z$%CxHrTK22q}@Eva&rvq#D);~aV~LV_jnEC8G2VJN(hqTxsumok#wv{=UW|$ z6YpBZLxCw0Wt87!+|>{)phxzNAz~07yjAjyXqGpFl4!&4gyDC>;7`V?y?={1;&`&D zG(1V9S6ARE5eeJo#n&CxSG{3v+BWSK*Q++)*W9G14IYV?=|Llwl=@^^xyPySLkKGKCuqlk*((cO|nW-VzNC+UZK2XNF~Xmvy`ijb?@J~ zqZVklk>5uj)lOS&OXEAOXk9lERDrf4`Pd$N&pyc>G<_)g$HP78-MVcg{!r5M7pUs7Uvz5l2PdZ(nLWYQ$&yUi9A2|c=s|53_^@m(I{9RAoX;64k%Ajfh zYQY8**YDH$j2F1DR6-s^VV#91ISesopWNC)hf%gb4)>Ccgo~F5#^vk=JJURpt;z_a zM%Lg#mYzux4NB%A@gp#4*#M!wgW^dHhrjIb^$zu_#Vp&Uo$%iqEQk(5iR$oIsED53 zm-W2fcX2o|DLZ(54mipOTC#(pegl{`E7@U#j&W&rnBz7pZYwTl zrEpum%RaO}d>+&%kVi4%UYxs;aLsy8MuXaw+l2Z0+Cfe~yvZ6loXO1lsDIL(_z)_l zLOE|il94zxL)5R?g+%HA`MTx(n@*#t<;}J*E5h25??9J}2P+!=kVX&SnZkAhlp*Ewqu5@39oyRXE~| z`Ae8k`ClxGDS0z%oRJ-K{-Kq+NSYmU9f|JS`|Z4{m?CcM&zWcwH&PH9BSR}^YdXR= zUqmszBSjQ*epbmfewH?^ql4a&seHIlZh$UsleDpoxmj}tXr{ak53)s2dh=jD3fUO^ zh|a-lN?9-#j`#8-1`aRb7#Up67-8+14H7j=$K79cLHuYPPixI4K1$PoDNo08M?xjn z@v2VS&x+54-cM(cR<4-Lh;jGc)9TPLKAPHvij2XTDp$2=nkqtwwJ#K_(ZoduX`47Z z++uYMwS+_(F8SGAix)BkT<><<)sgj_Rv!6`dy`$9Hmt@BsPZ1I?^=v7yO@Z7KWhoA zL=(W~BgvyvI2$WVetY+44B@FbnF{ zxlaot_OviYD7K<%N-?GumLaRw7EUC^uzVPguZ~!*&W=K&+7R@evu;S1YAF6-0z+oK z5}*c=)=cmvhEfdxItrvpSn&HkxxUu87Oi~L+}xiN4{J3>5?vC&Q27qHfayGc|$+R!K2U@~%qf3rd~Pey=Ke2OIr*go&lzg7%uKHgx+0%56-s;epGQ5u%8 z2<4RTHEkSQB5Pannd+D`@i^aNcl;<_N$e0Kj6$!0IwM)fy@w@*bgF3AsLciM;m+WI zIKIt;yg{DIdpHN|LBRQ0oRMmrI}eWZTLzq;4)NfQbLYpg zj=~!a=Rq=YoSTUfYzrmAHs*irwD454j{JGbjlU_raR>Z#0rR$wVSPmEgBaF9;%B)=86F}^2EaM zAm332ls<&ofhi~gU;Bgs6jd2VyUs@|)Qi1vsB~I=_{@#iw3?4!<@=+hLXQmrZ!~iT zd0Zv$3u+S7rd_x?0u{i_zw@oY|5^};fMPrrPDgJTpzf_Dqy9?vN*3G#$5TB{P5OtI zuukKWk(h%DJyP?Rf@UbL+1Vp30LU+g!gZ5|AIQzD%xplUz#`uyj$E{(s5VMvQ~!{6 z-b&Cv*7+`CG~!(PHe(2u`qI1k6^&PnfhEU+Q;Kml$uzj0N|1;-KAZW>01I@Zdh*

F88zNfQr_Ff?HZgbt#Tb5qJT0>H;OvEhQTL05 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

^Xo2qKFB% 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 diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..50fa492 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "1.73" diff --git a/scripts/build-in-docker.sh b/scripts/build-in-docker.sh new file mode 100755 index 0000000..ab42129 --- /dev/null +++ b/scripts/build-in-docker.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -eox pipefail + +HOST_DIR="${HOST_DIR:-$(pwd)}" + +docker run \ + --rm \ + --mount type=bind,source=$HOST_DIR,target=/host \ + --cap-add=SYS_PTRACE \ + --security-opt seccomp=unconfined \ + -t nearprotocol/contract-builder:latest-amd64 \ + /bin/bash -c "cd /host && make build" diff --git a/scripts/build-stub.sh b/scripts/build-stub.sh new file mode 100755 index 0000000..ad68a0e --- /dev/null +++ b/scripts/build-stub.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eox pipefail + +echo ">> Building stub contract" + +rustup target add wasm32-unknown-unknown +cargo build -p defer-stub --target wasm32-unknown-unknown --profile=contract + +cp ./target/wasm32-unknown-unknown/contract/defer_stub.wasm res/defer_stub.wasm diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..937a1f5 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eox pipefail + +echo ">> Building contract" + +rustup target add wasm32-unknown-unknown +cargo build -p sweat --target wasm32-unknown-unknown --profile=contract + +cp ./target/wasm32-unknown-unknown/contract/sweat.wasm res/sweat.wasm diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..cc952a3 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +source dev.env + +make build + +if [ $? -ne 0 ]; then + echo ">> Error building contract" + exit 1 +fi + +echo ">> Deploying contract" + +near dev-deploy --wasmFile "res/sweat_claim.wasm" --initFunction "init" --initArgs "{\"token_account_id\": \"$TOKEN_ACCOUNT_ID\", \"manager\": \"$ADMIN_ACCOUNT_ID\", \"fee_account_id\": \"$FEE_ACCOUNT_ID\"}" diff --git a/scripts/lint.sh b/scripts/lint.sh new file mode 100755 index 0000000..d6e3e78 --- /dev/null +++ b/scripts/lint.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -eox pipefail + +rustup component add clippy + +cargo clippy --all \ + -- \ + \ + -W clippy::all \ + -W clippy::pedantic \ + \ + -A clippy::module_name_repetitions \ + -A clippy::needless-pass-by-value \ + -A clippy::must-use-candidate \ + \ + -D warnings diff --git a/sweat-integration/Cargo.toml b/sweat-integration/Cargo.toml new file mode 100644 index 0000000..3c75393 --- /dev/null +++ b/sweat-integration/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "sweat-integration" +version = "0.1.0" +edition = "2021" + +[dependencies] +anyhow = { workspace = true } +async-trait = { workspace = true } +integration-utils = { workspace = true } + +sweat-model = { workspace = true } + +near-units = "0.2.0" +near-sdk = { workspace = true } +near-contract-standards = { workspace = true } +near-workspaces = "0.9.0" diff --git a/sweat-integration/src/lib.rs b/sweat-integration/src/lib.rs new file mode 100644 index 0000000..cd2cd11 --- /dev/null +++ b/sweat-integration/src/lib.rs @@ -0,0 +1,270 @@ +use anyhow::Result; +use async_trait::async_trait; +use integration_utils::integration_contract::IntegrationContract; +use near_sdk::{ + json_types::{U128, U64}, + serde_json::json, + AccountId, +}; +use near_workspaces::{types::NearToken, Account, Contract}; +use sweat_model::{ + FungibleTokenCoreIntegration, StorageManagementIntegration, SweatApiIntegration, SweatDeferIntegration, +}; + +pub const FT_CONTRACT: &str = "sweat"; + +pub struct SweatFt<'a> { + contract: &'a Contract, + account: Option, +} + +#[async_trait] +impl FungibleTokenCoreIntegration for SweatFt<'_> { + async fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) -> Result<()> { + println!("▶️ Transfer {:?} fungible tokens to {}", amount, receiver_id); + + let args = json!({ + "receiver_id": receiver_id, + "amount": amount, + "memo": memo, + }); + + let result = self + .user_account() + .call(self.contract.id(), "ft_transfer") + .args_json(args) + .max_gas() + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result()?; + + for log in result.logs() { + println!(" 📖 {:?}", log); + } + + Ok(()) + } + + async fn ft_transfer_call( + &mut self, + receiver_id: AccountId, + amount: U128, + memo: Option, + msg: String, + ) -> Result { + println!( + "▶️ Transfer {:?} fungible tokens to {} with message: {}", + amount, receiver_id, msg + ); + + let args = json!({ + "receiver_id": receiver_id, + "amount": amount, + "memo": memo, + "msg": msg.to_string(), + }); + + let result = self + .user_account() + .call(self.contract.id(), "ft_transfer_call") + .args_json(args) + .max_gas() + .deposit(NearToken::from_yoctonear(1)) + .transact() + .await? + .into_result()?; + + for log in result.logs() { + println!(" 📖 {:?}", log); + } + + Ok(result.json()?) + } + + async fn ft_total_supply(&self) -> Result { + self.call_contract("ft_total_supply", ()).await + } + + async fn ft_balance_of(&self, account_id: AccountId) -> Result { + println!(">> Run ft_balance_of for {account_id}"); + + self.call_contract( + "ft_balance_of", + json!({ + "account_id": account_id, + }), + ) + .await + } +} + +#[async_trait] +impl StorageManagementIntegration for SweatFt<'_> { + async fn storage_deposit( + &mut self, + account_id: Option, + registration_only: Option, + ) -> Result { + let args = json!({ "account_id": account_id, "registration_only": registration_only }); + + let result = self + .contract + .call("storage_deposit") + .args_json(args) + .deposit(NearToken::from_yoctonear(near_sdk::env::storage_byte_cost() * 125)) + .transact() + .await? + .into_result()?; + + Ok(result.json()?) + } + + async fn storage_withdraw( + &mut self, + _amount: Option, + ) -> Result { + todo!() + } + + async fn storage_unregister(&mut self, _force: Option) -> Result { + todo!() + } + + async fn storage_balance_bounds( + &self, + ) -> Result { + todo!() + } + + async fn storage_balance_of( + &self, + _account_id: AccountId, + ) -> Result> { + todo!() + } +} + +#[async_trait] +impl SweatDeferIntegration for SweatFt<'_> { + async fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> Result<()> { + self.call_user( + "defer_batch", + json!({ + "steps_batch": steps_batch, + "holding_account_id": holding_account_id, + }), + ) + .await + } +} + +#[async_trait] +impl SweatApiIntegration for SweatFt<'_> { + async fn new(&self, postfix: Option) -> Result<()> { + self.call_contract( + "new", + json!({ + "postfix": postfix, + }), + ) + .await + } + + async fn add_oracle(&mut self, account_id: &AccountId) -> Result<()> { + self.call_contract( + "add_oracle", + json!({ + "account_id": account_id, + }), + ) + .await + } + + async fn remove_oracle(&mut self, _account_id: &AccountId) -> anyhow::Result<()> { + todo!() + } + + async fn get_oracles(&self) -> anyhow::Result> { + todo!() + } + + async fn tge_mint(&mut self, account_id: &AccountId, amount: U128) -> anyhow::Result<()> { + self.call_contract( + "tge_mint", + json!({ + "account_id": account_id, + "amount": amount, + }), + ) + .await + } + + async fn tge_mint_batch(&mut self, _batch: Vec<(AccountId, U128)>) -> anyhow::Result<()> { + todo!() + } + + async fn burn(&mut self, _amount: &U128) -> anyhow::Result<()> { + todo!() + } + + async fn get_steps_since_tge(&self) -> Result { + self.call_contract("get_steps_since_tge", ()).await + } + + async fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> anyhow::Result<()> { + self.call_user( + "record_batch", + json!({ + "steps_batch": steps_batch, + }), + ) + .await + } + + async fn formula(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result { + self.call_contract( + "formula", + json!({ + "steps_since_tge": steps_since_tge, + "steps": steps, + }), + ) + .await + } +} + +impl SweatFt<'_> { + pub async fn formula_detailed(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result<(U128, U128, U128)> { + let token_amount = self.formula(steps_since_tge, steps).await?.0; + let fee = token_amount * 5 / 100; + let effective_amount = token_amount - fee; + + Ok((U128(fee), U128(effective_amount), U128(token_amount))) + } +} + +impl<'a> IntegrationContract<'a> for SweatFt<'a> { + fn with_contract(contract: &'a Contract) -> Self { + Self { + contract, + account: None, + } + } + + fn with_user(&mut self, account: &Account) -> &mut Self { + self.account = account.clone().into(); + self + } + + fn user_account(&self) -> Account { + self.account + .as_ref() + .expect("Set account with `user` method first") + .clone() + } + + fn contract(&self) -> &'a Contract { + self.contract + } +} diff --git a/sweat/Cargo.toml b/sweat/Cargo.toml index 4b452b2..c786410 100644 --- a/sweat/Cargo.toml +++ b/sweat/Cargo.toml @@ -9,6 +9,8 @@ publish = false crate-type = ["cdylib"] [dependencies] +sweat-model = { workspace = true } + static_assertions = "1.1.0" -near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" } -near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "af6ba3cb75e0bbfc26e346e61aa3a0d1d7f5ac7b" } +near-sdk = { workspace = true } +near-contract-standards = { workspace = true } diff --git a/sweat/build.sh b/sweat/build.sh deleted file mode 100755 index 36600fb..0000000 --- a/sweat/build.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -set -e - -RUSTFLAGS='-C link-arg=-s' cargo +stable build --target wasm32-unknown-unknown --release - -mkdir -p res -cp target/wasm32-unknown-unknown/release/sweat.wasm res/sweat.wasm diff --git a/sweat/rustfmt.toml b/sweat/rustfmt.toml deleted file mode 100644 index 866c756..0000000 --- a/sweat/rustfmt.toml +++ /dev/null @@ -1 +0,0 @@ -max_width = 120 \ No newline at end of file diff --git a/sweat/src/defer.rs b/sweat/src/defer.rs new file mode 100644 index 0000000..3be1297 --- /dev/null +++ b/sweat/src/defer.rs @@ -0,0 +1,80 @@ +use near_sdk::{serde_json::json, Gas, Promise}; +use sweat_model::SweatDefer; + +use crate::*; + +#[near_bindgen] +impl SweatDefer for Contract { + fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()> { + require!( + self.oracles.contains(&env::predecessor_account_id()), + "Unauthorized access! Only oracle can call that!" + ); + + let mut accounts_tokens: Vec<(AccountId, U128)> = Vec::new(); + let mut total_effective: U128 = U128(0); + let mut total_fee: U128 = U128(0); + + for (account_id, step_count) in steps_batch { + let (amount, fee) = self.calculate_tokens_amount(step_count); + self.steps_since_tge.0 += step_count as u64; + + accounts_tokens.push((account_id, U128(amount))); + total_effective.0 += amount; + total_fee.0 += fee; + } + + let hold_arguments = json!({ + "amounts": accounts_tokens, + }); + + Promise::new(holding_account_id.clone()) + .function_call( + "record_batch_for_hold".to_string(), + hold_arguments.to_string().into_bytes(), + 0, + Gas(20 * 1_000_000_000_000), + ) + .then( + ext_ft_transfer_callback::ext(env::current_account_id()) + .with_static_gas(Gas(5 * 1_000_000_000_000)) + .on_record( + holding_account_id, + total_effective, + env::predecessor_account_id(), + total_fee, + ), + ) + .into() + } +} + +#[ext_contract(ext_ft_transfer_callback)] +pub trait FungibleTokenTransferCallback { + fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128); +} + +#[near_bindgen] +impl FungibleTokenTransferCallback for Contract { + fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128) { + if is_promise_success() { + let mut events: Vec = Vec::with_capacity(2); + + internal_deposit(&mut self.token, &fee_account_id, fee.0); + events.push(FtMint { + owner_id: &fee_account_id, + amount: &fee, + memo: None, + }); + + internal_deposit(&mut self.token, &receiver_id, amount.0); + events.push(FtMint { + owner_id: &receiver_id, + amount: &amount, + memo: None, + }); + + FtMint::emit_many(&events); + } + } +} diff --git a/sweat/src/lib.rs b/sweat/src/lib.rs index 779017f..bfdca06 100644 --- a/sweat/src/lib.rs +++ b/sweat/src/lib.rs @@ -1,19 +1,23 @@ -use near_contract_standards::fungible_token::events::{FtBurn, FtMint}; -use near_contract_standards::fungible_token::metadata::{ - FungibleTokenMetadata, FungibleTokenMetadataProvider, -}; -use near_contract_standards::fungible_token::FungibleToken; -use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; -use near_sdk::collections::UnorderedSet; -use near_sdk::json_types::{U128, U64}; -use near_sdk::require; -mod math; - -use near_sdk::{env, near_bindgen, AccountId, Balance, PanicOnDefault, PromiseOrValue}; - #[macro_use] extern crate static_assertions; +use near_contract_standards::fungible_token::{ + events::{FtBurn, FtMint}, + metadata::{FungibleTokenMetadata, FungibleTokenMetadataProvider}, + FungibleToken, +}; +use near_sdk::{ + borsh::{self, BorshDeserialize, BorshSerialize}, + collections::UnorderedSet, + env, ext_contract, is_promise_success, + json_types::{U128, U64}, + near_bindgen, require, AccountId, Balance, PanicOnDefault, PromiseOrValue, +}; +use sweat_model::SweatApi; + +mod defer; +mod math; + #[near_bindgen] #[derive(BorshSerialize, BorshDeserialize, PanicOnDefault)] pub struct Contract { @@ -23,16 +27,16 @@ pub struct Contract { } #[near_bindgen] -impl Contract { +impl SweatApi for Contract { #[init] - pub fn new(postfix: Option) -> Self { + fn new(postfix: Option) -> Self { Self { oracles: UnorderedSet::new(b"s"), token: FungibleToken::new(b"t", postfix), steps_since_tge: U64::from(0), } } - pub fn add_oracle(&mut self, account_id: &AccountId) { + fn add_oracle(&mut self, account_id: &AccountId) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can add oracles!" @@ -41,23 +45,20 @@ impl Contract { env::log_str(&format!("Oracle {} was added", account_id)); } - pub fn remove_oracle(&mut self, account_id: &AccountId) { + fn remove_oracle(&mut self, account_id: &AccountId) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can remove oracles!" ); - require!( - self.oracles.remove(account_id) == true, - "No such oracle was found!" - ); + require!(self.oracles.remove(account_id) == true, "No such oracle was found!"); env::log_str(&format!("Oracle {} was removed", account_id)); } - pub fn get_oracles(&self) -> Vec { + fn get_oracles(&self) -> Vec { self.oracles.to_vec() } - pub fn tge_mint(&mut self, account_id: &AccountId, amount: U128) { + fn tge_mint(&mut self, account_id: &AccountId, amount: U128) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can do TGE!" @@ -71,7 +72,7 @@ impl Contract { .emit() } - pub fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>) { + fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>) { require!( env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can do TGE!" @@ -90,22 +91,21 @@ impl Contract { } } - pub fn burn(&mut self, amount: &U128) { - self.token - .internal_withdraw(&env::predecessor_account_id(), amount.0); + fn burn(&mut self, amount: &U128) { + self.token.internal_withdraw(&env::predecessor_account_id(), amount.0); FtBurn { + amount, owner_id: &env::predecessor_account_id(), - amount: amount, memo: None, } .emit() } - pub fn get_steps_since_tge(&self) -> U64 { + fn get_steps_since_tge(&self) -> U64 { self.steps_since_tge } - pub fn record_batch(&mut self, steps_batch: Vec<(AccountId, u16)>) { + fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) { require!( self.oracles.contains(&env::predecessor_account_id()), "Unauthorized access! Only oracle can call that!" @@ -114,9 +114,7 @@ impl Contract { let mut sweats: Vec = Vec::with_capacity(steps_batch.len() + 1); let mut events = Vec::with_capacity(steps_batch.len() + 1); for i in 0..steps_batch.len() { - let sweat_to_mint: u128 = self.formula(self.steps_since_tge, steps_batch[i].1).0; - let trx_oracle_fee: u128 = sweat_to_mint * 5 / 100; - let minted_to_user: u128 = sweat_to_mint - trx_oracle_fee; + let (minted_to_user, trx_oracle_fee) = self.calculate_tokens_amount(steps_batch[i].1); oracle_fee.0 = oracle_fee.0 + trx_oracle_fee; internal_deposit(&mut self.token, &steps_batch[i].0, minted_to_user); sweats.push(U128(minted_to_user)); @@ -129,11 +127,7 @@ impl Contract { memo: None, }); } - internal_deposit( - &mut self.token, - &env::predecessor_account_id(), - oracle_fee.0, - ); + internal_deposit(&mut self.token, &env::predecessor_account_id(), oracle_fee.0); let oracle_event = FtMint { owner_id: &env::predecessor_account_id(), amount: &oracle_fee, @@ -143,11 +137,21 @@ impl Contract { FtMint::emit_many(events.as_slice()); } - pub fn formula(&self, steps_since_tge: U64, steps: u16) -> U128 { + fn formula(&self, steps_since_tge: U64, steps: u32) -> U128 { U128(math::formula(steps_since_tge.0 as f64, steps as f64)) } } +impl Contract { + pub(crate) fn calculate_tokens_amount(&self, steps: u32) -> (u128, u128) { + let sweat_to_mint: u128 = self.formula(self.steps_since_tge, steps).0; + let trx_oracle_fee: u128 = sweat_to_mint * 5 / 100; + let minted_to_user: u128 = sweat_to_mint - trx_oracle_fee; + + (minted_to_user, trx_oracle_fee) + } +} + near_contract_standards::impl_fungible_token_core!(Contract, token); near_contract_standards::impl_fungible_token_storage!(Contract, token); @@ -185,9 +189,16 @@ impl FungibleTokenMetadataProvider for Contract { #[cfg(test)] mod tests { - use super::*; - use near_sdk::test_utils::VMContextBuilder; - use near_sdk::{testing_env, AccountId}; + use near_contract_standards::fungible_token::core::FungibleTokenCore; + use near_sdk::{ + json_types::{U128, U64}, + test_utils::VMContextBuilder, + testing_env, AccountId, + }; + use sweat_model::SweatApi; + + use crate::Contract; + const EPS: f64 = 0.00001; fn sweat_the_token() -> AccountId { @@ -302,19 +313,15 @@ mod tests { token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() - < EPS + (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS ); assert_eq!( true, - (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() - < EPS + (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS ); assert_eq!( true, - (0.999999998257479475 - token.token.ft_balance_of(sweat_oracle()).0 as f64 / 1e+18) - .abs() - < EPS + (0.999999998257479475 - token.token.ft_balance_of(sweat_oracle()).0 as f64 / 1e+18).abs() < EPS ); assert_eq!(U64(2 * 10_000), token.get_steps_since_tge()); } @@ -352,8 +359,7 @@ mod tests { token.tge_mint(&user1(), U128(9499999991723028480)); assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() - < EPS + (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS ); } @@ -369,13 +375,11 @@ mod tests { ]); assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() - < EPS + (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS ); assert_eq!( true, - (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() - < EPS + (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS ); } @@ -404,9 +408,7 @@ mod tests { token.tge_mint(&user1(), U128(9499999991723028480)); testing_env!(get_context(sweat_the_token(), user1()).build()); - token - .token - .ft_transfer(user2(), U128(9499999991723028480), None); + token.token.ft_transfer(user2(), U128(9499999991723028480), None); assert_eq!( true, @@ -415,8 +417,7 @@ mod tests { assert_eq!( true, - (9.499999991723028480 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() - < EPS + (9.499999991723028480 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS ); } @@ -432,9 +433,7 @@ mod tests { ]); testing_env!(get_context(sweat_the_token(), user1()).build()); - token - .token - .ft_transfer(user2(), U128(9499999991723028480), None); + token.token.ft_transfer(user2(), U128(9499999991723028480), None); assert_eq!( true, @@ -443,9 +442,7 @@ mod tests { assert_eq!( true, - (9.499999991723028480 * 2.0 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18) - .abs() - < EPS + (9.499999991723028480 * 2.0 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS ); } } diff --git a/sweat/src/math.rs b/sweat/src/math.rs index de3d4ba..b5db648 100644 --- a/sweat/src/math.rs +++ b/sweat/src/math.rs @@ -835,8 +835,8 @@ mod tests { #[test] fn formula_test() { - let steps_to_convert = vec![1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; - let steps_from_tge = vec![ + let steps_to_convert = [1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000]; + let steps_from_tge = [ 1, 10, 100, From 2aab04a4b62d3a16c0c852558c55aa265ec14b0f Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Tue, 28 Nov 2023 18:52:39 +0000 Subject: [PATCH 02/13] Add auth check to on_record callback (#48) * Add auth check to on_record callback * Clean --- Cargo.lock | 4 +- defer-stub/src/lib.rs | 32 ++++++++++- integration-tests/src/callback_attack.rs | 66 +++++++++++++++++++++++ integration-tests/src/common.rs | 29 ++++++++++ integration-tests/src/lib.rs | 2 + res/defer_stub.wasm | Bin 90880 -> 102390 bytes res/sweat.wasm | Bin 217749 -> 217411 bytes sweat/src/defer.rs | 40 ++++++++------ 8 files changed, 153 insertions(+), 20 deletions(-) create mode 100644 integration-tests/src/callback_attack.rs create mode 100644 integration-tests/src/common.rs diff --git a/Cargo.lock b/Cargo.lock index cf7ff71..832389f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3569,9 +3569,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", diff --git a/defer-stub/src/lib.rs b/defer-stub/src/lib.rs index 6c70140..4621907 100644 --- a/defer-stub/src/lib.rs +++ b/defer-stub/src/lib.rs @@ -1,6 +1,8 @@ use near_sdk::{ borsh::{self, BorshDeserialize, BorshSerialize}, + env, env::log_str, + ext_contract, json_types::U128, near_bindgen, AccountId, PanicOnDefault, }; @@ -17,6 +19,34 @@ impl Contract { } pub fn record_batch_for_hold(&mut self, amounts: Vec<(AccountId, U128)>) { - log_str(format!("Call record_batch_for_hold with {:?}", amounts).as_str()); + log_str(&format!("Call record_batch_for_hold with {:?}", amounts)); } + + pub fn exploit_on_record(&mut self, ft_account_id: AccountId, amount: U128) { + log_str(&format!( + "Try to call on_record in callback, ft account = {ft_account_id}" + )); + + let intruder_id = env::predecessor_account_id(); + ext_self::ext(env::current_account_id()) + .some_function() + .then(ext_token::ext(ft_account_id).on_record(intruder_id.clone(), amount, intruder_id, U128(0))); + } +} + +#[ext_contract(ext_self)] +pub trait Callback { + fn some_function(&mut self); +} + +#[near_bindgen] +impl Callback for Contract { + fn some_function(&mut self) { + log_str("Call some_function in stub contract"); + } +} + +#[ext_contract(ext_token)] +pub trait FungibleTokenTransferCallback { + fn on_record(&mut self, receiver_id: AccountId, amount: U128, fee_account_id: AccountId, fee: U128); } diff --git a/integration-tests/src/callback_attack.rs b/integration-tests/src/callback_attack.rs new file mode 100644 index 0000000..52f6525 --- /dev/null +++ b/integration-tests/src/callback_attack.rs @@ -0,0 +1,66 @@ +#![cfg(test)] + +use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use near_sdk::json_types::U128; +use serde_json::json; +use sweat_model::FungibleTokenCoreIntegration; + +use crate::{ + common::PanicFinder, + interface::common::ContractAccount, + prepare::{prepare_contract, IntegrationContext}, +}; + +#[tokio::test] +async fn test_call_on_record_in_callback() -> anyhow::Result<()> { + let mut context = prepare_contract().await?; + + let alice = context.alice().await?; + + let alice_balance_before_attack = context.ft_contract().ft_balance_of(alice.to_near()).await?; + + let target_amount = U128(1_000_000); + let result = alice + .call(context.holding_contract().id(), "exploit_on_record") + .args_json(json!({ + "ft_account_id": context.ft_contract().account(), + "amount": target_amount, + })) + .max_gas() + .transact() + .await? + .into_result()?; + + assert!(result.has_panic("The operation can be only initiated by an oracle")); + + let alice_balance_after_attack = context.ft_contract().ft_balance_of(alice.to_near()).await?; + assert_eq!(alice_balance_before_attack, alice_balance_after_attack); + + Ok(()) +} + +#[tokio::test] +async fn test_call_on_record_directly() -> anyhow::Result<()> { + let mut context = prepare_contract().await?; + + let alice = context.alice().await?; + let oracle = context.oracle().await?; + + let intruder_id = alice.to_near(); + let result = oracle + .call(context.ft_contract().contract().id(), "on_record") + .args_json(json!({ + "receiver_id": intruder_id, + "amount": "1000000", + "fee_account_id": intruder_id, + "fee": "2000000", + })) + .max_gas() + .transact() + .await? + .into_result(); + + assert!(result.has_panic("Contract expected a result on the callback")); + + Ok(()) +} diff --git a/integration-tests/src/common.rs b/integration-tests/src/common.rs new file mode 100644 index 0000000..c7c1fe4 --- /dev/null +++ b/integration-tests/src/common.rs @@ -0,0 +1,29 @@ +use near_workspaces::result::{ExecutionFailure, ExecutionResult, ExecutionSuccess}; + +pub(crate) trait PanicFinder { + fn has_panic(&self, message: &str) -> bool; +} + +impl PanicFinder for Result { + fn has_panic(&self, message: &str) -> bool { + match self { + Ok(ok) => ok.has_panic(message), + Err(err) => err.has_panic(message), + } + } +} + +impl PanicFinder for ExecutionResult { + fn has_panic(&self, message: &str) -> bool { + self.outcomes() + .into_iter() + .map(|item| match item.clone().into_result() { + Ok(_) => None, + Err(err) => Some(err), + }) + .any(|item| match item { + None => false, + Some(err) => format!("{err:?}").contains(message), + }) + } +} diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index d39bba0..62992e3 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -5,6 +5,8 @@ use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferI use crate::prepare::{prepare_contract, IntegrationContext}; +mod callback_attack; +mod common; mod defer; mod formula; mod interface; diff --git a/res/defer_stub.wasm b/res/defer_stub.wasm index 7ccd9fd4bbfe125e704a42f590f4aef38ca34b46..11be7e535371a7c2c2c7aed1e439c0ef9530cf09 100755 GIT binary patch delta 37632 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⪒*V@AgZwkuRF~3ujf@XcQleDb6 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 G@_zxzw3J=| diff --git a/res/sweat.wasm b/res/sweat.wasm index 825ba8237ebd366b1daafc74733fddb2550017f4..335ab18f445d5633a36354f51ab139178f99c82a 100755 GIT binary patch delta 53818 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 = Vec::with_capacity(2); + if !self.oracles.contains(&env::signer_account_id()) { + panic_str("The operation can be only initiated by an oracle"); + } - internal_deposit(&mut self.token, &fee_account_id, fee.0); - events.push(FtMint { - owner_id: &fee_account_id, - amount: &fee, - memo: None, - }); + if !is_promise_success() { + panic_str("Failed to record data in holding account"); + } - internal_deposit(&mut self.token, &receiver_id, amount.0); - events.push(FtMint { - owner_id: &receiver_id, - amount: &amount, - memo: None, - }); + let mut events: Vec = Vec::with_capacity(2); - FtMint::emit_many(&events); - } + internal_deposit(&mut self.token, &fee_account_id, fee.0); + events.push(FtMint { + owner_id: &fee_account_id, + amount: &fee, + memo: None, + }); + + internal_deposit(&mut self.token, &receiver_id, amount.0); + events.push(FtMint { + owner_id: &receiver_id, + amount: &amount, + memo: None, + }); + + FtMint::emit_many(&events); } } From 1f721c22f141fe22c94d25e92f29f3f03137e623 Mon Sep 17 00:00:00 2001 From: Vladas Zakrevskis <146100@gmail.com> Date: Wed, 29 Nov 2023 15:25:17 +0200 Subject: [PATCH 03/13] Update `Integration utils` (#49) There was no need for 2 methods `call_contract` and `call_user`. --------- Co-authored-by: Vasily Styagov --- .github/workflows/test.yml | 2 +- Cargo.lock | 4 ++-- Cargo.toml | 4 ++-- integration-tests/src/lib.rs | 5 ++++- res/defer_stub.wasm | Bin 102390 -> 101921 bytes res/sweat.wasm | Bin 217411 -> 217026 bytes rust-toolchain.toml | 2 +- sweat-integration/src/lib.rs | 27 +++++++++++++-------------- 8 files changed, 23 insertions(+), 21 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c4d00ef..b59a159 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,7 @@ name: Test on: pull_request: - branches: [ main ] + branches: [ main, dev ] env: CARGO_TERM_COLOR: always diff --git a/Cargo.lock b/Cargo.lock index 832389f..39d5ef1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1711,7 +1711,7 @@ dependencies = [ [[package]] name = "integration-trait" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-trait.git?rev=83a69f7ba4acab9405bf935f7dfc70f2f5279c40#83a69f7ba4acab9405bf935f7dfc70f2f5279c40" +source = "git+https://github.com/sweatco/integration-trait.git?rev=8dd8b63cef5e60448629a8903ea43b642bbf9f45#8dd8b63cef5e60448629a8903ea43b642bbf9f45" dependencies = [ "proc-macro2", "quote", @@ -1721,7 +1721,7 @@ dependencies = [ [[package]] name = "integration-utils" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=1b05c03351009c901a45400687c24f685f8b81c3#1b05c03351009c901a45400687c24f685f8b81c3" +source = "git+https://github.com/sweatco/integration-utils.git?rev=9fe6398c6064dfe8a26c323a6d0ea3c117a0b4a5#9fe6398c6064dfe8a26c323a6d0ea3c117a0b4a5" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index c489f5a..387c087 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,8 +18,8 @@ near-workspaces = "0.9.0" near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -integration-trait = { git = "https://github.com/sweatco/integration-trait.git", rev = "83a69f7ba4acab9405bf935f7dfc70f2f5279c40" } -integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "1b05c03351009c901a45400687c24f685f8b81c3" } +integration-trait = { git = "https://github.com/sweatco/integration-trait.git", rev = "8dd8b63cef5e60448629a8903ea43b642bbf9f45" } +integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "9fe6398c6064dfe8a26c323a6d0ea3c117a0b4a5" } sweat-model = { path = "model" } sweat-integration = { path = "sweat-integration" } diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index 62992e3..48e2d9b 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -39,7 +39,10 @@ async fn happy_flow() -> anyhow::Result<()> { context .ft_contract() .with_user(&oracle) - .defer_batch(vec![(alice.to_near(), 1000)], oracle.to_near()) + .defer_batch( + vec![(alice.to_near(), 1000)], + context.holding_contract().as_account().to_near(), + ) .await?; Ok(()) diff --git a/res/defer_stub.wasm b/res/defer_stub.wasm index 11be7e535371a7c2c2c7aed1e439c0ef9530cf09..bc10e56dc67485548e383e526811531c0eb40e39 100755 GIT binary patch delta 25599 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 { let result = self .user_account() + .unwrap() .call(self.contract.id(), "ft_transfer") .args_json(args) .max_gas() @@ -67,6 +68,7 @@ impl FungibleTokenCoreIntegration for SweatFt<'_> { let result = self .user_account() + .unwrap() .call(self.contract.id(), "ft_transfer_call") .args_json(args) .max_gas() @@ -83,13 +85,13 @@ impl FungibleTokenCoreIntegration for SweatFt<'_> { } async fn ft_total_supply(&self) -> Result { - self.call_contract("ft_total_supply", ()).await + self.call("ft_total_supply", ()).await } async fn ft_balance_of(&self, account_id: AccountId) -> Result { println!(">> Run ft_balance_of for {account_id}"); - self.call_contract( + self.call( "ft_balance_of", json!({ "account_id": account_id, @@ -148,7 +150,7 @@ impl StorageManagementIntegration for SweatFt<'_> { #[async_trait] impl SweatDeferIntegration for SweatFt<'_> { async fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> Result<()> { - self.call_user( + self.call( "defer_batch", json!({ "steps_batch": steps_batch, @@ -162,7 +164,7 @@ impl SweatDeferIntegration for SweatFt<'_> { #[async_trait] impl SweatApiIntegration for SweatFt<'_> { async fn new(&self, postfix: Option) -> Result<()> { - self.call_contract( + self.call( "new", json!({ "postfix": postfix, @@ -172,7 +174,7 @@ impl SweatApiIntegration for SweatFt<'_> { } async fn add_oracle(&mut self, account_id: &AccountId) -> Result<()> { - self.call_contract( + self.call( "add_oracle", json!({ "account_id": account_id, @@ -190,7 +192,7 @@ impl SweatApiIntegration for SweatFt<'_> { } async fn tge_mint(&mut self, account_id: &AccountId, amount: U128) -> anyhow::Result<()> { - self.call_contract( + self.call( "tge_mint", json!({ "account_id": account_id, @@ -209,11 +211,11 @@ impl SweatApiIntegration for SweatFt<'_> { } async fn get_steps_since_tge(&self) -> Result { - self.call_contract("get_steps_since_tge", ()).await + self.call("get_steps_since_tge", ()).await } async fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> anyhow::Result<()> { - self.call_user( + self.call( "record_batch", json!({ "steps_batch": steps_batch, @@ -223,7 +225,7 @@ impl SweatApiIntegration for SweatFt<'_> { } async fn formula(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result { - self.call_contract( + self.call( "formula", json!({ "steps_since_tge": steps_since_tge, @@ -257,11 +259,8 @@ impl<'a> IntegrationContract<'a> for SweatFt<'a> { self } - fn user_account(&self) -> Account { - self.account - .as_ref() - .expect("Set account with `user` method first") - .clone() + fn user_account(&self) -> Option { + self.account.clone() } fn contract(&self) -> &'a Contract { From 975f9ae2f0c1c2f07af70c60840ed74a8c9ac9f4 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Wed, 29 Nov 2023 15:57:10 +0000 Subject: [PATCH 04/13] Add doc for tokens holding (#50) --- README.md | 6 ++++++ doc/contracts_interaction.png | Bin 0 -> 186682 bytes 2 files changed, 6 insertions(+) create mode 100644 doc/contracts_interaction.png diff --git a/README.md b/README.md index 1fa9b51..ffa585d 100644 --- a/README.md +++ b/README.md @@ -82,3 +82,9 @@ Mint tokens ```bash near call $TOKEN_ACCOUNT_ID mint_tge '{"amount":"100", "account_for":""}' --accountId $TOKEN_ACCOUNT_ID --gas=300000000000000 ``` + +### Deferring tokens + +![Smart contracts interaction](doc/contracts_interaction.png) + +For information about claiming tokens from Holding account refer to the [Sweat Claim repo](https://github.com/sweatco/sweat-claim). diff --git a/doc/contracts_interaction.png b/doc/contracts_interaction.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ae5b31fa5130b972adbb3717372dabbf5af322 GIT binary patch literal 186682 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

uTlrrVTN=HAKxC%_?~tNCFIpeCR1 zo}vYg&67&(W4R+M1z=bbU{J@1e%lzJ)|I8zOJZVZD8ZjRN_tOu=w8ga>r58!Ku72R zcjA@@V=c5GjG};%+H@IJjux=na>WNWH2{;yL$&GzEceVLjTwDC^sJJMDmKfdM!DVn z|E1LW#%kGE^?s`2Vnh7a21H1|_1SubcOBRfa(7H}EVC`XqqRCQn|Cqjp)e9?R#>M3 zD?m%V=kuA@`*<;(3oQ%u{pU&Yu6`}Gn1*9=;J@)E#5Wa#g& zE^82sXS_p97X(I1@0%!M2>YUJwMU zQupgilh3|f9H6z~m%rrj+mFVb-p{XH`dP*?)_DMeOQJ4{YA*jZ1k+XbZTr(%=k2NA zXgMpw2%1%4pwi7j`;yqA61x5vOf3R;a&Wcd9DzHv%+9KABdR&YgvFBSRqOfOdEIwe zO)V{GzNb}=_g)0nTQsQ)U~2ix#Kv((0@LTH}lX-AB_}8fe&%BP5kF(VsBu zz25~^-(X9`L7gwJrRov@vBj$Xi8kb}RE$lsNbX%JMjz>n?W_RWZ?BYJLQ&?dlx`OXR`IE`$7`s z1{e!_UE!3w9ZiOF?7RWCTeW@Jy~R$nl{#3>h5@gK0fAJ7!Ue3 z#TDFs-Mulqm}jb8lDR5#FI3W;SC0wQ%;Fa$JtP`tGzWxUc#?0S*&r9E%ZEJW3FZSj zJ^lT)ed^q*^*#5GU@(AFUBF#Ana+Ih=SfVQ5R87J(2p?RkBf^EzGV6eLyS-0K%7yK zu6*oGj}l2m^R}toI8$CRJ8#)@Y}xZSmqDJyoxJ#J$Iz%o#a{O_E6#Kf{w=_S37T_} z+M>WLm*g^QIO5e-IM8SS((?>G=5I+CIrj0{IpIZxV~z*PJHFox(3b$=F)QGbkc>AE zUzB3Z1_VshHpwfCq*SijPCan*3Ve2FFG7daKeBnDwuiLIr+Rf(JQ=IX1%zgeEW znf)WSo@n0meAgsDv6cgr8>(r0_39tQ{^;s-C&o918{5?-fym zw%HErgrOzJ9VgSHqAJn*{?FsH+@128dL#<(fJVA_?JB(a6jPora_Tcgs8-iJmKD78 z_q*KjDk}6pth2wjJ)*lEf#Q?r}(cUp;!5zBjNW?UwO@bYwaV9 zXc5zJms(erml=e0kAcBgR>FD~KFiksEgfbUDSD2-F^0eY;(h~Km|1T$n;tndO3rVN zUHKzDW;aS28hl$RHs)h(8VGwgVDT>Ixx5dqHImMpzkYnO?mv9~zd!G1X6T&y^BNr9 z&p%4cu(V~(aDyI!*;il86eHroncf`x z+DzjP^7)nPSE zE#H(HoZR5#{(|}{8Uq8?n=avs7>>XcEpnu8i?Jizdnzx}&|Q&q{*A8Uvy%V#56$(n z`B2A-rg2A>v-1^3q>Y>hJwEf6x3uho*duhR{-7m)nb|K=T$m&%6a+ z{`*P%RiRYMZ`@H*RCKZ2<*@D@6BAjqP%=%Y5_~0olX?Ip%K!Iv30aOUZRq+DtU!Fb zu8E1Kw>R(H7`5`h$jjCn|MgkV{x9<0JFKd6`xZuxn%Ia1R1~lPf(WRHNVl5}Qlv^( zkuD%jq+^T{ML;)Ax(G-I=^d;fAiYUP>0NqBUI5`)So&V6m3u8NabS`lor}#_l0V%Y+gHN#ic_?#! z{y*dOw{Y+T&*YDJrgQ9TC{HAaxB1HsZ>mB*tZ#?uA@an(&=P_Xc=8K&!Ri#serOO` zM`&@v*eLwWKOD}@o7Y$5Z}^dhKfQG2%FFOGj}JV9relDZqiAIh{6?;TqbkjEAFe-@ z5RODRNb~fB>AuvZ@>cso1%+kP-Hxk#T-VE(>O2=Xy0+}th2e(7)v~-LRdd>k!!_Q@ z#}B24AD8q9$mFYRUiJRL->c}>?%QWu-p2gSYuEPGndiF)W^Yg2-d#Q$G%_1t&g0B9 zJ3MYw+s~YN{4q0gj+iX|PKx~D*h(Yw*AEMdE2q$%e@=bna0OhHi2EJ!gTkan`%E3Y z0b}vg7`XVHQ`g{zh2Zh~TUj~w>}l8BDFZj^TBuocc65ZoK7{l5aYdNa7(k$6Zh9mE zQfKs*558&X!igdKA6G5#DNI<+))@I z;uDE!&q4`yn2Y)*$b;2rGu!2}JeuWy+$b8+>i}NPL5-XYNR}+S*WVNZWWjLc+F#i0 zuOuzQl8bm6)g@>qz#JyZq%H59d`J}RA^A*N)nLUl*Xbb*)$)kv+gB%&*L?z zY1+>|DN0Otmad3bpXYNNt~aP?-#pZqs_8<{qjaTxC-nEDR8rSY7MCneeA1G1?Lo~l z#=cO4Z9HeR`*KH`i%W8v(V|Fs&uz~2+qtS!`pogqRO15(4jHrBdy ze!f)DIRgN*rlSb12}xCo!E^@|KTh~IFl-);9gZ9laL4W_g4zl+1XjpqW9TR?c!d<`6}7B;;vo02IpegcV4X)LydeySIu&# z6`I_YmY)nZHtJE;M5(oLNV!G0@%p0=| z_EWPPAmgLpvb~f~06fv~)%k}i(}rvz%ESg5w#e8YT$3YB5*v5bl_ZzF5w-fh!kd|Y z_+QxH=#Cwk82Cb0pnVO#w=e(-#ZYifX@uN$xG+&o%lmQ7InZlkKJRanIf$AtH+)E>**HWklVORiN ze+o5uJaBCx@`tAi(lZ;?Gj1MHy7Kkaowxkyv`mWb!!H=y7B(?@v7pIGL++e&4pKi!d6!*_f#=acT31;*Y zSd^=cnSR+|`|!boTF->;5A*3>1@?S~^8Cim&TSQ{BNr>62FOZbV$$}6wS-pTN{hkE zPM}yu76nTkc2HXP7Pe(Or0m-7tUU&WKWp?6xzp}GA%ioembYBkgY)FP2|UTB6V&%X zZ=$H+<~4+{e5PN{3Y=)(z(uSY8uRS4;TGXlzim0g@nD8h4JdUk6La8VGt7(~hU)%4 zWXWDUBOwq`>?og!uH7{`?#?@2d#}8H`tkWkb26~fr6#o&La3ykXT6WX;(aa@{YuB1 zv60#zGktjcM)N+(K^&09o~BASziQi0FP@&g(GX(YCUs;%q|c?s6ujYMa)q`)2gA{1od};KV1x5A7@Z8^Z%3Wf%u- z%{Yx@O0d1?8Bl4etF#Sk@`LrA*bfb6-QQ%Z1P0(i&DJxa=W{~3OLvtN6r5kNB4T3J zC%Gon_JWpE?6VHoQu5h#uEo6GZ)L^r%DDIf-J)z5Yes=D2}QxuN-`Czb7$*LaLsAE z0Z->zx*@uJ?FDukzOV0lCT=7!9lZ2B1ELJkw4!sT@l<}(Ej$HI&#`CIb3YCJ^y!31 zD>vtdBRVxQe2biFmv_`gi?HL1?m4$TZVS=MT=~$!*{$ep=p)E3cMkXqJ-gjoVM>wh zI6qlhw%pg*XLj>t{a>SRYxC4OiDLIqme?`NMl}q+AyN_>qYo}@JvW-tR5k4cBybEe zEcCA@n|4xassfx_QL%qUc7>T~(b}NP=?kw=(|bW1kzspXw7pR)N<#?-F~G07CjKvI+?)E!6P zZ)f{_mV=Y#Q-WsxY4ySYFyRbvv^C~C;*iLRgyC>zR#tIIi3IeoiEoct;CTM>qBM-y zt;_m`h5`q2fPY&KH!D+#OR@cUDSzY3t9RAZ)Fz;932*W9#6U6?KEY@?l!6Xn1&onp zd*|U)5qoR!(_YF!%{;q!nA&=As|%LjymtQlebmrtN%d5Mv-(WjTE$Q2$v@&q~$m)m$?Bhjk-)$u8)`=I}= z$E?(2aq$B&>#l}$0JSG|{Xj%;uH~%R-^D)D75vHhGWXVXu~2+?ob?J~M{4>LrWc1G z^!WTqsF>`vYtPY55t|s=Cja*Sq$lM2@GcCe_{A8`40m6I1qUdHmym=XyEWmDVu}}F z)NR<&nWX}rqmtF{!lT=lTr}dFJEf%Q80yXCum2%tm3-)VK4|kAw%9P+Pfqe@*-ZM0 z`U*>8tEZ0iU}sgx6|wshEfoq8Qe0$B5v@UNL`G8$@jQ6};SjjcAIzZm@o6O`dVKMa zwy3L@%dfrfs`_!wwvI1fEWfsIrpP)^#ktO(Iepr-9zmv8!6Sx)O7*hE(D-HcPwxwT zAV(Gg-$bj{-e}sFuK7+r{&v(&hg~(vi&o&=4%O)Lo!P>mrVT_L$nGsV zkaU{U@kXonK+aCye7Wn_J<;YIGSY2tw1HM!7I6bP{4V}!wwf^?!P2^4Pq0FX(zjYn z0ZOiqI`BqAGutjc@%N8;^VUSKbwP8uIGG|YUYC+^K)-j_U7YPZK@smwEcENIRhpBa zx-qVoF*6%e&zx%G({DaW?d-9txxUZ|yy#b&;s4*p;2 z&DXm{Ca-VL%s3Hqd-PiW`~t554Cq;kreE##7{$&!Hx|&8>hFSxcUr3?T+mtmGVf@itUz4mWy@-`5 zX!_+Z5LSp07yx*q=8Q|L)@;bo{(V#`7rI%*4i%ofmKaof=)?LQ)2G70)${S=XV0GP zA%eA#%f6R~(p{5l6DE2Yom7t3Uw{1qDMooL^~dl!C)bAXB9vmdR8szcplv18KgNW` zpg|4dG9=0tNgj01*%|ip3TR-df#)utv@h(uyskBhc>*>W9P-g<``h8XfFa<8as@5ko8Bv04osutRn@)}M} zi~sQld?}K<9mc~M_@a5xU=J?{kvToB#hFD55CMfg9;D#R>|AUThfRQf@pk5D`}w+p z_Gr8)Hp$&EIyzv~kR_*-pusCt`1j`o!+s^^7@g97g!)tz*n;{R)ZeyQOHxy8(-X>q zY0IX~eUA(X!Js<^x8lb;z*`&ZTdQ1mtEl3m?*%AK~6QYt_IwT^4X;D1(lUE>6;MfrDbBEhCm(qSQSorC2dah4QotMYc!E zsFeG&TGI93a!))Rvr2FVvL8Cs{H2~RLccmz%GG%j zGk=3)1rO)r%hOL9qgB(>uqu0-GuIb%)F(K@1mJgK*pZ-FIM|%9(Ylglk7wL#&5i_( zjl2!{<~^d=!POBPPJD3^)#Ge(oT z*e8(Eivy{oA6HH`?^HT@(#bU2w4*tAvITT1*6lvA;c5PShA*I$J^;trS_s2E3LJ!` z>M{MQFtyJ~zinlM-&Rv6loXqK<{JS$*8wLt8C1EAsflw_VkBqWt-ro}&YE`pdR}X8 ztAjneH}0a3_2`9X#q|w(NRl-@4oKI55JFtM@Njs&`tV6!x9K?Z0)p2{2;maHb?EO5 zz#v=!VWw;0b}p6cV`aBHT=`Q>JK!^wamgfS^uFmb)T0fXgBQ!;PkgJS5waUGn9!H% z>gurDxZdBe^Lf37tt9TM`Yo+Lw>7lR;={sNuo1wJ=qem8ymdZ44S|aVaW9}wK!2wn zDK%RU(pmBgf)?zY!fH{ntR(Y8dv;~LrX$W}8}i#|pg-Ps`UJ%DI_!m~K4}#!wzjrr z4ksh`PtPfTQ@qq5+G{o8wki?cN{w^6iiO2@ctmy6JmSGN-pyF*tOci(1K%~L^O!-O z4LKg?PfWh&?Mw4Z%x>-f7D2 zR0#6NIyqIZJ7F#U`n3<;?f%%X*uxhQZ-{r_V3veOIN&{sy0A3zT!=x%CRG=(n#^aHZd_P*Xc=+ks>KWSIJ(smRIW_ z680tovfIP$gDqna!Hba&7R?kqo(2bO0Q*2{e84)`wqu9h76VRA(dk@z9u498yqpxh z%G0nAmjN&Yu5mn46!Oxgg-8D)mK^&pB&|%idi83$Z{L)eXcH3l&iR~oD=1x>e2s$ie zkaJ~fP`M-7($w_G{qyGc-ymr01R~^=?M=_E7D-SiKm}D0`M+I~7$|5di!8jWOM6b; z1iEb~WWIob`A#2Gro-*sNx8_=6s}xRT>ECtMh3ltM?0bKdW^}WHri{=rrl3tpo&Cg zb!}=WKW6KAY9#sPnoYf-;7JhEM3S6syd9FRl5SHoNd0OpU^DR-5=<8DdkyQ0M`RQ) zH0ETLh!-bLOw_I{HG-J>Iy&KP+bm9BgOQkCX3l7^HU;%X79+xTcDj2 zY?I`IbGzb&*iwy<3GI=*U^!XY6kQX=SBG_<9i6uUp$v-l3s$wr9MCgQNAF#Gucodp zt>Pd5@@eMpPPR9L*CS)sr01>$y5QyMNteN?-l)zh-VB47WRIrQmjhH55Pv$7a?)ih zMn8Y%zbn~QV%sUe-IF-*ncr9_A-wbBxVAH8_&AalYa7K&NQY(_1z)UXiVQ>U#VBZT zk>me`!QsIxm%-g`NqtiGRr{zkn{@Q_a7^%BlkzV*!l zV)GigYg^LJORPD&991q$McY=mYjCZP9 z8bo+e?nX>-t=WgS-5Y36uVGh?`=7#1(A{ZRjML0_U^^v9A(lVKu)RQZ(9I)NH%ak>w|!cx!dvJtAC4p@&N2ksi=ie7 zdz0%y9mR{5378AWDvmE{Ku9S>Sh$$|*s+UXJ{-M8Gc_p^i%1E+RVCLOx(2OgU3YCZ zs0n*(G$3*DA~i0~C?r_u`<^u{_7565HSnd&@3?&sp1S6RF~@23)5UdVi7yIgAJk5T@B#Mg<$2 zEa|mhuRqDh<06b*(T}k>xXy910}$VgcA>i z-?&*O(=5}6oj>AoqJPLhO-+qmpqvbnyHYFQKcM}@!qQR?aiR5^Gs{aN88`RFyuE?d zYi{{D$LE;d*S{T9g^86xedDBmDk1>u;l~ts;W@NC1Fw&}*GEZJLVh3KUA=Z+o4A zUEJn{?sStz_51hAvY-FwtLPeWl+~18RK!v1H&C~ zqduqO^B$mFZS>^h22+H6+165`g1oH*z{A2cwFZaKUAA3hbt&bf;5087l45L%gx45- z;PMEQO>ei=K>O>v{cZWn>bXIlbi)u%O@WUK8zovL75_5`cV@ErgN{?tGdMUH?s^XO z0~t-ksEs7T)J=?nVK^XEZwv=8p5S7X;=a*)Q1|foEwUM7tEEuY)YWU#j8tpm)m4$q zD`M&(#Ms9%Eu!)zXqoHtQKVVNja1;rN55|4#%j-m9zC3Jb9!I4DOf*~4H|Le;JkdG zWsv1^()9-`)tg#c6cQ6nZNj9u5H3oG48H~Rko+c1z%imFDJZ`+4scj{PH;?!vc$_> z8}6%V1@%@ckLRmK4hc;i!~%y{T4QRH6165TQ2*qSc^eLnD2AiAolGgcO&o*&Vo!w& ze&S>qIW6bJIqKYVM%W%a0<@tv#+Fx)ymuFO9zbeLb}y4yTFid?EOuOXbq;DF6JOu* zJ(_3SZG5Z6#m()A?Qr0sdSB)>Z%dsn-16a&7#*`Y3!D^>DR=g47(p;yU0oTDMQZJ? z&bXv_d9>nl2adQf7FawA9^G+hdij9OVl8E`BBbNtgQB*o@LA&bqYy=%Y%pocD|~M5 zF9$I-xE}ujTcUOd9Bt&<;sW@?I;3-f~8Dv3XmbmX`TL=<_;Ck{~#WZ43v@ zR8kk1zFRZ5@os@pe*Vg))t_tk45)jzT&04uj1&LBS%sR*+f47$culbZs|$cR@SFh&4B>CY{sFrk z{{g!X9zV|MNlo6REQO4LH#`5LZx!laAuN4`!8yoEjBcsjx*hkdgLS8me{+&0cK>3= zS5OwId#>ptK?T)EcZ;}%m6aF5PnMn88@p3Xs};3gy{&?dlWXc<8YQ+x?LapIMH%Iv zvDz_W#o@-NERM@38HMPdVeOQl#BkyTMT>_*Z3_t<6WgqpR4%KMdV>w6c;K!21s`YW z168R(4$&?wed(+*7N6gob14t@$j!|S0&#)DFSHAhbM5tuz_%b39)prbkAOSQt-&Rg z0=^R`X1w>lmy3|vnGX4n8(WMoN=Q^gKwzX-W6209E_Q|35e*nakqRC}3j7{{nO}=6 z-U7H(M;>Hkn=^9tDxa%K96{1Pg2L!y77-Ga_ZV{s+`Uui=Igjt<+O~<{Bk~b(>jog&#Lc`ZHH-aWHV8=NuKd>pso4Gt{skX)9i#ayjYixo7MVHVum? zw`>(kF$pvbz=u^*ZRDxPj0$q>mPHQ^Lh&A0$bd7mW9fL?caWLpYuo9Qo5?~SmJ13} zV9{R9l-AR$XoaHKM&{YP?$Tw}a`QH8!@t37B{{6p8d`L$t#!Rh#2^emHFZohE}!4| z_S|a5<%{LRByR?=H(4jNHN~jOxMODjg@sA{0tXwLBI34hplvELH?0HF1e~pl6QW~g zPN=9jTpBPL*lN4Xs}Lnyw8gz576lOs6`GL5cal<-YIv1R>wb=?to?lc3&c)c4PBK1 zFC>#zYR1$X%ff2Y)Vk*e?p_{y1HrDf3RkhT3`Xm5Af#Y8vVfB5NX&7)H?|&-C@GcE zR8tGcaa4^e3T|mQ`aUk)QwnQ1Ps!6y#i>Tk-j zj6qc-9OYkw(J$})MD4R|ribGoFLMTp%nBA3iZW4H83m8O0OpxQ!a{r)0WK47m=_m) z_i=El`Q`qS#3};EHIS>QECg!BxB38E!cK_l<8kbP=jbz~5Qn%nkxdfv&hdb!NHUI; zrUJ&X{39x>)@-UBZpmXib(T4Js4;u`8B5e`sH=%k z{WG6=ajI0nuQeYknHkQMBK=j#(DT(`Jo@H_lN^=gaEj*bxCDft&5klmsJ$4Klvx@ST)`NlGh`?rNwb;+fP@3 zE^;EEB=_^JatBb-a7OuHDwlqjJuJP{N z*f{OP@C=27G^DVDY9#6%;!KXlGnp6~#^`H0#-=;xN1#qgDpgo& zxazKKV=pdMmFm187KkmXP3Df7i7^V_K5J?^${=#T5AK~(%yCf@ZPSt zaKUY6;G?g3|EJ9Khue8xp!#H_Ho}EO2**%wZ)I$m8`O6j2a{WNP%{HxNah@~Eu(Er z<1(aFo!>a%yBjg0ECS|~2Hk9&OtAn*u*!tFZ0}M9Z|Q{s6ClueV}^bV7~urlKDy%u zGzdeGRv{C4uC!)SuCHpf>Yw$kts2!4QdL6xTM1hrSIC%(5Tg^J9PS-Kxetp%q>L1T za`|3cs0vm?!~EE-!OM6!QWMn4X2p!wfYkEMpz#e%!k1yPBa7IJlt~sx3z-YFu%Rn1 z&MBX&MA4xi&g<2nL=%_#p_c6WFmIGWG*Hyxp0Hosg^n2IHi!AR^KQGNKubp0$EEbD z97Q#ryqV`kRdvjEU+)011$=*sP*b1=aYUf7p+Py=ZtMZdEe4~0fM1BWU@!EX<#Cod z%yw-jHa%>GQ2Y(##A*hbp)ft%l6q@M1uz5!EAX&DYrMKpps=+p4wuX_r2Cbi6(6&k zxruV{sgRJ6x&D|0GglaA!ND=5LHi}t_-pV9*rlBVf4HDsH%+J1&(|V3C9J0A82GNI zz*Iy<_mNL>vWK|OEhT^mgC>pnMfF2-!Z1{V~_9p0SN>^d&7q^MYEUsOU z#@3BX@~sib&FSxVDQ_)Lo=-#!f`BA~#Q!KscXcV$4~|eM(Q28`Uq~;WB})zf;Xs#C zE2>e+*yT}Y2>0~d*6`_5@2fle3yfU=XZa*FFGy)-dCt#oBr6f|Ez>`6ff>g4&tM(> z;hfctxrIvL{*QfS57o7~Rlk1G7HpSu;o@G$?jKuA4nyj z?_X%ix+UX2%&2{M$MEeO9KQ~8SMMt>CD)H2D>--?@9Fqif}WD+2E zca6K=Tn&X(P6h4f0?1{+e}D*`q6@vGMZ43i)NSvIByC>%qxu03a}BCs+fY+eQ~i#O zl4B1N`<y1gVy0uKHE)ByhG#P?7ig z=>8r4(nf4P%17KgJh+H#;-BCNaS z*{M~f=pk>jpAKBPawTxYLqMCYt*v(ojZu_Wq@&np(3)f2n5^p#5?ohz_X~P16*wVj zA`9+Hfx*WS{sh4%KAr%l^=OC1IR;U?j0UIYo^(rUFc*ZOGAA=L zbD)4ZK@CwL{|hHq6kG#iv@TRz^|#rh$_h(wH$wRWvcdu6*4WrM8Vq5T)T3>ty7Q;g0udcS!Mqse1Uh)|aHvcN~SXhLsO=QbS zZ$vhHV_C}%1uIud>A!jvLS+dS^NzY+v?X1jBbe~z0<%RA7#bRqgAPa1IrS|xmp@`o z%BQNlea?*{YrB|h{_@%@`c@IH_-6c-5e{bnI8=yhY-Hl-m!+Yx+GE?$<>)VV+{DAP zHuLFsYe5>ChYa6c+Gv)p!b`WNN;?LXu?vWGGb2l8rE&HxrGDPquHh3D#C`Ymi^vjo zv*m(&`ha;|ON6F}C$Dc-`d;Ft`Q!d`?r-1hG+*Q{##J{cAl6%XVOL*E;@gK=0n3Lj zTo8io9ehs{BPCWWnI}1<4L;1;u)xa2C5fm3Y2!p?p&VFJFEEz|@Ig9D{co3}q50sIDV#D7Ge2#&+&NQ{Zthrz2ccsQ-a{eD z32hrQD=1O>;x~N1;+|)}l0Uo>>;LR*NdBg`+_`KW-r_P~Goy`6Y>VtKhX|}ip*$F~ ztH_O%c&!QT0~q~1hhId@xp6j|4o9A-8x2R#snh?s;)CzSHJTaPr1W%!F7a^7KC`E& zN^!1T>-?Piw~QX-lN`s6$$N2nc?Y&E&IZ%r1Pi&F=kJoWVe3{ghR_Ght{nYGzh8|e z8IIG`Z}&*EG~TSHe%;6@uH7XBjM66_9v(<{zzdVB312b&2oyeYWo$9O{Wcmsb`mn* zeeyNh--tPw1Q&jn`Q_U+mzBfC1*4uyu-?;fkyX191}O(n4ldz0r#FDw2QTQNhK5rL zG4j;cCtq#v~Y}Cg;C*NRu&gdAsG0ulaG;H0}96YK;HMV9eNs?ZD)}_f$&Fw0Kod76KuDn(8#bO#UWWM&RP`4t{?ur2l*5K z*IhqO16<&h$o`{8WkILLiuDHjsJXfMI$5#WD^7-lf$4y~1!U~8>FN4aw89Vo6Q{FO z#@GF`6@R;h>A!aI8~0+WkPH{(*GoRDXy{?Av>#eZ(6}epz!wyM`0&`@ALq#$nv)^_ zy&`W4p-=%<@xISzX_l=?1q1DoV1IqsGDYKL%k*Pc{q|kUHiWNkYPvVz*Y>>j_Vzva z4p2-&u~XALllghQ&eQ`r^-fMUzvQ!mW_bsG4^9@?K5_T!e!ilWBx>*sd<;%<$j- z>Am2OS4{soZodEg>qrHF4-~Map!rLpv~%4^M_xEA&FWIBP?oPv(U)`iIB&v>^87d7 zQB?X5+zruN5`?31waUvYcL-1pQi*_|U^IGHQ7R8XU5Z6XseWJ7fD}koF^J5lVL(0l zKtRbKsE1WWG-5zc!+gMQP#?E096x{ld^GS6Y8Wyb{km9XD`D&p)9ZeIM4E-QaBP$S zZAI3=Alg*(#*J8{W^~|M^S9m({WS)M>Gb}eKj5?+tE6eKfPN#z@*ojDJp;DY+FSIQ|z9lZjP5;GS9@Cr~=riKA_Abf)YEzABIj_9OeR5pgq zkfbj)l$FK*8nc3?z4iQebnn|6%%BB(Qh%bi66Ep6EJX-h&=r@321oJ=Npwp9ts`N{ z`qgX%+kuEIl|@xm6{Ie9EHzP4Q8Y22)1mLc>4(!N3=Ide1@pbUYSmFe0X*s&lIvL2 z;^5Ye2B#hAF$ytL?wZTNGTX{)si>1Z%)%MDWcs}z_w8n!<}YI9W9o*#b*3$WTfIr% z>kl7cRK8MF4H1KXmyS5Mx4&K-sVM@!m6?U%tq`icmj{ z4MPPU=Y%+bM<@b435XuUF}=rtt_`OG(7a5rK|+-wW#O$`_hW33XG(w#b_rJW7YpWR zX7mO>C1!RjLpujXGgp(!8yi)C0_r5}Vql0y!3s5lTx?L!W#!})vMluZ4C^i;A(HDV z_9_kPLB|#XUd9tQPh#dJlYt-^l8p`cdzuQMD2$Isj%njX%)#y2d?=XTBnUojx(ntS z(>qb4#$wgSdclbJq11-L5A8tFfna$|?6D1=w_u(Pgo5Gtji+li?0AMk3YSLCWvEBj zp#lalEu2U*f)DgOq~_ZDhZHKDWTOaN2K5FhNv6;m2bUP;K?s&u_8rPYku@s^Xj_oQ(R`15&-yZI1QWCe1~r-!%6~i!FvJC+qmaq{}222-?kh zv22tz0Lk&P&0}cefENz{N%~0Fs+ywrByYBR7eZ9uL5Mt80*xlL-rS|R0Wy`&4X9z; z$ea1%qE?@4*7c30f;;X5`HFvD{U$Jv9P9C8j!SkP!J$r0G(RXym*7~=r7{xu2`IGa zO#3QC>cy z!K%S~Mc%-_bGa`fnBnaMaQfuh^6VATZYYx@jnK3}dzfgo9npvB5?c!^p~v6&bQoK< zI2FW%Fi^!5vG~A7`BrO0Au0wTDck3F*gQOLUW4m9!QSAKY=8yUm}8w>7A%$k(>Dnh zdah#LlM0XLn=x>d6Nw-ekq$Hnv`3@8q#w=F_w4%9Z^5liWUe=q5HnfyVdq9h4rlc- zPz1={jJ={@6#KilxHvT;A_7fqFGx)qU1DT2Byb{L56m|56##QSV%(^TqBW+eI28&Y zeAhqxPLYK~$3(ZkiC>M@upDyRa0swP~UlM)jP`6kVLCwru8pxJ+dU`qUlX zBw(+gpr;p!eLji|n2$5xfjxUpBD3^jAv+MBCG|*6S6?5Q%aIsOP+cp4KS`b@9WZ?N zx9&Qo_iQJx&eKCB&7fp&L_Hejnr!u8dpVIR3$IG zTzLFq$cQ-#O9ewHIOE*YC=e4H|H#`9R4d-t&HEVq-95C8QTQZ*%^CP&DqX)$VuBag zA$Pf3_191^qs!>l-1wRHRmXJriW3W{h-EwWfN*p)NDDrMTMqG|o#mXS-RQlrSeZ6( zH!o(f9M`Wpi;XA+!)!bofCUvpEDU%2F@zaPjzKUY8PRFv&A06@e}8|(-z+7SBsog@LI+Uvx zyssXmppfNZY76(qOu;fB=MA4iMn+a74;tIcD)#c|o;cFf_VxjF0wn^5bWNMSaJ52n zZnS)tc&pY02hTr3kr_o|RtgF9a70SF?b@)$WB8uc8PvT|j{YXAk!4Y|Z*q2S4wS^xvWh;U<`O5GK7ER`=&MQ(&_%q*b~P6jm4Vl5 znLSysF(2H!_w~NX)(03Md`O&1`aaOV=DXXfIWa*vRN71)9AZ+iGGSR?;!@y8z~{>68^-S6zt4~` z($}XyCGvROHegYN58}h8kU6BbF*DF5Ej z(=~a>d^o>_Z_GRxk5n+^_`FHoft;f0%S=fGDMm)X2IS0=@RX4Z7-5nrV;(Xbz5aJt zPO$W;{0OT#<)!-04GFFNzECD?t5#nzZW}!7Wxna|ofB(lXtw;63%2Kd0c?#u9PI28 z(nf>`|7MdpOxVEVV+G4GcdF5F`r?ViJxM~R#H&!*Mc-huU9c*2zXC;U6%pGAqOXXo z+7ZJwzx=`uunYSQUmpuPBgRWM(a~E77@M1MOWb&1Z0c<`ygb-qeOX?6xp0*B@ZcWy z=U?(ny4-rT3`G3mREF7n>pUcUUqpq+c}E#_tISq^{OF}t!c}U|DJL(#Me?;bRy zm6tWfar1CS#&IbOTj{k4Y0H zeA)9>FPjBN&?=Gedvs1Vyc-RLgFpgDwP4KN7>(YK3ekJ70Bqdt2x8ubG+OU4G+uqY zEsVyz-8~C49qyTBmt-%}x%~=;%yKyL6u_i8|7b@D=6*jyebTZ8fdIlbT?7Ha zPs}k7N{1#Ezg!d-uR^F=n{J}%dyx&+;+J44Uysm!Jb-gxDgnA|WD6L#95gnpiF|_b zjKOJ-j{TEph4DtlgpHWPqbLj;J9cbI(o}mO*p51+rm3kJrHQM4FQG52n5FqyYCz{-vv$}0t9&s7->BKc>*Q* zKf@mVehsmtYoc;?C26i38yk~_C8H%ay12`Ur?I-TyX;6~0nm1vo!h-=c4JLr#Z2_hTDHyL?x2_7I zsCUAquyd8WOmafN0Oi2h4FIANSz;}UZ0gYLSxKmXQ{j^xV9_rJj|-WIK3-RF4rW+jMy;O_1S5_(dXqn0Lv} zxU8Xh_V?bOkYwR2sQd82yO?w?p-N5i9#Sqt@*6rIjIaQ~!y~6_SR*Nzs2C>+%mg36 zbpXlOA!5Ig;n*MekFr;;Tye_;mXCg&ha6C8AkBX`T#YR@8tN)BnqU)D95QeDfC4anzZz+8 zl4ZO{7{a|?NKbs6QbSTun`duJIxnF?Q;SqGnb8E(3>uNfnYH6Mb8GV*9kJTxy=(=pvveGakN>2T@*bx{X|Za;T|(W)@efL&%6qPc%ZXev<0Bk#)hr z!Ew&O1^M#2U8=%AYD!q)w9l|c3}G`%vUS9+B)dj30mESf5-JgR0`C<1Vu88po}2QY*dx$93LAJf64Dn;y~4|| z=?!r{hJX)4Ca8Mih#Ywj$Ut2g_{33&HN)lvRw&FaLID2h;mn=GK$uxPh(+Hjjx++B zp-g@T8Ijq|nRYsFZp3>nYH3kNApHm*do+~4{tRYd z>dnuma~H-+2vkc--ig=FZ3MuFf%4AIwskW{1}H+>-jF1FfrUtJ15u_Pu*Nwohq2n0 z5fH|zfP4ZVQU!c>n$3gq-etQI0-+k{%K~#bR473BTyXWSNz}Ta5PSI&;8=322o*X9 z24Ywxydx3U>R4+YB1$4-7z;I>VunD3<{dh*uRuVoqRnrKi~7~$`!8`hq2PYI zdE4o$t^!SW0sT*f6DNNH972AaIx^{1jnVmhUVvU@?>QX@<2EQ_hS)xbFZdZr;e4oW$RXumN_JR z{trv6jFO4Ga*MF5g4lcvyv2gOnT0EH&iLYd}fA>cn!VF6Zy{|F*#F)AJ} zEtE58p<>^MCG*06AC1cq<*fgV8_fqI6H|iOh}R0P75Lh}>^(;_EewGGoEs=*Dw7pb zbT(jBw^xIt=_{udNK7NbOICcP`OMGo?}eOf9~NCFCn6awnrY9E#t$*`YSFAmpce_B zU)oo^`gvj@(O9)F+5Zdn*+c5*pZ=pJ)CuC|)?> z&4s1;&(Yj-{Ru&Z-m&oC1TDLwm5= zkcVPVfBdC1XsuJz`~UH{30y(ROw*H-x&EvxGTi^E2;;ghoxr3NrvmKJ`Aq2eH}glQ zrphK~{qJo>E8oZ~tl+^+taxVnX0>UB4d4%E-_ot&0NY z5G|n5xv=)!fB&+NQvEx3v8Bt1l2T8eqhb2xe~hZJ`c|Y|JP5(oEBw-a3X%KISGaw$ zf^YMymb3r;(~R;;zRgaoKQDQFXjsca@|P@b|zaYG#!JqM=Z=X&6A64`J z$1ddY(^fj|+`e`Gkop^u5K3rtgG0AH_Ro`-UI#0zk2jcP^X6W`PW@>BlcQ8p`{ULU z`T~#xfB;pjH0S7l4m}p|2?mb_oq$TsW~hx?BF3`mC?}$;u(Ii zV0mIgZRSPAv#V3@fUfRZFODH@kD`JqR`MQh)BLoxoGa_<{UuOz>t0=5s4dX@T%g!C zeER+6$}yrR0QM|!Oqup4$pGEWRkIdT~Qo7~p^1eqkfUKum z2)q(00wop)6>9Q|*Ph2n1^=d`;^!9{5BpTGABm3q+7aA|HO z`-X2+ZmC3zotY|07U5gAY_Vv6b#?U`CY)`r?Dq-^o;P%CB3d$wIWqwGx0TK_)6g`x z&G6Wfry+kiWwWEH3;7IbO+%fVOMR0J%S3PMrTBR6u_@z7z@(igmbxpZ$!!CyE?-&O zqH^WR;~e|OzFLPfTXR;=olU1CQ8lQUEEGgQbr6>sDb6{0sV>~y*0Qfz zw7dg7YgUPVO-eNbce_yQ2f3mzzFcT7bTh+Z<=<-VrY$S+EO-8MTxaM)YC;dK4`}O) zfc8u%Ks%5{Nfv?d$_F8lPTv;u888K03(@FWjl}Ibg5uW?&47G!a49F9ML*UhWQgbz zRv`2bNUtG*^h9bAF7a*^3)>4lt6i?SX78(5pZ(4Gu>Np87iQe9PhY-G6!NUi9;73J z(7<_hK2{)0Bl-t~w1!02PsBDY%c2iDG4UpAn<6jmN11QuvM?$i^ikOu6QWE3(Wg&| zf85^+6ex;G#D+Y}y5D}QMCFLYVy|AEw4Z9w?XQk-N4|PU{l!&Ov=MMC0vY1`BLb>k?y2W}y%+su-=d;>>Q+-=DU2B=8%k!QBuIv>w?9nr> z|Hd)H0;F(^Y!px!Hw6L_@u*>NY~Q|}QN%_bVlGOkHKdsXS&+}QvFy;bvYO6TF=xa1 zj)9aS#d2V4=L|A@0V<$n$lTHBg}f z0|8W#rL*-n%yW+1_8k3$j#E|sW$MsOS4pLxkV#^i@%)*qSBXZXES|8YBs~TlI*$jk zmS?mQ=ofR;&=Pj>x8IZ$pt~`9%qTX9$3oVXLBV7$$bPiz7?*NZ)y!=B>-?^v>arQ@ zPpSz;>AF+xH+0x%-NmL1TK{B4*)1bpUE&g|88y?6Jki=EI@V=Mk0-lydSB9}nD=P< z@tK2eZFd=}^Hpd}L936o$k^ZRFvqYhG%qMDgpQR$V~%zNn8`6e`1$3Qw`Bu`MEv)w z5$zYc{McHPf#c{v{+$RVp1zl4(DcGfqqp)BfFgnJ4D)Ri2mYoT#Lqn~RZ7VidDJdUkyKp<0dQRSzF#g5eU}MIvUQfkMkwNpvxmGdCYYZnCqlFNA(sKU#z5mID0Sl3fGyuSBs) z`-V_iMN*98G~Mb|@~*iSI39=ml}*=5aIgP-8e5cH;WCi-s9yE7U6wYAM|Tyk=_MX2d1RtMVL&P)0o zOFa7^9gnZyx5dn|^TX!Spuo+W%+1WI{`zezbV#*!k6^_EO$f!#Oc%ws?bgi%_CF*g z6@Zt7lvU;^ZzYQdRvu-O8OwQhsbTPhC*ALe%!_W>EiXM9_p{;uXgci0X}az=fl!=O zyY}uxPKIPmpxovnn+Iw;Ay}e|1ZSOmq#MKM|4wlT#$efo$d&PPfA zeSt=$8)G(lxr|+Rh|2Ix^m+~jtcHSKRp(AB3xE1GV1GGp-tJE|s}+n>$<+vUUp@)7 zkh0|SJPB3N>e=`4-yp=50tgUfX6ugI54OBF5706)3ODUIp#Pr7Fj<6o$BwY{`;L(& z5%%27!36?koFC?lS&vUWWV2fgTyW61Dy)>P=qeO6{wZ-Q!|^Zs?>S!(FP=FxG&E!} z(QAsGN^KXvQT?O7t&fb8E?wHrXYt9ItUG|N5!lDwm}%=qJ6@BS^x`6ekM0g`vHJRe z;Dw3O^!m5;V5tc@2w&E8m~^d+ZD9vJr(;@NaV_mq+?~7U4`Le!fP|7&z%{Lo6#Mz$ z#=J%8+=@_-^Bb6-_Sg<~D_+D#D1$bOvcQsG0npelip1YM^9ifgi=6eCjUJwx-{sl~ zsQB}bRCJdLO`LX@Vh|m)?8xQ(yD8InWP+&(4F%7o3#Dq{Aj_g{vBeVHd&p94{(bji z<*$&r+SL)zU3%2P`NBDM`9D7R?!NOH+8Sz(gN`Q|8+B>@hMR&%14;kz{(z?(;BZ6Q zw)Q}V;cKf?8toa6S>f6Zg;km}f4#s`>;4){~C1~_1 zL%sUNBc;1*Xtjk7AXXT$KdhmeK72F?k&#Efqtn9TDv)S zU*2(aFhPSopt<=WrMR^rbx*2JR;|@Kn)cT}C3?+rgu4UofH)QSy3hUqb_y6ZoSvCb zfqX`E4uH_CqopOqI>;76MopDe>lGhtVNG(S{q34K9YEufR*NOy-^wd8KbUMC#Jqib z1PUt#2uVm;AG&VxhyX-J-)-%0&P>L9O?H(=jRJ~#`zUh&)oWi!?jmSC@Ku5zV-*1k zjpT2$lT(P%pk*U~IuQdRO(a|`HldtBM5rIbmNspNd&TK0?^b^~&n}br zRt^auoEd6JK2UBw9@>x}lF|I;Bn17z=AvRC!(YDqb*Ld*lQGzlt!Wnf1(k(w(%7>j zl}9}*)?IW-7Lny#XNOfynCU7Uq9tWz+~qbn0-(Zcm1V{%wQS_S`OjUmQ+rUz;=R2a zO#z5>$#h3KChmy|tt=KZk+^E(zfp^`S`T}IK~=_`&1Npp3FU9o`Nd3gSH*>8+xJQ+ zZirJTm5pu34TenoYo4F0_RrJJ)$EUN<+0>nDF6eaTG}@0ygmUJpICXobQ;6se`Z+@ z?ZE~!HZ2xe8EglB-{sN(KAsCF6ZZ_1xO>Ia8xGW|+ss9!^-o?S_}hoFvMIOjM}Pla z^Nhc(7Uw&_+efWTOZQb$^bUSgtTel*X*cOAnBw>*BLU58FRt!CKhRs*aZtJHOla#) zf*gOBz`Qdz=)xh0^X;y4PQ>c*JP+p!W%C1y_4Ng=O^39M!WTnhcG1g4%G_Q&3;LQy30e$eipV+jJQA?J@ z{?^&c)ML6+HEQ|EDCb2%`j3s$U$I2lXt$_sZR1^o?Hm2AnR&r{(hgz?kF#x$OxmZ` zOZMdYE@-58XIwZc8FW<6u+I2#(elq&!0>#JX_0;n%kvi2cAAJAKPL`qM}X1?}&LkR5fF##darX zOX!reF4-u(d*HED{_BCf=APA)HiFjyQ>g>180vX0bIi8x>5slb&qw{I%9*?jNGK=^&KG7$=q9itLFxfV*@ z&}o$ec?61PV&KYLBsAI6r~icLwk3#DTxuCIC>be&|DxQp@z-A~urCn8FA^uCRvf7Z zq-vn}6@%K-0Ad9~Lvui#O(rlj~K}_v${NC=%yWckMI)0I)JoqIqi0y%WG1QzX2NA#u@EAw*?5*MVl>{C} zI5?g92<_Kx+N22X7!cjA{(e8MfZGxEr>Lx4h>&f1GvJI%}OjKGuHseuD;P=J%BQzV556Hw>MDTkI)6 z{?OW8w(ST_@*bu$J>sCd95g8JE^u9iIWm(EhJ8CP9|~-Ut$i!1C%$*D97a*pAG?&ABGORhccK6_#y|7bb}{3SmdoZ?!q8;e;jbduS_OTyqy(X$<1oIc4QK zmJ|W0OsiJT_OMWT|I>3I735;F7m31e#H1>&-l%`9+XSNv)2531(jS#5AiPD3rpFkq zrzA}qCVB4>-G|YyDH29gOIZ(=9JZK#X>=z1HzuDgWOWC&SC`wf9L_5wd;I>BrD~^w zl%m;_7_2QtkM{uqxO%`6x`qXYJK1E>9c2> zVCl&tYc@3_}e@oHHiJmfEDxTQxDQ-?l?Nn?;Rtyp?_b*^onG1EfGI&>J$d z*sqfu5>Pll&n|2|l7u?TeY8<1(lv@>MyT@VqqMoKTjovFe7pX%Fy~ntOov*gz00@- zg+gbT50`B??&!8?N~|r8zj>Y?=Igt{2d^&{G#2Sw8w5LI z8c-mbO%mNBanxJ3ylOo{Lnpwen<=L(eZ;0_cM7my1&V5}9aq8P=W>_c;p5I#c~=`< zAO?)P`1Wq&U~zH@?GPbU&ry zQO~R=tL@K}_J;d&3@?_qJMjw+JprGDeO~n`yigR9b$gkGEBfYxU@v;_-hs}Uo5=!F za{d!Fuc`VUM%|A0dU|`;&bA8{`pg#2K8KNg&h~jP7TEwkeLgsVeGtiU@E}l5cv~x{ zEHsDjH@8*zQt9+kHdn8y@yg>1p5F}A1Djjg-d{enOM4Y<(Of^-pu(`!yHz?AJ6o7~ z(B0*`ODc{dc=^x%nIvVAXmH4K4N}_Vtq&6!9L~lgg*!_T%6PB zSJ6zGC7kXEj)P!3v^EMj1Em>CYHQD7fmVx1Vv3fK20i$5{5@LV$QN`gh2tt?%Nmo6;GVWFy;*$Hs)gQqR?mN2??7c&SPoO zh2E%PyHUW9yU+eNS(O)O4kovf%LRMqQlD?+R}3jAonGDWZm zuw0^FLX+WO#8WIN_qk2*Bp3jes*a`r_Txo%W0&vMM)M2SJZ+w=3PgUF+5ur&yT@s~ za%kWm8*7vtGL%EG3#jeq2;ZN~&C`v9GfeB{Nb~b3OHv7j{f#;G>7tpBg|qStv(oN# zCF>~&vF@~UpQ#<&%mxujms4ScE$fjhAAe4kY|Etc_4;59e|Yk{G@mo|)0wUN7s9at zCZ^g;VY9oi$6zeCaMMqhe`+Ro2WZD_X)ksch(!1l27OC1TKGeM|E&`fe@=Nr@?H4J zW9f36ErzTW!b1BE-4sQvn@$ckSvM6f+-;~%+}?FL+4XY!q9=_8Kq9DjPCY@L&f6@? zCM4OJs9g<9>ZZPHImWaVq-4jrY0ur|iR&v`!j&o3tg&pVDsc2#Q-a2Rs<}?toF1=w zg&M`PW-;`AVx(;6tn=bEE)9{+aY@HTmw=9nV@3)7mFe~)6#~5;x4vp5zw33GFZ0W` z=p2b^N*tR#yMp29$7PVVt8&wbrQ->#5zkT($50_O-Cn;FF2TP6rh`_83tAzdfs`2I zs^p8S{dQfc7?RU~B^7FxZ$5w3B(ua9iwm~2Esl{lb=HFD^Es70a(5_*mTj;})zKF>KT@lF zb^R(prGMfLe8`h6>8*{uC^6hJ6EHc{>LC#^ZT)m#N|Gw)uI9Hv+9xkd_f35*mLHom zbu1s%NP$cMswq!Zu4;-_ewPM35_BLE*MJED9qlo>Zyou5;*-^kDRW_J`v5E;r8+9Y z_KwVD3+oZ&i>FxXMm|qo8)@C7D>#_?KK5ab_Xl&n$B%b)jx#Q_$`Nw~Y`(bqLaINX zc!pv5SwEiMXaqndxMuZM>?kSIp(YJXjB$q^lsq&w^><5!jZfE<-~sK-SI?jG8)<8! zM#jodI~%s47K;P3^3}weYiaR>w24@HXNTSr13>_y2A}l@yYKHV4rx~loT@`87Yxrb zgS{)6&s60fMgjSec6({QRC~~){kha)OTzT@w8ihB0G@^Yt`aC5@yBlsvfNp(Wv+gk zF2Tf*owaQ2GPMC$D!GioumtN8;Uq=oE1shnBqc2Fn?t#)d-feXI92pYU;y>BS7}!B z8}?f3Kn;1$GIFfou(BD-hALX$@<8;nx8b6XmTN` zUfY=9=$NTn?G>z@s*~kYNp$Y~{M1`w;Ic3ubc=9vb!Zw8E;4T%Xh(&x88ow#4+G}o zKWvrqdnn)59NVU_T2udAxS;tjf<^7!S-T^u@~1{Pj*v6L<$0@t*3#S#B&X)BTy+a> z=2K&H&bMEjWeqnD_|W{g-QKWJ(UB+0+S`>Qy-C}>#5pM`P_fhV`q#o+1ArY@uU?4E z&UWg|gMnWVkgYo6NHvlXh^J<6U$FZSRT-E`# z-t^5!$fD0YUg=pPT(q7G6b8M(oSfd@`u5|S`LkxL8NR45-=lKi3~m4Amk2x~I8DS^ zwKlh>jXMxhBlv^$fr3c>z(~T+$Hxbi?mm@c!q@p$^tlz<=O z9~!D#SXH1l%`rHBdvviy_H-k0oNG4L8WYP74xJA=Z2p|AC1B6w!y0Sf`5T_Lu*K6_ z(**K+(~*0CGp4R>{!GuISNDP;9m$&+gug(SMlfNSk9 z)xtdvLUVCr)~Vtrh3PQ^+WY_(W1ET*z%-*a= zY~;=DZ-c#Ek%9*52x_N9z4yp_yWJP|Du|3p!M=m(0z0$#wdXf)DVl$KH1+DzCm+Wa z*@L#an$)1+nwpoMqhVQ7k}YxKIWpj`!Y3l+oU0xJAG}62g{^y%Za?%N{PL`bQ+9Fg zP^M?q1_i=%x9ObyoNAB->x<;8-TBCcA=($0>5k8%yq2M9&y+Bw`hv{ zZl4qr%yO38Vs{4hhM3bgwD9+L37^;2PLO@F=7Eo54e7v+{BgRDUiF~I=#VZ`X}3d) z$h@N~6{9sXTH7i|p#a#xgt?@7mAD;MrT`8|cC$ZKnRqaLFijz{CsOqO+CA7)}6;HEA9C9(IY&}4@b3&VNa?d_(Jg!oPJ;% zZTF?!%KfmxAzd1aZ?k<%l#RP=9WHC!Q6K2S@TQ=bhP!ggdhKo$INg7^!ETOfd3@w? z1$1G}e#VDeur%3Ex^#YKKAgNC64KkZPeEo~{yA$Y0_7KJQcIq`XxnwMcwz0P!EYU& zG-#Mvt0oJz|LpXTqAtua@rX>y6;>yV((Ln=UO!t|84PZ;qqNs!pw^Y4<6gjMV>R?f z;vUmBG^OzLnDsqcA(|_=bk#qaKUj4mw54d2~S4fYju zwVc#V521d-eEmILm=L-n6u^Fc_EX0pVf4DhXK%|@^|hP!sJpq{+`Ra~S9rs=>8W$F z6vg^CpX3@rU+X)&a|df+rxPwSv({NDO4J7x;~v*wI)qlZwD(dCSXrs!OWiTMjf{F< zzkC@&Z;iW|T)oBCpSv3tc88MbY`xQ5Vq*KKHkxl01GP_Ef6iy8RwDyidi@UmCma&v zcFoNrsvpN58(|Qm43Tcnd{@BW(@JfJ9_MRHHBvc}v>x?}?ENY#)~r_p4&~MvGOmC4 z-X$xK2d*uVcWdR^#eo@V z8A6SeVIpQllvnUYAt4eFuhpTirNg?C*c|;Jv%9u#+^xq{?e*)yKS>Zv$J@IZu2WVE zpizrCk40(r#wnpLcp`!6tM5Xaxvs{gA*qK>xOdcQ31+T2N{cjP@AP8x>Q7@j3Ri` zni!<~Q9hp&r<<3{VLD3D_u_Zz=%Aj^JJCKQ06S%31;4On0~OEPvqlwj0#bgHsS!>) z=H7~@q8bJItWjJl#@yTkvm)^U0y2Zav_r|XI~&=mH10NN5wl3tcV?J45yTq$+;saP z44Qa_d$mujc@Gmgq!SG^dpvcZO&(sEfk#~ze4@SHd{w)MSU<=KdSuXpxyPM+`VIVQ zLr;t)0Eo7$TMTV?cJi$OHrnTa4_=PtvlN%?ci47ja&4!rs3X5B;+IZ!N(F}u=Hxlf zB}|py60&$F12a#TM+?9fgT#hiaXkRJ{m^&BSrD<>f^YoNJ#;R&q-@^2tK%5KcqEP* z>~7=Jb}*}m(cfKq$som~q#`GX{?<*lZb`2{F3qsKWzy9qQd>8xCszi_h!-QRhYIKR zD+b2RtoJ8w0?H-Ee+(3)e$Jvrfa)MTHhf%EY)+Oco|mjspa-M860~$EP2j@UiaI71 zA-t!Ry)W2bylV5|XZbd#YVjjSOr~EV=d5UcHdu1{n_#GvM?w7+%nC4|dsZzOP8rV6 zwA6~b+U+^=oXvajPmJ$1Kx~CL6@K_p)OIHskW`);O9WD>sGvK=a{X>Lx$vO1VE#7y zbLITCur>LTUz7hzT)}Yaq2b&v!tD9}we1)dFhLrLoEi`_qz%eSN=lgr2^fnM#c?+; z_yfct*zt3LYZj48KvcK86ubq52=R3G!hs9JPF>hQ#uJS_?5}?^VwK9Mg>akhv`jo1Y#Nj&z z+n+GY^pFD_^2rWKr`+GeQaL4rDRD{4hX2>*}_&ATI(~%{KcDz)ylRAfjXt{ zeo%{6D5d`U@5VxXm5zpo0%5-r2~DUhVNq;nVPRLSrXY>0vFm=g85j}vnCE&q^%~$c z5KqeHX94`faUZspGPA6)rhdDa!qqjgi!>3o*T(8G!UdL%;ptvL!GGVH9mui|zG~+v z7E8parEDE9CYf0sToYy?hALx#L-rT$A*GUc!z zJdEkr*|0EHtxOK~Au8lsUT(%O$z(!3St|y(2(~Aews9jEAnHYh0^9rCvul%*wQbwj z-?q6ZfFhFNQb`LsYIq0i6E1W{>|e}`jbnTy_h6*mlE*4CZklLa6r7Z#?I>HeD<~7p zAIB$a;FlMSl)MN$FSYcZP!C$K#_;Dx7_Xmlm$1p*yZ5i*9XB*>S1uPLcL z5wDe4_ZRTJp)rtVNbyw2XFE&3Lth z;ZJ?*l?RgmOX4KyWcI#)Urk46-qP{U)eJ4o%e$aDY?(;#jR!!7YC=}ZGhAalkR9pi z>6w8S1TI7L7Gx_-2$N8u$`DbN-69rB7{{QVQOht>o0*=zyjue_9C8QEBH#=sM=Uxj z_;(&B=qd~|;-J82JG|l)DtTf;KvWyh96blepV)6eWC4Ju_KBh-qNDPdFWw=Wu#)CyKVPw9t{l* z3>}EguS)8r;)=Ah{VrK)p3dgopMOt^b3BoxU8Jd8_3}{;upOPwlEN5KsTnSgu0$Nr z-JSL4aVkrjBmr#7aO?Nc>dJylZ0Q+Fi@~~R6LQh;E!L}oe`h=>HU-qgCEwB<&8wEU z<3cq45)Wqh$fmDj=X0C58qPYi>C5RlUs(fT`_H_?E%X3FzUfxeik5c`8kWdzrE6ZT z+QAoO2F6qnC^!xasWQ)=bzp(1##Fs^nGAG5dA82L^)i=%d_Tr8yup!b2_DoEg=YJCrI6IWXYFF}HEI;LT>x zbq+MtOd#@SBnH1?aC-EDZuT!>ola9$)#Wj!>;%68G@|6>6h$!41aaHY<_(7`oUshJd4XCH_q;>Fu zxOjR0#LN6t5+dQM=dswI!XoZyUKVBJs5)5bE1<8Ak-ir2%X63x@L#FDUJ+d2qSMgdBw58ggoF26n zEE)cLRsZupxA&n*K=~3?7cJ2k=~}v{RAJu}g3tbaORw_k*`Ze6%?#hJFVhD;*zn|o zGwnsH{F$9IBdp}yZ1Bdpo z48tn)JC|1(7aIPN7fO3`b#@XWZa-*0qUBeNh{GxOs(otK_m@TNRGHd5lc}3O|1O3r;mcG44>nX&inr~uKMVOZXVlM6 z&wW<_rNnFbQHUZ)={=dYk~O|VKr`;`jpK}rV##Qeh$|-;Dh(r}GIW^3g6ntHpMN`E z`Z6WMgAJ~(+G>ek;?jHfV(MoKNd0^+$Ct1GOrIfZ#Gi19i!ZwT0`&$KYE$fEYpq<2 zLH<3(7sCt0eICZQEgf0BbCK<*Z9Ct&%T`wCWSd1B1-*!Ctc>OmF0Zh1Xbkq#D=>9g zFpRcOudr(3E5DlM%d7EA@rJE_zXY_LJ8|;(ql+Iqrq&)5J$T?t-}S;U9~qz0j*#)t zaZwU4>Ek>%L-^R+A9@H|6AQHw)tjEu*5K_DCEl7_f7eE@@RQcl3xiF(p-8ZyNKC@T zTS4&yz1@9jWR0~Dqsf038^d+RnE3F3cqgjLo1ATdb^P214{AF*&v^5%j}_Xm#@N|8 z_k+oVQs*6d*VjM4`zgNmlKG)OQ9aGizos#%lh*f-4*z`TBg+r|Z6_1htHG-xeY~0s_^woX>uO+basQL(E=`KmYvb;d-gz zRSeh5?pq)H=YuByedS3WT*1Hvxh%xoJv_|k;o$+dc$t9PTe`Zti7l~Fx@Kx>s##6M z4KgeIzB|i2f1JzMs_!taBRLu{b9mp{+FIKku?<;@p3;%{54QJqaPa2m-C&<4PQ)MA z57{`_En7L)2iXw;0vgZWkn{J6D>G*8pdM_izlzr?_diTdTcSYo!HZNll1dqeQ)8`( zDu^_ZFivDRu=R%^g}f<{ocwA{?Cf^EToqXx3wnkOJQNv}_AOs)U-khdI6L(&_%8_X z!A)Wz!o*{N%T;REgH@4N5fVD1Ic;>|k6(R5Lx;Z~BV~VCKmYL=lK=1Z|CeWhtG&>5XJlLuZ#9LJm7+fkGT=~5Oha(QW_jn{Ebm176JD8j&1ON)doM-QX2zL{PeA19m)S~+(QB;^w zw|XosxO~08pU{|Xbu%wGlg6ug9PA4(lCoWtVun?0yASW>}x9WS)3o@8e;PUh3y0#8z zUnC9>Qwyymus9(!{|hby#KMf|DX`*SHrqf(FKk*zp!sd$R(PRMSP=1~t9LZ~fDx*9T(jkHYbaZs68$gmnyvK<>4=MlMr&^6OB(QP` z^$Q5FMTR6GOrWyxq-ugo#dG-JkO{x~9I^c%CJIy3_%YUMd3!9+0y767NK zs?OZR+q2^TA8T_*76PW_kJ#WTAdRYs_(6dV21@t|{7^L@7{knGkAl*w=Qer@t+cE% zbg6_BhfPS7Dd@Ut2qO4;71Oreb5-KB^Kb4$QqO$kN(Asac8ryYs0K!QBMlb_o-ghD1%l)oa%_FFb{sCgZQIn4ZMr#?rQ=wdQ5vp**;~*JFXM z!KYuSLqSU?yg>6Pn->b-}rIZ_t%|*KSXj!NC>8NK|<%? zuSQG*0xOM>z|j|I9G2=SVcX+rm_y9jKndxlfw9zw#!+2MD=0rdKhaxLN$G;K)vA>% z8;U$U_x8ngL^b^HSIbwlwWgYI%#0zX1AsZ-q*dXA z!7gv%RFI})0v=}i?FzCc=p0^ynrD=@&cYsau00(JfE_Tp)e;LnTFRsHk z;fn}ekbo?FEmA)>!EOM=CwU5l@o}QIJqIwC0;gELbY2i6VfnT1@l^Z4l2!(#8D@0W zpY9Sz^6bFcW!^3fRyLqgVWRhtB-x;;H-`m(5S$)~85SV7Soph<2EWytsH(cVyJabu z@$kX3RoO=ZO@?6(91Nmav9OFaLH_F6KBXWln>w2Z89%Y(gsmShj)gN=yp8bYF%)7( zaNmB3Z?9Jo+tf&{n8|dqJWD;7<|_p#Hp1iu)<-sWdrgysJ+>jtb*3IGmK|a{UnQ9NMNk<#5`46J(>?iQR z{EJfd!G`7R*|V4rD1ii;mYyyzaoY~$4Zd=a1d3PQh~9PBuxuLyJ#ng?{JrQ>NSGN0 z43sFG;N~FN5n&m&hcIyq)XAyq`3NpKK{kn>6z(`ep$9%ne4P-CmSdGSEQ0$Yp+XpM zLG^O+ocw=5S)52*5PD|?t<>b+z}9A4EkR!N_l>ibiS^az((3B!v_0@M&#;7^4fo1R z=c7_mQiKOjA;kB}P;m_$O!P?V$a|^?cbY|DyP)Fio zNZ}xdJs|~RhEIfzaFs)fC~&hIlI1^-w9_KB^45T&%yeKLzVzlKCBYNq6MD@0ld(8 zW6uQ=s~<3$iOKMVKZpyBe`j}Z?;w1D>v6CXqZxR-XgIdm+=T-L8FyfN^&w!`j|10$ zKB_+dRHFMMVx!^VBpFuclT$6WJ|Nlhz!h-;F&)Ikgm(@$1z)xFq*0eK{>NAU`>ECP z2Ae(#w;+j_!S<@hnPf3S#g$$FuVeK=;t)i@GT?C#36rH^s7>An;5=;kPj2}{-;tEn zR)^scFyU=mw?;mF`t;Hq?yBwEww=#CB3FmK>G$MGB#b(VjU?FDRO0j_oQ!jq_+I?9 zjk6ykGz|xbOkC@Bu*O?}aTUMAQ51Bz3gU1{Q8>~+C1UxOgAq^OENpu$!+dH@2wgg< z30ASO*veR%H87EobK?iax@w{dBHfE)NaA4uR2@ei+yew2QsDOx)g&Qq6czEXk1tylbI6LAik@@#cGxL3 za6?H07Qq1SJIpVhg@o)ukq?roJf;gcgl?~4Vok(!IstSaki6)9!ELJy6^^j`tQ{1X4FgVi zVN_yU6eYVAY*ub`1F+ITs-K4kc6R^moq9Dm79cP0O~?WX9KR zA&d`PY*rl;g`nom01dBBGGAOGH=|M{P?Wtb3(hbU|l-++MLzC#z*0$jk%!{)od+i;l-94DDFJ}Nvk z2lNBCP}Eh#`8fQC3xFpfM&Oa_hn8UgN*{Rj@;}ycGQ@J=?!`{Pi@LBD02W#)Z;}BL zab{W7qPhho9Wz|P+T5pfWdc@4P%s3(gR02)@#Bs@|XvaziJ(R z)p=}sGTTBgqjVo6fdmA~U=I){(8%)RqL+<~VD5Mvj{{v^aAY|?z5`o#%KT8!U#Ap9 zM~Xw@r>!e|gJDksJ}mmK{gJiAg9)`k`Gr4@v1SfAuj=>;g4N`%b}12HzsD47GD)`Je01=%Fe??}#u(gPiPd z^^({;A=5kldyOdlO$viRuPe0HTh8D92 zVjTVs66B8<{5CKDSKq_z8IM)u?LA!R=z^4wA763t6#09{qD!~^uu$6c2ks2mY?)w$ zN!;`sGs{mr;8d8}vwgcgdl^2O*L;^@jOES0;+~mjhLsc0m4urS$CTPF@iLFCJC^|JTO_~4%(a(y{MaBQ_S40!N$%<$9?ST15q#6LeFA`M#>3;N%$ z1EJ5Y9sq%Nu;cpv9i8ng+y48f+<_3~$OL@{&6J`Vi%|IOkJeHi&)o+3l`xvRG0zE}89!7%rb z@ns-P0sm*9O2K@cnC+V0eD%}4deQVDq9AEek4j-Z1Ik%2`@5l_p(6ZVvyPuOY z*lzX=W#vk<^6z*bgCFJZ3qa$10mvB{Z7&WLiA}Y5VpmH-^cs zp}y}2)c5zC9MjU`7Aoeh2M*l)G}FiXckkXsf5QUs{2~TSLiHr-1_pu--YXhbYyLuA;7e_2m9@;cxa=388Az^F zOijJJN4IJ_IF}}$2dxL+Kkh_Z`3N08Ca^KwYWXa>L9GxMAn^R{p}@L~f#3{p{4p;_X&Aw07a=_$mJ^i{oojrA+% zPC0jax7%6`HA#a~MRldSVK92hsvP#1k%xD^eID8yA(Jm}4`++v+$k$xHoIW(E&lK% z1~u${S!PL#mmI{4PEu0M%83tpm0aLF7FN(egg}YyaAM$RG{&C01UY0$6eoIzXf(zx zj|^75Oj+SWufJY8E1K(>P*z<{y}uQv5VzJ!@-i_o$x_0@Q`pP7v*ZJkkMd=tr1k!MSkUA-k zZCq=(y{J9SLL}H8e#VTul+Hku3-iqkg6N9b%c0DMuR($-L{1UwB@^eoYF0@Qdjq}( zG1W)@9(u~ZYrAz0gFliAcT{5JDHCv2-o_?w-u*JzUwd?K>PAQF=G@w=^o|s+e=+*F zUMsds2-$!ALCl!P_;MePno<7;}yRq?5V-NEmrrS0oi>uq)K;=Xa9Z~aSts4bf`W% z-QqUxerwc_44JUPDw-EVT)~F&*J#1=27WVyen;3$zsXZR~6y8a+a-`Cq_qm;Yj%$RMB{k zB0ZPb>Qz@A_}c~zYc+U;rWRJaT$@mFap+RQUN>I^t@`g0|1XS+|ZYr-m0#VfCTa zkC0*Ok0fuWVbr*2K22YrPcN>o@4RmQQ{_u6&2Ok^D$9E^zdWlR?D`-jNegoyVe{{P z)cBD6tH|%>5uJIi=j`ms$~JG3S~`8P)kq<9(m%hzi;+p&a%#K+oAHj9_QV2HFp!gT z(J{f;M;qyVZKvMe-3Z~P4~|m$v6LI?oh9?`6vLV74EvGK`WS}H76m?`Ur3p=WObaI z4Ar6!YYjI$D)sjpHO6+NxQ;A7ydx?4^4%0|I$$vxe=_jIrycI=jv$kT&boZyChRj& z(Hx+UkHg%1WbH>?Uztk zA8cI!Z$!4+R$7MRqpa>jT%n>{Qvw!8^Kah$xJgJxrqm1v^srZ3Ojp-75Qk&m>VF;x zjJb=3aZT~0z@V_}=%ojRAe(e(I|8ITCmk6ul0WXSaU*N&nUH0J=#SkBHau}~{t z83>b#wDb#Rq1c2X$=OG&BTE5cQ;WVU{~4yv#TyGz~1KHuh-ju-LS^lbvNJd#mvI-@)Sf)I8^#b0K&zD0KYZp zpurtnzP!zM5zT{vh#BG$I3@l%K{`aRG0=e*Uq(z11`YlZZwPP({4~KGKsw@wRRIvT zZRY$8aoZQNUv}?O$0|XXN}Ap^x;>soOtq6J)#Nv?3U_n!D(87ae0QetB2 z0!6dAhGkA@g@H7gPL1fla-9-joUyvqlfRJb=4PRQMQ~oPHSL`4X%?)t*0ImLjY_8KmwFGKny|%T-g+L=s%Ga-F%}3_e z`-WL%inZ@0217%lZ1E8h$AH(W<4}Q>%{qCdRG1x)(fL9g8r6@b-$Tja<`xg#2#4%# zm7{sNxpI^ZYvvTbYP5}?k(F&scw%Hy9rmky0Tx14$bITgeg1k!^TTGN8f+ilzCFRG z)$#(fRTfFNGZgrd>jDCiqj*X;uTap2dorCCNE<*UBFpWzhrD>SI{{7@#C%8(!Zz^9c!(TuI8YT1g8r%_OM+EIA#H4k$rpf z=E~xCdz8*ptVmj?nIa&$^x7(vVSId?KH{;M5M5rFkvKjn!i|4zu<5Q@eNWPCwYZ?& zRI5j-g+R5ic!!^M}{i=+SIZj5VrE_FC03ad%=-@m=pnO2`6vjNJ1yMk4FxJlI?|6rq zi7C8Zi0K>=>>`q!+~UOj<=$rYL@}Wq{WZ^S;m)y?41u9^w~|Lc~ti9#AO?W*^dg+K_0H&&Y^1~X9lh- zqHIuMRuZ`~zKGcxE~0)gfuF?07^faYCb$y39mAZyt|JcC_$UJi1sOGkJ}L*IO#)w9 zEitbF;GI2;bT0W&0gql94D(oYCdN4GgL)nd_DQ;V>WJJ)A#TxFMC2byUKUU|Uq3&H z`K3UoR3tuD%-Ug7$2a35Bi8B|hKjjOzr-w|8y41iBf0XJ8>!yiK3e^>|qN_&N=x1<{-45JwRk#6q%|6-HkB2A?Q?WoeH);Z8#ix$Hktp}+wi>D5+T-c?hYlS{){>C8)YMVAjnBlWFWxWBOok%G;>phzeLXAKO08h>T1=($fJ zEY6u$owln%+^s8HJw-ES2cK2_`f4Agw|D5ip$jtCM_QNWsawwO8Ex3gJlk~))_%Zc zPr8o}GtGW2H>6G+wfdNS3i=iGEUPKAiP#RPG{Vk?9ZjMdS2U#*u{J(WQ3s>`xH`)( zK5SBPqO=MPyl_$i?7y{^xVVtJYO2C9<6`HInK_NdnDvXcjh!9^eeBWEfp#7~Z;pKo z$L{GGrfy5s{1GS36SMBRgnz?jbuYA_TDKxekuzOFo^F!n6YZ9@8_EjRE6H zRfb=A1TY&)TN~3BoOi5!>7^{m6|ku|Eip;G3wB3z`!(@|rHX~~9UW3;1Fy1FTZ@8j z-o#;OU9fP2TzB_k!a)02z;lj_jnx;joNdP5janVf&#iXM27A=L=S=>}RjVdy?^;8V z_?f~ezPU(>rh?e#56Si0JSN(2`(OF`<+zW@I~5F#xiKB_D!(W16$XeCRdoy7m8T5#3E1)Zv9GFL!^p^M|dI%T1*xb zK0ZaJ&@mEkMC3MP2naWe*{&ywgcl56Vmu}{MDj%@ehJ%#?f-b)+ZV>TcQ(2lfpTilLLk7@r_E?wCNq1ceNCi{`rp zL`wA@0%79@--C?iF*I$=1QirSTM;m+R|YF06|#IQ=_YTZ_D3!jQR^TMt%X?N_*c-yPLnhAkF z#*wKpUh_n?gw%1VrF@y-6IpQ@)mFt-2GryN;03pL%uli4M{8Olf+~u1rOFqNj20hc z=WE8F#uZ6O{fQ2!W_NlU&(!!+3dJmNG5ft`mT=RAY0AL;FTFVGqMtrpHPF!SQ)Bwx zaW~vkQ($PKsSr2Z(edoV(w>-m!{SgeB%HYGjmcJXnQpLzU+>W(?YwiSgr0CzUNetZ zqZXpC=xZ0;_eny>fn4&(Xx-}sOuk%S^tZ&_-_&epX_f!Sg}WTGOj8~;Th972-deOS5~T-K z(W`O97_MtsoLLybCXSKWP>YTFQs-88u94LA$$cuhV)l%6+Ua`fiH>j^yj3tl#TAR>_-9ls#Mr}?1kX*pb#*9TP-N=hDMp`ld5h+Ei3^y951a-&eiPSO(NvIYa#TlD9pU zYi(#q2!@z^vV@0^XwYXa^lP-5SI+4~q=pub$PC)A%_TK5RbsBnwd18Tk|-Xmp0SWs zRHP!wCElj9q#v?ORphB&n;(_I>OP5;-#|hU$aoW18dl{?#{0f9wYKI$%=S=&2DpS^ zXwA5P5)>s&sFiSVUz_e&3p)i_=*DWYZ8|3~LEO3izU=Me_p#dtFj3WjhXi2`vt64$ zj=isne+N_|lkG}6$h<{8#`#?}h%{VIS@0lG*@ib7=(nW~S7S^lY*4ZRrE8gqP&^_b zNbV)(M-aaxzBxr5lRWY-(?|Z7NC@)4{0K(?jW5{oAcc^)M3*l&*76!4+~U=>1())6 zoFPp(+*DKaB-{}bQCw9_rDnYw=k>8_9pT$?))(Qsr$MvQ!;#pi@|G=2bh1`v)}+1g z)&tKL%XM3ke55iudb^`SW1na00JB=x*wnY;hg?v1KH`uNACnDEF~APCZ+D+E8Ej&i z?P;c2uEDT2d~4|^w{}#8`{S;B?u?N+deJsfal3W!pghJ|x$4gf_M$Jrq~aWw=$5L` ztj`XIMqY9Bd;3>D^b%zDBA4f;J=1D7F;%KhuU~SmvYmM#Oo^JK(JZ!~&2P!Lmb{=@ z>sxW-#tP^2qn+gvTLRNJYXZ)G^@VZHQbN|%mOs=6L0ocv&-mOOi zQ?-3?bet#OD$-%;`DR6li{rU31EBcfmXgw6Tx=AY&H36o#xdBNmq@h$y7i|=kx{8n z1`EII#A8XV>0;$mBc5rAJT&7n_+S$~goELRwj9tEL!0K_A^ha1%r3S2bqfj?0r?bApLL&*0vx&*?3mSm^#+ z5QQg-n1Y6k{UGIF>IsDt0q#JH_v0DSZ-bjhjxAp`4OkknL{1nbes7=xVngr_Vl0?g z72PL{Od$SxQGX4e5nYSq_JWvi87A$?_V;ze2Yy>DjUV9J!8qDlHZN&gq>Ran}`dq|}<^n<;eLM4Nvo zjd_3z3q*tSNrx9%kIKr+XNmIjRbI}}Kc&<(eg@SNy9{H@A-?_s2Z^CJm1)WR-jO2T z^S0wX3Tg$pMf^Ia>qaDsK5jVRFElxJOh;O}M{RJ|!Fij72^C)?Y6*W0OeM(X$e_!V znz(?!OvA_m-}p9ae-85im^TxaYkE!J901&&DMW=41_A@8Zz% zxMSgPIyhNTlS9FjWM>P1V{U|i4;R8@!@mk10?ZX7{pU;!^LkS-=HGIbP+i*KsEo0? zR;J_dXEpRHFLQgF$B(Y~qV+#Yr1HGYpIry4dE&G(;yD>`H9sdLRPZCAc2lCc5QQT*DFu%>rX>3r;NLu*`BW1vm^39T!1tCPMzH5 zuss3Odl>Z@jHfQ`QN1FhUH@55`RmLZZ^K{_>&6$A+Lj|KU1Qgqa^Afeai$M^3hSAx zuF^kEQJt1d(P~V2w_vt*+ZsPxTU#h9;|CfSk}~y82P)R@WL#BkKX9ZcN5I8<$*r>0 z-SH97^ye&6!^+Sct2vEP^?gu|I)Q01keoL(rD-eiNvwLj_X%$~eZYT2;v&{CB#6m(j)iELN&+U&)g5mOj}Ek+mjOMpwu@_NzqK{Yl7^!%o>&{N&NsJu z^kMEsy`%(#$7y=$r@}YN%6`D~VmyA%`0`~04P~^1b49!J*%(rTvkbrh)q#NMS^2R{5|A`q9@@*mkHd}*R-q; z3b)hT8_um+vx6xOhmsP^tOz_0khWZv+TH2}_Dz{k=BpB~bcux&K0L}0G5a!QS4`{6 z8;+;%l*}$_S9&nOOZQ2jCnCTUZ-=S-rLSOyR@zTNI*|^w7Y)mz2DpjV)%)& z8fJ7cO^YvOH*bEdl{=)Jq?dkHWuK2mc$>t~)sQs3Tipdl?(XguXT#ld-t^mgsh4sM z8q1w3xb`qRCx@gOie%{~*|yV-d|V4BN~NA>hhRX13qA!d_W-MiJu$j_{*x{<QG>+Wnhne3F;fk79)NDpz2NKQf)}~@)`6XK(v7oua#eD(c^mu|J}jOlQ~USR7_(^ z946+zNZ-j$j>`2AmQ~I$yXMkiT`X>-XW4=&LisBXu$OQ=;J_aHOIfqrY z01qXQa1XyTH5dhdlt!sp-?yEl1;4Y&v8`l`xUjqIw79bHSjBTc3rAHRdxB$r-jjnzEkcXXPB&Ge)sMjOc?WYN(BaZ?Io&H zg#h~S$$~Euj!vD2p8dT4o?_V1XmlyQvqvbeMD4Wi&snypP6xfRYE|avHyoU~s$DNl ziIQ+NC=(iS5e%+$v9H@eU{!tokeGn|`4Oa%c&D+HEZlxAZnRUnIm0~U?%g~NziAgE zqtDiiGkZ}js>l9d0)XMAE}OZ z)gBU$Q34^qKD)Tt-||$7noI5{BaKg}QnyGMe4f9y(Q4gNs_Ik~jwF=T6xCn3+cL~) zYEuHrZPmUniu8*xLsGvwMi1OHZKU4jy4W2`@nI2Hw;;Uz=vxsO#kPv;YD~Bma)3*G z#LERlPf&BUk~`aD$A7vmwM>a+<%|kl9R(SOED9e&D#c}(IEm}J9vo8p>2Dod*m}p< z{1rov*c2Ne8ZpJc8^m30`-~5jm5ta7<#wC4H(p<{idX8MH97#CP`sIn7@!e~UIJS= z5+jW?GlhG=Va(!1_H%0(r#z*x;qk$PQ~?w9wy7H^^+ER+kcCJwA8?y_dY&?D`6`TT z@0SXQRU^FRkfNWZA})3cRxDvdE-*=Q(X;1r+xW0~WYH%IyxhfK4ub4YF@P~(6vDXb z!}_B0T0>$1QL(Wm2%Kb+@&dCKE4p%Tr#@C)-?oK5A#EzuUL>z3=<^g~vUr9FOhU`vzw;u2#>6 z(L{TZ68_jxvR#f6RUVLHRvoq~)nDf1NfTP(3E4Jlx#5=X7tL7`biGP5I7h`wnl3)h zb(lG$5G>?*usA9DByD^mu*iUK{9AVX2NfgD`KOeIm&aA@b6{~k@G(`zCVAZMLM3$h zV8v3poTv0CKD*q*ot&M`i_7T${Gx$Zu{J{))UlGE%U-N;oZ_)r!Yg%N_7v5tkB z6o;gK;cz??r<{`yK6(sDsFgDYHX(yUE!~q9?k#z}Nf;e-&OS|{bQO-H)6wnh1=s2w z<1FIZwU}6sKH9eZ=9wY8vitPsMdQ&=+wFn=?&!^1KzAqoNRYpJ5cQ7fk1LRY1A-C9 z61GOik(M}OF4~f9L(C}lop~Aox~C~_El_iVG3)MZk$JrL)Maa|7Gf4j{HF-D8jEY9cOAN110u3lJ5fczm{A&RYZAFi zM@VHX{t^L;Q2`n!Qo%|U6_>ef1bN>x(z4<@CiKEJoA$(F%z2tJ)?1yzBsE|2b=Z4T z;`gxN45!gcWIT-kNGftyULhj$;hz1RQ-6bZoCHi;o*o!d*rRPKC%>UHC}T!z31PjwsZBt$oe&%d0=n$G1e>7vYnl4raJM~t%8=; zl)mw^1)!j}OaCU0&jE0ahL2u*>Cb!iJD#y|sCu@B9{FeT`khG)DNj5OkK7GDY;E49 zxK-#<*R<1|$I>EueEZ7`NwXF`1c>-J7HFtlZJ)6&p!;uDh9NCAK>u1C%!4p-W+#cP z2+`o%fiv)8b9>YX3=001r zVm&-~gsoc6XJ(#LF-3(sN8G`ab#k5qOc}r&r6dGaYayW_yCIkpU8i0@Mt@`(WmW0Dx zLnA$asXr1puXCOi4fsfDp(u|iJU8<$o3RB>eXEtDM+tuT6-pcAO^w>ZnjQ$#Xu#Gv`@Hfi%d zrbt6e%OpVPhE*Z57~I#qrb(ZF(Yd9+bwF*Rv?Ur>BBd>*UD?}vQ%Smkp&_TZcse|G zq8;Pa>h5kFWbUALna$g{BZo(NiY8U#8<#F@I8daf$fJ6t@%mzWEVdSxn6wT|e1xtI z`3$s;yXqFW=)S$<)A((3=Vfp^RQK3kEdvdj_UkjaeFP0Q#1Wsn6B&adDroY$dV5nU zckkpu2<$r6EMuQ4mx%+X2a$C!y{=y9;#WJoO?Dw;INBUXwfxWq;kd!=+!? zf@;+ip#O9>0Lr+>B&6&=s&nNK}$ zyLg@#_!9tp;6Cn+Ns%}Se|Mbv=tuEk6*u){C%>~PDTrf+xp0UwUKIe7owY>434LKb z60hwBR4W)`VRuLtIpeki7e+;jHqhJ<>J0z7QxdL|4NwGjV|gDmD0!!azzI8?h+ekL zL%sH44Bv#7DWaARs3$%p0m2xfni8)jc;X`pD~eY$E!N^w8lZYV#-05074B}>mIQag zrECw!1zF{hmK+kz3&Fvz6{oOAfgvi8D-HfDMA(A(`gp{cLf;jN|B1##xcKSHQNu}C zp(Wr4lT8eTPz2I8;I?rl=V~|Fmd1u$dvil1kC%wxU}!+RX$HbN;o4vS^k(+48!L&X z5%VE4)djhYxO+A5H!~oZZOyhh@%ZuMGE8&H)ri-u+4U<|0TT+c7chV%<7}b}O4ct* z#&a>O3_{wNUmXNbm(Q$b*@+L07=jipE$02(>cT$4usTc^WI4RSV&1D^_Zt)Y?{aHo zzS_aB6~`{4I55)cDiv?`fjSab*t`u{YR?let7yk z=j^cd+IwXZhl2UVUDf=G(6*+9oH#6UPU(1mjiaCpt#A4I_wnymgqu}=k*V*zbOLcJ zT38gK)KjkKOk}xZ-dGgJZFl*Riz(h8+a4*?czkMt-|>1Kv=;!jgBkL_=N*8mUHPjU z`N_=Q2fOdF2YqfWc`SO&bN4)%EXz%ys5uO0M3mhgt;E;5pg^_ab{KkL`YMZCJHaNK zxEh=asJE)Vx;{y3ZHk%-aoA<(_sJAHS`m*xA2QIzZAA7rI-%#^wv2Z zs)=tY2Z7KAPEvM5QIwIJNBif`+oCNCwy18~wr!tfk14TcM9^rIm3CH0EBd0DhTTkz zSM%j(j}-zW)|nhiunOFYK{5<%{^;AQo$o2Ny2{%$Ph!joaap9qiH+Wkjf-}_hmh}q zMjNC}w6|>dQT0vHKq(VWhE)5|Fk*quTVSyu>;6D|6J*sfxi$l3(J|rv^v(-7rpXr{ zMoyNje(CzUA~X#6wcjy*!uve)IgYQWR@8-=bmt}Sn<7@w+{|!5VTQLXD~ye8;K+BAQuNJsd#1d8^QIzW z%S&EvpdY(E?X<-fFMDCz8Mn9U9MLFj&5bl+|d6JF(olwH%P%tg_P$-mG|3z7JVDWG@p4BCXe$aR1_kc6Hh{}k(?*Sbk z{0Y_Kmj@!IoTr~rBIQ|O&_n2U5Lqw~eQ%uK1}1Fm}nWp58KP77)AD)z;g zH4!ZW(AwG9;)SAUUmC0iBB#mlBFvEkQ{(@E{aq53Gk zV&%%JHtwX#=gRD~2sOo&o_){(G^|LLFJoSEQx7ap-p*{mbo9z#8W$~U=vq{bX$bS+ z=%ZZML)v1zhnpN-xN2-tNM?|1CF|#I#O=&6D`8I8EvhQt6zKR)Thw%b8Kn|?&1H+E zcxVaQjUxa2cfiO5bN{6;kFd8QF#Ir9GhHgyfAPnk#9UrqED1_Fk!DSFiH>=2+(!R4 zU#$NqBgwW?YUK_gSsww1J%9typNf>5hLG2+X#P?ianoTUX5S8kcJSN`=9` zcd1u1vRB8)Vy=Rme0lOY++l-l2O+CSFiN>b(|2oJ*t*}Z98H&zKA@I+p9Sg ziH%$Pl6~vfUBfnGvR~Y&GC*scs!dp%)9>ZuzZ+=S1c1E)Ne)@v-D{ z*|2g)rOu6|qY5nJUsn#yEP7dVWBK2$V&on+eq^!68}GMw&fDA^3_9K-!JNw<_WFAj zLL!vTsD!QU&`*vz?r|M0&OF`ke&&?wHez?Xrm@VBpDjz`-`);3&6mS5ZJv+JuOW_- zd*@9l9qwYEzxq;5dP#X+k@|MeD1C3#dVQO?~}=SpTb= z9^^`sOY(i!Ym}ulH#dE~KDB>0#uQ9h777jxWrTMNcNAF8uR%b;gCHJCn!Y{Nkvpk~ zM5?ae$(_@l7(x)`<8LCC7F()Pi?Rm_K1&_M7#OtPq)!A-j zbtR}?nfP!VY0s76lC|cQ&w~(0P88=%I#g2lb#kgFW=Fbn+qC1n2OXI^0;>{bS~p`T z`X8g$Zs!BL&pwfVp8*au10ZBo*PAQmO;OaWoq6Cv;)v+8i(1uq@z%iZgFYOKJaGOaFrB7Q&+xfQOy@Q-^wh_1RQ%QD5$jHx1SzVZRrYBL zE4AyxC&LWK8c4Z(D)bRd+bSCI%vfIfp72H0Q0>KJ)W*Q85;CeFYqBWW<&7vfY`l(R zF;N<6VFxama(Z(2Fr6CG`paf+^0xK4$QUQZ0^o=S_M-&)$Y;x%_96`t*H<>%B`>Ko zH?MxQ*Ki35e;NBMLXeH#v-P)L`b$M>ucO+tV>I_EGo_ez`~EB4H2z1(7n~UezYA+LK08AzDkAd z2a~H448!-er`3VPMlTOnjF-$*&li{4-PwH4g#%+v)P^_mRZI^1;BbWXTdw@PTvbQb$Zhc~_NTv@UygOlQz)6JunzC*mRqdM=68&Q?aiN-sDY zOEUSIrUL{R8?>_Mb`;fCQhKnFPxonT!zIMW2O;jQI%#86nQ)XB*+gqooFlWJUxP=I8eLiwZ>Y;Cl+3vA?M#LSiaTZb z9L}e*)&+w(Y+6*UN9L=RGVC=@ecVOjL=g)$T7zgwTic_()qCke3bN%@(KS^eT1%K_s<%1)K(ot_Y#}SZ3l46g_dj|aS80S|?$f5HouzstE<<`%@nNU4r(GkmmPq@Sr$b{o)=quB&ITZgd**vt_{}wJZnfnKzsG|$ zLbz@>++j&oK7G^FfidxHuDilDQZCH}_C2B4I0+FrzjQ8JZT8`yA4-t@(-;y&3#lCC&d5GA=%KPWAaAm%7?o;#A08lY9~h`R1aMjtDkv zh`y~uZv+VtqoVfHUhL4x>7|>eImTMkjtz)#Iyujdv<@VoB|dl1_t~=>JET`tgv#yM zDtswQLL$!WdoxP% zhQK%>KHqiL`S6NPMR(zulyj5XvqD!0^mp%)q*E6pi^rjUMj3`3lK7Syr*io z2+FsZt9a$Si?J~0?>YX;$-Jl%uQwvvD?P0(X5H)!{RY@@cs8?b)+O~N zQ-)(9ChGa%hXs;V+$OBLn`>8>iRG;IW1&#z?tYFZy$$20AIEoX*s()^dZpDpcrcC; z;8;<}6L`yGb2u$pEN@~44MRO;EJyjE5l>{o>nt)=!%L$y7_WfNc;fE?DB(t+j%JG! zP_869XM{TJ@wxZSex}&3hqmW-J%ysdrq*Fnp(*ywO}RLDZ$EQqO5SQkMM1mSsN6U` zx8={m<=5C?dxr19MyQX>!7Z_pI+w;UaK>XF)C3%aF;MQO~P3%Aw_ z>YmqNHs827-X}?gmBR32cMRVoa>$tNpY11Vmt5A5Biqw3zZ8>|j;W}*9@t+?(s|T< z)?)rH4G$fHIa-{Yt^vvG`=?hU5WO6$o3b;n^MWKh;zKmot78I_fPNMq70${7qlzie z1RjelKgM>b@Vls7Fa$Lr7OQVDF(U*NfUe&kh%-$;JRoXVw}AA8!ebV|^b?@-U=>f# z-0bZsqvEsa@HHerhUIK8@jqCQ-`f}(Z_|0H`oZCBTE@scF(oLDS+s`r9=P!N9?F=Q z_bw+#$4u4ON!xJK@xIxfCi}lAW>}Jhs4diTL=PhqgN7hYAAaM~CAjo<#9hOD4@PyR zneB-3vvEdUDuxV2TKXH4)y0U>(BEX1ca3jpWu%voqjzB}0GzlO1x6YTJ#x^tT)A@c z(wX!Fo$cK?vpNqo|bB`JGg%QpT9XzTX@<1+|vRR?lOIOwS3cFg2Jm!uX zwAuj6B9WxH?(@e}@fI~!dkk_U2&CN{sjdvT68UQRpLc|lo!$|>YGvY|?rsuX+bMOx zxlRWJlA6ChEvChq|3o0vGQ)7w{^lFXRYxSVp>({3_+9y}VhW4<=)S5s?$fD8WFwZWm3qwEB?ACn~CPqbmG9ckms01aexFwV4Y=H<} zo_!TgbWBt;>Bziq7WLBwosk2az`C$e`{b8rCqgrnL<(npRSt%_!zB9;V4u%{{74bip+N-v<^CmJIp?L9cQ`-`uT+5m;WpASa5)t0;fVfQKBQ9MBF%2aj_^ zn0emH8zs>F==9ie2h`{Oqzdn|D)!i$I*jDN%D|NXZf&1G$4F&oKrJURF*UWi#ns>g zGj}Fx$*2W1{eY&Ac8jTTDb8^N&L=_Xjj0qP6l?|K9sNdF{rH6F>pLn#c~rS61oMDx zxO(c&U%dEXCSCQ+y%n=l7lCM4>tyM%u@yO7YI6RT%3a+zM2>W%u7Ys52YTr^jZk(F zYu*!PJ?+d-&2StKg2PHa)x5qcayAY@03LGaX=x`5wb}ztZGR-**GWCcJ-gSD&ZBnT z3lrjPI*Ol?qD6I#a#h9sZIZriv$t;E>~2hVqlcgl!VWECB73vXc543yzQ@u9)AA=! zDm`Ft9!|E$`APw{-4IQfVm~Nwu!C zGwdgApJ-kaC6H9dhrx3zr=R9xU6gNH4TUgZYb}hBPM`D*s7zNq=*6dnQtrgS;O6NS z$U6iLcgxYuv&Zi*S>0o)_ERyC-@qJGiytkG=W-6AcFf&(J3O>HX#)r72HII?y(p3P z@d8M)?yPwWwv^AY*?lKA@Vr3h+7an_p@N9zKJ_ZC+Km}@$6HozjfB1rZj=`D9|N4u zHr>o5*FYZ%!v6f9xnz|WeNdKOsWQ9Toa?gwvII2)R6$hYbAuFx!`zjzEqF~zw^3K6 zalJ*cvNeB|YFgZOa?nwR!j8~q*xy?|OoB309Jd+z-|;lw1N<9z($o2{g`GA>s0;^E zT4+TZIe2k&-8RO{s_0-N#KDOWBp#)sC&>9DjNI}tUo(-?{l4rmS`fBLtH;-!RU4gg zXd5SnZOvLim5?VcTPL$gs!Q!0PwrCEIm6VTD|aW-it_e`#a#lnos*qOMZsUsQmygi ziKYW0$>#62t(-`8y!U&zj&=6aAjty&5wdj5mzQwVG8Al$Z>sbo(%tMmi)N%X{Io>-eSFiKDJS9~w00Wj1r&xWU0S zSqE5H_g~Q9>LztWFK1{Rj;vU*d$NbOOIeuxNeL!_*x}rR_Iej>%#sRS^t!d-4(sLYTGj}?%}Xzhj2ROo!=6ngrHxjlH7QJc_T4> zKJjnU6;#9zcK(%QqYtE6ZH%#8&8JcFb5oAtZS}o8x>RLV{Z0JZN_4eMbvu%mC8Y9> zs;m9pTdKO~sq^%zf}$cFdS$G|?fo8gahA4ZFT?U6py6yz4gJGhLTB(!4&fkGO|(uW zcA5lQ?$7dh=WGOE(Nkd^F*Cau^6xkH^CoD2_EqRfag!=dXbne^ zcdXd^siLPF^Y` z2_I3im4i)VjI6WPjQYZ1?lrPK1F7u%Nr!Y-9*<*xgHL}nCS0L|IxxcN>&~kd@ zVm$!uhm`DTs|~c6&C@Q9SNu1f4mjD91l(@&``FA2{1YPYq4Gt#_&BNf5*eA)t^{G@ zzm`*fXc1g*k=2GcW--yA8F7HR78 z3<`)72~`N#Z#Z(aUAFzRUc7Ak5IqEOblCoZi_@v$1O+kRnva`nnKS*90}H&iR;U|k z3(1E`)bQ%)F|+w=yXYZTuO1(?TGwLdmSa4qSN$R`lCoX;!ZG^D6l?PHN^{VA^f%1; z?iRi>+sPTqRM)-F*w0TzHS1i~tQK&YT|aNlb}>&HN!h&D<~kzO7?5_NVTuyG!^ecT zx1?CKq^1Mmw);}coihK$0@DB*KGQz%Rrw%@cpJgvyLIgq1M1!ut+LiL)iGLXh+8jM zvAzTx1*-)7S#?v>8C4aoRDP!84D#)LQC!urs=JgMD92TB*tcy9zCJX!D4}JUVh&eu zjoe+>H4-Ai0hl8S+d9?S#Wl9wbjE3@jggl*nC(}!wh^tcASB*ho>LQ}ETU}buqLk{ zM2em5s*mCq*M@(Fzg&K$rS*;@!*gz>wbp@|P0o#NeQ7xK#Nq5#@O!G4*_dqM<4^os z9!HHvQrJpE8kd}ja74Jm&m!d`vaw2sf(Aa z@pi5zfhOOUzvs)yyxYK(4tqwQK!9nQ951&0fj7-MAd^n4A zf$!266Pn}6;vtj4v7GoggHeLo5uyZ%uu)CcczPth=&Vq;TWR*i*GFiJ-@JJvGJu|d z9K(1xajChk#Z@uNG)}pVp6K)mlV?ODzSe5fyyI1S{`f_X+~ubqblINx;yjvFTBlO; z83h6oOX4hyDx}=4&#+9p<*_XuZtv}5eF=UBFy;AhPPee4lHTXl){SAXuOwF2&NlX3 zvZ^cYik(H6>HPf7>G}e0!vNKODQ<8XY%X3rks=zRE)BBd+xjt?vUF9Q-sU6&AVs4U z%ym_%^1|Z#Yb_eaB&Y0#_|R{q5SVM~-!)5ETc{sCgq1_q5qy8UcI1)CG_Ov^ucyx( ziCE^4*s`vHA=tBj8QbNQ?=0Bm(rw$fSHhSRx(o5~x7;`LqI@^i_t|XpfSD``CAt~N`5rU=+Qxq#JS@Nswu}}8Ir~+aXxzk=#q}=1eEDq z&j1v=l_kBJJ9}f<4?hHlUEe--)RlxICUY}7eSI3qmkZ2Otg7B>3i1bab0J?t|Be=z zAz)wm9PaW!{%%2TIX`Zmt@`M1xIg35dMQ|%$nS&~1Reu9VJK&H@mj2N?HLLC{ z|Bvx(=Z>FI-UDIF3wYO$)${g~u?;~WrJ7#Pzl@E|_AP_$h&dI`p7CKm|>zv?77ws_BjR-ScRH9 z7Y9)_QveM;)hRbn0GE~ir8j)kVp9Y-33r-n23t*lR`B94mj>2zW@LQQv7S4qHyu`T zaILO1GQhlpTzgq^-0WP88I$D(2D$sw!7wX^*&lTvT=Sgn5aM?ryJBqY)tky=2goJ#}qdtM^?=JWg7_WqX^gy(v_7xHTM&W-*JYAM0_Z1&ELD23scIr z?mMf-lYBtdrhmL^`Yoa}UiCPS6ba-2s^KLFQO2~JHy^HhbfU{eu{-52kezneefdy7 zk$ucPipOBi62)wm&t6Z%7>jO`1AD=*B0f&S|AY1?6V75FwE5|J2&`y1GY#|*RH4wPC{{We^viuQ(1Pg6 z_Wg%JM&x-lsw$)arnC(FjSnSIYFH!2Qp~!}Y{u{!VLfbFL}g|UO1ly|UVqX?^o<^k zEMLWT=<|PhwBRJNyYewa93KJ#qEPkqm0kBsU+j8}YFt=Q_R?<9E(|kKuaXbgcNBwz z=>SBOMOa#QH*)Wx0veA;ltJcF0fM?R@bRfkX(+XI2@kRo%!?Y4>1?h~b@ou!!lV}! zOtR3Q&7Ixb{Ib1bZ4W!OXKr*8O!osAA3~PxWE#-dS4pGPpu})F%85qDPz2ngn)!RQ zLmp7ffGi%%MEFJ~Q(-r#(6Y$TV#$R&=;H<#%{aUL^U zk&b}3HYdiyjH-fig|qa83Bha*A3h8g^kb>s0r$S9VTBYBM6z4l)^kUoV)lpvRK;QscDV^)kIP8G2nK73;-TwRq&S{GP9vv%ncvW{v#Lj>o(7083m&kqKe(01?x{4!TA6dHd&wVnd zH#j#(V&KeV!((H~@5sMfdQw9kjU|B}oX}T6n*!sC2PPB!(I@mWMr&{e*F#GJ8Yq4a-O>9keAcn;`(ISy6|X}H3qF3TKyHE z5(xS1_yaCws%T>q4&p-cJ(V%d20m$iSItI-(^<8Xy?{YUvYOliGIXB%y!=Y`lrqqz zIYZ9{?1OsZsSABsp%~i2z+eh66GN%FrIi4pRe)@%R@yUFVl*oqUAq%S@`T4PzPEd6 zziZ!Unm7T=10@{=s_K7WyDX~uI{F(V!}jY=aIVbDU*r%b9gd#)uyVHP!ETtH)PHwh~;syJ68ABBF@>2%g=Ch!c-Ny4xVAPkHCOYXKdc zsXa~LV4|c3u=;;QGHas$@Brst5naLg} z?(`PNu`a?PK&@CE2SR?`ZUqc57X9HMfWfUJ&VrbilXs?9zIZl>ZZXI=Iow&nRl;sI zcfEb9DaKZNiNW#@CioJ68tikLMX0{25^;ZY8M7c`v0$q z)4IGUM&ikfhTTvo*k3o8q<#QQ98@N&(&kt1^>(h$xe03>F}L^@XTtcpa6SJHf;JLL_RXg`|bYD}Z z;PK;*8w5r&;5OQNv}L2!i_0=bbyA%3^+}}w6&P*+e^I)TG4-itVQV?>?w-W51Qk> zv6!4YLCqNe#IR=%>I5Yw2}hImjM^vno8!mzvuJ%JY~E6lX9|dOfj6*m zBXn4o7gg_$D%2e|c7IeP9^O%`$47{*%a^M|N`}>uqrwP48=Qjga$^ zxY$|R^dmEcfMDbKXXOJ$k7G6y3ToGQG=Ia3~AAsQ2n(gP)19L+WJi2_#<66lgTVY z3v>@)&b+>#sB>I~YXz0w&geEN_&>w0O?aOWQpqZMd!jet1zFm3r__!7`k{o4JTf$n2=$S9Wku@JgwgAQwNc#*sst|fbjONZj>3*v}mpzNtkS))4Y#thT5oXyi z-o=WS(f}lmCgDDtdr_SqLQcm*b z`Il=5PXDU_RkQi@R|;GTHCh!k-^ z2_fJN;fLX*xnKRH)d=Qk0tozl!6JeIJz=*Ep3cCC4q?pws5 zB^0Ov-gkYDox|3YjW6B63jt?0n{X`kPh6OH+wzYy1RdD5ILG-m=Gak@n~SJJHwdXZ zsS%7>`peN#VsYn=T*P+h+<)aHQuJ~!$kAb-hKol_4bJ;eHt=hoP*?v$kd5uH)z;MS zuFpn&=eEI{f)Rg5G0q1J+_U%E!D@p)ibWvBOYJF7pS88##l|MMPE}j%`wxDU8NdV< z0v!`#A0gWkiZ(_P*jzmSL9%~3K}*IGOgSM(hV>fEqwj98O<%i#!3%=`-v86BVINCB$WW2)$%{F zeZ2W!>6#yx;g5tKz?k%nr@X3Het)z0Iey2#RFc1c_44z-xc1jKyZzUj!>fGX&29ht zP0#oLfA~V*Kjf?fm^oRVv25XMfBfmY>ARYLTsvYNZnsWRv zr18@!vy+2_dHdbJ|DUbm|AQOkq*>EH>w0yb4lf&Kw{GE;%K{PqiZ1;9p8waD{i;tr z1{9ESNFo>{fu>orrhrak2wXu`n}&fP1g;lR?txM-e&frE!D-_ z#+z!26L;P!*+y?YxjAR@jye5J{94YPXWg9Tb{=&Pt_WKjDm6Me`>A@mCR4HOlU~0R zqp3elC(T*E#x6UaHR5#a|!iBN@yhN(2yjZ}Z;IE7I7doG#NtpjYA_9P``4PJ2H0 z)%;>i{})3J8b(0zEqS2F%}TE8t=j>pS*(p$Gch>mDhtg^RM7yZ#mvy_y&i5%C_A z_59ZCI@T6w-%Lf*e$=_)*DD0i;&F+$-V+{z2#`z4w8QLZO$CVjlmd+7EXNY_un?U- zKG^qS7sSgHb6r628tEzyl04XOE=hisj$FK|!FYoX$ zV_pKC%_ZdfWcKG|nl32>3fuu{s#3@w3Ssgabcndn_E}_~GaR_h@k>IaUgqWdZlkl? zG&G-|I*c}KAI!)W70EY?Ahdmbpv!@huXI@59o)%=>$R*f8oGk7DQz$K3B2 zsPi6|w`q3hq}3T?c0nYX+j1sLtWisnVmZe+40jlnhfuq**)VEAM^g&e?k_te_G5Ub z6~1`f>!IG%1_8&ubQ3h5dqIJ44~B>pD;(@q(`-REoyZOgJ%eeiPCLdRFhMl*q>y<{ zXk&W>T@@2Z{)x9gQXO(LnE4HzblR+OM>MvZe5p+^LxBlxG^*>_0uI_+xr`+-AWqIr zrB}!5m`o0}`=bAQw?e>UAN?!bHM+JX<{oKrjMlp~0hj8{e9<^cX1ifhXb8GD&SydK zjSrVKz>7)M{i`wfz30_GTSPP2RC(3@k5~6uH%ll=4F0k6N!n{ncMIqYauhI_pQ<4n zZsmb$$Q&_jOU1d!^M}q^Y8G^>wqSPReW|G~N&&`k`H^9WH+wOO`{CT|bm#kB9w+Hv za;E#bTXJ1LF_n*RPsuZkEwW%ZbolCG*sxZPlf!+Vro;B!*64#O&xfta~?x(Tvp^dc4k% z9B&kc?U1G8YrCdQ8!(s`uu-XWsBZ~0Sm!#QcEB9o3N)G{Sss;ZA@W95o?jD1rHval zY@kZ5j^ixA=D%CLnq8D{;bddd;OkWOV90FKjL*bi-7#o`L79Z+pxDG_)@QU(Gm#B> zQlw|Q6*V$TR=ZBT*@rnrxY}gy{P?`fr@4)S`T;8hvwp`k`U?tpx&h~3FQcV8OnkcS zNx}TuE0|iSV&sh0^l~utiy!aZh4xc}-V4>Ewz?Mrpta}I)(;)at35}*s@v>wgOVMk zKp^uA9bJY8nG(Y%rDjJeCxb=Qg`a<+?L&{G#UDiDjWP7rXeE^TubMz^4$YyD=(d{GLplV0S_#zYv& zFM21URnd95-Yh&6`)7-^ixUoXvIK_7u}kdQO&0QKlMPu={5#)xA-}!eBEAHS>1v9Yv#lmt2}wou5=by5KwU$s(GDo|jmQldzAj4RtHj7{Ko9 zSSmen7_xpT3i;T_Po}=%#)W-2gT*Vw8Xuf~b1M{roer2qmBfn6G-gVU^VyrRm((x$ z4GNK?Hyd2>bke)S{8eD+x7obk>Ch7yK9t!qD*(H#*px9pukxWVUK(G&0=q>}qK_B= z_0d@Oc;{Y=E&EKB^6qc<$4>1a+XK@whP$45gkcL!j-}=5B^u(cp8rEGD71=>O)Vro z36q?SVCZ}g*qN6~&(GNSq$rcd;eyUZZv=;4E#+8mnHzO;#irfVxQw2tZ5KZrCN_^e zsb9A3|Gg>GUho`dZVbO>;z*yxF3mkW8Xt}3ybc)K5^{aSD8z;n;}VxORQM%pxU>$^ ztDuh& z+uOYtua@{7IejU{YZ@f?F5?P#Kp{^Ip=GL-wW%bSG7TtNQN7x+broPFJ!1^mh^Sf# zRgfTzUxg<9ghb0|;!IMHx zsmri`%ULv-Q0Zt3Z-c%?ag%*ZAVnO97k|gUYDYNUPV?4-ktYT|2r|RLb!*{*-V(O~ zx`uM;0anbtZQ??pZ_Crw)YXkK$soNe*lj3}-8!bKbJz$T*&nV#43PPI*c_$xe{2&m zSJS`J4c;f_c*@yG;Q5LQ+I@S}FPDc0UeeAPjkONNcWM{lq}se(wDfFz_E;e~fi1Ir z_UVIp?5fJj5AiKUamWgmlA2+YVoo zIMt?u{aLmO@F>I&IZurcgYp=IY{JO0w0r9ekq8HJX~qH=FJ2j~A&4higjq64=Rdus z6d>PbWRKNbY?qFWf=GzpcKgP?2&mpO;rsWQS4R9U*MaR$ciQ3C=sG_uHlc~HcFyHn z7VSOfUeU3M%hDO5W=YSp;JCVL;td3{N6NoIR~WLn zF60T2uZTyKj$m%MWq!7W<&;%b2NPifJJW_oRg4fW2yZfmAC8QOAR(e{Z%R!^u$ur+ zK?1%;?M!79;C(*(HHSvWNF?d5c%VB(hz5qsyOAiofsM_ADNcJ*`R&`1R~`lY3wp9C z*?gCk9V%G1=O1zm8|Sx}@BipSRs8lih~(eAEL5_e1`krX0@cD~@xrNAp&LLRzW)2) z`(qkujbG(dW_U9YAKsly3nSXUV+d)!V0`ann(K7hHXPt~0R*I1-A{h?a#!80(4D^J z;H7iKmQv~v8Vvcj%4|iJmnqa+j^DEXlWG|y zU?AEI3~vdhtQ7tI%WKCa{vPP^=oQ(=lmha_I%GxNp>Es;3DhD;B?}>b3buo5u_d9; z1tO>?a&OC51+>~OGF|D-s)KyFh>UFzV})Moop<#$hgNMmM&>60+ZR#?z;h__+tNR$ zB4Fo6pr=um2(g#5IJ!nrc*j-uZ&1Tk`8bHah$EPB^ClbLi0A-)_v^$i@Gr|W$pSqw z{?=3agzpl@M+GO4XMd>VTX*##EfN~Zw8G?jM-o*`(Ix+8m26Miz5~#%(${^b6(+0j zb^Y-fwmsti{UNdr|Eq*4v!_W7AgZ0iC&(VzKomjDHck|$w9esI-8#VmqMr-d?j%cmZAjW%>`#1vT z1#|K;@7p|s=UXN;d_^wY#H^LGh(cwG7Ho@B(znY$s@qiJr>UjoONpdKSBD8$JR|0w zgww%BnO_p+R*APg5TX%1$$u`Xv>PH5ML4?Id0OibP*|M&{Q|gX4zP7VH6Q=NA(dsS zhqTzXM5KlU3r10ZK>pqEPkzBFWe7HPxV^pu-TDbBpt&L;k66E_*`{A^mS98S{F^M>M|o3>*@BW=r|Hq{0|1>79YTUSou1E-Ew3H)PGqlhEI*W=x!d;T!)ST{KisS=h}9jU+MS~Or^ zHK%^P?I*2rmb9u#K#B$kjenn)IRz8+r$UwrZ(!UA@p6ZQx zEI){tl+T_(TLYor9FbB9Rxb8`I1+dV+kYDtvI_Y3-wW~gI{e>Uh&Xl3{cjK3{{gj9 zAtVt5f&(JQL?-QrK56T_M;EiPp2C>aA>gaPNlrdjCv@=3^P}l<*WHiBFK4TA)Aw@S zFr~&8p+6Ei!&?^p!=X`?QhhtmAJ-#7_Q&KnafZuOcb?RGw&xEKXYN_L?ffAKkn8uU zJPASYr8L`3i@Y-uNq$g`j9hrdvQXdd*^>1>{5sxn?Ibm-)4UC*n*h**AA&fFm>;Fr zr*i5>7j4m#j{yC13pvEv#XLmg-tLMFN>2NY?6%{Vfwm zk=@_Js&GC(_3C;tLs}Yx+Y5otM8{Yo?U-woo_qF-*Q;9Afb(cy!k-NxNj-UJ%K*av4s_17 zEKyNvl0wi=U!LoB;pBtVcv-t}aw#e8bM`K%lR7a>=(P#qmvZtE5 zu}_REqE+;|u}_RE!c_tnUTGlvWc41=bG6SavA+t5_>+twS4D)v!pdS}#x1NhHfHI< zE0%ZlQ`)`@;@H0X`M;yUuZHOV%0fJe=|j@80F*+MlHfYtncHyE*Abu|`^D$zDsc+% zXL;~5_50{iu}CFD@w=PS<1MbP>2mcEK=V_A#~b1ea&3Hw^!3YQl|c1hr$6DCpU7u# z-`t-)u1~-<0`N>0D7w&HXIeSf+xN4HC=-Z{WdQ^MLs(DbxwHEKG!cZcGQ%`EKfOzJ zoGlZ1Vm8Hl^FyFW(k_s64wE1m8u|{L)I_|q6LF`2tqd)DvcsQ%rl*|{sB}KLu}YRi zX__>fGMP{WnbjBdx>C~Y9yBt_=aeepYW2=S*0u{A&+wot zJoxrSw>exM1IP){N-`!R2MO-)#L{Vzg&xA4^hT%Q5?=tj^fspJobB91zVt$NFUQa7 zf!IwcfPGJhcZdMv1{@x_Iqv#5E`VHlu#6iFgOoVLGs+<}VB_;bJ?iL^GtQNj<3I7P zQwq_Zs$k4Lf`Wqhg2|OKDGdPQh)Xbc#s*rBr2%%;S_H%|R5K##q&%RjE6|ue(lt=1@wE{4~i1(&^PJ_w(4qv7{iV5VVs13 zwiKYZVt+9~3=%H|=P%0;w{Rq*sApE-na_e|`{nn^XE@?oQ^7?Nwrcf92CRiu{rier<;4-9U zbZa$75IN7Js6d>iQhR;$sx5zwDyz0^iYeX|6nP25j2~latj02~IP+K6e*&Rd(JG@m zOkS<7!wB$2yTB*8UgTnv9b&m!n;EzzBSuMAsEwBI5jH%{2-YC{|#w3*%BFGU{w)6Ms`M_nB@NVORJ*ZESo-c$fz%+biXfchGlqoQw zIS_>~Qc0l+Xfp%Eg~`>>S)dxWd=Z;wAoi^=$xSra6?C;AGf7H=ym2qitfQs6L>*Pk z%`qQxT+F84PoQ^F!XT-c?EVWhNQYf2l^8Cbfu>2rA62uiCP5CysrBa36e`gmM1hp7 z-e#aQ3evM9Rkzk@jAHM0ATeYDut{CUqvI-)q7f6>zd}8AviXOfqxU+FeQCVHij^r^ zI4`a2Ehn(DLuJP~j36XP@PC3PSH>Gix6F;D6{%S|&~6)?0TfH{S_a^m5VW-uU4wMF zLL$vEkq()xbXYe}ieT2j5!6~{1jUQivZ-y-(6ghJEqjDwc-z62Nd;16;M33APj>LY zr#Hd~9VrFGV3S}bx-l_wmGc=os*k(40?r>H_mFH}#e)hYk3Cf!mc$mw(#AaSKZ@q( z`sX_ch=+O`-O1%y<sIE1LJos@b3vR1&)U+iyo zjvY5xRTUa;pn-#5fRdzcpAg$sdDBm?Z%)=RUA(dTHhEiOn-IW$7*aWs1W%QopJYlP z2Hmpv%pXWCZEH{8_A>Hr$CH*OrCyX_%8^}`T*>R@Rt;-I25VFnqDVeS7RPmd+?DCA zW95r$n{<76I>|Da_oImSCRdQkh>cg4y16-rE;$b8hG$(*YPvt%b$sLOT1i$+l1;Ui z$p%YX6jC|?^_9e?HT#jjiNbJan1F4PQlQHnR5yYfIVn_v?!ubn{65z_p5uc!&Iq+$ zt*pxz2yh*|g=5jxl6=@ZUu5l>zxN@^wL*0E`WGjv&4l=TpGTA}Z-U>P#AM29 z^9B@3Lt&t3-tk){&ebP(YxmpQL2d@KvMRz&>tKgGvFWlSO!g1FTx<*1)rqH6f~rDl z9YZxvL2@=D0$ZI;Gl|{m#ZKbLPiFxmY{LQ;z~pHrH^J#W^i-4*ClyzLjIQ9srea+z zWTNz%fg(~i0AoU+kVYy_=|hFQE5v@`EI@t7r{AgbAi*|=pt{!y{U^cW>8y~jF*lJ> z=U0V4u8&k#&$0b&a%NL^&$;Z;>hzIvxoAGu&v&?N>Wq9gnm$dK)fe(3=BQ2rn*%lMpqrM&Gd=b8X`jOMpy4+4tkU9g+uJ=cikez{VhH)I#+e zev|~q7EbX5J3$e67&lD{5t9gp=oI2+Ni7qm0Ut^162XL9X1wbxi)VT(q85~#RW`fA z8OYI`vufNA z%Rz++CB^ekZ*CL!LrV9g$h6I&?V&hKN6qD>g@ud)RGJ=;0t5*SfjtXD^pH40GmzR> zfq_Gq2`DE_Udc9Ki=e9auFD;Cw~i4Ffk1cDOsDIdiB~&uTriD#o8u!5Q2I$4g38Kn zDiO>9Un03s^ysZ$3aT^=0^5e4RHEAIrZ7V(fOi)@^Y$-7BXDSS7h70V%u;~r^m{D9 zi@Y3*cNS2nd`E1;!g0p91Y^L~q@GrRFAV&Ke}2q*UVX%moG6@_$i(>E`Pu$%9K6$6 z6$%H5S&B<+A_+L+tb5RK{@^c)L>Y*)4(8POf%0=Dg)xpeM(FJO2k;)k4yX$z;jj}* z1*skq28y5)W0Qf?g=6=(X>Imk7mMqPYxA0pw@j@I`+eOQp-&J%5F^fgk$MyI0IB@J zr;HtA`6C+-LcH10?>g^DXSR&{k@$z~GsxxkFG9Q_ZUy#QsWv}qz9Xj?>=bZ%$6t@%2jQWOoP;6Y*nax}FULkqgI)+q zNs0Z`%d3Rz;VWXHPQt~7SPkEiR4`pnXG6QA7)l;Oh@DR&Jss_-l0#jx0@vkf@npN| zst0a_Jr57h@>X!sJMRgXYWAj*H=*>Ndyx@(U{i*aWEqaRL3^emos{xrTESIXKlQ?k z8NcJg+coJ3UPw8PL?pSf9?+!OiUrm5$7K<_J+LZgN)T|Y6kte^Dd}Osc%M~@qSXcC6)C0UL*_* zglpCx_SSSZ_AKWer%{J)OV8|Fy5sVx(^+A|UZ`#9F8O8i19*`T6mn6gDZ$rZcq$x- z{7*8W?10&nBQf4+>nrJaDHX`X!UGMoQ%CHQtmdsJ7IZ&7@`ub9!o?bV7_d;nlCvE{fBp6Zyz{j=VuT&hoKrr z5&#nG>Rv39x!Eh)){<9PEoz(av~E>|6|tM-0R|7gy|XTfEXF7cN!ony;GfIZMFo6# zjOzN%fX5Wbpu$W-NkeJE0fsL+aSjo@0+e@1Jvz9Zn0Y9zX8*E9h@zo;LB^|9P&;`K z$@WND`iQ2L5v)~FvRQ=?vi6xzh_1?4V47Fk`-hWF{Vp2qk4fbiW>gqwsp^&p$K{XL z8gUe57+Ul!1gzxf2!jDc3fLABgJ}X#vj{|4r-Lph5Gll4f(zT^Z?``Srb{{!yBdpm zSYCmdtYF_S$a;1@*?;LvEuUV-K7cCkHuaexR@j1yFi8|n1|CQ;Z9)_y1R~Wh+Yju6 z^kWIar0JW}M8v%U;t$9OQcWkxrpFzSw=9&yE_OYy?qA1d9$YnghmhJ>HE9H6>w97N z>1|12cJp!)o&b4U-b$hdxN@4pt_faBY*?+de=3L$Jh!%sM`@D$wJxq z)lZw&H!agem4OiSP$Jjul_?-*h&*vsMM*C?fpiKYwAb3X^MXTZxwHJlhQJ%BCp*o} zOcG)W$$81)fHH!B-(ZKJ>!ci99PI^L=4+C%!NM6MkP%06XNzyCF*&WHLGVMu@B$PQ zDroQa5nzO^kpyI^$K!B1d=mI@cGN>(XYa1k<-7tC@#j!|A}QwStf3g;f==N< zq>TeXkg2>Qe9MgYi|3D1hP?2DK)f|Zyc|N`M z%7#stY!`I(MOrP`$V6DJ%^C0_5xk%d(DEGS0B6L|^w^YCokyb$`27Me1JNM?A)=^& zl;-?JOSdUaOrn+*Th2~u%re;;bZ~)qX=B4OVu{2l5=xr#{sfX{fi9;!3ni2j^K-Lq z`qL=nfwW;2X+u9-C6xd|9u`Nh8BgMMB4FI$4=dubW($k#Q4Du#=QZH2uOSo?j@ho` zwAXi{Avx<(_Uv&!P%9G5(G;{}d%D9JrHZao6@p*5YSghJ>Ia{-FUO6>2a!@FgyD;NsXO#&H)uvggG(T>UJgG z@V>aQyW&1A_E4z>pRAEHspaEOVMMb4(zusccI{NRAMvZs|;t}B+v9JHe+Q}iK6os@F53y^}M(fbHdV^+yM{) z)%rI36f>w0RDLm-FU&-~^7SE%kFLXhR;p=rK*`jZ6!Qda=c&BIp!5kOAzg}`akPrRgX^gQ6Qy1boSf&){ww@JEy z^n81iaDQ0m`We-gSOW%b zi(OY8#fQt(+jCs`-@&ai9*Encc%4{AMv(}1OkX8-5->gac9)`vEtiCfn zRr(m1kA7d#jNMU(slcvCwapP$;}(7Yh^S9$@VyN<_`l&3`z?yIeXwpYIpIh- zBNIw;9)$T?RW8d=Qnp)r**>p6s0wy6EP6*PO>Z6*))>L1m*O>CV9w*v%^sd=Mc(Cfpxmc>FY@74 zB@Vb#?*M?0>@65ezYGW^%wjiPUm*s@1bbNa6m3Z**b(2Jl;q@LBrDzfk0j0i3Uk(gv>O&%=+>oVHg0-~q^ zJpWwPU$Q`II6~;cIH?=FPEoex1w7_s*woC4t0?>CHkVZ-VV%EIyg<=k@E>`UZ)As# zU=c1pUar@8luEK7!ZZ`}CcQ7O_&!e^{lwyW=dfh(mGO843X(4W56j^IX$i zAy+qtN0SDyPkIoD5f}G^gjG>5|4CSt)&^DTw(eb?1)oKcNL9b=JlumqGZ+;ePYf&Fw7M)JLC76ud;t$V%8HA`nP6;1MAl0CkCq7oPD+C(j z4e}Pg(Z8WzLSM@L5^6WsYT*=)3ewVpP?!z(*9+|%8gwZxA_aZSdZqE*4-183rXk43 z*sK-U8X4ZR#6c&RNW=tIH^lycr@TZ}VyB5*iFu_JZkT?Jp@pbfUPU{@z#;<11MJrVS1ClthmMGL^AT2YK}=h zR!U<9k?@2I5xl?|_~~9|`jN8;jjY$cEe}-;DJ6?MMoK#-MN4@JfmL1AN+f`#N$aIB zA`n#dcN?L^u%6gTN-ov?%W;Whmd2HrjHLWt6Mr!dW$wU8j~}K>3S)1fx4~A%l`p4+ zOMBAE3LWByc0r8V96k(BFX1-6;(uRc<9?4X<$3gNl>AE~Q!_jLa{_pYX2ssF2jlhX9u_+ljg4QxPZiK}>mpfMJRtISHqHGmG^1X4pn|F-4&G+0`#^EXpq5D}#pFNhK58iQBERJMDk$ z{Jr-(k3b#gX_U1zHa>0t?C#yWP;a&xxqn519Rk*LubPCNsjo)DWC#!@F@D@;imAyN z_6HnO=QK6HG$h_d=Z>A1(lr1|Dntvl3rA6txPN}NF_AS1WQ)l=56me?+$8wFEurL$^cnP3yF6qtLSQLOVN@G0Eh!t-3{CjH_RB6)9pN` ztl)+K7`Ac^@)lVhukD!6#li8pdD-c*%!MD@qiCHBU2KgV-0le!tF0V5_2t@bR~HxU zcnu(Dovki10MYx@e$(VMTEVY)DZOhrjHrh4VG>iLqXxL#0lh`K9_RDSV?_))a;)Ff z)VM~iES3bjCn2<}!+)D{*Th13c{$}oZ5nLFx@TgA5cqXz)dw&EAO;8ruAHdhq?TryF~)S3WZM+m{}d z%3t{1mN!3*xCl1sg!G|t*uQ9dFf+4x9S=u{D_E&G2J>lzJbTlu7pD- zMRfRpv&A{tJ3d8$UuY4Qi4gfDd8I{X-MfF{FRN>7 znKE6>3xWkb(=6`(&THEYRiz(RFY?nJSDEVS2F5|lwtcRJi#P#5WvuY3hVxoaJFncu zM}vop18gY*l?7eStUj1Kx}~1Hs_5)|R_(f+?Yeakz{$h#AzlF~6Kgwf+k`t1lFh=Z z?i>C-O9Pu~|JqPM0}0J<(20ZBuiTLO4pw8IgM7Am)hk1vb(DWO5tdXHvP+So{nPsO zG6&}-r>EPH)ma?8@>8y@`Fc%Z@ea0=<8L1BuQZmnpzmI^UD{HhuyP9jtY&YS#hI-5 zJMVZWYYW+Y9Czp4K3iq7W(I{q6YMOxZi9v?pVM)^2Jx6T0gY~Gdi4$=gN`9CYON&; zH_y!l(v-YsQ_&O&P4C(0heG^gREv^AN*$&h@>uAbwiQ<{OxJaL)x>g#CH>C07JG`J zVK82VmXt)+g_=El_^?9VRD(ucVu>gzb%j8x|j->IztmS!Gt6oqobxm%F5PQTq6?>9+T2L zV{2nG0U+OG7U<_k++VDBtx^5VT^5i(>?F=)lIReY-pK}4$DP&NiJ1TAkN<48~`J$+( zeW5rmF3!G*7J%^|f`v*eOJS(DpDfgJFOy|OyDppW`1R4fv$dU_Cy?eEK*r=^`#SK# zIojPb_#j?*&k3O5$n1}}ViyE=?-Ue#WuI4Vlf}K-_m^LO!NL>+#H#=m$3a^(z>z|)+?zT_ z)p)OhPNMY!PRKdBVw6$OB(TH8>-}}jb1{Lj{)k$Wn)>NqYZ){(Q~<|;w6hf}CF z#5Vhc`|>=?L7NF?Ym!V|6DaCt9iSMU$^Gn#L-}* zqN*w^BBBY=y#d9Y|7m7!u9V}u0s}m2`||?=16#p0h@|aE6BQHF!Lr$kARUY{Px4(O zECWKK5jC5Rz}c-S!;Fy)$qP60fb^kf+0v-DmjCdB)Y;eEkipWRuX&A@bA>&4V36th zHmB}$M2upYJ)>xW=h@L(PCj;yt;@xafk`mAdbL5tjA`tN?d+l(-B z8gJ}{bm9&P5XdM_awQ#^oCPMW9%8HGdBxMO{^@!7GIv=HA{whHC1_*x%A?fu8RA=GuL7I|cBd*@4(t zr*y$}WGz$o=p1cpW&|~68QURBad9!0>)5~Kyt{rYnMRkWJ9#y0)+E~SjKmYs+zFp9 zq?U~8LN;>++|N&Fv^E1{RR(WF*_I&$uk)Jv{=UAF2QMpK{BRusGN7?I|85oZPZ|CL zowSrE@vJw_9ZHoVmtoAR2jm@UUPKAn*}QB5I?5mzN@LJz{_dDr;I43%!goxpO=hsc zxs0WjD;HRus+at{0#p0CyaHYwFZ1y(30eQ8?p&5xj9PYcYx3gTAJ{IYK^07dBtd*` zTZRk`4YfNjU%A2n+2t2iz;9=i%^kv_= zDqEdXB9xh+j-#iv_^n4F?;6&7({zJTHfoYcD=gzmSruhl>_NcYu&HHC?>8&gpfi|C z+MJ@dZMZ$_Xs~wE4z0%VI%OxpU9+>Z#9}3*YwGHT3zmRFn}vL>z1-SjR5p4XZzx2foqp>9E zf|`bic%MFf!l0U?chrLccNy4(qQS|j=i=%baMvSvJl7lefK>BY@D2BMSOiz0n6NFz z2>0TzAj}n%FS~sabV+YN*92Eh(-^F6W{jTBYnOuksZT_6P);?Cfo-sN5A-W9^-92m zWr8eX6+KL5onGGCSdov}3aM=~SemOntq-g^WI1yY#Bha!UwH!XecKSicrFK)ySIT@ zV!W@A&`tmH(cH}~cXSq_H!iabjgeP=KQObWr$?u3G;sNGLD!$cLPL{4^cr`X9J9W* zkTy@ zg2iF9Go}G-tJv7YjIehyO~LK#SsHX-;~pPGHCnG$*52mP5pGi*<#uwj7pt(s{;_U< zrem258=Kvh3k4rnHjROYad;hU##w2`%(rNH+QBF1lL4!PwZps0QP&cVIZs|ulk)>5 z2Hi1hd2LS4o0If>2APdSe{2PJvlTgbthcw<9Fx4Lv9`jtRR?ZNf#~RX=8>7?OLf69 zbtpc!bkP&`LQNf=FyqNw@2N1J4OXaM_p-=1(mgyYg;uAX99HB_s_s#lJG@(1SeVv*b&mU$(qRcK5-~p9;QX`S z=|Fa-34>@pEb*%Q-qPV1mTr{r*mzVwTPAV;uAMFX_n#49^# zJBm>byvjv(YXlYfHCNBarP@3>{y9W)fO%)9~x|quSkX!2l${OAwv!^r~AfgM*XvjJZ|8 z#Z$@Cr`Iv8m?Ex;zRw3BgxW{GGnGf%O?c|I!qoB(kLFKXcWstqR#KcEgZ$ATKgji)#etRBauI%LK`ZJ6EXFNI2GgNe4Yu##J zJDK(T2U2lutnfu~dRlI7P)db(q=)8b8G4sD2AmW@Ez@aH!C(_R%{@6;8!iQhgdkvH z6fqnO+R6%38{#7NT3-;1pvXAJ8%yX!EzCl5(E=H;k787K@#BqBtQ9zjkX@16XjmS4 zW2)ck*(GK}p|O=!1|FBgAa)p89f41uKE*sk|6a`F_l7zuvUjhkvvU@8wg7xrTkZ%{ zqQ}JJjJf#*)ipIp7|Hltdf-k<23@^D!s^VGz;9uW7>veUa9>F%a0j8I-=y+ZdPjBO z^l4MVzlaK&RE&DhvHSwTG^N8SxLZQP0FQF@t5@}49l+mPZ|Ov-qK49$ITeE()C{^W z6X!t`B?Q#52DnRT=+<45cJv^!-xc_}&9jjS$Tw8*p3OyimBs)&owx(XM@r{1WSqLN zes9VS;oS=cg$X26?zzHe&xT+QbW`X;j0#v&3D`}%nMuBHIOlwSo^t+##x(!mmQ&W9 z2AGjxc0W0F6WP;|^$r{4+up<~O2ev?B76h*%D=6us)}YWNFpn4of+e0I(B(*XKHC_ zk&cc*NQ2qtOxl}BWM1rYs4=t3IUBI}$6aMRV0hH(EkKi4#idDBsl%fXm-QYB=LO%p z%CiFkVrEYc$;->*Ur~-6xdErhsou|@xjTs?;BBDUo7&nIaHx||8=^4Ecww@_VQxe> z82+dw?hTjLu3ei4EKY!6OB~TUNKy#sotSWY4@$fv`-~s%k{brJ!vUfLv&&QB#1#o~ zOZKH|ektn&@3Ce2DwUdsM_$_Kll9TX3g={WmS9wHrCAr8O;%S&RkzB!0J*AmlwB($ z*n))A02d!Nw)%MjfXX0E1@uCHgr{69O5T-Lx;X2AX|yLW)2$u{J_A;Sqd27XKz3%O)}!p{r^gXYvJVw|}OtZ@i8iI zQiD45R)=|^xdiSAJ>gxuj=?pUO1)T>+*)@cg703@#d4Ba{3?pYKN$8HjPHD&ynXj> zbrf!`Q z*F-AuciKQ1sPWV zx<&*3NSM(g!f2r*`8&WJ5tdKHT0qph_U{*I#Aj!_<~05qiOF>KZO~Rl6VRsn!UY5b zI5{{@YloD8wYEgxt=jqH(ZVx(Hv5rV51pW<;25Dqpu7|}4ihF1nrs`Z2q}X6j(3R+ zyE!Iml3rgc+r204)U}?1;Gm!&3=c9OSh}JJ@yiaETwEE$VC>{E0V)|sBWfkD)BB

a4?XAYRq5*PJ~F1gruUudGi+xHo0KYhJzkM+e2#Q6YA>s7U%nwhrSn- z0yy=9kSH@;wr$w3A%*TrAi1Wdub{A^;t8Pm77V}gU)GbsI^ie|ph1GLQ99wDo3az3 z?nbVZw)R~p&a3?;b*<@lrqAy6&=2C$#`-Eb8!_0M+yl_oc~RB*crg+QL}RV==s#MB zFwXZxKH}!)PQ{@7lwrC;h9IO%O*BdWG8~@T>{o8=xgSs%xh3oZFFU({lhcT1x2uOo8{AbCYWdD% zc&gI#Es3=wFZMAo9na;Q~7cwuiVz{KZn6NnmV1hGTc;~vW@>a?j(682O zQkEZ2^5vcccWMaLReLBWCkJ%l1;Mz&!a`xJBtT5BkimhFSr_*}L}BQBtRQyZl6Ds3 z-a%ky9Uu*@jW2wl)aeIGwQ#ycG)9+vE~Hx)Kn14z{^xG^3nj(d|!>rq;n zc&+d3-q5m+l^FDw)y*rOo>cT7=nlnS`6{2X%z9l3CI(!jqWX#?Rk3FL zdqq}bvL8`ah$fu72rG_rN2|{r9@9yt%r0Q9CgOE5UuOXq*ex_838WO?(_+Ry6_@{K zUN8N-7-HCC!F4h1@r@l(ocP+ckrGDnSGK{xL)d$d7$ULRjv-^3&w z=!uD2z8fqSd=P5qq7W%bSkVaCNyx~KEZe&V%SeYE$r-rQtcgUsEHgJ)#|P2n(*k?o zV*rsYO+R!@Jp*pST2m|AD|_?7gV}Nf7>`f9k&%#)AlNdi*k{2D>_ijw8EoA{Xwqp! z6ii2mB0&Q4f_ZRR;WVUy3~pmx1^4v*iGV}GjMM=*=i=M8ZCl5^?-04B#QMkR!I^N_ zhY~aZ@fZ7^Tk+!@+qPu_fu=oqqK{aJb?K(s+WwfY*T<9ckQ-m2si=Ar$K9W{BtT=1 zYNg2jsv3-)g_E#K*)Pmangd^NVrLHv2@%lK({um&?s!8(1Jr!F(Wa=Bl$1p{g;*fX zzIW0hwB%iQkFPe_h~60|<4vP~{E?cqqZ`^;5(;+*3<*bBK=Je}#KkA0htiUgUgi$N z{K~=3o`|=%2YsrkrDb&Z@GqElFAXEfd$^H^SFTB(G)lk=U=CMd13U_0;LBdTI09y# zik>{8IR$JG+v^UtdTe^y6y#|_LV^@#lZk|!hTon^?k_3Eu^)+f3=Q))$_x+C=JwSvX$YKRjQCgNe1VvD3=R$_qVxlk?+s zTEQ4u&j9;j1U*PPKWzjB9GQ1P%(mvmm$Lxa65qYEz-sp0IJbCWjG#23O3p}1N>XzK z6=0`y{{Bt;e2z(mMH)I8Sm+c|aP9LahY;#H&vH+`xkJN2&cc(oyU?v>-(6aQ(Q8JC z%jAB7LdTY;)ahKW3|92|AAhU|{$s{pTRe_o6HHJzZnG0q5Sgi%OTlx{%Pp*FiI8FN zxZNku1>vy}Cb2`8VrOTUyzm6<_?aKqu5ChYBAyq=_9ury%1X{&x_RRU2bL29#5%xZ z6gG9G{N>B<5gH`{swbhnd-rm3aq*5k%XZ3>2MO;ljv|zKJV%WjK}hHU$E^S}q%VFr zqywCW3!gs59bu^KWa;v=eGTP1EA_pI3@EqHGq?17j)_Q-;jpW)s()YpTu4}2nt~H9 z5e}#FvV-tRO)9iXw^`U~3mimbAofIYs=x=$`L4vmPhJ0Dd(_)A&0o85S`0+Xwz6rv zi~^5kY<4p|bJKCcamyZUEU-VVqs8<1&v85;-0=fC_E+jW}CKmH4^B=CLa z#$SH0fNwRKxAB)>&wJJXGD_$BUx**O@xSLJegBh-^8eSq-2aG=6jQ^_foW!r<|r%O zCowJL5WCB~&p(tZ1U0#=zlvk$?#~(K}33UDaa92Um^p?F%#`AAHEBoGz}XPf!D~B$#s{ z&Lbk4qVb>2LIpH{rn>q*=2~P{5dBf9s)ychWcsS5@oK_wVK= zVM~eFg~{~B#-Y?gpdmzz7PxMBdfX5c9v}}=fw4t|g(aBV4qU#-p7&#_vJC|nX|oL_ zm*Zs`2-!U^)9f_vp?TZxxcH@X7HJZe&rnJQR`>PuL;A2y$2=awN{fT-248x7&t@cx zj+PV%RN^ks>|zgi8UiHZUmL-VKezx2oJc)7%?ghezrQa2yJ6GD6nuyIjVTGqJIIxp zai}(HvB@)M2DqHoz>{Wx;B32;1O4Zr^V z*xZ%l6#K{bm#xFG;gvqz&AyB6v(5$N8SXB#29hX()!vi3T!W2`>kHWt&e0vG z9;Dqv>JNeK0VmvwrlNnR?Vt+a1y*kVTgr=i2pDG{(J)Vnw1R^6+^;|!I?X(7KmVtH z7#Yb8i=S@rXH-NOi6iCgS5F3`7op`KKsff9+h77ZVx*lJJQay)ynp$S_-!h$va<3) zl)`WeVP8`aG~AYEof~V>jAR0|TLj)2R*Qhs<$b0|C>fR&l;jQVm;SA^$eM>bSY20F=T;0&U<=9U&WV8W?ufIVP)iY4VJl|%3nvN*gS5t?Z3Bo=_+%|4?18r8LDOQavf>ro zDJ)g02Zkf$1ffL$Jqcn2!p6L4Cf50BPJ`QEz^*E)VF*DL6~|7{K!i+$aHHV-=@ue7 zCkTnu)ZIkZ=I3uoc?I&<4p?6S5;8=^UfeQ>Fsf>5_Q1{dc)74Sez}W>;EW*>pF37v zd3t$?K(RwX(u9^L?CUe?ud7^C3`v6jRtN5(unQ+FEYeYT;R06`Orh!}o8EB+O+hBa z){WTz4X7QG1}*v+T8SY*K5Y_9;HuxeX+_U`63BfP`ld*yA29DJO?_F6)N9$~BH7^Rv3^Y_fLm*^}l!-Fw{g2zQZ}xU171Ymi^;I z*G5UHTXi3gFzpP^6SO_eUAi%;Q8lla2m9$?!!$5sxKt%hclqw5xeLmcV;0Lx8g>92#pya;ti<~2YL3& zi2Q46IK&AryAaq<4II`cG+Cb%T(g;r%K;~N7Q+9;v+jjAk-lvx6=9Ix7yQN0$VjJh z4;XzfuOjEyMELvs8ET8(;^Jb(rKvewtXDNPjIK6klxG@-AQ+`lvHxS`N*3g6b7(3L zu2LP0aQ@uzNE6#0p3A1{FwuYooEcKpwNOl32Io=glHisHnhjuYkmw>PE}LmOykPsS zz>)0RBmk9W64m)2>1zn9e1wp(Nj8FT1~i| z{=L8)P@dkZ?>hj_dXXrPM7Dzb3qjv5N~yC{;Virk{Lpd)vLx{JfEg+9q-GTMMJafz z<-x&}ij%vg`yrH0bT~=dy!;WdM-*fkA#iY1{T(dvZ83&IA>wJW%-<@R>mr}~`gk&- zOKDSna=d>vD=Q0GhPJR{#}5A$d|FhEqKAGuLx( z+}QBJ0aJt`F$QC^zynD^K@})1vxtrXj)>>(U~INjd4VW`%+`bx<#;}XSc=A>b{m6i zF@ld%d&v9hRX6mP;rY|S4+o3TSF~bjwr-S!?H%E?{qQfN@TcHF32wRXHPxD7=}^4> zr=Ob9Dy&@=w`>=_fHs9|VPQe~Of|=Grb)_`7o2b&+R$Hf z^YS`qZpK?P&1{P zE;m$dj0c^QbrsTyS8TUU7I_{Ez@cIfpV^zLsx)W&PeYkyU7<0%HGm6D)Ya9)91p@P zI_S!e?%w1u;Z;9zpDb1al?&W&yT|&{+cOnIFJHdY3=!rPkT;-5(mN|ahJr@D)KLL7 z1b%ELlNcn^B$do;v2VfqXCO)v$qG||ejO#z12%fj zu!smkOZWx^Fef4nRV9r8?W z!FZnIU0q#7Q1y50zKq?Nu!6y}h?pAQq%85hRk}$!yugYR?q7Rk z34QHNsFa8{)8uY^76}Z?8dD4cE+BqEOp2GnY`Aq>BwvQ6pUp(t#Tl-csE5x}ZBq5b z4U0pEu46qFNq{)SP0cSMnpKn%&b+W83_DjGN@AHskC_Umj($eQ1n$z*(=$b;CPpUX zuv{qON0^=c?IygHwjI|p49gcH;GP(CKHu$U>^#yDOsNdomPzb4NaFwyvuJU`=r68y zIN&!|t~10y3f8;64ltdPbQev|7BR-`Rf0*NHNP>_)zOg_`rT^J-x8I|>lMhNl*1N(S1NjCBP$(@M zo0^0u+Lc3neKhFb#E1xXn4mI1GOAbqufP7P$(S!Z;wZXMNZ;`R?LfKUX?ymk>gsTE zU_jo9t)e0s=6Q6J%01%ZGFAwp-_5T$AO4e|8e4!^hzgE-t^#nvtVuC`Q&%S|2I1GZ zklAx3aPB`}Qx(Kff*BA?s_N?Wf^%K_bqQxEE89k$gWiNqyAC+NB-Mw;#xg&AIN2ma z!aq{D5XJb-9GVG3V`9?bEEuX5&6INVKtn=ndj*D>VVA8p?5D6({|c3D5A1MA@}fdQ zsZE)QMpCrNOV7tapi`pteM1I_{nXQg^jjbjG%`4th6kC286VF!ZQ6u0o=2_#W)ukT-`}LJPr61L8yiD| zgA?F!=V9lFzJZ8IBr}9iBz|>5cH*=MY5-D_`UqV;82}Dj=2TQv1~3WWS7U?U5MEuu zflGHi)#>DeV1ar;gPxkpjSq;F#@p!*YePe3W)@J*!(euZr|!5XHGmdoZSBCE{x2<~ z(P)1Rlr+693oRA|;$v8xJD$EaAaDOGPai!x1O~W}G&Ur5oICpVnh8>ZLVgxyF4wvE ztKaQ^tzaJA-o1ObK3E@OJ#KF|0|ZUO14MKmqZ>A`YNVSm2#bLgxL6rw;_U3)vJ*5B zo_=KKzEC!-f=L32v>nBZOz$qw@KT z$EcgUroN=XH$Wzp&cZ=2khVhu%1A?K?v~A)cOs0~(m%a^t(|C?fXn>gI#tU!G^x4S z7-}-N(Z&;dHaE@Hw&3{56hdWJ2R;cnqt{{O9vU>w!d>YP= z7F~T4IjKN5t&e&-FME2Dwoo#TE6I21E&|Wz;o;$2NBA(PZz+zc48Nsye`Sf;>^N|F zi0T8)9a(~gAEv_R8>TzL!^O1=`WBwq0a#w4v9#eNxj{*^uRE1zE_yHy8d65Vr!_s+ zlqRvx;PrYah5^O#BE(e;6D}$~(@U4~Q6z6iEgE6$O$1V;ZtW$aLk9BrAl5m7n zDiyUs7z|#YKN>u!CTa=<-lFtR(Ksg%No~wMCI$>RH*apWU&4(h?}_Nv3DGS(?bV`tq|G?$?RDW)M{tF%A2M)aZcAhlwqz6G*p(sX2*>aZQ`ofV? zrEW1XIx5js^ZGS*BVTEOw^f6TOPqk##oHpp+lk_wiAqMDY~+B4W*eq2X^^;zd!OVh zTu<6O2z&uuQc?OR1ATK}N`t@Jsi`;!+GDtB>q7sVj zlojP*bpSt+tfOefmRK%;NXXFEM^bA=ACaKO@>T28J?5a|lb#qn%4xv&sDH>NYdj}R z?4@Bmdh|SUu|Rk$+7~d!rbLi%32>ParIpx*;biLthVO(yI*Q);7Gcm1;5Il30e;Jn zsFwabpt#V(lzup=o(+koZbU8oCieiGB;+Jignq=G+fVx=AEq57IR7NI%Ic5+CQ>X9 zI@)~ZM~`W6R^3DYhNOsZczAeJX(t#4fm4^DvQ@Za*vf`k_(Bmak^l;Z@Kn+qNE4dy zgK5mIqFv%s_OUQw)$ zhu#&yEs@YT4Ttd=m>kzTUa6$mrjgaLu%x1iuP|Yv9XS`7nUzyuA^}mccz6nkx0e;<;!{G%-6Y=c6O;~ z*OqCLS9E8cHvbC6JvNx#kz@tZ=39|g4Oq)09dd3btOg7;vapE3lPpNlKJg4F3u5JN&^$;3&?|E#gmQF%*GO?>-rv`ER=dZc zE7*z;d}pn zn&k1<=v#yrn@~?#;;3#0pN#^AqGZ5&Dq&ko6gJ5kK@kb4k?p{-%mNKCkcCpF-@kuP zDn=?O7pT_}aHk^@qgzXX3S@>sbN3K(8O6o(3AvtVydVXN&*IEESR94`YDL7w!%@IN zS0^GU8kN;ATv#$)RSz#7>GH>VB@u#HKu4IMDG`KOFP<>u+;uP?lGcjhT^gu=2}Okx zos*A`m>6204P(Pi1EwD^h~$flNxJjVbwE%a7y*)+NP|yF(1^%pMvJ{8OYJ|(#_zwm u9)25w=)e5ge_QqZf0{b~e_1}AyH-2(=>G1ZIkE+aO+!^zCF97+8~+RSq~_iL literal 0 HcmV?d00001 From 1c99ccf17fc4f0e2152eb552aa775596d9f09ecc Mon Sep 17 00:00:00 2001 From: Vladas Zakrevskis <146100@gmail.com> Date: Thu, 11 Jan 2024 11:25:24 +0200 Subject: [PATCH 05/13] Update `Integration utils` (#51) --- .github/workflows/push.yml | 2 +- .github/workflows/test.yml | 2 +- Cargo.lock | 19 +-- Cargo.toml | 4 +- integration-tests/src/callback_attack.rs | 4 +- integration-tests/src/defer.rs | 17 +- integration-tests/src/formula.rs | 6 +- integration-tests/src/lib.rs | 10 +- integration-tests/src/mint.rs | 19 ++- integration-tests/src/prepare.rs | 11 +- integration-tests/src/transfer.rs | 23 ++- model/Cargo.toml | 3 + res/sweat.wasm | Bin 217026 -> 217319 bytes sweat-integration/src/lib.rs | 192 ++++++++--------------- 14 files changed, 135 insertions(+), 177 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index bd9d9ed..03f783c 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -18,7 +18,7 @@ jobs: run: make build unit-tests: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b59a159..8f9e650 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,7 +19,7 @@ jobs: run: make build unit-tests: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - uses: actions/checkout@v3 diff --git a/Cargo.lock b/Cargo.lock index 39d5ef1..8ecf8ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1711,7 +1711,7 @@ dependencies = [ [[package]] name = "integration-trait" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-trait.git?rev=8dd8b63cef5e60448629a8903ea43b642bbf9f45#8dd8b63cef5e60448629a8903ea43b642bbf9f45" +source = "git+https://github.com/sweatco/integration-utils.git?rev=9a455faf70702e285eea39ae69a73a4d123b523f#9a455faf70702e285eea39ae69a73a4d123b523f" dependencies = [ "proc-macro2", "quote", @@ -1721,14 +1721,13 @@ dependencies = [ [[package]] name = "integration-utils" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=9fe6398c6064dfe8a26c323a6d0ea3c117a0b4a5#9fe6398c6064dfe8a26c323a6d0ea3c117a0b4a5" +source = "git+https://github.com/sweatco/integration-utils.git?rev=9a455faf70702e285eea39ae69a73a4d123b523f#9a455faf70702e285eea39ae69a73a4d123b523f" dependencies = [ "anyhow", "async-trait", "dotenv", "fake", "futures", - "itertools 0.11.0", "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", "near-units", "near-workspaces", @@ -1770,15 +1769,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.9" @@ -3063,7 +3053,7 @@ checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5" dependencies = [ "bytes", "heck 0.3.3", - "itertools 0.10.5", + "itertools", "lazy_static", "log", "multimap", @@ -3082,7 +3072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools", "proc-macro2", "quote", "syn 1.0.109", @@ -3857,6 +3847,7 @@ dependencies = [ "anyhow", "async-trait", "integration-trait", + "integration-utils", "near-contract-standards", "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", ] diff --git a/Cargo.toml b/Cargo.toml index 387c087..f2a193b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,8 +18,8 @@ near-workspaces = "0.9.0" near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -integration-trait = { git = "https://github.com/sweatco/integration-trait.git", rev = "8dd8b63cef5e60448629a8903ea43b642bbf9f45" } -integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "9fe6398c6064dfe8a26c323a6d0ea3c117a0b4a5" } +integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "9a455faf70702e285eea39ae69a73a4d123b523f" } +integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "9a455faf70702e285eea39ae69a73a4d123b523f" } sweat-model = { path = "model" } sweat-integration = { path = "sweat-integration" } diff --git a/integration-tests/src/callback_attack.rs b/integration-tests/src/callback_attack.rs index 52f6525..92ad37e 100644 --- a/integration-tests/src/callback_attack.rs +++ b/integration-tests/src/callback_attack.rs @@ -17,7 +17,7 @@ async fn test_call_on_record_in_callback() -> anyhow::Result<()> { let alice = context.alice().await?; - let alice_balance_before_attack = context.ft_contract().ft_balance_of(alice.to_near()).await?; + let alice_balance_before_attack = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; let target_amount = U128(1_000_000); let result = alice @@ -33,7 +33,7 @@ async fn test_call_on_record_in_callback() -> anyhow::Result<()> { assert!(result.has_panic("The operation can be only initiated by an oracle")); - let alice_balance_after_attack = context.ft_contract().ft_balance_of(alice.to_near()).await?; + let alice_balance_after_attack = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; assert_eq!(alice_balance_before_attack, alice_balance_after_attack); Ok(()) diff --git a/integration-tests/src/defer.rs b/integration-tests/src/defer.rs index 6db7942..34b7321 100644 --- a/integration-tests/src/defer.rs +++ b/integration-tests/src/defer.rs @@ -1,6 +1,6 @@ #![cfg(test)] -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use integration_utils::misc::ToNear; use near_sdk::json_types::U64; use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; @@ -13,22 +13,27 @@ async fn test_defer() -> anyhow::Result<()> { let alice = context.alice().await?; let holding_account = context.holding_contract().as_account().to_near(); - let target_amount = context.ft_contract().formula(U64(0), 10_000).await?; + let target_amount = context.ft_contract().formula(U64(0), 10_000).call().await?; assert_ne!(0, target_amount.0); context .ft_contract() - .with_user(&oracle) .defer_batch(vec![(alice.to_near(), 10_000)], holding_account.clone()) + .with_user(&oracle) + .call() .await?; - let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; + let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; assert_eq!(0, alice_balance.0); - let holder_balance = context.ft_contract().ft_balance_of(holding_account.clone()).await?; + let holder_balance = context + .ft_contract() + .ft_balance_of(holding_account.clone()) + .call() + .await?; assert_eq!(target_amount.0 * 95 / 100, holder_balance.0); - let oracle_balance = context.ft_contract().ft_balance_of(oracle.to_near()).await?; + let oracle_balance = context.ft_contract().ft_balance_of(oracle.to_near()).call().await?; assert_eq!(target_amount.0 * 5 / 100, oracle_balance.0); Ok(()) diff --git a/integration-tests/src/formula.rs b/integration-tests/src/formula.rs index 6c3b178..0b6c6ef 100644 --- a/integration-tests/src/formula.rs +++ b/integration-tests/src/formula.rs @@ -1,5 +1,4 @@ use anyhow::Result; -use integration_utils::integration_contract::IntegrationContract; use near_sdk::json_types::U64; use sweat_model::SweatApiIntegration; @@ -13,7 +12,7 @@ async fn test_formula() -> Result<()> { let oracle = context.oracle().await?; - let steps = context.ft_contract().get_steps_since_tge().await?; + let steps = context.ft_contract().get_steps_since_tge().call().await?; assert_eq!(0, steps.0); @@ -42,8 +41,9 @@ async fn test_formula() -> Result<()> { for steps in 0..steps_to_convert.len() { let formula_res = context .ft_contract() - .with_user(&oracle) .formula(U64(steps_from_tge[tge]), steps_to_convert[steps]) + .with_user(&oracle) + .call() .await? .0; diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index 48e2d9b..52819cc 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -1,6 +1,6 @@ #![cfg(test)] -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use integration_utils::misc::ToNear; use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; use crate::prepare::{prepare_contract, IntegrationContext}; @@ -23,26 +23,28 @@ async fn happy_flow() -> anyhow::Result<()> { assert_eq!( 99999995378125008, - context.ft_contract().formula(100_000.into(), 100).await?.0 + context.ft_contract().formula(100_000.into(), 100).call().await?.0 ); context .ft_contract() .tge_mint(&alice.to_near(), 100_000_000.into()) + .call() .await?; assert_eq!( 100_000_000, - context.ft_contract().ft_balance_of(alice.to_near()).await?.0 + context.ft_contract().ft_balance_of(alice.to_near()).call().await?.0 ); context .ft_contract() - .with_user(&oracle) .defer_batch( vec![(alice.to_near(), 1000)], context.holding_contract().as_account().to_near(), ) + .with_user(&oracle) + .call() .await?; Ok(()) diff --git a/integration-tests/src/mint.rs b/integration-tests/src/mint.rs index 5687329..c7d4ec6 100644 --- a/integration-tests/src/mint.rs +++ b/integration-tests/src/mint.rs @@ -1,4 +1,4 @@ -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use integration_utils::misc::ToNear; use near_sdk::json_types::{U128, U64}; use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration}; @@ -13,25 +13,30 @@ async fn test_mint() -> anyhow::Result<()> { let user = context.alice().await?; let oracle = context.oracle().await?; - let result = context.ft_contract().get_steps_since_tge().await?; + let result = context.ft_contract().get_steps_since_tge().call().await?; assert_eq!(result, U64(0)); - let result = context.ft_contract().formula(U64(0), TARGET_STEPS_SINCE_TGE).await?; + let result = context + .ft_contract() + .formula(U64(0), TARGET_STEPS_SINCE_TGE) + .call() + .await?; assert_eq!(result, U128(TARGET_BALANCE)); context .ft_contract() - .with_user(&oracle) .record_batch(vec![(user.to_near(), 10_000u32)]) + .with_user(&oracle) + .call() .await?; - let result = context.ft_contract().ft_balance_of(oracle.to_near()).await?; + let result = context.ft_contract().ft_balance_of(oracle.to_near()).call().await?; assert_eq!(result, U128(TARGET_BALANCE * 5 / 100)); - let result = context.ft_contract().ft_balance_of(user.to_near()).await?; + let result = context.ft_contract().ft_balance_of(user.to_near()).call().await?; assert_eq!(result, U128(TARGET_BALANCE * 95 / 100)); - let result = context.ft_contract().get_steps_since_tge().await?; + let result = context.ft_contract().get_steps_since_tge().call().await?; assert_eq!(result, U64(TARGET_STEPS_SINCE_TGE as u64)); Ok(()) diff --git a/integration-tests/src/prepare.rs b/integration-tests/src/prepare.rs index d6952d0..fb072ce 100644 --- a/integration-tests/src/prepare.rs +++ b/integration-tests/src/prepare.rs @@ -46,19 +46,25 @@ pub async fn prepare_contract() -> anyhow::Result { let oracle = context.oracle().await?; let alice = context.alice().await?; - context.ft_contract().new(".u.sweat.testnet".to_string().into()).await?; + context + .ft_contract() + .new(".u.sweat.testnet".to_string().into()) + .call() + .await?; context .ft_contract() .storage_deposit(oracle.to_near().into(), None) + .call() .await?; context .ft_contract() .storage_deposit(alice.to_near().into(), None) + .call() .await?; - context.ft_contract().add_oracle(&oracle.to_near()).await?; + context.ft_contract().add_oracle(&oracle.to_near()).call().await?; let holding_contract_init_result = context .holding_contract() @@ -72,6 +78,7 @@ pub async fn prepare_contract() -> anyhow::Result { context .ft_contract() .storage_deposit(context.holding_contract().as_account().to_near().into(), None) + .call() .await?; Ok(context) diff --git a/integration-tests/src/transfer.rs b/integration-tests/src/transfer.rs index 078952a..1a994c6 100644 --- a/integration-tests/src/transfer.rs +++ b/integration-tests/src/transfer.rs @@ -1,4 +1,4 @@ -use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use integration_utils::misc::ToNear; use near_sdk::json_types::U128; use sweat_model::{FungibleTokenCoreIntegration, StorageManagementIntegration, SweatApiIntegration}; @@ -13,35 +13,42 @@ async fn test_transfer() -> anyhow::Result<()> { context .ft_contract() - .with_user(&oracle) .record_batch(vec![(alice.to_near(), 10_000)]) + .with_user(&oracle) + .call() .await?; // This will fail because storage is not registered for this new account let res = context .ft_contract() - .with_user(&alice) .ft_transfer(bob.to_near(), U128(9499999991723028480), None) + .with_user(&alice) + .call() .await; assert!(res.is_err()); - let res = context.ft_contract().storage_deposit(Some(bob.to_near()), None).await; + let res = context + .ft_contract() + .storage_deposit(Some(bob.to_near()), None) + .call() + .await; assert!(res.is_ok()); - let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).await?; + let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; assert_ne!(U128(0), alice_balance); // Transfer all tokens from alice to new account context .ft_contract() - .with_user(&alice) .ft_transfer(bob.to_near(), alice_balance, None) + .with_user(&alice) + .call() .await?; - let alice_balance_updated = context.ft_contract().ft_balance_of(alice.to_near()).await?; + let alice_balance_updated = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; assert_eq!(U128(0), alice_balance_updated); - let bob_balance = context.ft_contract().ft_balance_of(bob.to_near()).await?; + let bob_balance = context.ft_contract().ft_balance_of(bob.to_near()).call().await?; assert_eq!(alice_balance, bob_balance); Ok(()) diff --git a/model/Cargo.toml b/model/Cargo.toml index d270770..89a8260 100644 --- a/model/Cargo.toml +++ b/model/Cargo.toml @@ -10,3 +10,6 @@ integration-trait = { workspace = true } near-sdk = { workspace = true } near-contract-standards = { workspace = true } + +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +integration-utils = { workspace = true } diff --git a/res/sweat.wasm b/res/sweat.wasm index a8ac9c1876f3c0923febfa4003514ead03ca96f1..df7c76b18fad9b1b7b9640ef6f9fa557e79688d6 100755 GIT binary patch delta 33564 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 vu9wYtUC@x#E*@&on3*1iIG2cK+=@6ixgH { contract: &'a Contract, - account: Option, } -#[async_trait] impl FungibleTokenCoreIntegration for SweatFt<'_> { - async fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) -> Result<()> { + fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) -> ContractCall<()> { println!("▶️ Transfer {:?} fungible tokens to {}", amount, receiver_id); let args = json!({ @@ -29,31 +26,19 @@ impl FungibleTokenCoreIntegration for SweatFt<'_> { "memo": memo, }); - let result = self - .user_account() - .unwrap() - .call(self.contract.id(), "ft_transfer") + self.make_call("ft_transfer") .args_json(args) - .max_gas() + .unwrap() .deposit(NearToken::from_yoctonear(1)) - .transact() - .await? - .into_result()?; - - for log in result.logs() { - println!(" 📖 {:?}", log); - } - - Ok(()) } - async fn ft_transfer_call( + fn ft_transfer_call( &mut self, receiver_id: AccountId, amount: U128, memo: Option, msg: String, - ) -> Result { + ) -> ContractCall { println!( "▶️ Transfer {:?} fungible tokens to {} with message: {}", amount, receiver_id, msg @@ -66,179 +51,144 @@ impl FungibleTokenCoreIntegration for SweatFt<'_> { "msg": msg.to_string(), }); - let result = self - .user_account() - .unwrap() - .call(self.contract.id(), "ft_transfer_call") + self.make_call("ft_transfer_call") .args_json(args) - .max_gas() + .unwrap() .deposit(NearToken::from_yoctonear(1)) - .transact() - .await? - .into_result()?; - - for log in result.logs() { - println!(" 📖 {:?}", log); - } - - Ok(result.json()?) } - async fn ft_total_supply(&self) -> Result { - self.call("ft_total_supply", ()).await + fn ft_total_supply(&self) -> ContractCall { + self.make_call("ft_total_supply") } - async fn ft_balance_of(&self, account_id: AccountId) -> Result { - println!(">> Run ft_balance_of for {account_id}"); - - self.call( - "ft_balance_of", - json!({ + fn ft_balance_of(&self, account_id: AccountId) -> ContractCall { + self.make_call("ft_balance_of") + .args_json(json!({ "account_id": account_id, - }), - ) - .await + })) + .unwrap() } } #[async_trait] impl StorageManagementIntegration for SweatFt<'_> { - async fn storage_deposit( + fn storage_deposit( &mut self, account_id: Option, registration_only: Option, - ) -> Result { + ) -> ContractCall { let args = json!({ "account_id": account_id, "registration_only": registration_only }); - - let result = self - .contract - .call("storage_deposit") + self.make_call("storage_deposit") .args_json(args) + .unwrap() .deposit(NearToken::from_yoctonear(near_sdk::env::storage_byte_cost() * 125)) - .transact() - .await? - .into_result()?; - - Ok(result.json()?) } - async fn storage_withdraw( + fn storage_withdraw( &mut self, _amount: Option, - ) -> Result { + ) -> ContractCall { todo!() } - async fn storage_unregister(&mut self, _force: Option) -> Result { + fn storage_unregister(&mut self, _force: Option) -> ContractCall { todo!() } - async fn storage_balance_bounds( + fn storage_balance_bounds( &self, - ) -> Result { + ) -> ContractCall { todo!() } - async fn storage_balance_of( + fn storage_balance_of( &self, _account_id: AccountId, - ) -> Result> { + ) -> ContractCall> { todo!() } } #[async_trait] impl SweatDeferIntegration for SweatFt<'_> { - async fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> Result<()> { - self.call( - "defer_batch", - json!({ + fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> ContractCall<()> { + self.make_call("defer_batch") + .args_json(json!({ "steps_batch": steps_batch, "holding_account_id": holding_account_id, - }), - ) - .await + })) + .unwrap() } } #[async_trait] impl SweatApiIntegration for SweatFt<'_> { - async fn new(&self, postfix: Option) -> Result<()> { - self.call( - "new", - json!({ + fn new(&self, postfix: Option) -> ContractCall<()> { + self.make_call("new") + .args_json(json!({ "postfix": postfix, - }), - ) - .await + })) + .unwrap() } - async fn add_oracle(&mut self, account_id: &AccountId) -> Result<()> { - self.call( - "add_oracle", - json!({ + fn add_oracle(&mut self, account_id: &AccountId) -> ContractCall<()> { + self.make_call("add_oracle") + .args_json(json!({ "account_id": account_id, - }), - ) - .await + })) + .unwrap() } - async fn remove_oracle(&mut self, _account_id: &AccountId) -> anyhow::Result<()> { + fn remove_oracle(&mut self, _account_id: &AccountId) -> ContractCall<()> { todo!() } - async fn get_oracles(&self) -> anyhow::Result> { + fn get_oracles(&self) -> ContractCall> { todo!() } - async fn tge_mint(&mut self, account_id: &AccountId, amount: U128) -> anyhow::Result<()> { - self.call( - "tge_mint", - json!({ + fn tge_mint(&mut self, account_id: &AccountId, amount: U128) -> ContractCall<()> { + self.make_call("tge_mint") + .args_json(json!({ "account_id": account_id, "amount": amount, - }), - ) - .await + })) + .unwrap() } - async fn tge_mint_batch(&mut self, _batch: Vec<(AccountId, U128)>) -> anyhow::Result<()> { + fn tge_mint_batch(&mut self, _batch: Vec<(AccountId, U128)>) -> ContractCall<()> { todo!() } - async fn burn(&mut self, _amount: &U128) -> anyhow::Result<()> { + fn burn(&mut self, _amount: &U128) -> ContractCall<()> { todo!() } - async fn get_steps_since_tge(&self) -> Result { - self.call("get_steps_since_tge", ()).await + fn get_steps_since_tge(&self) -> ContractCall { + self.make_call("get_steps_since_tge") } - async fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> anyhow::Result<()> { - self.call( - "record_batch", - json!({ + fn record_batch(&mut self, steps_batch: Vec<(AccountId, u32)>) -> ContractCall<()> { + self.make_call("record_batch") + .args_json(json!({ "steps_batch": steps_batch, - }), - ) - .await + })) + .unwrap() } - async fn formula(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result { - self.call( - "formula", - json!({ + fn formula(&self, steps_since_tge: U64, steps: u32) -> ContractCall { + self.make_call("formula") + .args_json(json!({ "steps_since_tge": steps_since_tge, "steps": steps, - }), - ) - .await + })) + .unwrap() } } impl SweatFt<'_> { pub async fn formula_detailed(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result<(U128, U128, U128)> { - let token_amount = self.formula(steps_since_tge, steps).await?.0; + let token_amount = self.formula(steps_since_tge, steps).call().await?.0; let fee = token_amount * 5 / 100; let effective_amount = token_amount - fee; @@ -248,19 +198,7 @@ impl SweatFt<'_> { impl<'a> IntegrationContract<'a> for SweatFt<'a> { fn with_contract(contract: &'a Contract) -> Self { - Self { - contract, - account: None, - } - } - - fn with_user(&mut self, account: &Account) -> &mut Self { - self.account = account.clone().into(); - self - } - - fn user_account(&self) -> Option { - self.account.clone() + Self { contract } } fn contract(&self) -> &'a Contract { From 1c3e9b4bdcb1cd04a024637c8f3db398ce171796 Mon Sep 17 00:00:00 2001 From: Vladas Zakrevskis <146100@gmail.com> Date: Thu, 11 Jan 2024 15:46:19 +0200 Subject: [PATCH 06/13] Update `Integration utils` (#52) --- Cargo.lock | 5 ++--- Cargo.toml | 4 ++-- integration-tests/Cargo.toml | 4 +--- integration-tests/src/callback_attack.rs | 3 +-- model/Cargo.toml | 7 +++++-- res/sweat.wasm | Bin 217319 -> 217319 bytes sweat-integration/Cargo.toml | 2 +- 7 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8ecf8ad..3f7d9f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1700,7 +1700,6 @@ dependencies = [ "near-units", "near-workspaces", "pkg-config", - "serde_json", "sweat-integration", "sweat-model", "tokio", @@ -1711,7 +1710,7 @@ dependencies = [ [[package]] name = "integration-trait" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=9a455faf70702e285eea39ae69a73a4d123b523f#9a455faf70702e285eea39ae69a73a4d123b523f" +source = "git+https://github.com/sweatco/integration-utils.git?rev=b3e5b747b930ebc04601146deda13f12615d5e01#b3e5b747b930ebc04601146deda13f12615d5e01" dependencies = [ "proc-macro2", "quote", @@ -1721,7 +1720,7 @@ dependencies = [ [[package]] name = "integration-utils" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=9a455faf70702e285eea39ae69a73a4d123b523f#9a455faf70702e285eea39ae69a73a4d123b523f" +source = "git+https://github.com/sweatco/integration-utils.git?rev=b3e5b747b930ebc04601146deda13f12615d5e01#b3e5b747b930ebc04601146deda13f12615d5e01" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index f2a193b..0869ae5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,8 +18,8 @@ near-workspaces = "0.9.0" near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "9a455faf70702e285eea39ae69a73a4d123b523f" } -integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "9a455faf70702e285eea39ae69a73a4d123b523f" } +integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "b3e5b747b930ebc04601146deda13f12615d5e01" } +integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "b3e5b747b930ebc04601146deda13f12615d5e01" } sweat-model = { path = "model" } sweat-integration = { path = "sweat-integration" } diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index 1d6ddec..8bc8e8d 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -17,8 +17,6 @@ tokio = { workspace = true } near-units = "0.2.0" borsh = "0.10.3" maplit = "1.0" -# arbitrary_precision enabled for u128 types that workspaces requires for Balance types -serde_json = { version = "1.0.107", features = ["arbitrary_precision"] } tracing = "0.1.37" tracing-subscriber = { version = "0.3.11", features = ["env-filter"] } pkg-config = "0.3.1" @@ -26,6 +24,6 @@ pkg-config = "0.3.1" [dependencies] async-trait = "0.1.73" -sweat-model = { workspace = true } +sweat-model = { workspace = true, features = ["integration-test"] } sweat-integration = { workspace = true } integration-utils = { workspace = true } diff --git a/integration-tests/src/callback_attack.rs b/integration-tests/src/callback_attack.rs index 92ad37e..f1e238e 100644 --- a/integration-tests/src/callback_attack.rs +++ b/integration-tests/src/callback_attack.rs @@ -1,8 +1,7 @@ #![cfg(test)] use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; -use near_sdk::json_types::U128; -use serde_json::json; +use near_sdk::{json_types::U128, serde_json::json}; use sweat_model::FungibleTokenCoreIntegration; use crate::{ diff --git a/model/Cargo.toml b/model/Cargo.toml index 89a8260..7fd9b63 100644 --- a/model/Cargo.toml +++ b/model/Cargo.toml @@ -3,6 +3,10 @@ name = "sweat-model" version = "0.1.0" edition = "2021" +[features] +default = [] +integration-test = ["dep:integration-utils"] + [dependencies] anyhow = { workspace = true } async-trait = { workspace = true } @@ -11,5 +15,4 @@ integration-trait = { workspace = true } near-sdk = { workspace = true } near-contract-standards = { workspace = true } -[target.'cfg(not(target_arch = "wasm32"))'.dependencies] -integration-utils = { workspace = true } +integration-utils = { workspace = true, optional = true } diff --git a/res/sweat.wasm b/res/sweat.wasm index df7c76b18fad9b1b7b9640ef6f9fa557e79688d6..131d77d3bb28b14591b3673b60745f9f28de015f 100755 GIT binary patch delta 16539 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 delta 16256 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

d1Ki$SO2tAR{+_N$wj@*)7Aw+#YU`~ zhiR2u|5MaWy+<6oubAEBpeKqsTwecH%z^4%{&4+N`h(|eFgtN2XPAOa?m)G1gG9A& z!zQGgV>Xtedwkx;OOVW{Zf4WTU)uT$643kBv2>Paeb*hn+G1KMXV5he>iN0ZRDI~wO4%}j3E=*dSz@n*%*7_|G3?nes6kH!D5?D_Rr zg_P}*Wty*d(NbL~d^D8Opnf4kGTf3}ze!Qs7kb*e7d-WNAU<{Zcp&e8JSz78goLj@ z9>#X%aLe%kZRj+($;=ZyK6(fuKK{~b^C_boLyYC-GXebk>1g<==clEgN;)Hb*86A7NOnFt(;hzS z@R{AxXU#m90B^P9TnNqNXU@Hg`>^w&w2-HqZ;bow^AbMq{AAq6T!@E9YjwelcF2Vw zw0RfGpk0sqg?#UYCgM&@^5DT2qu|e~T}}l7l+bR>+csU5M8sXzq#VVgDy4l zd&R%SWvJKqpi7JV9quho8mRQe_jqJslQQ<`X(`YQSHkT&Zuw4w04^1MT48B8zi$i6 zC5@G0v%I7s7S_mD0WS2gF!h<;T7llve^k+1k;iYa5g*i{V z-39^o((Q6IfqUL*?0L#DU9q$b1@XamlHp>O-sy+D#rtkedze)$2jR*UOSlZP9q*d; zFl#ZG4KQ{j-5vGPPY>0e#>fQcsupIK-j!i?>)k2{vv==CBh32Ui!ah`p_T<#((VO; zD3K768&w%TSogotMBYxx` zGp*qd{;7v7ugaqe5qg%V^^}ahPddY&5CX-1KITyZlAP6#OvvgEJ}Qs<$B*U&{;R87 z9D7E(%8X}f9$)%6gieY6eiY3wKJE#o*L~8N=I}3`RC)`0ybA49EoVF%+`2E)%VM2Y z`{`0J>(bLAW_|PT|AAS?=dUyCv*$(3I{V^(W!6>6tmUw_SDBUeQZj4o%lcr}-j@}f z%*v70iP&yu7TDmb?w=DtwdmlSHk6vGX-z0p$;VUzsk@h|$yw8KNCCF#Dc`7e-p8>V zAdm?2kS@dHpPqA!Y^Yy-MpUPyUX#?+0+IL^aheEfB_0u(qwPtcbOchm_AJ{nRdXH^ zazMPpD8cxPo!P}-jAAq`(J9I0cH>_INot`%Tg$Fu>Nj@RVnXoNgey8IR8^DiyW+4y zX1XixD-<2+a1HliCJxm^RRGxm0QW?)3$38%w$m;cOnJh`jhfR$(aDXP(hITNjavHZ zamdYAnxKm~=1yVsP=vYDdy$SeOs2mw{zA%KcI?$qDt%tHq2 zj2)%^C;EHP)FMrU_o_pMqOPaL%`{J1O`C150t*l#FkW#Pw3zEIdLf zg`SDJp^#m!7#K>W*{QMOX*Te02qmAuby8)`vh?hVCFGOc1z5qa6URa+rtEo5oAnoY zKWZ;t={!$|iLfv*Dp#}#qj$iTDPffM3R_H)EkUl*Op5D4J&_+yAA&Vc!)YkQKQMwa zz?!oWlqgx_ZlZo*%@7mRbD@}KqE?XmuOE9Ox+2_Spk?`@Vhn}DskV%vSWID94D|*@=VGWnT@;a}=^8B+F0mBn zG`^d~jL$=Ao&?+zO=D>q%@Sv0A=Vw@SuBkXbXrKE-HF{K*vOPJ)QR?sYh@_P8S9b6 zT#{ie85(3MtC>rBS=tH?g~ibbP%tZw-Uo;Nh@)DPLuKPZ>{`(xo<742&cxFXP!^s* z`@xoO6{x*)ttS`81`7hcbFC-uuZW`+fMAb!RDrtFbI~D@8bVPPBvKXdLks#uiM6mx62qH_|p0W;SmQ9NxBXOk#3SWA9<4Bp;S%a9JA)l_GL zNJ@rvpB0UgX?WlUsa(-+(&M13cn?4-!x7P!J}r)+MCyqFi0F;HiII7|KGCSC?kuDKr%# z&KC_+HLiS^3J&CpiK#R&(#{-+yQHo-K3?9I&9ku?Wbsy~3O@^w-nNyukgEb_CD*5s zr5((A)wij0?XFi&@{0JSKExozzx62rDps}uQUROj-GI8#B~j3ThL(3^0Ptwz>lxah zFou<(+*(s-Xo%dj^%<&sOGLMZ5c@^3q#><=b+u?jX-R@t`S`aM++Kj z9If62+A&@9Xo5K}5xGq?F0O8(aq-tC2v5^(E={2V^sUXk8C{eLb+tLDT`T-rXq+tH zg0M;wgIZ{uoYI1@P7)_uU?#VPUrU;frzI^lz8-9;@%3&?3W{(T%WcIQA zqVZEv^M$z;Rf6@mZv}mxDn4pOCb@VLOIv|k--@HHs1L|WX-z+&Qe%781}09|Ma6cM z{%V~Fo3WXnO#E%ay)^%P=udj#LV z#E0)wr1-r(MdRMJ1GS~kMaK?c`eQM_14Wd2BK1;R5gROLvA}Z7XS+DofkI2`YiIaY zU@lrbdzsv|g_oyXUKfax?@@42(OU^M;bg-_rp_0&-lIMx7ufY@6_PbYeJD1(2Os@Z z)OnxE(IZLW4p3FLqefLmM`-Y4k%voYG2-Iba;#M}ysH%8-P!Rqye`07xf3k{-s7Dp z)%Rb!X&X}5DiY>dWE4pq$V1fVO#bwhXwjJl7L{;Tv1pVp;@Ae}Ea6BwoDvs0Qxs}A z;#p_v1}*R0g+4*vb*2lV(o+%M6&an}2o4mVbfpPljiFUT=ik}Z3F##MC&+p~6;Stuv>esAczO-$`gJxV#)bQT0Y zvP)@;=2=|(V7_ZaY#-`sxg_5pJ%(FO#%!ufw>-YJUQ3m|9g8Yd1@IaW%bsnLj`DUo z?u*@h2vrs_vajYd?)BAtM(_u)=N00e545Lr`Lslg`#?*3&wfDLq_3FMj}k)d%TXcXEJEEFyJ zBa4_SR`jO?aXSM_d9FXrK%(4l0JR{xX|oNa61a-JgQ)kb-a+#0rl^%kc}9oC0MgMz z%g$s{SvEFz?qCWvzOb`)kAp$#OHpAk61+uX-e9=O-^GE!v>3C`7y`d{L3}lYxHPZMn`H3O7Rg{gLo*i z$52#><#wMZL2w{z#!%^$w{*4(3B52}BJsk8$7^HVvax3g>)L8EKC_ubKSMWM2hX(oSTQrK~1NQS!3lfWR$YkI7f@`gU@&+!o)V<S2nq11~63RZ}N-h?STSeYDta7H?Hjl%3If&)t z1T91UcLLJ!ts-(FG%nw^Vc?lguHa?z?i;16s6r1?&GwST59K}^o9yVE{yyj#&56Xk4V7)%w zwrvW1F3tbFX&T9&OruDeFXm5!ugtfVn@*i2$>V2Gk~2-hzJ^w=)suQB)qiVLpP7Mg zTo8|EVDUXcq~v3@VH5fJv^em%PAF<2_DVz^DiNaoOls=f-T;|EEmxEe#nPFS>QpBQ zf;!!sNjSnJ`plw%CMPfQ?Yx-hCfh~5*;FP$ z59Nd!4$^yhyvLyKl46OLAe>gJVK^(Z4MYG?H+wc^2RKO>rCWWD^!a7y(7R5)>kEOA zb2PrA1Q9IO&7pN*ez&<=R69Obi)wK~k815ce>18%Gx(We=I5_QwGwj?)!e_(qS~A< zw5Zl_KGiDgn5c88!>U0JW&p5^Y%9dq^HHz(dhP-^vL8jo1vIQE^T(P|TYYJ3#_tzs zVeH-l>f~go)F{VyiWI`ucOh~u+9kFwqOgcvQsUA2E;}S>IX|`_$6#^8DFIh?mw2!U zY3NQ-Vljo4+WA_~J6g{Y>UObeF_nqaMI#Y;NwH}A=61XgOTH9~r01c?UyN0qJ_vep zWHD7KRWw$UVX@BPODMN!#;A+B%B**?O5;HbXPXPbgK>q=FcOx`m zqbTt$wPRaydG#u$;H}bQq71^!uJRy&i;1vAz`M*U9|@zC{7fq)Z_JpZiKQ@YyD5bk zysH|JCBS#7D@A=P3OzrF|E%ybTg3eD$Q+;}1t#sB5|A==n>hL%EkTDNo3P;8BDQX# zYP3>3*hE7DH%c13Rj9f4^&jPlvFLt@c(EKpX9k9W`!T$=5q#8Ud1 zn_!TD0|_S5H*ZY_b)%TIliGO74SiJaeV9lqkZNCmn0!FIUqC}}xqpa4qTo5ma`Hw2 zJgNQICiJ2Rw0Re{qUeDL-A$uty^ZfCZ0S4@pZ|zs+9yS+Jrq{+r2IyxH#kd{0>cnJ z?J771j23sb_{$u!zr3iuETNthnR_Ta*xtv4V~mzK{M+_iQnTLn7_Zbq{R8zu^2fszYIikdzz{6Az&hrZG3Bl!K#6F^)>_Xpo1r zLPf*F=(<{LI1Ia4ZEJUg+PMV%CbdI$Wpvs%93_`Qr>LiuPy4*ViG&8#ebFs84`~$eUD>Xq`yBMVkWcIQ^l& zmYiF_iOH_BJ-J0=iLTg2|4B`-`)u2Dns_kGAcEQV>8Tr? z7SkV7LcnR+&xd(qm)PI3Pm|SpariN0dRjbsOzVSB$qu2K->?*TW>^d+-~PK0`?g_s zN33{4CB>a5@&ZgaB`Ul` zHhoH@X&2kfmvqH_phE?Ni^kYhI{XcY2d1>`q~yKhOMY+kd2>`T%#xb%0dIbC{a7)> zgEg`hcrYBwdmy_7+b(&sP15q_c(Za&+j(=clBlUVQR0d>t4wD^un$feKM;$3SUdX5 z_RxoY>q-a3N`GdigSLJC?7q~|t$}PZRn?_oQY;0?W0>lEyo$Am<54^8Wyy1qvhvYn zH7c0JhgCdhEC)|W6>!j8tdGAPb-WYN1My`!wjJEY1R6LdV*4YWdD$N{HngncAiRQe zqyv2sE(avV;@1QgUJjJp)+l)(eyG4gA@|c2SX~s4f)d%Hl7CAxlkQ0-hU!1!$3(32 z_KWL@ECv^^B-R1hMvo*GU*bR66Y)bo3n)HMV(n2fxtj!(PlabPtK*~ffa}EuyIw^3 zFq!#dA^CAKi$m%%rVuc zH;*skMX}?HF5VMe$rHb7FmlVBOLWs}p4*Rb0%(dbx!shrFbH!+cH)&lkK^wFqH`t8 zS|>E>t%ORtkx4N1U$LnYs~`7FVzYBZOQ_{mID)+NlrGvnpWO6AMa^89mDNw>M7tpN z!to&%%6@L@^IYMV%5d;R46lqM(c8tk$}A*B|Gdsi4YT6llj7u)V&{`Quq_3sz7Wqa z7MKF7XqY6&-#!ueeb9)B>=0@y!+{yw{3>iBg%+JH!Y{8Z}!ENU0iZE^6N!YOp$3hTW^d z@(DGEoLcM?nq_-li%lWpn+Rvv=GS2^x%~#wv0}QIrZ33 zgiOzO*}F!)Vh*twEO3~zQodNEz01;Rj@b1sKD$_ysL!5bHR;oU^}xz@U<3A$=85!% ztQIQ0iyE@{y5l7eQOHGnmd7wHW9P_1zl-WP(Inxrqyu$p94!y|+RsI4P%Icc8o`qP z71WwViYAR%SzldQ9j`xa#G=52jm=n)ur`9;KNe>IV!7kQ6O1hNQmQsS?+(?9W34rP zsbFZ2N^RxFEG|u7d&r}ZK5oTzxrk;gUpnd}>V;

LA?fb9pM{Tzpi=9F^DSC<FHYYKxKFP5}oa&>m8=^IqL zHhYEY>aP);)67BeJ0SAUX1WA?n!~G(6J?vT()3b1Xbt4^MepX!+@KiWT^xKjz=!C3 zhx3sN`WoNmp=+G{w2QDgM0lV%8>XvUkm%5Ym4VKE(t^d8`k&PshH1t9aRnh5ZjQsMreDuF1ftz;$X; z2-SE}T)ie}rsA&tPjdOKl|wEKD!gJD_Ib&TP>+mgcW}+@0k%q0bG4AFnM@Ut-Bz2# z+SZuF6LF|DRLvV&i?I!5@~H%h?D(TO1*0GBEJnQ^;Y)d1ZXk#KW_5| z`{Uadu|K`7W)TwracUjjdR^@+uDPbcLmz3eb9G< z&A%@M{WkPrqWcHfN}4FJ?5`?neaI%Wys_e$mD<`u`>_xOC@K$NTj`p(Gk|@C%bbBA zeI1JVtdwHZe@BLhfCG23>55IhD}z~MM1X`Ltb+RnDQWNC+>E@!G@iMM(L)gTHVVHi zmV$3K&SHt!f*+a1I^k5qu`CvWO~iXytU^hw)FN_OA6&-evO@E9nJmiSDr>yXUmv1a z0_~J;>kl!09BUt-|8!ET_&UlNL2+wxB$Ajlmk9O=ibH?%^q{pH6&Pkv5g>r=z0WG!_@6ljeeheY#pe zH(b<-;)7|dNAOBHJNz0CYJ(b#^v5zO*(!dU#zI`=OL6Ht3gN%Z@D>r%*%6%LxHBC( zTqyizzzeSwWoNLS?uC-o>hB_d1~lx7aLs3@A~cv~@pif7b_cT-NwZcRJs;<@-ayiI zCiJgR44=vFc|Mj%v?9! Date: Thu, 18 Jan 2024 21:38:33 +0200 Subject: [PATCH 07/13] Dynamic calculation of gas for batch recording (#53) --- Cargo.lock | 16 ++++---- Cargo.toml | 5 ++- integration-tests/Cargo.toml | 2 +- integration-tests/src/lib.rs | 1 + integration-tests/src/measure/mod.rs | 1 + integration-tests/src/measure/record_batch.rs | 36 ++++++++++++++++++ res/sweat.wasm | Bin 217319 -> 215924 bytes rust-toolchain.toml | 2 +- sweat-integration/Cargo.toml | 4 +- sweat/src/defer.rs | 11 +++++- 10 files changed, 62 insertions(+), 16 deletions(-) create mode 100644 integration-tests/src/measure/mod.rs create mode 100644 integration-tests/src/measure/record_batch.rs diff --git a/Cargo.lock b/Cargo.lock index 3f7d9f9..f41eea1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1710,7 +1710,7 @@ dependencies = [ [[package]] name = "integration-trait" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=b3e5b747b930ebc04601146deda13f12615d5e01#b3e5b747b930ebc04601146deda13f12615d5e01" +source = "git+https://github.com/sweatco/integration-utils.git?rev=2c3512ffba1540271a6b09ed266961173fce15c8#2c3512ffba1540271a6b09ed266961173fce15c8" dependencies = [ "proc-macro2", "quote", @@ -1720,7 +1720,7 @@ dependencies = [ [[package]] name = "integration-utils" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=b3e5b747b930ebc04601146deda13f12615d5e01#b3e5b747b930ebc04601146deda13f12615d5e01" +source = "git+https://github.com/sweatco/integration-utils.git?rev=2c3512ffba1540271a6b09ed266961173fce15c8#2c3512ffba1540271a6b09ed266961173fce15c8" dependencies = [ "anyhow", "async-trait", @@ -2359,7 +2359,7 @@ dependencies = [ "near-primitives 0.14.0", "near-primitives-core 0.14.0", "near-sdk-macros 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "near-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-sys 0.2.1", "near-vm-logic", "once_cell", "schemars", @@ -2381,7 +2381,7 @@ dependencies = [ "near-primitives 0.14.0", "near-primitives-core 0.14.0", "near-sdk-macros 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", - "near-sys 0.2.0 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sys 0.2.0", "near-vm-logic", "once_cell", "schemars", @@ -2422,13 +2422,13 @@ checksum = "6540152fba5e96fe5d575b79e8cd244cf2add747bb01362426bdc069bc3a23bc" [[package]] name = "near-sys" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" +source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" [[package]] name = "near-sys" -version = "0.2.0" -source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397688591acf8d3ebf2c2485ba32d4b24fc10aad5334e3ad8ec0b7179bfdf06b" [[package]] name = "near-token" diff --git a/Cargo.toml b/Cargo.toml index 0869ae5..460c1fd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,12 +14,13 @@ tokio = "1.28.0" anyhow = "1.0.75" async-trait = "0.1.74" +near-units = "0.2.0" near-workspaces = "0.9.0" near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "b3e5b747b930ebc04601146deda13f12615d5e01" } -integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "b3e5b747b930ebc04601146deda13f12615d5e01" } +integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "2c3512ffba1540271a6b09ed266961173fce15c8" } +integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "2c3512ffba1540271a6b09ed266961173fce15c8" } sweat-model = { path = "model" } sweat-integration = { path = "sweat-integration" } diff --git a/integration-tests/Cargo.toml b/integration-tests/Cargo.toml index 8bc8e8d..ed1d0e3 100644 --- a/integration-tests/Cargo.toml +++ b/integration-tests/Cargo.toml @@ -14,7 +14,7 @@ near-contract-standards = { workspace = true } anyhow = { workspace = true } tokio = { workspace = true } -near-units = "0.2.0" +near-units = { workspace = true } borsh = "0.10.3" maplit = "1.0" tracing = "0.1.37" diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index 52819cc..c6d3dc1 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -10,6 +10,7 @@ mod common; mod defer; mod formula; mod interface; +mod measure; mod mint; mod prepare; mod transfer; diff --git a/integration-tests/src/measure/mod.rs b/integration-tests/src/measure/mod.rs new file mode 100644 index 0000000..d5a8194 --- /dev/null +++ b/integration-tests/src/measure/mod.rs @@ -0,0 +1 @@ +mod record_batch; diff --git a/integration-tests/src/measure/record_batch.rs b/integration-tests/src/measure/record_batch.rs new file mode 100644 index 0000000..dbf74b2 --- /dev/null +++ b/integration-tests/src/measure/record_batch.rs @@ -0,0 +1,36 @@ +#![cfg(test)] + +use anyhow::Result; +use integration_utils::measure::outcome_storage::OutcomeStorage; +use near_workspaces::types::Gas; +use sweat_model::SweatApiIntegration; + +use crate::{prepare::IntegrationContext, prepare_contract}; + +#[ignore] +#[tokio::test] +async fn single_record_batch() -> anyhow::Result<()> { + let gas = measure_record_batch().await?; + + dbg!(&gas); + + Ok(()) +} + +async fn measure_record_batch() -> Result { + let mut context = prepare_contract().await?; + + let oracle = context.oracle().await?; + + let (gas, _) = OutcomeStorage::measure_total( + &oracle, + context + .ft_contract() + .record_batch(Default::default()) + .with_user(&oracle) + .call(), + ) + .await?; + + Ok(gas) +} diff --git a/res/sweat.wasm b/res/sweat.wasm index 131d77d3bb28b14591b3673b60745f9f28de015f..4ea559f00e019c8b2919164e2cb292636561a9c5 100755 GIT binary patch delta 46751 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 LJ&u!VEluK|qIG=V diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 71326c3..6d833ff 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.74" +channel = "1.75" diff --git a/sweat-integration/Cargo.toml b/sweat-integration/Cargo.toml index 96af39e..56b4a12 100644 --- a/sweat-integration/Cargo.toml +++ b/sweat-integration/Cargo.toml @@ -10,7 +10,7 @@ integration-utils = { workspace = true } sweat-model = { workspace = true, features = ["integration-test"] } -near-units = "0.2.0" +near-units = { workspace = true } near-sdk = { workspace = true } near-contract-standards = { workspace = true } -near-workspaces = "0.9.0" +near-workspaces = { workspace = true } diff --git a/sweat/src/defer.rs b/sweat/src/defer.rs index 731b446..d2f60fa 100644 --- a/sweat/src/defer.rs +++ b/sweat/src/defer.rs @@ -3,6 +3,8 @@ use sweat_model::SweatDefer; use crate::*; +const ONE_GGAS: u64 = Gas::ONE_TERA.0 / 1000; + #[near_bindgen] impl SweatDefer for Contract { fn defer_batch(&mut self, steps_batch: Vec<(AccountId, u32)>, holding_account_id: AccountId) -> PromiseOrValue<()> { @@ -11,6 +13,8 @@ impl SweatDefer for Contract { "Unauthorized access! Only oracle can call that!" ); + let batch_len = steps_batch.len() as u64; + let mut accounts_tokens: Vec<(AccountId, U128)> = Vec::new(); let mut total_effective: U128 = U128(0); let mut total_fee: U128 = U128(0); @@ -28,16 +32,19 @@ impl SweatDefer for Contract { "amounts": accounts_tokens, }); + // These values calculated in `measure_record_batch_for_hold_test` in claim contract. + let record_batch_for_hold_gas = Gas::ONE_TERA * 8 + Gas(batch_len * ONE_GGAS * 320); + Promise::new(holding_account_id.clone()) .function_call( "record_batch_for_hold".to_string(), hold_arguments.to_string().into_bytes(), 0, - Gas(20 * 1_000_000_000_000), + record_batch_for_hold_gas, ) .then( ext_ft_transfer_callback::ext(env::current_account_id()) - .with_static_gas(Gas(5 * 1_000_000_000_000)) + .with_static_gas(Gas::ONE_TERA * 5) .on_record( holding_account_id, total_effective, From e208f3a06050637c6477c73e06cd69a241fe5d7d Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 25 Jan 2024 09:24:23 +0000 Subject: [PATCH 08/13] fix: chnage fee rounding to ceil values (#56) --- res/sweat.wasm | Bin 215924 -> 215896 bytes sweat/src/lib.rs | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/res/sweat.wasm b/res/sweat.wasm index 4ea559f00e019c8b2919164e2cb292636561a9c5..58a3126ae0951fcf3d70044f444fdcb1b23e0108 100755 GIT binary patch delta 20317 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 D?D05h diff --git a/sweat/src/lib.rs b/sweat/src/lib.rs index bfdca06..b63cfbe 100644 --- a/sweat/src/lib.rs +++ b/sweat/src/lib.rs @@ -145,7 +145,7 @@ impl SweatApi for Contract { impl Contract { pub(crate) fn calculate_tokens_amount(&self, steps: u32) -> (u128, u128) { let sweat_to_mint: u128 = self.formula(self.steps_since_tge, steps).0; - let trx_oracle_fee: u128 = sweat_to_mint * 5 / 100; + let trx_oracle_fee: u128 = (sweat_to_mint * 5).div_ceil(100); let minted_to_user: u128 = sweat_to_mint - trx_oracle_fee; (minted_to_user, trx_oracle_fee) From f7bafe395e9f1349feb54da30add95a5c0e642db Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 25 Jan 2024 09:38:24 +0000 Subject: [PATCH 09/13] fix: clean clippy (#57) Co-authored-by: Vladas Zakrevskis <146100@gmail.com> --- .github/workflows/push.yml | 8 + .github/workflows/test.yml | 7 + defer-stub/src/lib.rs | 5 +- integration-tests/src/formula.rs | 299 +++++++++++++++---------------- model/src/lib.rs | 2 + res/sweat.wasm | Bin 215896 -> 215511 bytes sweat-integration/src/lib.rs | 9 +- sweat/src/defer.rs | 10 +- sweat/src/lib.rs | 132 ++++++-------- sweat/src/math.rs | 24 +-- 10 files changed, 245 insertions(+), 251 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 03f783c..6c4a01e 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -8,6 +8,14 @@ env: CARGO_TERM_COLOR: always jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Lint + run: make lint + build: runs-on: ubuntu-latest steps: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8f9e650..cf83fd3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,6 +8,13 @@ env: CARGO_TERM_COLOR: always jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Lint + run: make lint build: runs-on: ubuntu-latest diff --git a/defer-stub/src/lib.rs b/defer-stub/src/lib.rs index 4621907..0875f3b 100644 --- a/defer-stub/src/lib.rs +++ b/defer-stub/src/lib.rs @@ -12,16 +12,19 @@ use near_sdk::{ struct Contract {} #[near_bindgen] +#[allow(dead_code)] impl Contract { #[init] pub fn new() -> Self { Self {} } + #[allow(clippy::unused_self)] pub fn record_batch_for_hold(&mut self, amounts: Vec<(AccountId, U128)>) { - log_str(&format!("Call record_batch_for_hold with {:?}", amounts)); + log_str(&format!("Call record_batch_for_hold with {amounts:?}")); } + #[allow(clippy::unused_self)] pub fn exploit_on_record(&mut self, ft_account_id: AccountId, amount: U128) { log_str(&format!( "Try to call on_record in callback, ft account = {ft_account_id}" diff --git a/integration-tests/src/formula.rs b/integration-tests/src/formula.rs index 0b6c6ef..bcce2a5 100644 --- a/integration-tests/src/formula.rs +++ b/integration-tests/src/formula.rs @@ -37,11 +37,11 @@ async fn test_formula() -> Result<()> { ]; let mut test_number = 0; - for tge in 0..steps_from_tge.len() { - for steps in 0..steps_to_convert.len() { + for tge in steps_from_tge { + for steps in steps_to_convert { let formula_res = context .ft_contract() - .formula(U64(steps_from_tge[tge]), steps_to_convert[steps]) + .formula(U64(tge), steps) .with_user(&oracle) .call() .await? @@ -49,14 +49,11 @@ async fn test_formula() -> Result<()> { let formula_res = formula_res as f64 / 1e+18; - println!( - "{}. formula ({} {}) = {}", - test_number, steps_from_tge[tge], steps_to_convert[steps], formula_res - ); + println!("{}. formula ({} {}) = {}", test_number, tge, steps, formula_res); let diff = formula_res - TEST_RESULTS[test_number]; - assert_eq!(true, diff.abs() < EPS); - test_number = test_number + 1; + assert!(diff.abs() < EPS); + test_number += 1; } } @@ -64,148 +61,148 @@ async fn test_formula() -> Result<()> { } pub const TEST_RESULTS: [f64; 144] = [ - 0.0009999999999993069988, - 0.0099999999999722827965, - 0.09999999999764401515, - 0.99999999976855979966, - 9.999999976897553822, - 99.99999769017119888, - 999.9997690212771886, - 9999.97690216929368, - 99997.69021734510898, - 0.0009999999999951495171, - 0.009999999999930706679, - 0.09999999999722826438, - 0.99999999976440212546, - 9.99999997685597819, - 99.99999768975543191, - 999.99976901711954724, - 9999.9769021277170395, - 99997.69021692934621, - 0.0009999999999535733996, - 0.0099999999995149455034, - 0.09999999999307064569, - 0.99999999972282604954, - 9.9999999764402165425, - 99.999997685597818986, - 999.9997689755434749, - 9999.9769017119560885, - 99997.69021277173306, - 0.0009999999995378124409, - 0.009999999995357337218, - 0.09999999995149456977, - 0.99999999930706517937, - 9.999999972282608951, - 99.99999764402173241, - 999.99976855978263757, - 9999.9768975543483975, - 99997.690171195645235, - 0.0009999999953802037218, - 0.0099999999537812491596, - 0.099999999535733699596, - 0.9999999951494564776, - 9.9999999307065223775, - 99.99999722826086668, - 999.99976440217392337, - 9999.9768559782605735, - 99997.689755434781546, - 0.0009999999538041167476, - 0.009999999538020380718, - 0.099999995378124997836, - 0.999999953573369571, - 9.999999514945651313, - 99.999993070652180904, - 999.9997228260870088, - 9999.976440217391428, - 99997.68559782608645, - 0.0009999995380432472221, - 0.009999995380411684162, - 0.09999995380203804962, - 0.9999995378124999501, - 9.999995357336956658, - 99.9999514945652237, - 999.9993070652174083, - 9999.972282608696332, - 99997.644021739135496, - 0.0009999953804345515333, - 0.009999953804324729009, - 0.099999538041168484215, - 0.99999538020380429604, - 9.999953781249999452, - 99.99953573369565163, - 999.99514945652174447, - 9999.930706521739921, - 99997.22826086956775, - 0.0009999538043475950794, - 0.009999538043455163602, - 0.099995380432472830146, - 0.99995380411684786637, - 9.999538020380434489, - 99.995378125000002, - 999.95357336956521976, - 9999.514945652173992, - 99993.07065217391937, - 0.0009995380434780298893, - 0.009995380434759511268, - 0.09995380434551630333, - 0.99953804324728257047, - 9.995380411684783084, - 99.953802038043477296, - 999.5378124999999727, - 9995.357336956521976, - 99951.49456521739194, - 0.0009953804347823777716, - 0.009953804347802989658, - 0.0995380434759510907, - 0.99538043455163038864, - 9.9538043247282601556, - 99.53804116847825867, - 995.3802038043478433, + 0.000_999_999_999_999_307, + 0.009_999_999_999_972_283, + 0.099_999_999_997_644_02, + 0.999_999_999_768_559_8, + 9.999_999_976_897_554, + 99.999_997_690_171_2, + 999.999_769_021_277_2, + 9_999.976_902_169_294, + 99_997.690_217_345_11, + 0.000_999_999_999_995_149_5, + 0.009_999_999_999_930_707, + 0.099_999_999_997_228_26, + 0.999_999_999_764_402_1, + 9.999_999_976_855_978, + 99.999_997_689_755_43, + 999.999_769_017_119_5, + 9_999.976_902_127_717, + 99_997.690_216_929_35, + 0.000_999_999_999_953_573_4, + 0.009_999_999_999_514_946, + 0.099_999_999_993_070_65, + 0.999_999_999_722_826, + 9.999_999_976_440_217, + 99.999_997_685_597_82, + 999.999_768_975_543_5, + 9_999.976_901_711_956, + 99_997.690_212_771_73, + 0.000_999_999_999_537_812_4, + 0.009_999_999_995_357_337, + 0.099_999_999_951_494_57, + 0.999_999_999_307_065_2, + 9.999_999_972_282_609, + 99.999_997_644_021_73, + 999.999_768_559_782_6, + 9_999.976_897_554_348, + 99_997.690_171_195_65, + 0.000_999_999_995_380_203_7, + 0.009_999_999_953_781_25, + 0.099_999_999_535_733_7, + 0.999_999_995_149_456_5, + 9.999_999_930_706_522, + 99.999_997_228_260_87, + 999.999_764_402_173_9, + 9_999.976_855_978_26, + 99_997.689_755_434_78, + 0.000_999_999_953_804_116_7, + 0.009_999_999_538_020_38, + 0.099_999_995_378_125, + 0.999_999_953_573_369_6, + 9.999_999_514_945_651, + 99.999_993_070_652_18, + 999.999_722_826_087, + 9_999.976_440_217_391, + 99_997.685_597_826_09, + 0.000_999_999_538_043_247_2, + 0.009_999_995_380_411_684, + 0.099_999_953_802_038_05, + 0.999_999_537_812_5, + 9.999_995_357_336_957, + 99.999_951_494_565_22, + 999.999_307_065_217_4, + 9_999.972_282_608_696, + 99_997.644_021_739_14, + 0.000_999_995_380_434_551_5, + 0.009_999_953_804_324_729, + 0.099_999_538_041_168_48, + 0.999_995_380_203_804_3, + 9.999_953_781_25, + 99.999_535_733_695_65, + 999.995_149_456_521_7, + 9_999.930_706_521_74, + 99_997.228_260_869_57, + 0.000_999_953_804_347_595, + 0.009_999_538_043_455_164, + 0.099_995_380_432_472_83, + 0.999_953_804_116_847_9, + 9.999_538_020_380_434, + 99.995_378_125, + 999.953_573_369_565_2, + 9_999.514_945_652_174, + 99_993.070_652_173_92, + 0.000_999_538_043_478_029_9, + 0.009_995_380_434_759_511, + 0.099_953_804_345_516_3, + 0.999_538_043_247_282_6, + 9.995_380_411_684_783, + 99.953_802_038_043_48, + 999.537_812_5, + 9_995.357_336_956_522, + 99_951.494_565_217_39, + 0.000_995_380_434_782_377_8, + 0.009_953_804_347_802_99, + 0.099_538_043_475_951_09, + 0.995_380_434_551_630_4, + 9.953_804_324_728_26, + 99.538_041_168_478_26, + 995.380_203_804_347_8, 9953.78125, - 99535.73369565217581, - 0.0009538043478258559447, - 0.009538043478237771822, - 0.09538043478029890887, - 0.95380434759510868137, - 9.538043455163043305, - 95.38043247282608661, - 953.80411684782609427, - 9538.020380434782055, + 99_535.733_695_652_18, + 0.000_953_804_347_825_855_9, + 0.009_538_043_478_237_772, + 0.095_380_434_780_298_91, + 0.953_804_347_595_108_7, + 9.538_043_455_163_043, + 95.380_432_472_826_09, + 953.804_116_847_826_1, + 9_538.020_380_434_782, 95378.125, - 0.0005380434782607852349, - 0.005380434782600264018, - 0.053804347825243750703, - 0.53804347817654929464, - 5.3804347741766713753, - 53.804346982884489137, - 538.04339394062299107, - 5380.4263505840362996, - 53803.50462362102553, - 0.00010531914893616588951, - 0.0010531914893612702357, - 0.0105319148935738241685, - 0.10531914893185048698, - 1.053191488929729136, - 10.531914850419713758, - 105.31914461643948755, - 1053.19105738863027, - 10531.871696309839535, - 1.16470588235293541626e-05, - 0.00011647058823528841538, - 0.0011647058823523713262, - 0.011647058823472423994, - 0.11647058822959541202, - 1.1647058817830711064, - 11.647058766542404129, - 116.47058253659338334, - 1164.705312482868294, - 1.1895246692412392412e-06, - 1.1891116398421971423e-05, - 0.00011890600111673168301, - 0.0011890610437408145102, - 0.011890606307114153298, - 0.118906064103715028435, - 1.1890606420697238388, - 11.890606361840548644, - 118.906058271739922816, + 0.000_538_043_478_260_785_2, + 0.005_380_434_782_600_264, + 0.053_804_347_825_243_75, + 0.538_043_478_176_549_3, + 5.380_434_774_176_671, + 53.804_346_982_884_49, + 538.043_393_940_623, + 5_380.426_350_584_036, + 53_803.504_623_621_026, + 0.000_105_319_148_936_165_89, + 0.001_053_191_489_361_270_2, + 0.010_531_914_893_573_824, + 0.105_319_148_931_850_49, + 1.053_191_488_929_729_1, + 10.531_914_850_419_714, + 105.319_144_616_439_49, + 1_053.191_057_388_630_3, + 10_531.871_696_309_84, + 1.164_705_882_352_935_4e-5, + 0.000_116_470_588_235_288_42, + 0.001_164_705_882_352_371_3, + 0.011_647_058_823_472_424, + 0.116_470_588_229_595_41, + 1.164_705_881_783_071, + 11.647_058_766_542_404, + 116.470_582_536_593_38, + 1_164.705_312_482_868_3, + 1.189_524_669_241_239_2e-6, + 1.189_111_639_842_197_1e-5, + 0.000_118_906_001_116_731_68, + 0.001_189_061_043_740_814_5, + 0.011_890_606_307_114_153, + 0.118_906_064_103_715_03, + 1.189_060_642_069_723_8, + 11.890_606_361_840_549, + 118.906_058_271_739_92, ]; diff --git a/model/src/lib.rs b/model/src/lib.rs index 8f04c45..b19937c 100644 --- a/model/src/lib.rs +++ b/model/src/lib.rs @@ -1,3 +1,5 @@ +#![allow(clippy::new_ret_no_self, clippy::wrong_self_convention)] + use integration_trait::make_integration_version; use near_contract_standards::storage_management::{StorageBalance, StorageBalanceBounds}; use near_sdk::{ diff --git a/res/sweat.wasm b/res/sweat.wasm index 58a3126ae0951fcf3d70044f444fdcb1b23e0108..1099ed81911f79aa8c10ad1c97865dbe3821aa14 100755 GIT binary patch delta 35318 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
bvl#-suMRFK}bX{U`( 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 delta 35802 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 { impl FungibleTokenCoreIntegration for SweatFt<'_> { fn ft_transfer(&mut self, receiver_id: AccountId, amount: U128, memo: Option) -> ContractCall<()> { - println!("▶️ Transfer {:?} fungible tokens to {}", amount, receiver_id); + println!("▶️ Transfer {amount:?} fungible tokens to {receiver_id}"); let args = json!({ "receiver_id": receiver_id, @@ -39,10 +41,7 @@ impl FungibleTokenCoreIntegration for SweatFt<'_> { memo: Option, msg: String, ) -> ContractCall { - println!( - "▶️ Transfer {:?} fungible tokens to {} with message: {}", - amount, receiver_id, msg - ); + println!("▶️ Transfer {amount:?} fungible tokens to {receiver_id} with message: {msg}",); let args = json!({ "receiver_id": receiver_id, diff --git a/sweat/src/defer.rs b/sweat/src/defer.rs index d2f60fa..b9299bb 100644 --- a/sweat/src/defer.rs +++ b/sweat/src/defer.rs @@ -1,7 +1,11 @@ -use near_sdk::{env::panic_str, serde_json::json, Gas, Promise}; +use near_contract_standards::fungible_token::events::FtMint; +use near_sdk::{ + env, env::panic_str, ext_contract, is_promise_success, json_types::U128, near_bindgen, require, serde_json::json, + AccountId, Gas, Promise, PromiseOrValue, +}; use sweat_model::SweatDefer; -use crate::*; +use crate::{internal_deposit, Contract, ContractExt}; const ONE_GGAS: u64 = Gas::ONE_TERA.0 / 1000; @@ -21,7 +25,7 @@ impl SweatDefer for Contract { for (account_id, step_count) in steps_batch { let (amount, fee) = self.calculate_tokens_amount(step_count); - self.steps_since_tge.0 += step_count as u64; + self.steps_since_tge.0 += u64::from(step_count); accounts_tokens.push((account_id, U128(amount))); total_effective.0 += amount; diff --git a/sweat/src/lib.rs b/sweat/src/lib.rs index b63cfbe..eb2821b 100644 --- a/sweat/src/lib.rs +++ b/sweat/src/lib.rs @@ -9,7 +9,7 @@ use near_contract_standards::fungible_token::{ use near_sdk::{ borsh::{self, BorshDeserialize, BorshSerialize}, collections::UnorderedSet, - env, ext_contract, is_promise_success, + env, json_types::{U128, U64}, near_bindgen, require, AccountId, Balance, PanicOnDefault, PromiseOrValue, }; @@ -41,8 +41,8 @@ impl SweatApi for Contract { env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can add oracles!" ); - require!(self.oracles.insert(account_id) == true, "Already exists!"); - env::log_str(&format!("Oracle {} was added", account_id)); + require!(self.oracles.insert(account_id), "Already exists!"); + env::log_str(&format!("Oracle {account_id} was added")); } fn remove_oracle(&mut self, account_id: &AccountId) { @@ -50,8 +50,8 @@ impl SweatApi for Contract { env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can remove oracles!" ); - require!(self.oracles.remove(account_id) == true, "No such oracle was found!"); - env::log_str(&format!("Oracle {} was removed", account_id)); + require!(self.oracles.remove(account_id), "No such oracle was found!"); + env::log_str(&format!("Oracle {account_id} was removed")); } fn get_oracles(&self) -> Vec { @@ -63,13 +63,13 @@ impl SweatApi for Contract { env::predecessor_account_id() == env::current_account_id(), "Unauthorized access! Only token owner can do TGE!" ); - internal_deposit(&mut self.token, &account_id, amount.0); + internal_deposit(&mut self.token, account_id, amount.0); FtMint { owner_id: account_id, amount: &amount, memo: None, } - .emit() + .emit(); } fn tge_mint_batch(&mut self, batch: Vec<(AccountId, U128)>) { @@ -78,13 +78,16 @@ impl SweatApi for Contract { "Unauthorized access! Only token owner can do TGE!" ); let mut events = Vec::with_capacity(batch.len()); - for i in 0..batch.len() { - internal_deposit(&mut self.token, &batch[i].0, batch[i].1 .0); - events.push(FtMint { - owner_id: &batch[i].0, - amount: &batch[i].1, + for (account_id, steps_count) in &batch { + // let steps_count = steps_count.0; + internal_deposit(&mut self.token, account_id, steps_count.0); + + let event = FtMint { + owner_id: account_id, + amount: steps_count, memo: None, - }) + }; + events.push(event); } if !events.is_empty() { FtMint::emit_many(events.as_slice()); @@ -98,7 +101,7 @@ impl SweatApi for Contract { owner_id: &env::predecessor_account_id(), memo: None, } - .emit() + .emit(); } fn get_steps_since_tge(&self) -> U64 { @@ -113,12 +116,14 @@ impl SweatApi for Contract { let mut oracle_fee: U128 = U128(0); let mut sweats: Vec = Vec::with_capacity(steps_batch.len() + 1); let mut events = Vec::with_capacity(steps_batch.len() + 1); - for i in 0..steps_batch.len() { - let (minted_to_user, trx_oracle_fee) = self.calculate_tokens_amount(steps_batch[i].1); - oracle_fee.0 = oracle_fee.0 + trx_oracle_fee; - internal_deposit(&mut self.token, &steps_batch[i].0, minted_to_user); + + for (account_id, steps_count) in &steps_batch { + let (minted_to_user, trx_oracle_fee) = self.calculate_tokens_amount(*steps_count); + oracle_fee.0 += trx_oracle_fee; + internal_deposit(&mut self.token, account_id, minted_to_user); + sweats.push(U128(minted_to_user)); - self.steps_since_tge.0 += steps_batch[i].1 as u64; + self.steps_since_tge.0 += u64::from(*steps_count); } for i in 0..steps_batch.len() { events.push(FtMint { @@ -127,6 +132,7 @@ impl SweatApi for Contract { memo: None, }); } + internal_deposit(&mut self.token, &env::predecessor_account_id(), oracle_fee.0); let oracle_event = FtMint { owner_id: &env::predecessor_account_id(), @@ -137,8 +143,9 @@ impl SweatApi for Contract { FtMint::emit_many(events.as_slice()); } + #[allow(clippy::cast_precision_loss)] fn formula(&self, steps_since_tge: U64, steps: u32) -> U128 { - U128(math::formula(steps_since_tge.0 as f64, steps as f64)) + U128(math::formula(steps_since_tge.0 as f64, f64::from(steps))) } } @@ -229,7 +236,7 @@ mod tests { fn add_oracle_access() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); token.add_oracle(&sweat_oracle()); } @@ -239,7 +246,7 @@ mod tests { fn remove_oracle_access() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], token.get_oracles()); testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); @@ -251,7 +258,7 @@ mod tests { fn add_same_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); token.add_oracle(&sweat_oracle()); } @@ -261,7 +268,7 @@ mod tests { fn remove_fake_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], token.get_oracles()); token.remove_oracle(&user1()); @@ -271,11 +278,11 @@ mod tests { fn add_remove_oracle() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], token.get_oracles()); token.remove_oracle(&sweat_oracle()); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); } #[test] @@ -283,7 +290,7 @@ mod tests { fn mint_steps_access_1() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], token.get_oracles()); token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); @@ -294,7 +301,7 @@ mod tests { fn minting_steps_access_2() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], token.get_oracles()); testing_env!(get_context(sweat_the_token(), user1()).build()); @@ -306,23 +313,14 @@ mod tests { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); assert_eq!(U64(0), token.get_steps_since_tge()); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); assert_eq!(vec![sweat_oracle()], token.get_oracles()); testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); token.record_batch(vec![(user1(), 10_000), (user2(), 10_000)]); - assert_eq!( - true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS - ); - assert_eq!( - true, - (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS - ); - assert_eq!( - true, - (0.999999998257479475 - token.token.ft_balance_of(sweat_oracle()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); + assert!((9.499_999_975_169_082 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS); + assert!((0.999_999_998_257_479_4 - token.token.ft_balance_of(sweat_oracle()).0 as f64 / 1e+18).abs() < EPS); assert_eq!(U64(2 * 10_000), token.get_steps_since_tge()); } @@ -331,7 +329,7 @@ mod tests { fn tge_access_1() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); testing_env!(get_context(sweat_the_token(), sweat_oracle()).build()); token.tge_mint(&user1(), U128(9499999991723028480)); @@ -354,48 +352,36 @@ mod tests { fn tge_liquid() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); - assert_eq!( - true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); } #[test] fn tge_liquid_batch() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), (user2(), U128(9499999991723028480)), ]); - assert_eq!( - true, - (9.499999991723028480 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS - ); - assert_eq!( - true, - (9.499999975169081549 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); + assert!((9.499_999_975_169_082 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS); } #[test] fn burn() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); testing_env!(get_context(sweat_the_token(), user1()).build()); token.burn(&U128(9499999991723028480)); - assert_eq!( - true, - (0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); } #[test] @@ -403,29 +389,23 @@ mod tests { fn transfer_to_unregistered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint(&user1(), U128(9499999991723028480)); testing_env!(get_context(sweat_the_token(), user1()).build()); token.token.ft_transfer(user2(), U128(9499999991723028480), None); - assert_eq!( - true, - (0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); - assert_eq!( - true, - (9.499999991723028480 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((9.499_999_991_723_028 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS); } #[test] fn transfer_to_registered() { testing_env!(get_context(sweat_the_token(), sweat_the_token()).build()); let mut token = Contract::new(Some(".u.sweat".to_string())); - assert_eq!(true, token.get_oracles().is_empty()); + assert!(token.get_oracles().is_empty()); token.add_oracle(&sweat_oracle()); token.tge_mint_batch(vec![ (user1(), U128(9499999991723028480)), @@ -435,14 +415,8 @@ mod tests { token.token.ft_transfer(user2(), U128(9499999991723028480), None); - assert_eq!( - true, - (0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((0.0 - token.token.ft_balance_of(user1()).0 as f64 / 1e+18).abs() < EPS); - assert_eq!( - true, - (9.499999991723028480 * 2.0 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS - ); + assert!((9.499_999_991_723_028 * 2.0 - token.token.ft_balance_of(user2()).0 as f64 / 1e+18).abs() < EPS); } } diff --git a/sweat/src/math.rs b/sweat/src/math.rs index b5db648..2958cb2 100644 --- a/sweat/src/math.rs +++ b/sweat/src/math.rs @@ -1,8 +1,11 @@ +#![allow(clippy::excessive_precision, clippy::unreadable_literal)] + #[allow(dead_code)] const fn assert_lookup_lengths() { const_assert_eq!(KS.len(), BS.len()); } +#[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)] pub fn formula(steps_since_tge: f64, steps: f64) -> u128 { let trillion = (steps_since_tge / 1e+12).floor() as usize; if trillion < KS.len() { @@ -11,10 +14,13 @@ pub fn formula(steps_since_tge: f64, steps: f64) -> u128 { (exp_decay(steps_since_tge, steps) * 1e+18) as u128 } } + +#[allow(clippy::cast_possible_truncation)] pub fn area_under_line(k: f64, b: f64, x_start: f64, x_end: f64) -> f64 { let square_area = (k * x_end + b) * (x_end - x_start); let triangle_area = ((k * x_start + b) - (k * x_end + b)) * (x_end - x_start) / 2.; - return square_area + triangle_area; + + square_area + triangle_area } pub fn exp_decay(steps_from_tge: f64, steps_to_exchange: f64) -> f64 { ((K * (steps_from_tge + steps_to_exchange) + 1000.).ln() - (K * steps_from_tge + 1000.).ln()) / K @@ -855,18 +861,12 @@ mod tests { 1000000000000000u64, ]; let mut test_number = 0; - for tge in 0..steps_from_tge.len() { - for steps in 0..steps_to_convert.len() { - let formula_res = formula(steps_from_tge[tge] as f64, steps_to_convert[steps] as f64) as f64 / 1e+18; + for tge in steps_from_tge { + for steps in steps_to_convert { + let formula_res = formula(tge as f64, steps as f64) as f64 / 1e+18; let diff = formula_res - TEST_RESULTS[test_number]; - assert_eq!(true, diff.abs() < EPS); - //if diff.abs() > EPS { - // println!( - // "{} {} {}", - // steps_from_tge[tge], steps_to_convert[steps], TEST_RESULTS[test_number], - // ); - //} - test_number = test_number + 1; + assert!(diff.abs() < EPS); + test_number += 1; } } } From 7bbae6072f8b79fe92c9fff1770233bdb30a06e2 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 25 Jan 2024 10:53:03 +0000 Subject: [PATCH 10/13] fix: make transfer callback private (#55) --- integration-tests/src/callback_attack.rs | 10 +++++++--- res/sweat.wasm | Bin 215511 -> 215533 bytes sweat/src/defer.rs | 5 +---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/integration-tests/src/callback_attack.rs b/integration-tests/src/callback_attack.rs index f1e238e..7ce18dd 100644 --- a/integration-tests/src/callback_attack.rs +++ b/integration-tests/src/callback_attack.rs @@ -17,12 +17,13 @@ async fn test_call_on_record_in_callback() -> anyhow::Result<()> { let alice = context.alice().await?; let alice_balance_before_attack = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; + let ft_contract_id = context.ft_contract().account(); let target_amount = U128(1_000_000); let result = alice .call(context.holding_contract().id(), "exploit_on_record") .args_json(json!({ - "ft_account_id": context.ft_contract().account(), + "ft_account_id": ft_contract_id, "amount": target_amount, })) .max_gas() @@ -30,7 +31,7 @@ async fn test_call_on_record_in_callback() -> anyhow::Result<()> { .await? .into_result()?; - assert!(result.has_panic("The operation can be only initiated by an oracle")); + assert!(result.has_panic("Method on_record is private")); let alice_balance_after_attack = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; assert_eq!(alice_balance_before_attack, alice_balance_after_attack); @@ -46,7 +47,10 @@ async fn test_call_on_record_directly() -> anyhow::Result<()> { let oracle = context.oracle().await?; let intruder_id = alice.to_near(); - let result = oracle + let result = context + .ft_contract() + .contract() + .as_account() .call(context.ft_contract().contract().id(), "on_record") .args_json(json!({ "receiver_id": intruder_id, diff --git a/res/sweat.wasm b/res/sweat.wasm index 1099ed81911f79aa8c10ad1c97865dbe3821aa14..20072f95a1fec9a94b96ddc0b049566f158fa251 100755 GIT binary patch delta 46588 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 delta 47103 zcmd442Yi&p)<3>yHa#1%se}~RO@Ram2?7aH^F)x2GyzdMs05_j?o|?s5PIMNCm z*cm;nBt_7SW!|`D?PteOAhWb4N9|0(xF{4ng zM@thH1bUrgCq5K0ZQOkm$4(tSa`fm)4^EsueB2m^pT3n6a{T#e*tF@BrjERC?C=Mt z;jcrLg-)J2cJjz^V}{>1a+*;RG-1+x!ylY}Z)-<@evRT11G#DR-e@(9 z>!Fbo9vnN|93((LiarDNZ~dYZ6zt*FwC^7|ZTR@Hk2->!mz-be9{()8uYXj0JQ@Eu zo#c#&ibxQV!s&22ogz`6;h#~MBq%1*8IhFa5GX`(Oq7Um#MF1xkBUr+5Dg-tP)6j8 z!egQ&XF`G}(wmq_6ct0x*yO0lsL06VsEDX2r--7Yq?9NpC8j!^$k zX_P1&iBb60Fp(?b3sIsYEiy5bA3KFZBt<6aSpg5}n*#DFQU5Zaeek;DuR1~t9a@>5 z6?jYG9~3fj%$VWW;L#JtI%bNnsbe3Q^w3zVV2%jAZ|rpQ*EGjm5i}i$@W8l<(;f3f z9qYTXy^dnxH;VUbzKG&R)25G|JZ<>2aT7<69gdogMZz_8?C42T$C%ZZiokpCm^Af) z2PcelEEA#kP9Hvf>d1-H?j1YTv0S))ehwc!a>4}1N)gUwlctZHFnrpBlP6Dj)UjHG zp=i{|2_t!oN%uOQ(zAkM3)cvH@5YRsJZajv>5gZG+uF{D$4$R~%+!$&J2r?&tL(vv zQ^(#n4ggPeY!tCpsnzi)5XG2jj_0cDTTd|LCI$HeW2cWCGjjS!$MYgYKOB@&xQO1O z*ToxRF3qEJVzIa+z7qcy+nfvN9WhJn7e~a~;=K4&EO3@MzZQF(uQ<;;KXv}wdBORa zb3pH2`<)L>-{+j#vD|rArE?<8pYV(t5or zxMSeO)rX24?hSfQNUHgLqdqdEe(;-IuEo2b(~Cm}$JxJ%ii#XA5$X}1K+WOaq+boW zo1WJPgpLlpAi1N>`hn2gh!?n;N2H6c{HLdTiyq)=7Ppm4MV=~84h%yDt;$j0-lq3- zC1xEd=J6uk (?9_RD!E&Mf9`($o~f@C}YbcA~RJpt%Yx{^EZTE%Uepr1b-1zM&0 zWz1)XQCHje#H*;0Yu32NAZmN&qReg9m`VDw$Y?z>tS@cR$Apci3jJhQ8g0^l3d;*T zH=Aqj(c9NqMZf81>ikHX_2c2WRHpm8J#;~D=+10fHVaUB0hUwCE=a|&n7AXf7g3?+ z$aEARM-TBLPxI4USmZ)?(}bcEn2vi7Hw%sC<)F@33WtZ>C-v9eucjHZjz*Cdqmi~p zEvr#I9JRK49NXQxzCB{3DE?e`N9Lw(=B}_#7?Ky)LqozGTGcF!qItDN^LVr}eSBnZ zQMy~-8<~PRd=fc?Ue+Uq*46t)wFuhDFy{zAy)r6RUmtY~?bP3mnofK4?$H@ktWS?_ zPUrMZ(b@QZCVDI#)7!`J_bHvC^;t3X=^y&KnEAKt=1yFW&`=L)VL2k2C!|FexXZcR z>*sRTey~TsC-zR-t-l=GpUU-sx?XxkPp^9`{Zk)RcW8LYT;8cfZSzaK17-SKb#DnT z5~&0=%eC$qS=e_9qndy z6S6amxjT674tK3SVruo#9xZny@PO|nWH-KfOS2;j_I-MGVymWBbp>6lZ_jG=L1>-B z2u<7t?t}WW#Gdgd)ou~s()|2eTCu)ls%3LVn(lQdApoTPSCr5{S_ zcAG^_POW2sR;&oN1~GY@>B8;x0}kSgE7_kvqTNe)FT4VD>j%2+RlgYKa1Yb8#c(HBl^$=b>ogOILUq>3jcKBz<(b9OoyNQU;3g3i8)VhXN34K1#yhp zd5zph`6th%4d@_J5tFvur{Y9?O7rM&51}t@1($OhojkJ}99Av;wV(p`-kChCz_3n_ zpNGeFAJR8??haj9-IE+LoDxH_L21Bm;a;X^d9$!_!@XnU_RZpcoml0#0tL1!0(}=b zbV`mYRO=mDi`+lp$DyI=fHz&l0sKU6XmC9)3PO>qx+pY;nFYh8_=WqF(L6-~gVJPD zjoe>zIYb5Y%*3)0R&lkf%bzrY*3TN z846ghKQ>$d^9DpstBo22$Buvqc}4c}ti<7l6EFf%_T#>CB|Ms)X4nGX#%6@JA7f z{&r?3*LemFJz(zVb#JpI`atj4EVj@_-KKb!U5yK&Z58tT_ZY%Rla97cecC3WtwDGE zw3;YF>eI9HgZIrsRq)jv`oZj`bX32T-GF}9UCld& z9aV#aAAwID)dx5KQv6sXJMO02<5ZsMgjig`o`K^*ue&ewmq4+OZtqV9_wKl~NVwAU9weVcz zQF0WgRIDUN(RomTR>cpXjCylMh(C(-PjZv=wK=C~j$YBa1I^ZV<~F7x{o~y8cFCWu z8`CV5)YrS-y2~zY*QO~Hzj19Ip&dIvZIed!gD&l!p{x4m?Q-ZtJ*j;o*NP&rsT^=| zp%v@jwrhgo$7&YOH;X?+@viFH3(Vp+9U6hF+MO&ki&u4ML>Ki#9dd#{WGeHL%cW}_ zV^XWCtC|z{F!n_A9|i){@S%Qd$E4IbGwnWaUh!|JSo&8g?nTA2zf$oUDpvfJitY1~ z^mBQk^==N_jJ%}Ovwx+lgQ$4vFH~HvVOdyO8~b(hku@!;>6*V#(cBrKc4pUKXrRBQ zJ;G$wKEGKtSrL;J&>UnnBY%##G+Xc7sfnRyyI~CwvmC{{Sc@8P+g%VHJ8sKCh0kvD z1|DJfbvDXMdqU#KTQ`;(?Y5jle&z=?`|%npr&*%~U-Y zOh_ZI(`@(~8uHM}Y}lu_?wZovTFO8u1(}XIT5^{#r`@x|nsit|jaC5bp0068#+=bT zxa#$G#j>tRsP|&mIQ%`*br1|APq#iWQKoc@!`}tnrid_W|FZam6D0O?Lv{Wzw*qXadVc0A%AD*SP zYMQ;_`ox}I=S)KyrGOS`sgeEgy{Z zhzt?ug}uvzanJ5``mq6B!WS}yd9g=MPY}E(dh(qabU^QUXHGLi8w&LXviuHZfc@MD z86PkMfcv6q2%;0LnxE3k?raEQc;?P~(Y(XJY&xY+8W>9l_2;L0()~iUwX=Dj5^Dlg zyHtN`V1w{l;Oo~0*4~My^oE04U?;rOTIov%^}YcDT^TeO&%=hWZ9HjkH}yA0e`|2v zItH={==B~amONrqf?nsY#%6`ycNq=p>Wl9RB3*y-u7~Vy*z?hI$StTDF*HUmxF_~T zUA=G*cf}PZjN+~$hBly8dh?-U^n-V&{GWHV5?!&E;gzA>`T3zdvGW)#Z&)=n*j}F4 zm|>mGhX;olmFwz%3=5*C^uXbB(Z!PCC|y1xMt^g7Oa9Wto(?1mcW~j4*13 zvImdljngglb0g;4(>XuXtCtK;zX2@vB3HvwU!QPSu&P=&7~QEF>-Alurl7mrhnTWP zJ`}Bw8QmYgkv*f+=_URA=uG?#AG4k<#hqhD^GDp+?8vI8AbZe-t3a!m!y7XAh~@kBp7*v&JE@*O&lszG7N+`#mIUh`$h;YkWXW691T5*Ddz-=C zMfcSYzO;>ngCA7k^!u9A_xh0gZns^Z&);XcKDX+VmS_05KK<^W0B6ON``h`H-J>VP zS34f#3bb>IMoqt?e);~?CKW7=89MfajE8Ft-^k-E$bs2yY1ml$?SNEoGVU-Is%l(3 zJaVB0@r5rlS;AokGPVR11WGOG?8l0(Ul_ckU;*xHJRH6TwsE*s2?i5xt0QnT-;QcB zcC(`ZyQA@{ry|joZqSu~&8}<#z?+e5b_J)8FHDXbb_7ujnDp@Rjq3c)z#9%iF6uPC z2Nt4ad=CAtzcK#7&^>B72-W}4yG&q-^~i))B=sE=?zjQ3sPh2xiu)d5+*|fQ2XOV1 z5A??O1{33fgKZ}E#nVL-nTB>vtmfm;MuM;7*lz>t{}G2@$n>awG8C zk0)y}2CJ?En;&Uo;-k3XDtEvF2?g3Or=vOF?#*|sa>#uVAZrzFB#P91{-i?P^+C^ zP5Xs%)ifBcla|K-{(@>r?Y^P3e?{nr?yjqQM*CwJi-Y7q+bQW8t#5lM8hd!?q5h!A zn1_2OmCgarVB;LrF~|Du-ooe<+FxJSEm~jka8oSpp@(yzJ6(M^1N|gF(jR{xdZb5C z(QMR%J6FH=ku?3vBi%*OY`x8+%`w7+M-!7R_wz2+Y29V!A~Rz15@SbZ>RTRtAoVQ! zIN1CYnrTHKEZ}2>!K?V8-u7=rQSZJ0?o*KIaIpTF><6{sUHz@Ut+`?O<9~lTSk?Eq zP%GuJ;k9Z709oJFS3b7;hULQ^KiKT78m+m*F*lz)LE4#`Ki{kQ^Ig5ij7He?X*044 zw_UElbW3;%Su@arwVEXXC|RWHTr&Bu3;nNAB`3{RL8xPtSarD7z8XCTqvTkP5>+Rz zMv+gYowpXI6JQ)w)P+v#TZ($oHT`N)u2{5HZ$7gbjGYlPyVEv(>&!gh&83;~^qC$w z%aeF)D^}h8I`1?zT2LPLCW!yI+@I;U&AQu;D4bIj%k=HD5(=#-!zH84-1<6NuqQ0R zTgOw^8?ChUNK9evJnr9GF1Wq5vKl2U6i@n=Xm;mYxTT3#cIg@n*`&I7TL~&@+1fe& zv?{AzsW3X#r_OE)U(&O)<7kJzXLceS8}H7Z7_8eK?w)g+!KwK7ImL8X_j{sWpz_3r zuF-pWa#6DKi8Khuy-y4ULDievJ5iA=Gb`o17ch~uIZpr~v=n%vX3y6AQTZ=MIedR+d-aG=EWjo0oV@Hx*ckPqjV^>gh}8rRs|p1d3l~ z>Q63cN|pL+3;KcfV;ANJUNr-p!xyHS-?!=u7AD~7riGbFH3FL+%5atmZxCCj{;WY) zEiCqt{4*D&1zzH)hkL8OebKhSD#aZ(>mwH58f8R0fm@|;xuuIWPPE>(n4>yhE$&4x z=&hGL+TPL{NIT)Q)CL2(+Tlv0MvVxIeq~9!7UoH6@m)n3Tx?mv7oXv9s7i3u1;GIE(~OZe>i;TvB&lW~7(MPGRrxGJ#b@+k%aX8j zk1cDRZ(>DIzGp5%qH}oHe1^ggPf)INu(pN+pjtybLkHTiS^VoTm%(TH)3PpqK?z*9 z{K5ZT2{hK+QUZ1TO}eym_=>IqQMAoZcKpvi)JFsND6HC`KQFV*?_2ecWh)=tODs*b z_lVtlnlYf!&_tjAK6W#+v@xc#t@IXP07p^=ywz{6)VReUCRSQdtz=R`1MH>+E{nmW!(#uyzV~As`TMbv6 z#k_^sbVZCBh?neOFAU^quG0hkmd8z1eVMy-)z~El1kr^`j#g;?;1(j^Q~bR96!Q)Q zX*_}nb;MH{^t8UX`}8IE*;xqfkodvtZ}hQTKe2Xz*|ooR8eRLd>tc!CYMmFmHfY@~kQWQq zO-MX8pIPi;H4FkiUA-_?RV?@sY;@%MMtuwjgvX4PVnEmvfu109G^}H~7;OGfV=OoN z(u&9wARa%6kcCRpcroYs>sN(e*vHG;SS#7j%X>v{zJZN}*&CWb%YSi0HjK&24Yx-c zrhst810-!T6+qu_y)g}_H*8}<*o6b!#U=jhUZ~IA*c@VR&&CF|$}ene35QC(=Q_k& zoz>&cc2NOV(du-{a~T-@spoj~H=fhX2)~mZrvav^VpdfP>|h>iHr}VV+%(Dr)Tvy& zCZL-)b)aYUFE)8#76m=uklxX=o^NgXf}QNkbpk)Os5wL`+tdNMK-ghpq$Nx*$_SGO6aQ^(iLc{fBw7|;yP%vC)lbz zUvIuSvG6C}2Q9L-!Yo z@$ix`OwMYjnF*8r_6ymtxWtx+4M!aFMzf_pf6Ea1Lcg%3Ww=2;q$ba9|3+Jr=(65< zYfsSP@~x{vjaWZ8iu;6~v#mkKCIcJN#dL2BH=3Lrt2xpg|7O;a<8XLlHHdH&e6G*f zc9w~5dpGfCk-mQWYW!%w!;5Z*@94utFYOq}AHgqr8-HX>9GsSy&z3?8T5aDfbgf-e zoNC9;0WTs(wnhJ2**yAir+6tVuy7a0@3mIiB_oc{U11U7Lf1B`64OY~jxFJO>Dmwc zY3-?DRUtp1a*=Q8wZ&XFTiaHnZWY(jJla0r(nQ|l$?O^VwHgIJ1SG;G!*D*9K0h$1xJ0}x+V>?7M` z=T-XLicBLXK;-d&z+(Z$8I@T%JJSh#hGG0#R1%dn|f#{$dp z5(K(`W+<;mybu(c=~8;TL#Y`GTRaw7tyKUwG$1m`%8*4n^!bOH7M31o^!^k71aic| zy_RJf^CHl*Si}##SSPJ8$N1r)Fh73c+YG7&RJ$Cpf@`yG$0;%Sj$GwJK{+QhRPM*K z8${FxYI6?YiQCLTFostnS{-s8qXCWYm^P>!!Dkn32@ejSHH@<8xW3@kcJQjd@oJ{4 z)L8fY$KAioT>jcDM7Q)guXRV1{lsf^p&5Mf+MS~GCB4JpSUS4%&cmC8D1J%*{q+q= z7t0tf(+amaM)58#Ez|eEF#?V2A4!8a?Q}#12ae=6m1-hBy`NWbkI_OB^~+>(<=AI0D9Z|2uk9v_W$#LuA11QckEJOSg~uj(7#oSQz! zm$x-{h&&H8JvP*8u{pi(vE1|(f3fn;vSYmjWaS@kwSwK=@&k&*7B6h54^{uCfRz0J4JbMSN(U+dh zg3IIJ*%Y^tCiF&vzki|M45Ys5SI#EM?V;3AuUsD~PvU@qbjMKr!V0As6;pv`sdz;d z6`0Ny1K-j`h46wGri&v2hKWPFN;XXt0bh$ymXE4M?p#rYdMpJm@h9;9B0f!h<|1^# zeMXPS`UQ8zo`c)X7xMlN6c&xgTosk7l|H$&10@w2Pfmye?MN|$wL`Hur;C-sOpKn4 z+)eOEF#p1WWWn&DXCyq+6ve*cAd?x2>jzLODvIp@J|?pVlQAmih+RC{;z9-3E-=Ao z473Mt1nXev!B&XVFhQ%QdBrTv)&ww;`9}#AWC+d`QbSxMS&H< zU^zS?eUunnLj|oci^32*6)VV#j?zU5d0nm;>#I@`oi`d6!2?f#nXInVZEM#6!~bm8 z`XEbI?Ys5^i~;7x_V(o)Yg~%*FlefE@PDwKVzOkkWRV?u z89;7O8l(}ibcFepJ7ErnGK z#fxds9f~~<2jVgRzyKC7RyEE-sz#j}TN3ICD`YQ4h_N-^AkYkY!s_!$g*u(RE_4la zaNr{V&Kz?D3%>ch^jHO~XK-h>Zn5kpEX>R-K+J0315t*R$PFU5vtu%9JNBOwsTAZE zx?26hXf9ElwUI697*l!S|D&19DMRoC7zp50+pQ4%M#eAjzla5_wYcWkm^~0*so^Ty z${-L0rdoAn=sI}D_+!nBjpSe~fJ>2@`eSthJn=etqmWsYPoHWsNhd{y7usAFoYL>x^qMse@5hp zZTwj$M{MR#Cu6o^_5i;S?G;}${0?9-n%`6{-Ce}axOjM^c}{#l!XH>v0hV!)p>uJl zn~}=>nc@wq4p!YK`=zFH!3Y>|UDY94vlzfS$mydfqL8%+HTMJd+&A*v)r5WL9-1rG z@En5vo4I3c)SMA@S95md2(@N4=59~D(AI%`=PvBIV?>|18?K1jb7vX|^FzgSUO`?R z=q%Pc0%GjWV0>V61{iygE`SYc(w`JEA+aWd?L~WIQ8^l*));y=3}MxAItO%-CV?Kn zOuObng}{TBN<4#zwF-ywI)Vvjh^DM|WH?(RIsi)e0Tt85Rr4SKsv^W3gkZbsFO@qC z$Q2%Z06^qpbIW34*QsiE7|u&MB9RgcFY^ZBd0?)y1VAw|vd_p9!sP4^K0YTI7^^fv z{F>`=Zl9A3$LmFcC4r{gmhr~6D*&^#_y}_~6^5DdBN1QK22@XBrr81=0T?)*Ip5gd6LN#DAb0GZ+&Ars z^>1UIM}+%#LtLwAV@pmLP^$#`bm1{(YmXak{br1M$A-&o8Sp1Xfo;HBo}8LK7+%4T zc?@ln5^&k>?H0Q%TF;tAV~a0q@2Lvu)^GSq4b(PL=h&9^K|$3gmXjT3r1@C(U_OS! z%rHUBxXm(h^2u#yVG1&rDjue~v_hVJm{Q^lhY%lY1FB=g;VMcF*zR5_qaLBWkYCp@ zh= z-WQMCe(xi%Rj^T{Klep9Jpbkk&Ol7O*aCj>_{_v?{l)=ybra9>jXiufcT>Z{V4_k{{E#LebASU^qk8*3JsA2c5R_?P1%Ell;>>?Pzm7x=CtUI zDf);d)6g>%3uJi)c2@ha&w9Y_wCnp&%~eOsuLK|=DDXP15ZwY@_WnKp@&EZlb5Q7|A3EZ1(;wp^Eqe4Yt#QSD`oJFt;NjLE z6K!x5-5I^S|6}XhDioE4SSF4iG8e(&RnS;5iu8@g}iyZXBw| znb;5iQMHT)AOVIn1~Wn>KxoM3-;{}zW3fqlk*>`Jv0H9;?WIHbrG+D!`|+{gkjjn{`kL5h8O<)zfOj0*gOUq9#v%6#6k-*F#CUl4CPj$YC4o( z6EPvm=7JjdQsQQ|F@_7;N9$#xlcpN+s8El~6K2o@M~@XX!iq6Ol%mEy2mV=TEH~Dc*t(OrB^@%P6;|1(VC4;_0ybyFdAG zlZ~c9u&o9+;pH>9Nr#(p6C|CbVlI3{TRWy;jj|WPCt>h^#31Cu0n~^t$Y%qnBVCrC z1W-#_C!+)D7J5;338eP)t9&AmW}wh7h%!-lOAr;)9Jx1$+C)_{G;HYl!8@XIRA$Sd zVCvr5JmHG9MpzUq3djDqDt^Njdjz%v>{IvvCZhnhp|))Mt5|uYWyuA>)Pi1@B_R|m zPX|+0b-Jf?h0tu{(ZK4EC|aYBlh{xzBx-0kRWc})>O*=o3MHIHmR&+AE$k%2z)}^b z3eLz!LuqbpHYn@3s0X;x5EmhsCZBLoGdd!7xv1Jkh~N%9&_!fW7=aba%rL5z93$@x zBQLF$4~J3Lgc@lxtSEBAkKs>|AB0g`+lb)fia3wW_P)`7W*zLpJ~^U}f+eYh(qvg3 zO1QBx!4R2C4D>d-*e8FiLw!x_#yAgY^gJk>+IcP6y`6z#i`&p!?A9yfu5e7SQobKf zDYnr8cO+Ci?G@>AQ(QM&5piSut_9_vZ@fSY>9Sd}c7 zqaP=x$dhgaPprNz2cOa@SVdy52v{bpnjaO*Y-rJh`A9)lHLIeC)#RE6GTP4Jw*EJ< zd;lTzFU2zC@f5;gAUQpPm>0?jYAUBjQs*G3dn%b$x+AGUoT2+%pARFuMB>EG0eLur zIt5{+jV1@tgbvD2A}KlB&|f&g2F3&b$+olzb`;|N3=e!^H~`I$El|CZF_r+8-;AQ$=yw?&O)JrX^$l-OtBM!PZl zJfHv~rufUw(tYx~y3`Fd+r`nKCI%#a>@;xNHa%Cf=ujE#M!N%XG#u^f*Q1uE8R6$M z16gkdrO0{pD2k5Cr|Lmw?3KIgQQHuMyr6;mOLrW_$*6eh5q9)-UTJ?LH%;cnQ<5x> zN7Hh-CZ6iuYoU4#Bihy~Yiy`3I%||N(#$ba&7S%%9;>NEQkpgPe3_6yIatAd3DjI> z)}_XBdjbXKs-zaI99V>*@~f{#9BcVSUP+|P=D#zwFdH-K zm~J>03RX@IJR`myH`z0Z9%!O`gDSGZizHvhUeZ*W8mE~&r3KED#v&+FlfpP0xFkpd#SE%E!%8-pZwKJ zJ#2xaXjF;HfyvYrt)5MWM0-WPlZ+mpls_d?c3WG55JHCRnc~22fE}E)#0C6GwI9uw zBU324%Nq(slWi2W@V^#LE2YnGs)>S#i&*t66x^2rx+|AwQUK|G=}D#Do?2MSoJXk- zm@i@k?t^kkDkXt`Y)i$eAC&K;QfiW+0&;Z6shGCygZE|H*=gj7TA)lx;9!x$b>`Y~ zbQ}|a;;NIPWmQ9P zHE_*GDM8-Z2oBnn@_|Owx!z@-F(eO^wGp|_BY?)#<>Z@<=s{X6wRB1eQ^#)LP=r2> z8B9s1Ue)SZrQ)3zq2kq6&nnZ&>oFILGm%WGr1|>0HcD>>Ma9>+geyXU17#7T9g@8> zs3H9*AIzY6*U?XCV}eO5hc+fSd*y=0N`@S4Or7oQVdWOu%p6Vj?`~pMs!o^Xl6jO0)p~gru)el z?}4U@s9^o_Iqk>(xJCZdlcC(%lU6en;js1Fx}@p5@GDNZqm8+Wum0Z9JZ(g^|% zHP)b&@_c)Q<~QAal1Jy|X@}L3y>9{Co{{(7Lj7r`{3pyedO{Yopn|*Xxf+0RD<%C* zcU0|!Ubkhtv6^41+F03#R!^JFDQ32$)W(J&RAK4OzP>16OHC<<;LmZYFITms7NYWk z{^wf_hp6 z%*fsHgIucbuX5w$4nQaCwkc)0b;MSTZ5<7qj7ujq<8iw!$Yag5Xpt9qT1PeK7z-H5`ABSTs@p(d3 z4>ylCs9uzbrWz{QYjtSJUcQ({Hflr3h1L_(2;;*DwY#+*;k=q!AnS4zfBdxPzkVi= zkmoTuOlfMVd_A%r?<}w)3&)3=;l&mXUv}V$*~%Bw}Uo5lRTtR zUb2;}q^O2>)!!$#j(c1oQ}QV_wvsyrVnV<1h8tOJ?EM&uXHa2ht_P*-Hma9k(`f)6@KDuBW-<>I8d+`;iy+kzB+gP&l@F>s zK0o(jS#%r4(rPJhquw2@HYPoK{5|1@HN?EYn!H7<>_^Gqlu%asH$vK8lBu1jnSH^H zr6Z5*L`im`Wj!qJM2+LrGKB(JAZ@Xh>JN`7PjrGQzF#^!({t?%^Uuyb`a~@)r+x|; zi#N?Z!iC7lKb03cQ)c)9Zo*+SBdJJ6bf$(9S7c4GO-pmpKap?TPE+X<*`^ESLH_=| z3$%N~hzwL}ty`C`bfGqPudtNuVkPkxv9gUZc&ij^vX0%UaJjEhXw>2alvI3GPT5-g zME36bm#jd8ZgC2`lYH7jL#l?n+?9s74I?3dbA6C-0i+z%jUKOOpJ(KOp?lcp z9p&Y2bXS{aj5+Z^K|dpM?%~LCHJ}%2nF0%!@SyOV$)fJm={kmTs=Lyp6+@|9A1nLz zpfo#d8x^X5doEh8=mB3AT%|p1#$p~LWaVwQboKOQESpIsO=FF>-7p7R4(X{F%VRyk zSZZWv%jbGh^Ymve`LP+1ISqNUPGBDHw$*B-PRl=fQaYGPqh2tB%4OeP)Yf(&frTK6 zZH*J?DlDZzY0d&_LRl|mOTztsuE zYT71_Kow%N#6s+o_uk>dlwz6l8VmI59XDc1M#67(`xP>^52YH^2I4m|dX<}1W%SAs zcnY@kL?0miLHT+g==iJU7kvQhB^lb6dSNnm^~I?Hizo3S@Ns@<6JU_s$7_n4Sh=v6 zkJ5A)Mw?9qS~;&48?pG3ng7bEux8Gy#f7XIh+LpUEzRaxypb3j3^4?1Iv%=g2o}qP ze$+VF>SDg^-H#HxTku(Yjk7l^d7W9U=e{kVEZ&B$t8+oaLV+m8lJAwf`cWIWx4%KR z_H8mXy=JvC;$?P!O+Dj{ zwL*)H>g3%;)SI&se8{~@uDOd68=Da$q{nf#l6_uq1=lf-+y$uPfvZ=_Pw%4P)ranI zM}{~&bWu`7!$x}Jl(dMpJ#L>{zh$RkJ^~NQ>rD(oOW-XV28G|g zv0UyQM*YIo4d@63UST8*9U@<9CelM4n!2T2MF{U0PLITzM>L^B;byebVyqvgvqOF~ zoLaY0NQ{Y8a%d2@7~rdi(`wxn<_r%jc8tf@t-yUIU*KNT~ zhmKTkrR5{3I$cRQTaf4qv3GGK_URcJHj28%*GME(e9y_oT&AN$KmS6E%gj*ab_e9L zQG`q;d1#c1PgIUl@reebec}^1{%FQ04C|KLDf8AV9~`YL(7B@_uF7Th8j6lp(3sQ5 zRSLj;RlRC74X~3971&T;dBN})e{nT}B`6qD)o8bzHilYLh1@m<0)K@(HU^TqQeGKD zje@Nh-C|jPEF})N+Jcd>{%o|jr3fdXU+0B2G0ft7HGH_XRcI-mt1w7{!9}nb*XJb3 zlVjoY-Y@B1`k!Vc$;a+RL}iOCxtF4w8VI4(!*jNJs21Z*-bS@h=Ik!ZllRgsZA}zX z%NU#w+)VHUsSg_m&ng_mGGB*-?eFt339$obWWjxuo#kT^KH_5%au0?{XcCpNf?vyj z-A8wFnuh0oY8%UP2*TY|ZPiSWz$Yi)PwlS5@4fdcWiMot`lvr%scE_6sTI_;2gbvdQZAn#Z)<4ef`%q+vr)~!qzRa8aHji*jI%o-E*U$K+_tW@SY}OxDfy(leInfvY-?2VnTeEIXpLbg zSh%tq_J{HcAoy!wpTac*VNG09KeT_TYWBffp6F>#cf!#sD;iUS;?+t(r(?657lpqD zx38{TLoKq`$%G3@Ipzr<_zF5>&0NYJoiT|rjJv?tYtMEA6i;lU`lD*RHVHaf@D%81 zfs<*KuhEKKc31SfuWe2ST8N>VN*CZpzs{76rqMVkU(2S^ zLl`J%I`v4g2Er)GLl4sA1i2Kl z7CD3_-N0AC?~7p`_^a&s5asq$!7H_0J$cWpOkjLfnnx$gyk>Y=fwegz$kCX^bsX{C zhbYsyVhI(n8n&uZt)(wDmpyyF*uwn<(kK+L!KqQ)o?hzrgEnNnqe!mz-21X zoZdi{C4sn|36}DO!(;6IJG|j-A6L3a&&R2onJ}R|&Q6;P+dZPSPr^jSeVM8t@Yxx|Ux+|^z=X$IwEF*3c6k{%o3Qr;5I7l5&kk1w(7==WLVEJJo z-Bwu1NWgsG!8exPEboCUaV!Sb9=qT&9T{+hLs#M~1Dhq*;BvnG`FPA~Vs+K5FrKKL z?j*Mqk(O$JWQ4b>(<>MR&^zd}i0unLBnJ0&)0wao*UD#S(#8hs3~!Ql4a<98P0JaY z-&%WjnZXIDIT;=7kTi#yM;MoiIT?qYeBa{|dD|S)>X{(%kqI0LQLw1T z%jMH^a4Kr8OnQPgT*nknJV9LzPm{Ww-SFUFo=Xw3%UnXLw7hdJg4##qthv-N(ZEOJ z$gJ(iQXvNz1P7i15&mH`a?PXsTEXqR=TRR-LueuOlE2KOI&c~V;oP8!x7FkkdzoeHG<(tN`8#!oJwF1{xofJ}$1J2)tksWdxgu2JGFp2-go5 zFP5J#qJa^nMy9P*cN(>Zhqu>as&5CFcn5u~3GUsnCXBv!NPRJNxDGul7gzg(N4y_v zpy#M1u$?WT5hfSA5bNEtgm9Ke{$q)c_)M4q@qi4#=?R z(12bgD`>FS=QxZ44^5c#eoz7hxuIKR@Jf2Tng2lA3liNrN}xj42J) z`e=?f<^+e7{>aBqjdfVyC!BK02uhaWk|H1?y%M{$N%oS^?cR`&OOV77c|y`Hp2OxK zXIUR%r6QT#ZAe5>$F-5QXlMzU<)Ya5x9Vs*HI<% z1?$TGs|auY;OJ?*R03o7Dy4wEu}b-=uC4N+MCI^7Oc|8eZ?*DMJ-nJ~9juebS1SwV zx7C(ID!~t@0}smXPf>>)i`-RD*YGMgR>M?}Y70#rQR#;#)gJLPC6qV`qv|QkK~+t* zD&NtlHDnFpn5j9(q0sn*+ypZ3Y1 zu-#GI&;On~%0LrS@F;0i^Wh81UK%s$3L7g_!( zMSv>hkP{NJEuSc+j2*%vBLm&gw-_%?F5`1pL*D-^Wcg4)&ZEl**U`d-3YoSV7u;RRGK=r{9=uciXsq|#QPV*<3H5*QI zKRC^^9ILsYt%KDOPl1MmmDZ6HTqA7+5ODC4Tdv`X$^P8d51JYu&0VXC0{9IZj$poi zST&c+*HP1Eb{Hbsi=aWeaBJ(hw)Tymamj|ldHa-$ytEE0_J&MaPZts`Mgaa~G6H`v zf)HGV;NC2gHc)q*4Z42=c)?M*aswiE|B~-*@O9`{DVjlRd!b8?V`z7k?6i@*9kwVw z0}qqAf7Lt5mme5Uah<*qA<{54GZw7G(HXg6BX!7La{(Rl>o)8={$2R$f)ARNaejrb zN3A+qBY**?K*V!Y7(m;~mu-b>nm#Ho+eTL@X~i{$%epI`+XQ+-v}<2*>BsWFcF=;r zOXiP(FH&w>`-OVA+D$q0h_M(-GMZ}aeb~Xn!v_W_f&KBVE|0uO(`kcjUq&ggzDJhP z651}S%HZw$t-SF|^o3Bb2&^ZY?1JU@f$X#k(tVd)w;K+f!d>(%DmVBCSC)7EgD&7e zQ-|F&%BYZ+TjRZcp?KFSX_wx@Byh)s@#=+6c;8etL?Ta9Z$6fB<s~NulrP=$ z8}EKqy8cP;gACL6BG=!!7pz)+zY8C;_EHr-rtPCs^k1^ee)42i8C&Y&Q)ztFp;I$U zqEUit-T2KXpu|Lc6n!RF><8q#*I%fST1a z7NRcJM!gFHt#6E*esHz6##RstgN6nK{VSA(IbI}4V;rrUZp>cvP9YCH5wVb>!h(`Z_1Zm zqo~4t>ZhOkO-8BsP?3jCt#GLKTH(e*^)Rr;!y@CQSBU7ThjnT`6lTk{Z}TV#)SE7;I1`IsoqAWQIg1ahT zI7%SMpKIW0U+CJ6T97#LIzqAJ0C8JbMJ_ZNQA-VHd zZCruVNMTX^<20})7Fkb#MR9WNaq_Q)O2G7LR62N^`iT`^A_28!gn8em*Fa`%&A;W~ zx5$HgMjm|&KwOgh-ol}W&GPHFs83+I!suNx{{;0BtG3G(Cm+xb(dv~s%)JWb=xK@Z4BPXqrC%0s7(!G1bTQ_-O;c$e0LcZ9tMH(!Np`5s`e zkarp%54}fT{3?BqnAz-o54Ki?yzm|k!^drBz!WRwxHI4-6>^F3Yu6d%4p+#av+7y1 zv+zMw$cN8D@vD%}pQY@9RcZwiwMB}RoBM}z}GzI-V;0QFV(@}D15ZdZ0Y;LQ+KsHHX4iofO0 z!=xSij=#L>bbq37gZPRP(w6+hrRmzo>hoEl{eG1TUKH+6xwEtgB zurJhW*C%u|YAw&ueUfK`Wp;tbtd(DWLigK(uS8WSlOrnWA1%*aMs3)45bwC;hmSD& zvsl8-gx&z-I$Oi|V{CC~zvFDA`{VL%=V^lw7p}-<7a)S7E+FS&v+R5UjAx@PxqxWI zW_kJo^%8T;8eKo5M!6;}V;cjsv)}l@Xx*BNt}X7y7>n)Z!Q`gTz&B6Gw?Cu$VJrTP zcGfG8swvdGuS6idC0PBG)yiJ5YdG-C36go(mQ!4QqmT{Yvw)l%A4lA)+z0t zYjoX&JCc_hiT!~Wjk@KSM#q|yDsS6Z;BCX^3h+GJ@XB=UV3b%>$-E9I)w>$cViq}C zL^lYG48V3(1~dhlyd@ho6&=TY&YO=+1nhoDK`IpOBBbTOZ1`WNV0ogc$O*s5!?Dr@ zQ77DA%IHjy2F1EfCa%ysB!^{+)NG$Olb+)&I`?zR8V6W#5}6P>LSvMI2S3qK`EsU6 z53ath11Won@=xx!N~Sdvccm^@I5n!^tD+&mL&!US8anjr*i&2$`b7|N|b*)QCl+`#TH$90-^4CLtxh6PFB1D z7+!~CGCy04OWVefxIgAKP}*P+E{tRW30dnwHa$`g#$!GwvqgLQR@P}QV!M3L<3St2 zbr8RpU*Vnq&HRc$@bBhVgf{;)zrsK9v+X^(3t`RDr>qWY z`)MI?aiKw3a}i^|-}@YQ2W#MTbI~&TDB}p+-&j6tHLl3STSR=|8e@90{Vn3G__0WK z+)cO3p)EuRoJse$5Y6aKDO&*bq}=(%%OaxB+y@xr{$3`v65RrSQ2F5g*8UW?LT5|3c@z0|E0IcjJ;TN6HN7 z?}mfHE<9@%&dm|`;*jlSC@%D}oRkaJ{DEAUE3%MevNu;eMYH6f)}jf`ma|)nQ+Lgo zZQ!qoeNfhBT~{*OEHU3u4Rk|-R6(-8$FD2U&R_XkaSgGFI+gQOXhgnvE133f`Sz`1 zVVd>q>Jz?U6Mw$>1Nt5;IRtad<;*ssAr9)|eaUiv8w4+A%QxGIThPZJZAA0%GS$CV zTVeL!p{+>CdxAmZ`~ho((_G6!T)T9m(Z)2pt+@uc=g4(!v5mXs$+n_{5l@8*4Z9Lb z=s#srJApTT$}a7&jeFE)7Pw=#aAqHL0nYeF~4?)g}{qw>*w(d!oF2xZNJ{hA;oxKlmG z3*b5EzO2pjFdBOgJQBp z?!8UiNxF>aB$BZ}Ejxj+&6m?UiJpygUQ-WJ#b7dmrtBA{_~XUm+^2b}U4Gt4WCkf1 zLqn(O%OYcBc4rafTFnFIKaLA{aUp7_&N%#wnA@kFMNjxIvu+o?Fv-Vn7k6}7A<tdPjv%keIq~UA?nLh-9)A_ayw(tSUI3O6rs1|`0gSR{H3_N$V&Rz9LpaJ zg5TYRZck$FE_TIVm8ZLl)OtUdRXF_(d27lQo#`0hE|n2IL@ronw;rNVy&r3>3fQL! z;QSudt8$=+S``4;!&;SFdxBuqs>I5+eE}dYx#}sJil1l6qP`*~zy#&}p5UoJ;M|g0 zr`TR<a+8gfo>i;+U-40vbtT(oLgQB+3|7O+K^;WBnt*$TM?+v2H ze%}FZZBEKu^&xkN#NZE9hwwnl66^(1Sf#u}wD8_^iLKqinK#Il_B}+fGr+A@yuN`K zzZ?9(hVZ7#9w?vbBcctAtS{g0V}Qw+>gsEurLh6^Usrv?Kh8*Co%CQV2W9}`Nqt3& z>Ydoz7nJ>-#7-ooC<&={{cJKzzxomR%(2|l|;=G-Z|h()Vp;hj*GPRjjviXCFk zO!;jY;;+BSO#?yL=jG9XqFK1{3Y}0Fm>v$59hZTFL~_J>#RoA6mX=4_F53(eErJ(u zltOc1n1=>|cl;pt4H6x)E-)U0Q6mkjjFEz0T>z3r!=Pk!vQ*%1TCG&IMd(Oo3>F>2 ztVR`x=a$LogT+9PU4sV?gUW|yMtBLk?T3b64Hhk0Y@ zHhV){XpYc#^vTWNw$-h1Lqwg%*GkdMy~g17D#Fiy{A>whE7F=AnJK)HJ}UPdzT(>b zoSb;K$P6#rz{7jBQvSp|w%jecrB!Y;3NQSo3Js{VTBS1X9&vYC1y|8hwT(Bdy22=x zrT2)f;gxErL~V{)*l(zq1Rw9KLxGeP^2$)ivI-e7Oe8m`D8>pEWI5PB%0kQ<`P}aY zko|^<;U3>gtfGW;LrSL5X5h*tjizfA^6g<@V-+%ZxJYW^TN#xegVhf;jRSqvyk)d4KI0)=hZ+vd(9Z~rQtyF3VCX{xEmi?BSdVJHJ^({6<#How;0@NTlv%xBAX1X zO^^phip#jVaN8(xZ;}yG1g2L*$h z9p>bdV5?t~-`^|p#ftqh_dbzNAIiVo2RrElx$-{j)j4_SK9Lw%#!WZ~r{cJ1cv^mQ zpJmz%x}wVGZQ}l2W_gTy1q=71 ztMaHq^Fg#akID}=84t|zC>&`pI(kKw*D=c@alXMQf1^fu1m9<+27XtSTLZh*8GP>l ze2w~r;e1<W2o8=+6^cCfW=;)ey(9(Pm%!!SvLD^;=ps86N#P@Eh@^h*@)huWG)hI7|f$Li< z6u>5ds=q{)TNCi-fP^Yvhw`>?``XzIcSd#jytAYU0T5(Bp}0*8*_^MDER z=kX#P>b+-zXai=ff0COhADJLri3Y|amZmBrd=ELK{vh5Y*G>?V!7(BpfN4-6^Bxe5 z)2bHm=w7XoKW)p*dX2qVDwjSWx}(Jh4~XoV3=w{ST0O{&iK1nmo-8`_t=0E`gyS#4EZ>-XlR4L3 zi1PMR1W{P!CUA1j-}ZzdYTRS07#42Hl`3ZT5Po~6ivOpvYk{umO2g;=C-ICpsaF)~ zy-7S0Z`#D8Bo{@g*Nm#sR)t&<;wH^QJ<1ItMLnbSH$#;QY1bIlRnyz)sENl=@fbx= zjKK^N3>iYZG;2EFf6v+1l`*qsWqsM_`}f}eew_XM&%WoxJyr4@h&>eVI*M#C4Z)q? zuFax+|D0H2hP4WyG#s}y{3eUq`PE*sgjcfYpnvwum25~_*%UkM+`mBNA)tENcR>X5 zv@fV%!s245ji7E$K#1x6Y45UW#=3^(pt?*J4~U zfb~ShKW+-WMKdUg{L+m-o4Id1i=Wp>!TKTxt zT72Z13ThO>_?n@f?6RLlP4bANBA%?mIZRPu=h_@vSiPG3k#*pYp=kUI9b@3Tk-%R6yR<7BYBOu)2h28(&q zv}p!QgEnoNG6^_;=D0kHdOE;LIRcjBV7!v=P1AbGS$Wu<-s2DQsI%X=x65aU+`*^w zut}}tphYxPPA`mFgl?@$Z<%a)_aaL4TP}n1X;N*=N-Hg4-hY@ttMh4DQ}gBp;bW%u zAQ{c^F9>&I!#gys_IJCazG%&;$&ERBF}3iV^a=1<3^~~6Gocu#)uwuQ(F-xd-?F$m$_@1XNp$YhgDIZ+| z1Kba5Lb`^tv6NbMQDu-G5?BVON?3D#7?>)*zLZ+juJ+}s7OJZe7c8Zg9sjGE1>Z=; zB6FgDgQ{4$zth3v= z&vI<4xAC~;7-G(G;c^;{C-8h{IUZc?=hs$HYaX(K!tm4(*UlGxU-pfZM+x}c*ion> zY(6o7;pJqoCQIwsC{p}(O_+S{*W@6w-}QMRDt5ltR#0T~TXFzU*5uYf2YiB90xmns zj+N9X()U$k5%@k>jF+F_Qy}uuU{QlVDCaRNF>i0;g)6a%ImbI!(x|%ozl6V>WZ=+M zG`Wejjls`N1Y5*oR+BT_RHIf(BWz@yYQ*mz z&MQMhVL*a-ebu>t)|hfcN~&@wsdY3_t8Y+lRBJ7Oetp<(8&}P z^i*kJ(2c^d_Ih0Uzr$7?d6I@aQ!j5{Lrr@qwfh4Tvr8MPABp>kt2%f%hlg&LtgKq; zd#l&bTegNunro)S3*M(MMk(R(!-2`GtX}#*q)J1j8J6?c%Id_*L5V5!ezTT#hlH*? zN;b`zn_HsQ&pS%&te}@TV=Fc0ip^w%74|c<@tUR;25DNPxLmJ@{=ip@=w}P?2}VnY035p8s1~z^RMz4nhpM`?iopGsmb;< zmpdhUie0O&5kEO6BQ14OQnt&lLDO22p@ku?($N9e$Q4jqlLKJdRX(xafnBuANaPD7B-NG6VH?+wRH_ z+L|{Q+se=k2-gA8eC!$?B#q^WJ@iW04fs3-sc4D-ZgBn{YU@zqmJl@%u@&qY#rfDC z>TSEh_4d+9+hD%97iQQS{9rG|bRIp$Wlzs=WhP~(rn~KvlHB%*5V+H3*;C!A*{P_T zWc$QfcF5B+lP0Bc#6IlMZ}5%rwq`zV&P_EVhS zE6!nPAQ5lO1JfQX|~yAof<_2Vv$L>m75DJ|cv8aEM;1d#a6jtH0tgrP$&P;Ju}==w$H2 zQq=XKwuUCTdkK&md&oQSFl;lPkQf8U@-=ObC0G0*xa3Z8n@tl7h@Za+9v#4EfWH#J z7uE>x0uR(T6dYZ{n|PF*!C~c{46PGle+mQx$AhTU>LU^)*^P`pzG>P}`WQ#=h^ zilq48z=sF$JK#fnN;6MVcM9*q#V4tgxMxnnY6G{$DY{}?#s4~mG=In4%3y6j-qp~a zMx^j{(sng%?OL-Bu4Q)_y;`?JH?caRI{8Ey4GmiWD&Y#?HiP>qcREc`F-m;I^1c99 za{8&|D&>Vd`!tQP_2<&lXpa5)0hl8PIcR~vcTpkI^c8;&8YE{qJoyauj}3X&>_ic8 zBO%UAa;LcLE_X6oe6nk%eI(?PwTNf=;s zy4R})l|-68$Lr2wlJ4O>b{5uZXIh-$%gjJzO1f?!Zx_IO*1{kWz*7|GxN{WW{4&&p z!ut+f8IA72l}uJ~{y7@th>kZ0#LjTrK>RY?I&fcy3q=Ta`y7TH6>J&AQlu)5I1fAb zF79`p;={@zZ4IduLt1XRcju7wHeEK?W{o4b~T3%{r+xxJBey~ySV7_;g^2MEVi++J|;@B;`n4W@$@ST6q$M_^;!EM@%0~~R8 za8RrRU%Nv$!zy1gv{#`!4?q^RO1@G_DYnHt<+W8PI>dym=&KR?pYnseU@8X>h^hg(%q zh;0JLR?!(-A1~dIr1wTR%m;tFgUj*;h52$;r!#>y0CL&B%K;(+ch$P+H&Y=!H!Di>-4m~TZ3ZW-K zDszt1a}}Qu@yvOqSUQ13n#p4#^{k|7h^6*Lmvkq^r{LNVz^CF`hF9gEjcXZF6qo$T z+@ko)xb~HSW25wV&rPg9gsL?}syo}2;>xs7fUHjL<9?IV(lPg95tEUQVD<^o@b~p> zYYj7LN)jgCY+vjF@RN0q(wmi?DKWJPkjvzI8F5e%9xVrRw;gMr92bfXPpO>|8NMmr zCtU`aOvP^3TiLTRTy`kRnS?@agk0(+%k^fC%RR~U6}VL4^rQ^!TU_h7cDZw=pTe~a zLsmMOsY&kaOOTm58=6XIB>CjHCGKdwS@V$jhVKrUX(4x}FP1nPqV*J80@rG-{}NmN zajo_4RA&LNY^{&6b>VBR@zbDN{BavSrR%7L7*~*ND8{tLa09vAKE+A-bFa4g8@5Z{ zU$@me+o;YWKHN@UVO!1PV)S&vh<-RmUy6BbOst*|wkqH3&+9S%$jw{DTVwV3u1eez z6^t=lQ+z$j9~HniD$b$p^+EnTQ6v0a@Yn$V2jCrKLQ@fBkd|U5@|d1_I(`{*pr@YTs7Cgr z(49~O8N3vCfF}y~w&|tMv3bha&?bOyf|dxliWh;)q^S5OHTVJWMgjhR2Jaid4}(j( zDt;MwuK-Twt?uU!5CTE(fB8D49l|w4S$UA`4Ub%N(KRrSBBx4Pg4J-l}Cx8AGJv_j zVqp0ugD*Ms{(N(g9$`!5dV}@$aN-8*@o?OO(d`q9%r?3m^)LN9k#`T)r#X|ipejK( ppvlOVQ}O1w Date: Thu, 25 Jan 2024 19:22:29 +0200 Subject: [PATCH 11/13] test: add test for batched defer with production size of batch (#58) --- Cargo.lock | 406 ++++++++++++++--------- Cargo.toml | 9 +- Makefile | 3 + {defer-stub => exploit-stub}/Cargo.toml | 2 +- {defer-stub => exploit-stub}/src/lib.rs | 0 integration-tests/src/callback_attack.rs | 3 +- integration-tests/src/defer.rs | 37 ++- integration-tests/src/lib.rs | 2 +- integration-tests/src/prepare.rs | 78 ++++- model/src/lib.rs | 5 + res/defer_stub.wasm | Bin 101921 -> 0 bytes res/exploit_stub.wasm | Bin 0 -> 101355 bytes res/sweat.wasm | Bin 215533 -> 221082 bytes res/sweat_claim.wasm | Bin 0 -> 216340 bytes scripts/build-integration.sh | 9 + scripts/build-stub.sh | 4 +- sweat-integration/src/lib.rs | 14 +- sweat/Cargo.toml | 4 + sweat/src/integration.rs | 32 ++ sweat/src/lib.rs | 1 + 20 files changed, 424 insertions(+), 185 deletions(-) rename {defer-stub => exploit-stub}/Cargo.toml (87%) rename {defer-stub => exploit-stub}/src/lib.rs (100%) delete mode 100755 res/defer_stub.wasm create mode 100755 res/exploit_stub.wasm create mode 100755 res/sweat_claim.wasm create mode 100755 scripts/build-integration.sh create mode 100644 sweat/src/integration.rs diff --git a/Cargo.lock b/Cargo.lock index f41eea1..0608108 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -209,6 +209,12 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + [[package]] name = "async-stream" version = "0.3.5" @@ -388,11 +394,11 @@ dependencies = [ [[package]] name = "borsh" -version = "1.1.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e3f7359eeed8d454c38bbb25eb89d98b888b1060bbfeed2cda71cb013ff2dc2" +checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" dependencies = [ - "borsh-derive 1.1.1", + "borsh-derive 1.3.1", "cfg_aliases", ] @@ -424,12 +430,12 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.1.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "318d18ba283f9aa5bfef1405996ce66c584127f401be1403729ec88b10adc772" +checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" dependencies = [ "once_cell", - "proc-macro-crate 1.3.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.38", @@ -886,6 +892,35 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rand_core 0.6.4", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "darling" version = "0.20.3" @@ -930,13 +965,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "defer-stub" -version = "0.1.0" -dependencies = [ - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", -] - [[package]] name = "deranged" version = "0.3.9" @@ -1048,7 +1076,16 @@ version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "signature", + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature 2.2.0", ] [[package]] @@ -1057,14 +1094,27 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ - "curve25519-dalek", - "ed25519", + "curve25519-dalek 3.2.1", + "ed25519 1.5.3", "rand 0.7.3", "serde", "sha2 0.9.9", "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.3", + "rand_core 0.6.4", + "sha2 0.10.8", + "subtle", +] + [[package]] name = "either" version = "1.9.0" @@ -1139,6 +1189,13 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "exploit-stub" +version = "0.1.0" +dependencies = [ + "near-sdk", +] + [[package]] name = "fake" version = "2.9.1" @@ -1161,6 +1218,12 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +[[package]] +name = "fiat-crypto" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" + [[package]] name = "filetime" version = "0.2.22" @@ -1696,7 +1759,7 @@ dependencies = [ "integration-utils", "maplit", "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sdk", "near-units", "near-workspaces", "pkg-config", @@ -1710,7 +1773,7 @@ dependencies = [ [[package]] name = "integration-trait" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=2c3512ffba1540271a6b09ed266961173fce15c8#2c3512ffba1540271a6b09ed266961173fce15c8" +source = "git+https://github.com/sweatco/integration-utils.git?rev=c30efebede6a3e40111c3be95e89564fe2698db1#c30efebede6a3e40111c3be95e89564fe2698db1" dependencies = [ "proc-macro2", "quote", @@ -1720,14 +1783,14 @@ dependencies = [ [[package]] name = "integration-utils" version = "0.1.0" -source = "git+https://github.com/sweatco/integration-utils.git?rev=2c3512ffba1540271a6b09ed266961173fce15c8#2c3512ffba1540271a6b09ed266961173fce15c8" +source = "git+https://github.com/sweatco/integration-utils.git?rev=c30efebede6a3e40111c3be95e89564fe2698db1#c30efebede6a3e40111c3be95e89564fe2698db1" dependencies = [ "anyhow", "async-trait", "dotenv", "fake", "futures", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sdk", "near-units", "near-workspaces", "tokio", @@ -1908,6 +1971,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + [[package]] name = "memory_units" version = "0.4.0" @@ -1994,27 +2066,28 @@ dependencies = [ [[package]] name = "near-account-id" -version = "0.17.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0cb40869cab7f5232f934f45db35bffe0f2d2a7cb0cd0346202fbe4ebf2dd7" +checksum = "35cbb989542587b47205e608324ddd391f0cee1c22b4b64ae49f458334b95907" dependencies = [ - "borsh 0.10.3", + "borsh 1.3.1", "serde", ] [[package]] name = "near-chain-configs" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f9a1c805846237d56f99b328ba6ab77e5d43ef59aaaf8d2a41d42fdc708a7b" +checksum = "d05e5a8ace81c09d7eb165dffc1742358a021b2fa761f2160943305f83216003" dependencies = [ "anyhow", + "bytesize", "chrono", "derive_more", "near-config-utils", - "near-crypto 0.17.0", - "near-o11y", - "near-primitives 0.17.0", + "near-crypto 0.20.1", + "near-parameters", + "near-primitives 0.20.1", "num-rational", "once_cell", "serde", @@ -2026,9 +2099,9 @@ dependencies = [ [[package]] name = "near-config-utils" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5523e7dce493c45bc3241eb3100d943ec471852f9b1f84b46a34789eadf17031" +checksum = "2ae1eaab1d545a9be7a55b6ef09f365c2017f93a03063547591d12c0c6d27e58" dependencies = [ "anyhow", "json_comments", @@ -2041,7 +2114,7 @@ name = "near-contract-standards" version = "4.1.1" source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" dependencies = [ - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sdk", "schemars", "serde", "serde_json", @@ -2058,9 +2131,9 @@ dependencies = [ "borsh 0.9.3", "bs58 0.4.0", "c2-chacha", - "curve25519-dalek", + "curve25519-dalek 3.2.1", "derive_more", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "near-account-id 0.14.0", "once_cell", "parity-secp256k1", @@ -2075,19 +2148,19 @@ dependencies = [ [[package]] name = "near-crypto" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6b382b626e7e0cd372d027c6672ac97b4b6ee6114288c9e58d8180b935d315" +checksum = "2991d2912218a80ec0733ac87f84fa803accea105611eea209d4419271957667" dependencies = [ "blake2", - "borsh 0.10.3", + "borsh 1.3.1", "bs58 0.4.0", "c2-chacha", - "curve25519-dalek", + "curve25519-dalek 4.1.1", "derive_more", - "ed25519-dalek", + "ed25519-dalek 2.1.0", "hex", - "near-account-id 0.17.0", + "near-account-id 1.0.0", "near-config-utils", "near-stdx", "once_cell", @@ -2102,37 +2175,37 @@ dependencies = [ [[package]] name = "near-fmt" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44c842c6cfcd9b8c387cccd4cd0619a5f21920cde5d5c292af3cc5d40510672" +checksum = "b7d998dfc1e04001608899b2498ad5a782c7d036b73769d510de21964db99286" dependencies = [ - "near-primitives-core 0.17.0", + "near-primitives-core 0.20.1", ] [[package]] name = "near-gas" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b30860db1eceba9b445dc56558a0fdcdfe29fd612a088e697b32dfb681aaac" +checksum = "14e75c875026229902d065e4435804497337b631ec69ba746b102954273e9ad1" dependencies = [ - "borsh 1.1.1", + "borsh 1.3.1", "schemars", "serde", ] [[package]] name = "near-jsonrpc-client" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "118f44c02ad211db805c1370ad3ff26576af6ff554093c9fece1b835d29d233a" +checksum = "18ad81e015f7aced8925d5b9ba3f369b36da9575c15812cfd0786bc1213284ca" dependencies = [ - "borsh 0.10.3", + "borsh 1.3.1", "lazy_static", "log", "near-chain-configs", - "near-crypto 0.17.0", + "near-crypto 0.20.1", "near-jsonrpc-primitives", - "near-primitives 0.17.0", + "near-primitives 0.20.1", "reqwest", "serde", "serde_json", @@ -2141,15 +2214,15 @@ dependencies = [ [[package]] name = "near-jsonrpc-primitives" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b2934b5ab243e25e951c984525ba0aff0e719ed915c988c5195405aa0f6987" +checksum = "b0ce745e954ae776eef05957602e638ee9581106a3675946fb43c2fe7e38ef03" dependencies = [ "arbitrary", "near-chain-configs", - "near-crypto 0.17.0", - "near-primitives 0.17.0", - "near-rpc-error-macro 0.17.0", + "near-crypto 0.20.1", + "near-primitives 0.20.1", + "near-rpc-error-macro 0.20.1", "serde", "serde_json", "thiserror", @@ -2157,21 +2230,23 @@ dependencies = [ [[package]] name = "near-o11y" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7d35397b02b131c188c72f3885e97daeccab134ec2fc8cc0073a94cf1cfe19" +checksum = "d20762631bc8253030013bbae9b5f0542691edc1aa6722f1e8141cc9b928ae5b" dependencies = [ "actix", - "atty", + "base64 0.21.5", "clap 4.4.7", - "near-crypto 0.17.0", - "near-primitives-core 0.17.0", + "near-crypto 0.20.1", + "near-fmt", + "near-primitives-core 0.20.1", "once_cell", "opentelemetry", "opentelemetry-otlp", "opentelemetry-semantic-conventions", "prometheus", "serde", + "serde_json", "strum", "thiserror", "tokio", @@ -2181,6 +2256,25 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "near-parameters" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f16a59b6c3e69b0585be951af6fe42a0ba86c0e207cb8c63badd19efd16680" +dependencies = [ + "assert_matches", + "borsh 1.3.1", + "enum-map", + "near-account-id 1.0.0", + "near-primitives-core 0.20.1", + "num-rational", + "serde", + "serde_repr", + "serde_yaml", + "strum", + "thiserror", +] + [[package]] name = "near-primitives" version = "0.14.0" @@ -2197,7 +2291,7 @@ dependencies = [ "near-crypto 0.14.0", "near-primitives-core 0.14.0", "near-rpc-error-macro 0.14.0", - "near-vm-errors 0.14.0", + "near-vm-errors", "num-rational", "once_cell", "primitive-types", @@ -2212,12 +2306,13 @@ dependencies = [ [[package]] name = "near-primitives" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f7051aaf199adc4d068620fca6d5f70f906a1540d03a8bb3701271f8881835" +checksum = "0462b067732132babcc89d5577db3bfcb0a1bcfbaaed3f2db4c11cd033666314" dependencies = [ "arbitrary", - "borsh 0.10.3", + "base64 0.21.5", + "borsh 1.3.1", "bytesize", "cfg-if 1.0.0", "chrono", @@ -2225,21 +2320,25 @@ dependencies = [ "easy-ext", "enum-map", "hex", - "near-crypto 0.17.0", + "near-crypto 0.20.1", "near-fmt", - "near-primitives-core 0.17.0", - "near-rpc-error-macro 0.17.0", + "near-o11y", + "near-parameters", + "near-primitives-core 0.20.1", + "near-rpc-error-macro 0.20.1", "near-stdx", - "near-vm-errors 0.17.0", + "near-vm-runner", "num-rational", "once_cell", "primitive-types", "rand 0.8.5", + "rand_chacha 0.3.1", "reed-solomon-erasure", "serde", "serde_json", "serde_with", "serde_yaml", + "sha3", "smart-default", "strum", "thiserror", @@ -2266,17 +2365,17 @@ dependencies = [ [[package]] name = "near-primitives-core" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775fec19ef51a341abdbf792a9dda5b4cb89f488f681b2fd689b9321d24db47b" +checksum = "8443eb718606f572c438be6321a097a8ebd69f8e48d953885b4f16601af88225" dependencies = [ "arbitrary", "base64 0.21.5", - "borsh 0.10.3", + "borsh 1.3.1", "bs58 0.4.0", "derive_more", "enum-map", - "near-account-id 0.17.0", + "near-account-id 1.0.0", "num-rational", "serde", "serde_repr", @@ -2299,9 +2398,9 @@ dependencies = [ [[package]] name = "near-rpc-error-core" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c1eda300e2e78f4f945ae58117d49e806899f4a51ee2faa09eda5ebc2e6571" +checksum = "80fca203c51edd9595ec14db1d13359fb9ede32314990bf296b6c5c4502f6ab7" dependencies = [ "quote", "serde", @@ -2321,12 +2420,12 @@ dependencies = [ [[package]] name = "near-rpc-error-macro" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d2dadd765101c77e664029dd6fbec090e696877d4ae903c620d02ceda4969a" +checksum = "897a445de2102f6732c8a185d922f5e3bf7fd0a41243ce40854df2197237f799" dependencies = [ "fs2", - "near-rpc-error-core 0.17.0", + "near-rpc-error-core 0.20.1", "serde", "syn 2.0.38", ] @@ -2345,29 +2444,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "near-sdk" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15eb3de2defe3626260cc209a6cdb985c6b27b0bd4619fad97dcfae002c3c5bd" -dependencies = [ - "base64 0.13.1", - "borsh 0.9.3", - "bs58 0.4.0", - "near-abi", - "near-crypto 0.14.0", - "near-primitives 0.14.0", - "near-primitives-core 0.14.0", - "near-sdk-macros 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "near-sys 0.2.1", - "near-vm-logic", - "once_cell", - "schemars", - "serde", - "serde_json", - "wee_alloc", -] - [[package]] name = "near-sdk" version = "4.1.1" @@ -2380,8 +2456,8 @@ dependencies = [ "near-crypto 0.14.0", "near-primitives 0.14.0", "near-primitives-core 0.14.0", - "near-sdk-macros 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", - "near-sys 0.2.0", + "near-sdk-macros", + "near-sys", "near-vm-logic", "once_cell", "schemars", @@ -2390,18 +2466,6 @@ dependencies = [ "wee_alloc", ] -[[package]] -name = "near-sdk-macros" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4907affc9f5ed559456509188ff0024f1f2099c0830e6bdb66eb61d5b75912c0" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "near-sdk-macros" version = "4.1.1" @@ -2415,21 +2479,15 @@ dependencies = [ [[package]] name = "near-stdx" -version = "0.17.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6540152fba5e96fe5d575b79e8cd244cf2add747bb01362426bdc069bc3a23bc" +checksum = "855fd5540e3b4ff6fedf12aba2db1ee4b371b36f465da1363a6d022b27cb43b8" [[package]] name = "near-sys" version = "0.2.0" source = "git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd#8c48b26cc48d969c1e5f3162141fe9c824fccecd" -[[package]] -name = "near-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397688591acf8d3ebf2c2485ba32d4b24fc10aad5334e3ad8ec0b7179bfdf06b" - [[package]] name = "near-token" version = "0.2.0" @@ -2483,20 +2541,6 @@ dependencies = [ "serde", ] -[[package]] -name = "near-vm-errors" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec545d1bede0579e7c15dd2dce9b998dc975c52f2165702ff40bec7ff69728bb" -dependencies = [ - "borsh 0.10.3", - "near-account-id 0.17.0", - "near-rpc-error-macro 0.17.0", - "serde", - "strum", - "thiserror", -] - [[package]] name = "near-vm-logic" version = "0.14.0" @@ -2511,37 +2555,65 @@ dependencies = [ "near-crypto 0.14.0", "near-primitives 0.14.0", "near-primitives-core 0.14.0", - "near-vm-errors 0.14.0", + "near-vm-errors", + "ripemd", + "serde", + "sha2 0.10.8", + "sha3", + "zeropool-bn", +] + +[[package]] +name = "near-vm-runner" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56c80bdb1954808f59bd36a9112377197b38d424991383bf05f52d0fe2e0da5" +dependencies = [ + "base64 0.21.5", + "borsh 1.3.1", + "ed25519-dalek 2.1.0", + "enum-map", + "memoffset", + "near-crypto 0.20.1", + "near-parameters", + "near-primitives-core 0.20.1", + "near-stdx", + "num-rational", + "once_cell", + "prefix-sum-vec", "ripemd", "serde", + "serde_repr", + "serde_with", "sha2 0.10.8", "sha3", + "strum", + "thiserror", + "tracing", "zeropool-bn", ] [[package]] name = "near-workspaces" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a14e772e49ba9644c06dad20f635b6463f74d378fa19822bfc35fef479c72e5" +checksum = "a3e597da87d0c1a722e23efb8c24ae42a0ad99a15f37101dad45c15defb051c1" dependencies = [ "async-trait", "base64 0.21.5", - "borsh 0.10.3", "bs58 0.5.0", "cargo-near", "chrono", "fs2", "json-patch", "libc", - "near-account-id 0.17.0", - "near-crypto 0.17.0", + "near-account-id 1.0.0", + "near-crypto 0.20.1", "near-gas", "near-jsonrpc-client", "near-jsonrpc-primitives", - "near-primitives 0.17.0", + "near-primitives 0.20.1", "near-sandbox-utils", - "near-sdk 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "near-token", "rand 0.8.5", "reqwest", @@ -2938,6 +3010,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +[[package]] +name = "platforms" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" + [[package]] name = "powerfmt" version = "0.2.0" @@ -2956,6 +3034,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +[[package]] +name = "prefix-sum-vec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa06bd51638b6e76ac9ba9b6afb4164fa647bd2916d722f2623fbb6d1ed8bdba" + [[package]] name = "primitive-types" version = "0.10.1" @@ -2983,7 +3067,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "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.0", ] [[package]] @@ -3701,6 +3794,12 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + [[package]] name = "siphasher" version = "0.3.11" @@ -3820,7 +3919,7 @@ name = "sweat" version = "0.1.0" dependencies = [ "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sdk", "static_assertions", "sweat-model", ] @@ -3833,7 +3932,7 @@ dependencies = [ "async-trait", "integration-utils", "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sdk", "near-units", "near-workspaces", "sweat-model", @@ -3848,7 +3947,7 @@ dependencies = [ "integration-trait", "integration-utils", "near-contract-standards", - "near-sdk 4.1.1 (git+https://github.com/sweatco/near-sdk-rs?rev=8c48b26cc48d969c1e5f3162141fe9c824fccecd)", + "near-sdk", ] [[package]] @@ -4193,6 +4292,17 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +dependencies = [ + "indexmap 2.0.2", + "toml_datetime", + "winnow", +] + [[package]] name = "tonic" version = "0.6.2" diff --git a/Cargo.toml b/Cargo.toml index 460c1fd..40396aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ "sweat", "sweat-integration", "integration-tests", - "defer-stub" + "exploit-stub" ] resolver = "2" @@ -15,12 +15,13 @@ anyhow = "1.0.75" async-trait = "0.1.74" near-units = "0.2.0" -near-workspaces = "0.9.0" +near-workspaces = "0.10.0" near-sdk = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } near-contract-standards = { git = "https://github.com/sweatco/near-sdk-rs", rev = "8c48b26cc48d969c1e5f3162141fe9c824fccecd" } -integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "2c3512ffba1540271a6b09ed266961173fce15c8" } -integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "2c3512ffba1540271a6b09ed266961173fce15c8" } + +integration-trait = { git = "https://github.com/sweatco/integration-utils.git", rev = "c30efebede6a3e40111c3be95e89564fe2698db1" } +integration-utils = { git = "https://github.com/sweatco/integration-utils.git", rev = "c30efebede6a3e40111c3be95e89564fe2698db1" } sweat-model = { path = "model" } sweat-integration = { path = "sweat-integration" } diff --git a/Makefile b/Makefile index 503e010..293c093 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,9 @@ install: ##@Miscellaneous Install dependencies build: ##@Build the contract locally. ./scripts/build.sh +build-integration: ##@Build contract for integration tests + ./scripts/build-integration.sh + build-in-docker: ##@Build reproducible artifact in Docker. ./scripts/build-in-docker.sh diff --git a/defer-stub/Cargo.toml b/exploit-stub/Cargo.toml similarity index 87% rename from defer-stub/Cargo.toml rename to exploit-stub/Cargo.toml index 5ff7f34..c2cc02d 100644 --- a/defer-stub/Cargo.toml +++ b/exploit-stub/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "defer-stub" +name = "exploit-stub" version = "0.1.0" authors = [] edition = "2021" diff --git a/defer-stub/src/lib.rs b/exploit-stub/src/lib.rs similarity index 100% rename from defer-stub/src/lib.rs rename to exploit-stub/src/lib.rs diff --git a/integration-tests/src/callback_attack.rs b/integration-tests/src/callback_attack.rs index 7ce18dd..4641253 100644 --- a/integration-tests/src/callback_attack.rs +++ b/integration-tests/src/callback_attack.rs @@ -21,7 +21,7 @@ async fn test_call_on_record_in_callback() -> anyhow::Result<()> { let target_amount = U128(1_000_000); let result = alice - .call(context.holding_contract().id(), "exploit_on_record") + .call(context.stub_contract().id(), "exploit_on_record") .args_json(json!({ "ft_account_id": ft_contract_id, "amount": target_amount, @@ -44,7 +44,6 @@ async fn test_call_on_record_directly() -> anyhow::Result<()> { let mut context = prepare_contract().await?; let alice = context.alice().await?; - let oracle = context.oracle().await?; let intruder_id = alice.to_near(); let result = context diff --git a/integration-tests/src/defer.rs b/integration-tests/src/defer.rs index 34b7321..ec031b0 100644 --- a/integration-tests/src/defer.rs +++ b/integration-tests/src/defer.rs @@ -1,24 +1,40 @@ #![cfg(test)] use integration_utils::misc::ToNear; -use near_sdk::json_types::U64; -use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration, SweatDeferIntegration}; +use sweat_model::{FungibleTokenCoreIntegration, IntegrationTestMethodsIntegration, SweatDeferIntegration}; use crate::prepare::{prepare_contract, IntegrationContext}; #[tokio::test] async fn test_defer() -> anyhow::Result<()> { + const BATCH_SIZE: u32 = 135; + const CLAIM_AMOUNT: u32 = 10_000; + let mut context = prepare_contract().await?; let oracle = context.oracle().await?; let alice = context.alice().await?; - let holding_account = context.holding_contract().as_account().to_near(); - let target_amount = context.ft_contract().formula(U64(0), 10_000).call().await?; - assert_ne!(0, target_amount.0); + let claim_contract_account = context.claim_contract().as_account().to_near(); + + let holder_balance = context + .ft_contract() + .ft_balance_of(claim_contract_account.clone()) + .call() + .await?; + + assert_eq!(holder_balance.0, 0); + + let (total_fee, total_for_user) = context + .ft_contract() + .calculate_payout_with_fee_for_batch(BATCH_SIZE, CLAIM_AMOUNT) + .call() + .await?; + + let batch: Vec<_> = (0..BATCH_SIZE).map(|_| (alice.to_near(), CLAIM_AMOUNT)).collect(); context .ft_contract() - .defer_batch(vec![(alice.to_near(), 10_000)], holding_account.clone()) + .defer_batch(batch, claim_contract_account.clone()) .with_user(&oracle) .call() .await?; @@ -26,15 +42,16 @@ async fn test_defer() -> anyhow::Result<()> { let alice_balance = context.ft_contract().ft_balance_of(alice.to_near()).call().await?; assert_eq!(0, alice_balance.0); - let holder_balance = context + let claim_contract_balance = context .ft_contract() - .ft_balance_of(holding_account.clone()) + .ft_balance_of(claim_contract_account.clone()) .call() .await?; - assert_eq!(target_amount.0 * 95 / 100, holder_balance.0); let oracle_balance = context.ft_contract().ft_balance_of(oracle.to_near()).call().await?; - assert_eq!(target_amount.0 * 5 / 100, oracle_balance.0); + + assert_eq!(oracle_balance, total_fee); + assert_eq!(claim_contract_balance, total_for_user); Ok(()) } diff --git a/integration-tests/src/lib.rs b/integration-tests/src/lib.rs index c6d3dc1..bf20162 100644 --- a/integration-tests/src/lib.rs +++ b/integration-tests/src/lib.rs @@ -42,7 +42,7 @@ async fn happy_flow() -> anyhow::Result<()> { .ft_contract() .defer_batch( vec![(alice.to_near(), 1000)], - context.holding_contract().as_account().to_near(), + context.claim_contract().as_account().to_near(), ) .with_user(&oracle) .call() diff --git a/integration-tests/src/prepare.rs b/integration-tests/src/prepare.rs index fb072ce..49e3461 100644 --- a/integration-tests/src/prepare.rs +++ b/integration-tests/src/prepare.rs @@ -1,50 +1,69 @@ +use anyhow::Result; use async_trait::async_trait; use integration_utils::{integration_contract::IntegrationContract, misc::ToNear}; +use near_sdk::serde_json::json; use near_workspaces::{Account, Contract}; use sweat_integration::{SweatFt, FT_CONTRACT}; use sweat_model::{StorageManagementIntegration, SweatApiIntegration}; -const HOLDING_STUB_CONTRACT: &str = "defer_stub"; +const CLAIM_CONTRACT: &str = "sweat_claim"; +const HOLDING_STUB_CONTRACT: &str = "exploit_stub"; pub type Context = integration_utils::context::Context; #[async_trait] pub trait IntegrationContext { - async fn oracle(&mut self) -> anyhow::Result; - async fn alice(&mut self) -> anyhow::Result; - async fn bob(&mut self) -> anyhow::Result; - fn ft_contract(&self) -> SweatFt; + async fn oracle(&mut self) -> Result; + async fn alice(&mut self) -> Result; + async fn bob(&mut self) -> Result; + async fn long_account_name(&mut self) -> Result; - fn holding_contract(&self) -> &Contract; + fn ft_contract(&self) -> SweatFt; + fn claim_contract(&self) -> &Contract; + fn stub_contract(&self) -> &Contract; } #[async_trait] impl IntegrationContext for Context { - async fn oracle(&mut self) -> anyhow::Result { + async fn oracle(&mut self) -> Result { self.account("oracle").await } - async fn alice(&mut self) -> anyhow::Result { + async fn alice(&mut self) -> Result { self.account("alice").await } - async fn bob(&mut self) -> anyhow::Result { + async fn bob(&mut self) -> Result { self.account("bob").await } + async fn long_account_name(&mut self) -> Result { + self.account("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa").await + } + fn ft_contract(&self) -> SweatFt { SweatFt::with_contract(&self.contracts[FT_CONTRACT]) } - fn holding_contract(&self) -> &Contract { + fn claim_contract(&self) -> &Contract { + &self.contracts[CLAIM_CONTRACT] + } + + fn stub_contract(&self) -> &Contract { &self.contracts[HOLDING_STUB_CONTRACT] } } -pub async fn prepare_contract() -> anyhow::Result { - let mut context = Context::new(&[FT_CONTRACT, HOLDING_STUB_CONTRACT], "build".into()).await?; +pub async fn prepare_contract() -> Result { + let mut context = Context::new( + &[FT_CONTRACT, CLAIM_CONTRACT, HOLDING_STUB_CONTRACT], + "build-integration".into(), + ) + .await?; let oracle = context.oracle().await?; let alice = context.alice().await?; + let long = context.long_account_name().await?; + let token_account_id = context.ft_contract().contract().as_account().to_near(); context .ft_contract() @@ -64,20 +83,47 @@ pub async fn prepare_contract() -> anyhow::Result { .call() .await?; + context + .ft_contract() + .storage_deposit(long.to_near().into(), None) + .call() + .await?; + context.ft_contract().add_oracle(&oracle.to_near()).call().await?; - let holding_contract_init_result = context - .holding_contract() + let claim_contract_result = context + .claim_contract() + .call("init") + .args_json(json!({ "token_account_id": token_account_id })) + .max_gas() + .transact() + .await? + .into_result()?; + + println!("Initialized claim contract: {:?}", claim_contract_result); + + let exploit_stup_contract_result = context + .stub_contract() .call("new") .max_gas() .transact() .await? .into_result()?; - println!("Initialized holding contract: {:?}", holding_contract_init_result); + + println!("Initialized exploit stub contract: {:?}", exploit_stup_contract_result); + + context + .claim_contract() + .call("add_oracle") + .args_json(json!({ "account_id": token_account_id })) + .max_gas() + .transact() + .await? + .into_result()?; context .ft_contract() - .storage_deposit(context.holding_contract().as_account().to_near().into(), None) + .storage_deposit(context.claim_contract().as_account().to_near().into(), None) .call() .await?; diff --git a/model/src/lib.rs b/model/src/lib.rs index b19937c..d6f5d52 100644 --- a/model/src/lib.rs +++ b/model/src/lib.rs @@ -81,3 +81,8 @@ pub trait StorageManagement { fn storage_balance_of(&self, account_id: AccountId) -> Option; } + +#[make_integration_version] +pub trait IntegrationTestMethods { + fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> (U128, U128); +} diff --git a/res/defer_stub.wasm b/res/defer_stub.wasm deleted file mode 100755 index bc10e56dc67485548e383e526811531c0eb40e39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101921 zcmeFad%Rs$dG9?h>$=z4d(XgzM3R=dmh^3MBqja4G*I-k8T+F^#8$M_566$60~AtW zCkApM(DTM*BOyjX#fmLfDpA2uC5nnlTWph-T0D)G*0xfcT2yLjOFgt=3RA-I4C1 zi_=}ZcE!6cZgR1k#D3#lyxzr+UPl+V?XB)Q;f~veZljC4MGE(^s!}_=<(ErDi@N1y zQx}qAL7@k|_g504P=s6BRF;l%_%+cMTkSc&xZQH+6HI3anEqBV5 z$EL3``DXJ4>4wca`rEc&x%HCQZ@6gdhD$Ds8cLchlCIf$#r6$RQ)$yh+U1vQyJ+Kv zUy52vJ@Klo8!p>$>4t6FuH1UjC6``$<<*g~UHX4J8KS8cuW4OeX2aM3SZvi;J_FWP?jhRq(1nb8-Q0wLg7!!I0tb;+gMuefsa zMLtK-o`>R;u{kf>aMh+Of9ax2uiU(SD}|%302z+W`ioa@4z*vhX;UQkQMmv|;-OqrG8kJPAUsKyr`QUQypAn=kX^n<`Sa zZrFbH*3F($6IWfb`HD+xjM3k^;q_N++rDAzMVnxWDS^Ns^}aFHM)u#A%eK(`lM5jpLb!EGgMj{TEaAgp^96Wy@Z$BuSH{CoEl> zEKQcBOUZOnvOGzWrDThjW%05|AY^HlQa4RS{7aJQ6+d+1^t4(|NQ!^>xrgomvI6dLyWSWYBG^1W+h~uU7;$+%W0Rwnu zdM2TJKpdSCMU7^BRs8B#H|fZd)(g_zv74Vi6!msT?(o|W+w~z`+Z)@hH*9#rm0N!) ziPFs*u8HR36Si)+^vbQ51%drVWdHIjH(eH8A1~Q(Epm0m_KOfkpC@{AJh|=4H*A16 zJ)cGIj3+L-=(0<;Uvklg&6lNd@1lz?-*CxQ)U|CxnsjfaLoV*U>XN^YKNJ7=U-)$V zhJEqx$9Ko~#lIK-N&Khr7vevU|2qDw_)GC)@zMC(@pt04ByUY_Om0fvmc0C@KN$b~ z&)pS&EuJJ zH{;)m|1f?q{-5zT-NuTfaPeud?LHsQdS6pwaGFrsarOu2GTsqe)&3s_)9QO zQ7e6IgjyRwec9tGkT*cVFx90$H)y(e&`Q>&>s&NQ(sinLZW!myvnP{e zT^_HFA~$i)WW;?-XluP}lCE(#Nc(B8#Nbh@K46f%iQ9cP853np`f;yUWqrJ!H7Acc z9OW%_s!`&q=i;Q+r>MZ7`qXeU*%Rss4T+q?SU^GN0?+Yu4?=zn;VP=Ake#ekXDOM$ z0CbsNfYUw{&)z43@+Ms!^;KiKGRZ=Q)zRe3CS(6@%CG`XJRXGI-JzG%)Lom*QmNK?L1>gEhIJUy_Ry zuwh`2AbOa+Ul1vKNyMnvSKnr`BlhZD=;_@_txJK;MbGNbBd=-5Gt>!TO(AU9bU$|X zB#iC;AcD8K{;jUPS=c{MUPekfX!pTtL->X;QT9Q@5@HhRwaHCGRETC%Ixw2|j#}P$ zao)5y8%fM&;fyy9+q2Psn~Y|YL93s@1HbjzSxWo=cHaOL;H@DYL%u-^I_K>(Qku}0AZoPu6WdpR9#!p8RJ9FN9e4iRu(V*O+@ zN9VsUU&+LP-j zL1U4HqEoP#F<4s+Ms1=p*3?KfW6FBv?V;}sO(Ql+LGOrri;6p{Sj~~SMGK9*y>Zxa zCtvNrzZDX_c-QutAY`*V6-aRm!02KckshY?;VzG&Hw=wWkEb`6 z;RbFrXR{nudZ(eO0j)55Vn)4!0q-9%d*D=*TW_=F7n(ia6uLB~662Ucn|k`W?s@b! zpg@uV0fSBu?SoJ@JhrCmDJG`9w!c zH)!-DU~jv0yL;+Opmgp{m(JM+ zswwy=#xN{Ur%ssBTk@5xTH`9+Ox96HR#VP_&Yqkp{$-)sLodTA8?D{kgXDU78I z3e_d?Kb9D~f+Pzh_C1Y;rkOQUyP9XfW}_TnP&2iF3pB&%f)bk)WVu)}D`pGE49qH9Qn6_iu6c{4Pdn%z*@Zx_(6N zYihV{=Z#>_HS_js>tpMqZ#pzz8Ka^=Xz*a6X>9^%Q%l{=K!VwH(DcHZz9?OWF2_J` zN|!gyGDow_d9LmKcFg=$ip6)l>U=St29{kgnqsn~u;JL5il}EM?zqwPg93W-_)1D; zo}gOhhE2>J;m)*hWohiWzJ`rA*hEy2dolBqQOqT%(b$S)#1s`tdLV3ex9`NNG@DIdWg5QCV zh`BxfDXG+y2_X267?HA1DkF@C#5G(Z{g$puI*j=!OT!GZ#zdiz*OCZSOcDHYQtI}W ziN^wX)Y1ZY7!fJ9%%lMj8rgmisOl($nL+;VYGc!yn&ZxUuMh^hAzsa+)luZyvc=>9 znvLZFOf{wLbGh}OAiq2ask=_itW8c~#;S(I3EZtsavnQ#+20rx=0VYG5L1*;b@;$= z7$&}M{Aa5B{;KXbRdv$@HI6p1a-<1$bWPA&I4DmL?j=#C_p;wqRlVNZabC+xueo2+ z`tTgeOyR>$u(YBV;k=L+6M+Zbyn&|Fz!Ax*Axg$R9j&QRtx8X-bl}P>AycmlLm4Rd zPsHuQR6Z1y^uUa*4KPx5dGoyG*!Z#z2Iz$W7Jc<+3J!B#)FSVC<5z_8^jw-Yb*Il| z--k|-_a(HMqCs3dBDZ}TGU}dkG1EJ=YR8Yyy{d9h(sf7CFA>+_IjAA*yN=u_#)Az_ zKhg9z*&NLKWibe_i}W*-{gWC-&jP!(;JM~>8>7sor?PAhlm;^^lhcRP90NA@XDVxy z1Cd$WVju9}Tf2K^(ps=ZN7`B4IZfKQW7vT!@V*M?0ps)P)1cEoUQ?7|_FW^u33@mhg{K)k zofaM}Une{qr#JoZutX0N;UUw*WO!gyOk6iSObLQhWvpN4(Ro^Y>LeCRo}L!}7~PtG zD&2xnGJj7BElK9~zBCB<7`XfD=lngtyL+2^<{kI%{+Y>ce^M=oblLU31w*EA`V*pW z_OwScHG6(Z-O@1?W1l|HTE1gk_guA#MbqsT&Kl1X)^0^wYM!@iEa9PmZnQxEHzGzH?~4Zf#;sE@XLta42)ZDB)G# zA%R!3aBQlv@^miC=8$I7PXDMzWD+uh>1Tx(WX;W4p{qLvV_!`%>HDbEx?yHy(kFf9 z7=*NdQJd1s=ug&ZS~%s-GB<-C_Q9Ra2Vw`c7L@_1sNHOU;Mb;k5%cA8VFz39IRK*x zj8DJ%LNzBYYDbGpz8!fN&~>4sN$=Ga0;(knDe-^3#2Olh3!;f{)9ysF{5ED=6^jo z2KchRvJswWn5qNuO#>gcTtweu61h5R0sdeAd%!O&!QhGr5QyIWVWNhO@OGWD`R-ri zQ038$>$TB;F@r!)4UI8W^wvyZn9d@`JP(GEOh6MEKtugZC0H~POk3F1LSw9#Fi!S) z$&jfIEnobR8A_n>{dV&LLHY2V$UH{qZ!3v9v_{ukLn}EzWsmt(u_86HAZufLcDIIz zlgOckSQJ`sKvh@-?!Zl|txvtnw8#v%E}@2bsw{FmaD#G8JWGy!Ur-Lb=EtmKztyp1 zOpf*A<;id*6Et>@A5raHBnET!DLrI|1tIWNLWK3UCmE@#8AP_Js0*P26yC5%(NS)okIf8} z>x);iesR*Ra1C<#5~9I9cO9aKK)4V-jiBg_8TZ~F93zL=t#bB)h3CfS!-h|3An2V;LU)fP9u8 zh1w4q@(=1aZ!CAf%mpK4fjCIm8HnXgUBdV{AK{`wOsN{Brq+CIAGO-#HCkL=%@5jg zbA-vt@?7Js+oLiX8dzprmCR_pT;}|8ki?8sX`M5e(s9MAAfdfBIaBEjgKLvhb+O|!Dbz37*M8%yDPxS!|9dG2d~pvk?a`xbquP?UVy*wK&5CJ z@H&V+UL&tmgD_01f2pavSV_V@`4TS(l>M@Iaoq;d;jJ+f$f;L^3n-T^cREzL)%^nn)VQ|7QgveaM zDcC^1*91|RH1ndl-D~Y$Z-&mQq9~_ah%gwR2qdp$*i>DsBYZbz{|F6WB^nxNjUmhy zEkSY5N2-@6l2kde5L!f*`b9h66=hVRWyx+28sA;3z#H%xxm{bJr=x{C-hO!AOrY$J zB9|CYlq&w{w_(BU+~Rwh3Qp5*c;8e?<0z)(mPt9hX;)1QQ{|Ue-N8WMCfTxlq&OiD zP+tBGi*$fh1z56G&*BL^cc_DB_!wT`jakxZ02PIZ3!B=}FxHKp1$2OJBUg`LJ5WIT zPwzvj+{xJ=8~%E|X^I@oql4KkK4G;o3g*cu`xBo;^F?@-hGv>C00;<_g!JyI$=`W+NU}B3;YuuEX6*QnER>??x&r zBCuX;;Wk)hF`ycsG&J##qzIA_U=u6Ci(xXyZ-f0{VGfwAy-z2VRaP0QHR{gCS|Crn zZYKOM!_7}K3IsI&Cpz5yG_$mL>sis1G`j2WaF6IosvP5dNBMfvr3f;1WWCJv!dzt~ zMXi&TLFjhc!#1I`rsI|peRt9;*P0RMd%7`WPu&v4$Q9iq5Y`=_)M>6`~7oSM=t|N(Zg3y zm7kViR?E;yU>=#LfbNy0Cye;95sbqWueS}dgVaS{Po|Q6iVP7FFlDlXPO>h=*_VYM zJs7a8ZDtP}#x!JURa6ioQr;9q#Zs4XtX7P1d&^CTF;O9-_kpx>hgG;JSV&ic*UPuy z^3J&}8hLq#8f6(4*a=?=aS#Z{KnvA!DWfOagA~Qv5&b%-DSy2xTran4YmWcO-;w&& z{B)NjwvHi6%0u+)@byO zc!Xb5&sznJ^4M$>Kby5a7-bUrZyu01`+#w;lx`7F7#o+rzeq>Z(7m9xVHk0Wxf3eS z>2w|JpSDpgG1g%DcGAxq0U0vDVIkPiR?^D_=~#7QNNXbV)i`bx!op-Y2#aSnxkUZw zs-ZB2SVL4E<4kkExgA!NCY#UK!yg4h(rubS>jo+D=BNg6Ge>i25_EQu zAo+O{MIiiDB}SMECP>r-T`Ref-tpe|Yc{?+5XSUT!QTn0OOp!ERoN z#F}QoieSJeUdA-j=!A;-bt98PZm}u3bZjBb6hqFEAUWQn97sFy4eGV zFpI_%0aR8K#9&E)6Zxr%{wm#uZ@SD&!$FxQRb*)rA7${oQj0D8*@|BwZxnQ)7Hxc} za^zPvB6qJu#Sf_=YFQ&FYZUkEMKMHPTUE!nT&PxtfO5uxRF-3MB2O686L)m4Rjw(@ z9#L0ga>9cjlXd6EWJy|BH34tcibjl82PSRk;ir*(OSSYqSJU)0PmWfgAf2B-ChPR4 zqJ^eUN==`DY(IvH!9;BteFLy)#YI3l(DJBK_OelU{#)ZwlyKi0&(cM#o5@a-t1G96 zE4Uzm%eV*&zN+jA6{Ll@WYIk8-Colw^|=*nB>XXo_?0DU)gloyxN6~O&BA3RiZCZ} zPkWT(QFJ$Wl;d^eVGYJlZg-j$YGPB&UQ}^FzJeMK6<*6c!OHWvr(+;U6ByWh9+6wZ zi=TjLW3=u)V*TE~lSB5u`HInrtsg4OS~n<{W350${xU4CKV$#T``OUGxE^zb_Xhjc04m4+wLe;S1bzo&;cN!|b0;7t$(DuhH>JmJPXzmA;Yj>hC&nt2W-mULk?dD7#mP z(GZ4I0yb#z2$DDt8U;Yfx^$f(ixNgub2Lu!-W-i0ND-u8bABhRLR2;APPwOsiKk(r zPy;c7g%t2Iv7m#gB0ujNT9hi^XMg7r$m(RD^(##W3H?qh7v+rkXl&F$ zhH;zCJ0+0aiPSmaH7sYV58+rLLqvEf~h(h(`98p0n{)ko>Yq zY!BQI*muxVCXv$+CGvT!%I>yAn)k*~-GQvK{mEL`y9&`F$@t<~-jUA-e+NrkqM4pV zmDs)2khs#_d>zOvqtpYj<=+6x&@Px8sConbl>Js{O!b7Ma=q<#U|#KVse4#y$pas1nxhMJZd% zDP*9D=CYOgMvMU;H<(J&UgB5kEzRbZG|xEUSL(I&&ZE$z0M#+z2t3;KOUm(SF_y4V zO?EETY4OElF;|S5Y=on>lp9t_zdmY>l>>>{4D7=&ls7i!v5ywUG?u4~fDOj0g>wrn zZggyJ!3zAzJG}bOH6c$lDEJwL%qzLIv5w5o4SnE~Fr6^VTjTkE>U84I*#21?zCs^? zK}H7cqi#z}BUl-tizzK~1#_-$XE4wKe`zB4^*CQo#y@yZLV;@AD2wXn5;S(Ik~pfN>2U=aln&1Vn)R@MOktq7BKfw!m|Qp&2qi(&BD zC8f6L-IG+)8rk0^Sut}S^#GXQQH6PXW!o^V`*sCeR>GFmJP0@#3nzj{8~k}no+zG7 ze0%zwpMx0(Ga+&h9bwFpZ!#%%j;^t;xrel#$L-3w>`66hgV##c?%x-!$R=EstT-c8 z6=e3ajkv^BVZeHHcui+$6irKmpEZR$9-={ahSlO8v(?1={)D8$aq^{O$iY}4h>V3{ zGHgj|L@8ryb_y~Rx|4Nc%;edH;5ljvLg4rLc_msC0?;=i1UQ$1 z5TGG(E*ns#5OjkOOw@$nIhucVA$X3$CIklJ;}xSR?i?f%nrWK}VI`r>_z`?^U6pEI zW+?{sjuc`5-HXnN?!}FOx*n;2jpbMx6&WKBV_K(#i7VZ&nGz+8hEQ|9DWjbh=tnv_iLvR?B^2)capJx0s9Vn_R!6H z7ZBgmf9-OZ1`hHalinDCbF^_22}*VA;Q8hRiW=(-yP>h}1qXKyx(3IvC4Vby(J`JV z^ddT{>sdiq6{XQFFU=FFpO^6T2vJ|ASp0O2)xFC}&DSOu`mC4v%lZCtE_QFS9k<`n z&!Gp*zakUyiSj9y@^LT0sqi|k#w&Pjzg4KKmB~8L=3l@WFJbp7mzQS$OBsB6P*)SI z`-bJEit0?R6ibCk?bn?s@kHUE7|~b%i(ZXUSYJ=8d1qb4%P7GisR<{_eSiYe)cY^* zl=_S5--2ajztXLBzv3_V^C?Y)QaF<0E6`Y4^9~aQ+nY}EGT23x587n&a|oJX#@==x zx7A^oN}d()F&{-lnvRsQinVKr!Q!lFIk?7@##^G*={^@^`b^%1we8bMfwydxn!B)a z&0SdAwmW>?j6xLhE8n{F%h)2vin;9fjdUpL`T{l&^#$w(yiF(6bJnkIE-3tcB6LVy zsQRRJq}ni}rDQ{ZuoB_|4A@!`zkC^cSS-9-CE#_m7Q{;3#jFxb+i0cuYuMi-u|I{) zxfLN4gi_$}Ad_7xFdw0$OS3Uz4+lgQr!0>^5!)(k`=AL;VWucr=Z#Y%g$?5ZiEOQ& z#SU9rA9QIpZ!o&CKsT5m@#HP4i<^tiBX7sGw&xRDkyWA+St3#H38hgap~%+3gk`=; z8(`T%>iXM#=5#^kRGE2y+;%((Pefa`0*w#UL@aDUhOLh|1~v;ZZCckmTu5kDIRog2 z;Xu9UINJ@`aTiN_cHC9E1aJamwipQ{N-i4KbhB(cG#z#`wO?knw{v!LVwj1m^MvWR zRJxvGw&c>XTgM_0GYOH93`Bk~@6}sw%&nFJ2!eQw_#t^q8O};!ubhTKIxul zZ}H5J9ikmhFpN?9fCN`~&?aNqr@41jw#`HlqQS0Gi&a>5 zrQ0C`VlXj0Z(z}unI}kT$y*BhsXf#ftpQsXZ>YmWya7>IlIlGsP7*uRbN)`}}X^mGHd8jISu->k=P1yH2aDaDhLEJ?v)=5~g_ReuU zOUxL(Pd?7kTV{jnVxAaGun{-;;p5XO_M~!!r<0TGAM%qIp}2 zRVI5^WEDp+Cnq5GE-!Jm{+HW`A@+8JKArg`mZ5j=0!3>^iX4 z0`65>?pgD4oqERm(g?t)bB%ua`fPt=qI#Rlz zv~l*ZB^m-~-dZm0%N`TdrK#-&9ck7(GI8vVbgd)Jq9d3=Fx7K(Lbq&t{$pa^pE@4V$3b#g_{e)`#HFb&dJSLs1Yv^_?=-W1xNY35*B8n2I*_lQ(V zx^6ax5AHJw`|&8+Ymc89ef;$3qoKA9Y1k$UwHH}P>B z2gm2hV5ZV`{thLgOjG&fa$j}c5>Zc3VN&_Ge!1SAC`E7l7nTQRv=@45Va;~6o;Ho0 zv2<>@3{3Bvjjul+pH&ft|jdLU`pGZG~6@zsCBV;AsOLtjfhl_ZqjEjAMLJRo<=YYi*Qdt4fqIvLNGTDXIrZm+AnihFQ2VK?ER! z0oEP;Co#AkGC5VF()vlw7i6U8 zbB^#6y;unn?)sA2@f$2jI>jLiRJbz9S4Gk6{?C2(8-MZ9_kJdSHHjFFI@*e=P?Ovn z`ZbZarrYkOZ!H3OMF4r(B9LuDGYL32Qv|szs@trB@2StcIMW>e9MymUll_HHTpgV` zNg=!(;MpQZR2GuEyT_EZPWH!??ZQk+zErw987yV3nCGPel|<>mW!^e`#U$Jr zuwG0aM8DMOI)vJ!d`v#IbZ6-wQSpM&$eb?%R7R)WS%Vbp{BhM_=`l!;eyP_ z;X*4i;FvkdfFs6IKD4-Uq3506d*abWg=R3{aO|jtrecJMmsAZiT(AT)hUi*sPZKd? zM&|a)52N~Vz-hs&>7G0QZnWstEJB=5rv~L$Y>)1IY>(~~Sha>L{NE^|xNhvH-QA5{ zgYIIujdt|{{~;(-Br|#tr8b`i>v%t%RM5 z-XwyppC_~I-4M^>s6bDOlEDzLQ|#A86y}|68C533je4mBS6(L z&NA^gKW{)mss%u$48=v}*9=oz+M^eWNx*uv_<)$Iap)~72>d<+cq^CiP^KlF1i(sD z4JcCZNC8q-5n`h2e+lu17BEm-g&QQSZvnD+BNUxHa3 zRo8HF;)E9aTwrAIP-TBFe9Iq67lldToAE*YP6rdlXn88X4*A7f_iEuPdqkz|H6C=f z0jrPT&N`a?V?jdIWzPKBbxa+5oC1e~rG;~TKC~2E&QnZD2~KMmh!?_-EZAw0BcDD;fin3tObt2jGgzllKa*P6N%E;PQvA9(8?Mjg z(mx|*MKH%1ekvC<$4bC92lTXN%s4{AE}Cgzplwny-NTMa40iHg2zTfX9_Rnzv?&WZ zV9hC!(Nl`36IPOFr)jSP)`t(E#?I=n?}qgYgRPM5hu&&Mq$e;8Ss5MU(^{@fxII93b zc8{Xqirt{a?vzv;e3?_Dx>%q7Qx&xs@W^qj38xNGL~ND)Yx%~PsO8sUTNSRKH+#R@ zj7v{W9U^zfoCY>FA(i6YokNKIfv=O}bEGB8ef{XXu)6bgMUQODBNSClS8|R(E zMQNw*sVsoqqHbl+2t#7FoRf4+9EG_yzIEJ(0o}fX^2|v@bCVCL1$xzUgg7x-C$hAK%3Msog+_FCP(QwNdf%k-4?k(pDh zS4Q(adA%?cXhru#0U-*Clvw{=T#6_|`C1uk0`3BI5`>Qa|Zh&dw5)vA{57sI^gGh+g;N>f6N3o5>qm?C#STrgXX1jbr_+ z=u8rGnOX>(^s`-Ze^Jo9jekg@4jR+4C>wtnq%f`<3|QI!D+HkHQ3phb`>u1}ADU8` z@tv2GmO;Q4thHP~Q4q1r*I=M}L>ww~ah}wcvK#KF$F5}maf4Hw6s7S(U_g7^99KFn zbw9c`xhXb@iSeD}I$%#R{|W`0{q`pwKK#D-efG$^cb5SXDf4W5_orX`@K^rnz~|rm zuVf6t5~<^un4Ard;|l_{y&PMTmmY((&P?8rX@L0KA;HN6S?nBwLE;#O%z{>>>vodd zJM1?bGC%3nvIBd-o7NqM66+@%u*hfD|-9%Om%E=JwCr_MKW+u}t!4CwcysUZw7)crH6)b9q?#COc|bMfaR< z=p>JV)7PLZHqB+fA$RUc6yh+Ln}C((fuSK7hK&*m7()aZ*D`OOrDbXgJ@K^sCXK7* z-BrtZbil1)qv!^P4xB)V3p*LHgMEiubM8m+u4NxrmrOO>9M2WHq4!7(L&eo>FyC10 z6DsubY|}mb`9t&3!Pz%v#&pAYHpWV(J=E2KDWo^)N!2S5Df^z-l3N9n>iKE^tjW2V zsz|Ost$`amWZrUp-{*o5RL;rWvkgvzl=Yl=0dlcvLAWUZj;u($&PX$N&zk|x{a@Cc zdrHHgdss4jnja>!yI%!~6DT!5pS@Pf7$(e<16V}G{!R=J z_IJ*{(OXK*gW0cm$Yt2EoK=E zt?>rX$acM|7Y3y}ZWKf_kz~q6tD^h%(!v>$_yG$)IxTuo2`{z;)^^BosK`MOu4#x*mRr?0tsVh#i3B|;OwppPM?ovlh>l7K}68OVl-c)=beMZ zOS#94c}{_Oz=UU>n{0OR&#EF4v5ptisz~ui4@rok-Ys!`$buFD*6cdd8&UQqT?Hjb za)Wk44AQyO7SQP>K?UCHc6O4P3?tx zFd=)@0usf6owSKRW!9|=gguzuYKV=Yk{`1Pw6jn;cKItqiSXY0vba;=cb&oSxD#PKT}-MuX5=1Y6tk*>he~sv%Wc-c%@t_4NG`k!Ee}5rM}-@&@KJfLT^;E_ zSnaQ&0l&YdDDn)$(Bn1NU1D32R!8UR$PC#%wgZ_d)48y}o!n!s;;I|ls`fbv6?gis zFX}*r!$lpT=VPi&j3?=U`PYO$I_cZ^mjb;P4jasaK=AAQ{v+--F~~5gDKJ16cV}oyGv!_pp{u1{5dY^$i})zJ;krA(;6D%%y0p`=d(!U3h1u|lKzgR&1A2tX9p~%T@G-G-bSx;20XL_e zjV-Z|^-*Ro1$7131Ppw#WLQUVQXk;Nv--K%?Kk#pXE%5i4mXLVB}&D1O6lC9vaIC& z*Rjw+1rh;{)P}(_EsTVs-&BKQC>VSUVI}HB=C`(~cMg{Bks~9ig#&OTRTXYB|ET+&8xPHMazrt%mhk>{ zfEPd3xPGYyw29%z7DCX(UXo3I#bxWE@-7!2wJhyr#wXRQAF-Y(IeBatZ}N(>k11??2`LhR`^=9 z0iGNyeU9vZtFG*e`lYg$)KBkW0CV@tp7Dd&o0Z3_6C2SK;jA+Ha+;J&$<%-0D-$<^ z5u_s9Ya^;Xysm&u({^**mS)s^F$oe6(@&-v`&E^k^i&f%_61+NtkyN|R$~jzG;k>F zlg%8C5DLcPaS?NgU-c#YM5y;dTr5(l$vP0>51ulU)WU#X=EKVHVEV(7Zcx$Qx0a{P z-RZ7!qx8+mVoM``7E7ZVEtzBk>&g*}V;_^-!sK`?mU>r8X>>dm4~$?>FyZ1IK7hK} zfeI_k4vlRv3(87n$2#&pY_(yi6w8NV_J`wQp!iGf$OVV&qXii>{HkrggqYe2cQr74 zB_3mZ_(D%DvOYK_n6_YmQR_nk>xlJnjFyiR2MF+D)WE_z3Xnc^ZSt@H22_6OWLSuT zNA|_$4d?Er7*#66^wzhDD@F|l=_(vGbIj^wG}LOUuRmcQ?u&=5*+g^D*7>p_+->n3 z=PO8Aui}e}8mCt#H$xe%@D;ZRc08_Gv{2p*Yfl_+FA@b5(J#=#S}F$GzX?SMKMOrI zRL#ntK&M0a7#7nYC5?Ep!9+@fi+Mr>9?KU9*jVal5UDtNb!2=o-ePbV2gj(x4v6+g zLe{_sKu^_@X$2Zo#R^*;y@k_n8oGHa7%yS44%DrMV7Z7~m<7jZe-VeF+EBMu^Moms z13fM$Q(pUGjrdE@7e?!0>K?Q4ezF+vaZ1VBHr6c$e9@!o)IWG-WNs{D8CXmKr+;uZ-<$Ui?m?I)=?6hW1ztjaZ^X;^SeYD^xR?YU zOYA1{yyXMo;S>CN%5$>ML`Whysp1I-@9fa^XawRymz?di$0*(HKZ zWY+Nm$23L&Jyq}i*@m6d3Tvb&3*Hb&M#~YVM)dc$kX}Yym~zNpcdFabVMr@AYRTCA>KXdEg+N0ed4>d6s9h0ARRJr zv%f!`+sBk0Lh_5eXQdgmZU~N6Cg%n-$R1wmLBl$^-t)2*DO|NxCBa$CdYY;gm%K%` z6y^3juX5mS7{Kx+J#aWihKvjHrr2PCXWT#NqOO94bbryGID2bwi4YFO&XvmXw}R*m zy0(nH88|KXYp9i5lP!Ga#k{jfi1cxzN2o9FtwjNFWn{2H9CSXxv#@UX^R5z)0B^s5 zW{EgZ*@_R}@C4{pK$qPZpt{El0gjR__g#m+6}{4Eefk;cU214y2k%#5o4*Okh8Wzy zVIO4V9%QQoE@##qfRu(+)$7hk9}HC)>{Kb(rEvD>T|5mi`NRQ8+pR^ktZ>SY0ip;}A4q53w2NGmqJ!??! zHn~&wYrW)~B6^!@=Dc+4P-CkiQ4*sK11@E=x9hzY_>$}$y6u&dxSNx?!lhr1EhCe9 zckds8{Oo2G!&|)P2v6>Zi=os#pts<+Nbn?B=e}oV{272G!SGYPdqu`#QOUnqFlP+I zKyA*530F-Tg&JR#KX^9G8b=Pd>x9GY?v59HP%8=EYky!EWI@fdg4D_WKwZ<45$Asi zZ(t5Fu;Vhck@v@=2(@6dwp=p{7BPxRfe`Ayd~R_`1a`2n$q#PqZ=1STJsiFs_duO6 zvnpAput{TI9$n#X@BMXLMG~;^P{GQ1*i`^ewOmBIevONmeb-@@8P<*LL1GqI6a(mh+Vt9Ng2V&`mz6*~|N;)yi|`yiAkY6_Fs0ehm0;_NfsDN>FNy^553 z#E3)*wz&}^$08!pBQ1-PYn+kh79J;A(hfg#g5u>;6RwOqz8rlf7rq?5hSw`ODN?=d zs%CYOmaGIl!(K0+iBG0E6S*0JZUn78Xaa`_i!4EW>9@bbjDPxnipdLcxyi)iM+)g! z8qrO(1uDUuquJNgtzPfl6AgXExUsua938P{WW!p+OSI?CPzAVwUcl_`wt*;uQ4 zsmCxoIiZvm-R(o#P1*j5*HY}evh^$Nz0%=drdK@cOKY){K7iQDOt(;uxhqp?ZXU3k zY_B-nAJe(`r8%GM)C9@W8s^HT5vAhGmMy41U{r#mHe1`70cayV4?b!bJm+%;%pBvKy^QCY3F*vGq*F!T~6Pv*(LVWH(t>M)&X~^GxA}z%FHSpd|?p@nYPa18KO@*Owr;iw3Ukqf_6J)?!M0-LjU|t zp$z(%`a~Sl7_w)w#BM3*E%QoSO>IZq!PzAHWic~!aYG&{9*wQ|yQ@EXH){A01VrY6mfMG`*tv}(r`LmFIhwO_i4<2lkyJy7KW{m_ zkaC{twi|KMZt!V&h^|N+)SRqa?$nypKiANhc8l;{6YytyFQ@p}_gc~RwHnZ6tsFjX z8e1QCF*OU=Vh!>R4bdQ^Po1sp;gbryCDz#+nT9Ug3l6#%k+DBxSqVo(4u#kA%@@ex z0rE}S`kz9I<=HHj%sE#N4(a_I)`_Qsk>2RQP%k>jz!XCKP{u9m1U9PWmepV|tH5VG z6kzD}{(EKd)CN0=m7mhbn$n{^-Q9P>654bUJJZL0gGY?IP>7;r;56<|;mUYk#zkCR zRe$X05*hp+e6BvGpzdLqeW5!jJN969gYZ@w%~cqTd&unE7Zn5iE2>sU%((c)u?~x& zM~ZBxH#*jN&xfpI979tCc=WmD9NU9l7)}H>`BJ{nD%?}2vOw@);`(8SRJTEk1Gi#_+#?ojfb4O`*70J#%Ac@ZLQDfa<_oH}UZG7i2$ z*wG_>WO=*8-lK|=c$brn;#ApX|pGt#>dXZoWh6ke0}e2Itt0J=(~#N9 z5KBV4O0ok6=e#xy(1pQNAcy~2SlOqOh6M7ij+VcY!N5-Qm^+IpV_*C4bvg#oouRVQgvUpa~CO6|Bybz@`MFtD}>KZATB>1fLr9?F^^L$v+a7FkmfF zSiE+CvbHfdoU*o+qyS;sX5Z{|J|*KXpN5R}Cj9AN+P)Io;ZIOhNOcLhxz{;1E_Dsv z&o|aD_opLF*eMAZR~vO;0vo>dg;O1frak5p?(yG2^vcbbNExtBxCcI>)DUo2AmfbI~zE_$DNaHqxSLz;^GV&p=^S<6(6S z6uW!t0R4FkM+p#E3whOv8TL%g!TTR3FZ$e9HC1#mBf5S40XQ*y$WHZ^>QCDj^y9N* zOPAjV@)JAeJ$P79GsYXX@N3H5W<=o)3HA|gWzl4?Dzos7o_n{&Rm>flItgfq{U?D2 zK<^lo?@+KBgMc8))qT|D2j7JB4%x8=mPyR^>luPEgwaPOYnEwGc8;G-(xKT%c~+~P z6)he<+E*RabmMiGch+YQ_^qoEw8%8v2wf zMopc@@L(Z;x7#y}Ke!1qA7 zXjc*cv9SmhOr$9pz3sz0f7Xy~n1B;<8`WWc?oX+4DAtVZEdXFl)xowr6a#}y3HExb zJuaFo@y(`I*n<=%a{j{?93{RT?;l4-89;nVr+}x!$l$@E^R1K)mY^AXSD=~X)Iq~| zNpnne9OV!Sxa`1w8d)I=)Ue8f9Xw~20zFXwCum5^6qwKYvp$eMmBvwmoO0OHcFs)T zJ*uKVH|)bYY&U_S6pY4`3`6!KIwW2IOvpB|kDJLZG5l0j*Xq>=UrhZ>a7N-tojh5c zrq@tQRvB9-Y7HK4xQ>%MH!wm$Dk_ zg4;&OZLzDdsWC7BHqy#;k9$9iO(XhHuKb=!#qGW0BET5=bWHEZBJxXADz%csrG*yK zXo;>sH<&Q=j@C3l%`{;)qH6e9l4MwW-~{?G(P76rbxlqJEoM% zk)P#s3@#~W3%6cD0@BA05@T-AEX9j@Qf&?94B73n2Q=dGffDNA#x@vggcAAvG5$UP zn{A2+GFHU={I$~H(8qU4$<$Wp^WODIWfP*`8eSI^T=;x+xdG`wATIOwR}ccT$^Cex zo+ln$dLBNTLvCC{DkK`yJ^yi&hH;sxeYHe}ku+tr;m^|b zBwU!16WV-ldqX&a76ZP__XX225v-1FdX3M5Iv>w9G$NP_Hu8giwQ^T;RX0fGi!t|s<{uxgEe$4U%T^|<{Egh?0SjEC_`R!GT zF|U$zm1O)spJ~&F+1RTN=N#)ZZAK<}dJ3#TGH4;1pOo&_bo#X;1dI!X;Aw~6^0Pt5 z_p&X}zu1x*D+5-FSui3D)RHJ__{naT?GyEGiYs=<@CbF2Q!Gf%c@t=j-wcbK&uodg zos(fxT%U_-HLC5q8$Ps#TzGj3HN~hlo0wa}VKOe8#cF*>Ylp?&gg1{uQ<_0u<(R4C znY08ZrE(sM_Vm_(N!^1V3c!>fu%en<-0l-GJNR4^1d~ty$6|#{D`W`OM6yu4P!f?GQt9AYqOF6L?YDN0SYyx*BzE|KzngOrQx+a zpmJgXs5+{;dkj!*%3dP|=hhi9$X^gcmVzh`NpQqyVTj`r*E1wnRfawq)nw%H}<0lx)ZXlHM^jo#|a>Oj6X+NzX&m-BqaF zV`(~5ai;7RYr3_S{>RuH(YSp3Ov8W%blG}9f`a^%I6dlpB(2Kn)cUfZd)VvUTH%mV zeOS$(t3+_6&$>+bH2I8Ym{OLvq}^@lP(w|sD0HDD)kuU`YfBGbhdF>6)qan( zIH2hzrrOU$wO?#^I-u!XyVC(p>+DW}?R=2UsyzBmYACcnX^bj3nKUMAp*B@pBx#7? zr%2NJJTLQ52VgZkSR7YWhk0zDY(dTUiP#hM;-Tl&i}TA~`2J`-dyf7b^K)_|fe^)4 z{+34KRQ$nyPK=+#+m+a(5Bp)U-14X`d4+|HYKjJt7Z0z_bu>G+;1=Wz?CArf@}4^^ z0{`tg)(SK~AdQ`0&qTHZirL$cU2vSO<-UxCd4NM8sAGa-15*tyXg)i|q%oUaz%bF6 zZD?0IM~Bg`j#kk&#o%K>Eyrx~jQ>AclxbIPeaOwzm3`Dp z5x5O^``b+!9QtRI=a{bsE4bbeDz&~p1`n$+(nV}AiYi-6qLyY7PGWZR@2AJM3M#!3 z96F4837rR>9HH5wWa3h)n3dN;V#v zn1&*mAh_}k4(DUM!7noQO^Do;c(HKQ)Dg?g;15dON_X4uN*KeDmq0E09uq1m2-W#x z!8NQGZw&F_Wr_H4FH77ne%Vmqw4bW}o6%p? zR)df_LX8y#5TqLRaXf*cV_{z=60SLK;J90U*+e(HUm|jnf0u`Mx7oYK$h$*PczL(I zY>&L0FLoe2XfLNmUnZgC{JYfT^5UgrbTK>pLo?}DUuxMuatcV~_Q&3xP(*}{Fbt>M z$)0XXe#P#b50B+8TMRSA#MiHp+4>l~pqM0(HRy5Q9rW`aUYI!V=;LCVt_-v!L1AoG z>D)<>hj2~};(XE+;pD-=G{Q`T2k*>D5zad1Kv47Y5!jI;$UF0%#Cdwx&S55Q%fuEs z@0BKKP))?FqFIBJlF>=2Sq{sBUfBWf+T&nF?ZTyAv~i%Z`EvO9HBM5-D)F z^h{L%=7b;)Zx(`@;7#5+ek%lZ@=20otrJogWFJLP_gN5x%S)u-Od^q@BLoqhhB__~ z#Ia8iaV1GW5KCeKK{#wNJqrX)))54dh9EJZSAzwDP{-mj^R@`1(p#1^7p78t-UDj?{<3+b*$xIv0dzPNmAsb8znk?8k>eH zSDpq+8aHpO4U_V^lB8kRzLnn4Xn-#mt`J7yF4||_Ob2m)?64?g8fq#V4S5Dsbg*tA zct?x36$%TaHcG@7DRgj@g6?w~*4z(;)WS=%sH9YfdZq*5n;!G@p4o1|=(V65UTreF z7Y@ND9LUTi^V zfU5qOH+3!qJzU zuR(wK7dgui2o$GLqcnoz>J2%#MssrrKscJZgV3UoR!5QhNoHX^0vlLJ{O9C6hE_+9||=>XF_hBZc8DZluKKj zl*@!i(`hVx&-{ukhBW?x^O#J{E11bW@&S5Bx=UeG?24a3z_@T;ytgo^R<%b~yZ;_t z(|yes0+H5G)rP;LT66*v%aM8&55VSJz|zTW1fn7f=*zNlS$6`Rxf^}kNLlEueWD2i zk6F6`7AA86{uLGcp`KHyU?pBWwcIF|Cxm@1)hIG;zXX|6G1Z0QR5^FIo=APDp8DGf z!t=s;{)?Cdl(VIRGC;=|zG#|s(8VK@B+ZT_^K^g6>QbH=036zom(u#!$&om>J~XJTF3Rz|!`B|F!q+U4Hh9bl1$egbwI`eGVYiP7!X}X1Nzwn3 zObY}7+Y9#-@lbp%fpN}0Dw3w?LjPxSjqVt>4lyoAUQeVOnKYst5M>6L6h=k(Q6oO2 zQGwB0-8>&Fx|R>Iq5qhRkdrY+Av3dL`1yR$v71cR)%ZU~{Ra+$Q?0}^p4kb&I>Q&H z9CDQM`pE=Cw!^g_8go1RjSfLZ!ek_}ZEiut-_Wz>rmSr1Xpmx9K!EuhcAJ$ZMJ zZCWu6%V4G50t}8IG7OV+z($@ZaFx99a9yn7MwHj74PqnZDy$Y8wiLeLC-8oBt;9}8 zUpWT1MPm1r1|O-Dy{e^b^HHJ5wTkIK;e#i{(Fy+f8GwCaF2qUU+Q$Yo7>Qd6Od?hR zPWwg--#oy}?8R!xodT@6Y#d_w%loUc6Bxx}ZeHpmCz1N6eJc7~L|1_@eHlZEc!^r& zlTM(8eZ+l1aTy!6;>rfCRfol)^fX%}evRtAj1tNC)?4m+DB9+p`TqB=Q3T`eZCeZl z9X7ekrt331XOp+)u2o%%d{L}} zHbV3+WL?&?77h*+qD@i6T*D~9gKIj#qj-U^CM4}_AJ&3hC(btW5%|bZEWz}?nkG#= zfx&J#gnzy1CwXdFkQ00g4t>rm_I;kIykJ#_$#S>af1i`( zIemyzh5hF@byat>Ka~9eT9r`ruuNpiNWfUxH)X4Tr;~@%D+-G}Ai`NuGsghaIo5n4 zFq%6>qatMUAyC#M%slU1e_L$K1Yrj;I1_1UBQ~ucorBRCYx3wud9bzCLN=MEGlQx`+Up%(f*)P+SU5ZFm=Zxh7veI z$Y`9pOwr3xW-n2Md%l!{E!3zBRu`*n%42Smo*JEbbVL;+<1&l|ds}_OM za(Ih@^}&zr|B+*6*=kw#-*V^Meuz9_aer}L?b+M#vQMk~2MV#EY8qDrL5g*zC;|w8 zk)=VwBT%pjdB1blL%t}Op+}n+fofQj2a2&)u?2itYD|YZLK-H=7o*L`hO}$p0nDpl zVO6V`ghgxrJ>vl43OcGy+FPS*$9g96%NLd^mO*U+H1Q9ca(SzZb_L>scmi~-Z_Pu% z%BNv-K`!62wgfVLZO~0M-tv<`;f{z08rF-=yjCbh>zEah&6==ahkD_04U5BV_Gcu* z0b$Kp#6$VYefYyDDYwEssB1AXTpdYT7!ZIoc6TX4+co{BV+o`?Xeq_&+n0LPgt1zX z^)fg5o5xcto1EHi|HY|}Zy)ntOKEKeUA`pE0ekwY1FC5rufhb(9i0&~bh)FCvEL*b z|LReDWeRO!siXD^BV=)f_t`7kw8GVt3nUw{vzn)#G2*osK7tay7z~74;SQ60?&3V__~0?71$59FxhkL3ym+X)-()>vW zKz~yNwF97e%|{GIzipuHs)BNL^qBH_k0OwxGF#*y%^c;77^~uzKk(xF9KA zi>(PJ8)qT#u-sYEgyslD=6#ZC-Kp*oyFL)RJ3gg^-%GPUzHT0)$JUW!_s#p1y3&36 zH+8)|aew~Xy7^e*v*El~wP7lzQ*mttzX2b)`$stT|KMG`R|ItSo=ohUFGzdLsugSR zZvF@97P!#QJbBihw~0b!AcY)6W{XQX7G4Y&4f+T@_n3TI2$Udq_}VFx6gnmlf_1g%$Crd8;oANnKZojcPkjPb z$PSBLU@oc;DaAsQ4!9=Dpo`|jdQeoFv~C{$ zYx*E(vBx#ZP69@A$ZT?*V$ zgLi^FEYyicm|AoE;7elSZxd0Cpk4WI)Nx+hNFomv-S;w->6l7(f$S}nBv|B#?HrBsm}f|>Eokb!9@^l;IhO4&c;DO$s@;e~CzV|xRA z^?$yXiVqzkAum^P*pkhn1L2AFI1SwwNzhu_b{fI3GT%Y0M48>i4*pk)_FJp0-<1kL z(Z?q}bAEBW$^)(GR=JJ&mzfR|+C} zYg1sNZWTJmS!tT%K8{QAdd){|Qtddmw*IK2vg|Mh|CZhIniRji%Fj{=A3=2Ye;l^f zQ60@91p5^<+0^!WKLOX55Osd65*37ZvE8lY?n1khSNnXsQy|;9__dFl@94btozRAjQ;3^1v!l90}BfAexkg=o`Bs8bOT zi7PffOd%kkCKo#kQ((^#QhaJNrh43jN_937vEux=pAu%{o<6Kp~@Hoz3GCs``?bHE(?RmOr@lFC(P zDastO8d$-#*v)#DY0Gll4)?^^MoJjUDp}5jMln6IlOMh%M)L~T7?wU49?8NLtL5LM zH01KQcVk>3Z%u8(jE=$;@r@~LXUntfmq9aWzs%iQ`qF}RTqw^|s3AroOon78th5Bb zMa61;(2i^QWp9QpfeIrbwY^{Q5xN#b${Z1Vf?uGLGm@q2f{3EAB;)6`xhg$4JFyFIRle_lV}S!)$n+Dg?Q{^F zMMQ|nzGz{Th%1?$RDgww4XC2d0u=Z@brYKul;)w7X__;LTS$Z*C}wO<7pn?K8|eLd zZG&~i^EGrx*NNGspR6I<#~coV(I5yk^6WG2q3Lwr7-Hi|Q*e)2t~^ZOa+&uiCdC)Y zIor`1s&+58aZ9(rt84;kM}G7L(uYM!%v@BVC1X$k`hw+UbIeN>(Z!q)6)gm52MAab zg5e?HD6}s`lD)POd^6caznC?o9sk(u{Y?raDEgf@nKBv&K#_2`3$6|sGAK*BRro4p zi<1@G{V~q9V1bFXww}Cu9G}pVi7pGcXWNFHRu_7VlX|6!`dINmV$9IMr>b+iwXCE+ z0F7}e>q4|hNSlya9yZJUBMn=tvp5f;aM-U)Km7g?raLylXci~~9m1k^i1P-H=9`{) zGMK`aFkWQ4yI(mQB1$E#2(hGxm#>h9M0w_CY9cOh3&NuVJQIZ7>mq{+?O=S4_pK ziZSgYHkibY)i14`<5g9(VvPgjGzc7E&9ShrEz^hb;zWqB-wWSV0dV}V`8N+~2(m$1 z5+ks57+T`ip+H#Xz}AL?NYH7-WeuR)7e`>K(utJ@8(70M%%Ey)R}?E-L6^`9^lVf8nj>T?P2vbfR*gn6I-tV1^ePr^1{T%_glU0wBe8Jm#KKL_!V{7P zMLj@Cs?ae=!wDxHmQNUa==5b4ft&7D`Ekn_FJjgF#s?fToGpTU0)D{*D2lt|wKjq;;wCpII56Ic1%RKpRaJ*$BedG%2`mBRTA zt7u84Gk3O{wtDQ?YCzTG0Ey!rSpt1ZM0;|gjC4L49E4ZF`vIU)<z z!-Aas>3s*3z>$A~H;t1Nq;V(%UjUor`nRfRZE}z9iD7!`(dz!!RmL2baQ> zn6oPO*ur8(5%E8iDQeT)S<5*0PZCF`fsKO^UL4Z5-LcMo zc*q!b?(#g_q@}Iz+iFgCHhLAUBXc{3OWX-_13t9J3>_bUkE1JUJ4 zx?BfD9N`vcDGmgxFWv2Hdz2HAnS`k#1Q~_N%kFu@6O{lnKQ8ukKjLorAlG90>)v~d zQdhVq_SaKo%=F#0wCUTg7!ui%w>IfOsFUObOK5>hZ2FwxO&hQoueoeS zC~eb%+b@{i3*24rufgsM@Lkk=312PFm(je)IhdJcytF~Pna}LA6I}y2G07A*s{uxl z;{?j$(re3fZ;Pq{z9tC_A+X%_m=7-i68Qo(7EtD9Mh+`^9B;q?*-qeC)ZdXMD|I?1 zNB>~n+skIMyk$2hgv=UR^W)ro)}L zFTHX0_kQj0V~t(2^Y8z{{(BQi7Bic}19Qyg(q<+*w}GQc8?&>|3NI&V&}+CuY9^oD zcsQhb_JVBkFtT1PxbkJ3BgbH${q|@Qzlq=Y@K{*~C%!U~8s z0tt!O>J<`gQ1eJ+orUO_fIy83yWUtKuX@S6Q?HmYE8CdRCo;S&)h+Zx?6fB3Uz=VP*Cj-YV_XaGNErS*La>8N~Eu49N_{u#t~&5?~VDmgp{KVsn<&O-=H3 zp~SgpO5m}#T-$^YL=!&kL_)C&6goaPSS}ewDob7woTE zB;81RA@BcRb?*TfRk8h#-?A;)4QwDJA)(w|S`yNGLXi!jN)tj4giW%6)D77UHGu#@ zQBY7(Ku{48m14#66crQ!6#*4H3L@C>2`VZ|`+d&bdv`Yl}nKNfj znW9cPP2!*f)i~a5$OQK*HX8L)YU`t;BBd9R)eu4x6}LhNO~^h-;pm?bLX!}hs%R7i zvw;yBSVF{t4?)#rG>#1MTQ)shiqKQ=tXq^Ux)`S+wqXYwvEYQh)NDwG@^)M zgTRvcQpAueQ^a7Rh{22^c3~?!WH=(YAw`sAYRJlHL=Zubh#(3k+_q+rTCr&XFX6KC z0=#87?W03Lsn0$-8q22EjDq5LSdG+**O>!n&1n&J$ zc`pfjM`$ht@eii$S528jZ?zP*(YBQ_oM8lZC00Xbv~ z%z~AAsA5@vta67Q51j_Kz7=h`S2S-i9A-HBsPIoDN`h@7>jDly!2T-YRjHfg0}#Ni z5J_bRAP|dcE}_-g$_WTcmMB5TvQoMXAEbc1o1GT4~OMGD;|t76%C%&0KLBCH&SFrg)Q7}z3KU;73y zO=P?U0TBW_v#FeFV$oo_%>U2^!f4(SUz!Jsa@Armt=Lu)V@m8jjCIhuLza_T;(|hY zw!j62CJA3iRx^J{ZDaWzYEja;4nGbX5&y^v@HNKCCyBMfX=1{>)~Zo%C-$X^N(va| zG_3b|NioVX+oZ^Io#Pc0tb^pPyz>{rk2>DBKSkC#}BqSBNkC* z30b^^mjJ~`hpb`rmUCdJP7QAEA8f0N%?>w)z?e!lJ38*Zfz1xLS&Tw44QzHOL9y9k z)&P)Hn;o!=c2vLujkPrx*ksS5Wwi!oU`Z3t!5}Z0dhm4yh)*W6V9~u^2Asmgngk=0 z5Dp`6B`mviCew|eSO`!dN+u@u9cC<`4wizPW(^Km7#RksAzZ2v`R;vt>nFKNa=##S4L7AuX_ zNCr6ulR)0mpEk7>-(7M3v%+BIC4tQxvXN|{|ucOxut^J^?& zfT6#HD)>{Gf%B}bRGS;Z)sp??5`tlYO0@Fpx->JM4^@%se`vZesVRWrZuoiHCcR(6>8XYyOH^_lRq_yKebIIf zH}tSdnzs|l=BUs=iNRJ?>19JCgOO^8Bq$j%!L=of?jVINvS=hLw%^m7+6e)HQmY!t zzeWnLv39PtcA+kAMX~$=o<^h(yo6{oV%(QlyTUXeR9L$~WU)qIjwad&K3^|&lZ3KT ztA3jV1LNXXV`)uPq*e;bu^PcLA*dFrFc1xP zU{ot9u-1y3uvpb}Ibek-CB_2gRhFX?KKpiPYwQUmZ|?6j8J z)q-Ahtd%Ual2mI6%OVYHU`;JR+fl+ml4_*(H5UIY0TKbO)u_Rj4kCfZPYMDkq*k=u zIh4TdCxz9}_FaMzGjGu4@={kRg7`dwC@UU))d8_du}d9A3Bph-P!!a$#u9|~>S{p@ zK*8vsEF-;8%j8^X{RRU$v6wIlqi@J4EJ)ojLm53r;U()E;v#xDvINzD@is^bB?Y~= zZSd8C4Anpv49HTu{Sirnb_T=VBpU+(z#8;@nA}z!$O|H%>V!~KC14IUl65cYOJEPm z!LUS<31r=nf@;B}_@V9e0q3UBBBDV2+rcWT2vC4XICU3DFI*ty1A|EpCQAg@0(#-K z69T}51!f63P@e}%U9xIx#^6mxLS}2mSpo8-j-K_Stmy0wN)j}W{LEIvdQKy?&H?@+ z7UkR;IrB;^oJ&SE56l`j4;_Ux7^{+@Hx3B^ov?uk_fE^uj`1{*5k>}O0oEM}{?24P z_L`F!dD%%3L1vE8I;@>wpm8CWuZ5X?tfvFT0(uK4DAEa`nMg~Jthtm+Xi+S(e*|k6 zV4F5y(Kc<|W$DC*wrQ7aoEGUE1KhGk>&X-)f0$fFEPIrV)pBJ#UNBz>p_*W^MsJ3W#hFcUym1!M800rHp>?s+Q768Zi%kWwnhQo{>THg9)D4S$4DXf zd2@fIC`w$fv3AE>cgT6sWUpk@je#MWVR1CtWaBImaNXowq-a^2g~xPD41Cb^#?oh$ zj7nPw1nQgn#b@=a)*Vzcaqanp5>WW{;n zuvua^7YABv8idepuvya3X2wc7eg(zFf{;K%AHg*AF$}9^NFdm4#TQTpDu61+ph|Kn zSu(pRd1IWA%@Si(u~~vc)kCwp>V~y4tAw^4YfTKWq z2p*M$yv!`%1O(&=%cVe;IYMCoh)Kt^$b|JQ^XUhG&&0iMbS{q9aw%5;=)hi}2Bt;9 zh^WO13cN(Ieu^TJ8UN!uEtqp42Brou_R0yoQEGo<*hf)!%O@yBQI(>oyJ?hx zSix2&Si7=L2HIQU1PP`EQR@2V;0JwE;16=$0REmY|6B*qNm5ZBkg7J{uAUIDh4()O zGCGF9jA^GU_*M+At}3w6Zg@P(aabIbezM$cT-^4FK!;^3MSl zT08(z#Z~X5{x`rVO5I`0X6HtBCr~Q$B0%KGgfI0ZsI_HUd6s-{>??7hs`H%@_2kNrD=%`@^0 z7C~uO`&kn~L=!!ek({9=iJtp)mSlRK(OXh5<|5IZk(N|Y1;8Itqw%?Hxt9h>nU^rb4-!$T}Tii3M$eKelmi#mc>f$8<{+ssf%R znz~ZyE#&wQ^cENfFXM8x-ip75-s-@5t3CBrESsmglWn>?u}8_|&=FBGV?uM=6&Vvy zhHLK#A|vRCxF#JDYl)IO0nL2`z^d_AVWg#a1FVHaL z`cHSp)kcLZ5&bzGLsy_fu*guMW0)f`F``3KNh3qkA+!LgB?y++oJZ3v0~Rk09DN#k zi}CX!Vk1@L)!BM5Ggs*}qDoj23D(nwjT$8D%AJN6bXu%hL4SN}D#)QSs20REh+I+( zs@0vuHMXZq>dr)f?&xJk)4ZY@T1ul0kLi|lJTTg#5ak~e)uMbUUb-^SsI5&VsQ*k< zV=NHq)+jH=0?DG9+S80%f`ptTbtk8GDt3@ujTZiGA&oH#u@KZ4=L?B#7?Bnxx$&k@ z>a4ERVZ>aRKn<>4c*CUJfXDskg*Ovq2MD>u_(A=ktfGXvgsCUMoH7}iq+O#5d{T|k zL?oxEDUtOH#47cN>o$j+?6=+t0Ah8)HDt$@t$vB=xq`Qn5yQZmab@r!Dr5gN-~nBX@Uql zC>LE03WP?J=t^KS`dYPFN+>%Z_{PB0EuZfX8h3p_0E-GuHcZoc#V&0Eb0^Z7{*0NE zQUOEwnc+KC-RzNSYl)QtAfC2(($RLJ(mR0+qGKYlj97v~+qTcQg_vUghC~C-5(Esx zfUQqp^Dk4n$Wk~{xCCPbz)ZnV^F^0exL!vdwtX{bll1PJoRmXNr zyG_*cyu&#qDLBnckmh>+~`FHsge2sl9Zf3#YwuYjc&H4=|=i-{e<`6S&% zoRR?)L=d|T9J)135Xw$#^T%Wk#41k~YW{?Lxb2z_BjBvuwk*7Dt(73b4z_aPXp?eR zp0N`z;PhD9Dhf)Nb=^%?aj_)U;&uLLPn@?j8d~xpdXJ8-^Ikc@O0anJ;Ie?rs%^!_ z?namNp#r$(P^992#}W(9LTXGk5NbxMh(&9w<1HNKkvd?FXk)e`3G433GJ!dt-QcGs zJ2P$HhVhDaO%uh%*4rHPwq^u2bu$GIwsDDabao;SQmp3@8<)DyU24U*y}iY)?xDwF9Du(bR+M%%#iKdtiy^m?|mK6etE7CY?J{I@y|0L zt0H<&86||4p6s$2su1GR$c2KL?v=pkI08{nQV9gO&XSPD<1BPkNg(d_EW5kJWd4fs zqUtjk;ai0F%2mNecbhJz+^O;c&ih~|!})|@;YKt*9FeaviC}#qA6-VhBOhHRsAtV( z)8|yGft(keipDBazjr4ZL}jZ-hsjt&2b)lb$g%1+Ar@4%a+Q@lXsshintDyETu00v zR5*@@r`udnD0@S>)N-{jG)68BtU4h9unNby5@iNL1GWH2;35WDNr)5;S-XDw{hR%F zKJ|`mF`}YCk;^*q`QF7V4lVw?c5(fPD^wH1hO{s=wb37qQhQ)ADi$fUqx1QQ{>pV@ z2cpQZKBgWakJ)VFA!>OV;v7W}tRraIo__~_%|FUrZ)T`PwpQ}nIODs57Z;iyfkXpL z9_fS{bUGC~-3vWKBM;|$5zy!WL_|~0_ri?kbG{ef_{OAAZ@F=cDD-LTSHCmnC;OB2N1+-{s4kY?RAJH~C zaj$a;4Pn$!zEfGSZG0QGXQa@!oWMgTjncTFV+1AkMk7!?p^wg>5^&m-`7Ff+r~_H{ z!0j}#+3a_EvtRKSvd2Pf)c%^Xzx^*{PqdTxFGEK2wLj*q{T+WHdkBZf9=O2H0BZ{S z3*PMS{0rGbb|v5lI4rUu>@hWALbI(r;OW|xe<6D)R~Wv~366MEGF|7*l$}IFSOOfD z5xF65fJbR2gD0*%1KjM?Oa{BJJp*>k6i~il6OLSa23R84Obx!j_6)Fiu$c_bU3&)L z>6*!){-CF8|Ew3lhc}bK>TAycJYzE%JaO$AfYvsX!MfEgSNLMh=GPsYUr<>gaq)I>(#( znU1l8OhN0>;UGz%HWD0roA0u9#7TnG)ok%0JMD-`5-63(E!!7@;{_-unnbalh8jb; zX-JGX&FarKnNZoZ&4k!J+AV_wxbBQ_R6e4TXZJ?R@`QXIAUIwP8c5ekB85kqSRi;A z25@K^xph=Wlz`Kzfn2oqo@ajI91(;s1Z9+IcG`X$DuJ|0oJwg&sm_+SZt<(~2mw|?oIOBi@fD+`yfDUUsuQZ;?c&Hq) zZ;%c-ys>I}IXL5IMqX5fs;0UUWQaCEm?0jkGkiGAIkd#Kj972V53A2Ixe<6sOoE}v zL*z8+@&mFAUg(JHY@yFz`^Sbxi?*RnIl)$~gW3d#grbAwf5a7PT4*Su%p}Takt#sh zqJk9KgdiEDBt+2yS8VR$BDk080q|6gSZF$eD3W`I0^}Pe;M=D9ge>Abb_!`iE)6$2 znHrbdG7&Hffdmrp(D;9s%%CtBr3z&TUw4T?Z5m$hmOq*qbVxL;WN(lxRc`eodNonU zWz(O5aw!UzDhholFqfT*NpItDp7nmp6JmQndlO8exM7EO#sP~3+gZ-TBcuDNDrbK4 zRE0@%sd8(e2epc}-PBeZPsAmojka$Vdje1+BxjYAt4x(A5Oh|s0c(@WCY6@1ux3lmtB|OB`MhQQ_!rLn0!6v38K^wki;U*=#4V}`!^8cBIw^qV~ z=(qMb-%1MD_mqD-B_Fmrj)mXL!WDcVorS`h5z){{3Sud#7}EvR1-8kB`6w1HAlOHPBM)fb z5H_f@*unc40g*!IG?CDLl{}DXOhG2XaIt+vHDW^-#goiA3qytjMNkJh8$2Kah>K!q zyfc;ze?k$29geaj3c^9-nufV~AC-cS4HT8oj``?7sK!T_Mx=obBnT8=<}CmagFNVr z9>vJNX%saS;&BwWD*Grxd|`7l4G~<-q74)#VAtdZoMMwGYXJMBF|&f$+$Zto-{>>- zx60I@2E9=Ta->Q^y-%Gdt2hMn?{a1|f76_bWIiemER7)*hkTtNo0X8ie4U`JxoRUd zIv+5x@d`f%_(Ih5@?+jw87FY45oy|#*#)E!%jk(B(nT|<47eNR77edS;UfHg%H70oo&nmC9AFUY-$XyOkHP_CUJQ3U5i?)V8$b&FRi8G6(^Il-POj4zuq z0rzJamWt4ASTyE!D(cwz#r51(7%Wpf*<>Igqc z4Tc9@wv3E0@G#UV8)$;fmkD1KHj8X6Xs(Jelm@`1c@YPt`(mK+?>CL`@YfOKL)Zy@6zBm^RvGtz7z9Zx zU2X=3mX3-9hc6$UPIsf>f(99A7CPOI?Zrnf8k;;m=}=taDs?@0c9#-(W*n}K^&1*8 z8}K-#nhjQ@z`j?4yKU<)Kqz{%(nZ5G$U*ZObl}2;)Pd}*X&h$dww=K?9mx;p2CyA6 z5}m<`@?mhJ^U%GRy6k6UtYRwJ#B3KB?kWaY4@Q6Qi_xf}e4KqFBw}^=ZzBkS>Y8xB z@V|xoDDR3GU&s5Rp;wdyY=ba7p=i9(5I|JSNV9RFF6eDnLqMktP>>0>ej~KIMcLh_kEMJOjql#0*$? zk*#7rLKh>*UaJ@hg`AI7O!UgJPwBi}2+%4coGPdOlhxZkvI^Qq!vGx?WIK5gxNIZ! zN26;HEHqp|yhw+S2XW&>un7v_U0EtL2&3D!n&_|j4QiByM-X;nwnl!ZJaJlsN%e`t zH7g>aiKtRz5s8qvfrtdk(X5CBhKA~gs~&LO8#RfRh6R<_*kwF&<;-uXRRsTIg(Vtu zAJb6D@{FuEg7hY9`(^Ol#PXtwH3Cm2M`lmf&kRiMQ5^L(D;0lG?K1=b^KRDi*XggU z6(EiSz-7>1%Cgrs&7KKU06PxhlpyzdTF2U?LY8<=U&wk|&e_&_;jK2CMv~0$SW!`# z`GVO3@|F#^Ff?x8U#q}fEIV2fiJGx_S-}f{I))3ia2RTMX-gxV9pb_bV2TPG56od9 zGK+$7W92>9Ei+Ixf7!CE=3o)7aM3cGd{wOvUCWGdv`6q>R_CLMPzMYui5%NOK5ej6 z1ANC3hC#B*1$DHb%9zMRG)jV19XDXeD=Ro!g@Nk>u&zSG7FCF}+<=4x^B@adIii^X z44~60i8Rm(1R8+e#Rpp30-2ZaEDgv%=+Xr>`EkxT$sjToUP#3w!npFD(~SpNUQ z@&_XtZoZv37S4Fkr+MJJctt1207HTuVT!1tGf_EB3xVSyu!;f7)ioA0M%G1&V4n~J zYn_NNF`CGcBmoR$vxL0pkGJi=yt9tM9=cwVWKbApgBT8yXbcxaZ9;=tOeZ(UhN&V#c%BrLSoK5v9ebA>MoW;edzB`WofHEL!pKM0_Q-ygn62kv zN!c5A%WE^a_IPNBf@9%6&D1!=lt{PEc9tqj!nJZuB!p|K!B(XPbnT*zL%~!P7D!*W z(^q0?>CQ+clx9v=3rT}3DrwMQ*b`MTt7{r?-U5~|5cfj2f0$3mW6OM-48{nL!~|9Z zbOLxTE3PnYF|=27aK>8&LF1K_;ynxi`T_hgaDWQMB|!85sRCX?<$}ehTE-+vf~svr z=trcfqx!V0|MH|Q-NUpRV67hMSj?VfW-hNMOzA{iXaBGB;z%TV5}^u$f-Oq_Hr+22%@ZB zQ2WUUV|)k-SuZ%eBfoiYpakL(sM0>*kmqm(9Eyxj;9$*TntJ&HDh7@qtCp>U7 zj3q_w8&nfmM&v`ChS(a!tj$mSux-=Z$2V`DPdRW|FK&JG>$(@t-SalP-R^oX2C$)K z6-#A14?$co-$Z!AKCtB&fDNQg0-4vOgJ?ig$Wq4BKBKF#m_`@^N-xW|0Pz1mR--I$ z*nGg>M^*D5tVTiWF@k|fOwun^FL4DUe+38=b;ZZ6R6g0w5R-sR=hs<{QPKfgA$`X`gIr(i6Us5J7N*oUo|4`W-78J^j$2L5YU>X*jlNXUVmUAEy2T_iJpdvbD+@Ugy=0irbUk_- znr1{Qq``F*R%D3P$Fw$=^&;9sr;&qr(dlJOz2~V4GD14a3LFG#=7;$cZHMB>CQO&l zo`ViakFkbhE+ifL9w+L^K4OBv8Av<}} ztv)@Cgt)YdvLNtMCK{@gj_SnDg+$fVBPFM^EB$!$Lj+!m9K)fraegI>LV#wN3d$p& zW~h@p0_Pn;D56!_JVsS5gCx}ou~~x%ujvc53NWVbghfQdR&!B2Hn*`Ogw*kTW|>b5 zJY&Dkw_R5VRdZP38#h&%*a$axBD@S^=q5V}^(pm1;A6f8-%Knoz(5J0odMM7m|DOK z9mKklyzmegOC3XG9kE#7Q5xC0PNAR@NX^!@veO1QicUE)h)@jLSRf}sm0)-V5H(ae z_Qn}^k=B!SAjk(T)>JrYsts3)NLH|3TGW-@1Bs6kPNfw45R#)0NqI~6kzf>wctF3b z1v;a@Fc>8b&H|&_p;tijkpPjgT zr{q!XsYtpsQJ5j)KX_iZ(&-c(YD;7d4J=BBx(R0|QtlWU7M>-fF(ac$di8YP48sDM?!>t6@ty<1=z^qJh^4LOD}{UBj#tps`_u!T~hGZE6S4 z6buU%)*H$!0&5W)s6MSmI|x-UEGQKL*tY>q%i@fKfrB=5s1lzDCKGh`meAaTBH3?M(HYQ;yDJ6zYG`0Y)pmzoH!!*8)6}%2xP9#x1Z4mR6`ie6avGInE z9t3%#liTPUe17xjnlb4{TqH)ztcfD};S6D%Xts?GvZT|1>v2?_q|ez_Loz9Dbd!X6 zH8q&@y`?|GO7~P|6Z0A$zm4Z<>eWms;JC4 z6Q6y*yQ=fuRrUgRlSpbA?U83VCGz?CK0<}R)*n|;Of9gsc%Y1RBf;g@{;-|-yR z-N&Dc@2!3O2jFi5|Njia06ajn#I9?CK5IIb0*sz27iaY;UY3;ccHx6aMA=H}++ z=N9EwT(BR3)L-IFmn@8W&)faoLzEPR|4~# zMUty{jzdaBSbI470i0Y1IJ@L>Os{rS6gW7pBm5>fpbLY&1y3uSZ<CI}M_HjX1#t$8X09ck z4|X-Px)xW=u$L7VN@b3UsX$Y%O!@v;s+lt)ULjgqTmV4$R46tLbADzi)g{R4&K2;>9kB8dh9U?3UYA*q7j2MV_1lIkAv@dqHWmRD|9tC~#I+xTRjwZlsHET>dn> z3mr-wIa|tiI4XQ=GSuOo<}8#d95batr^8jzjpgP5*(r2XI$g!?ezPha1#S?_;)=>@ zH!u~rD3!~pSjJUTf#Vf!S8So9$WayJa#!cGk$|B=SkG~lS~DB_E$~iw-QQkZhWyYh z->#OkFRF5uOM^!Z9~P@rta%_cUsWZEV^(FEv)G;Ig;(>@?d1eC7l?Z`DCZz*p6|Qd z6A6-|%t7q~{m_{i4W;p;jxWN$B6ptB0eQuRN~S(}%K0R!`M9{b$fq6Bxt!&WyrSxg z0(Y^qf?-615b9+Dre^>s&1)E``KEb6+-Ou(IbAMKh7u+?msHJ$HiNmhuZTubUwL4N zesC0H@<9`e91fob!-sfra4Kyg{G;?l&s6#d{B;&Ew5YPr%$wmT0BRK2EA0iv?%BSR z+IqcA6YB9K7zJbA(Bf&AFhI&NV-XnwIVi?(DhKhTp0N}BFq+)eRTaQ1dxbpBGkTAt ztQ|Dwo7SbM+>Lse4Q4jq=A$eL@qFoQawC5V{1ldsG*}Bs%OAOPIC{^3^Gyp*jOzhM zG}`V$N3ePpG3*BqQs^ji+oj&Uq>^#i$cB&!AJ&N)y$Y%%~%^j+L znBqs(xgfZGaECyXBz))-AaZr}m_=d|c<$9xMs8&a_=a81pKc^*aNL5^TNh8XmB;)* z6NB>OJC?js`0wtL#&q6#!_{?kJ2cw}XQAmg2eZ{mcxXccK0SYt{b; z-iZfN{oplOzpMV~@YCF@`e(pD*2ll7QG5sdzWH4bKjF&Jeqp`DgJECoI=}xCyxg06 z?%5l1sdCGa^M{##_>mniUwCrn%NVo{AX9avg+-FH?9xAn9Teqw?>7m_D?>Yak&HO#C z+w<FAib;7v6p^tXuYHuP?rs!~A!@(dESh_m|$e{$eik*FThB+qrD(r!QPA zWd2`2$qN`)wB^C~FP1TX*B@W|{LXX7e?EQD&HT^TUEci2wr8I4zf{BgO9$7KY4h@L z>T;=``A5a?N}h6g#~asOTE_gNyS{Myvc<#ho^WX;^S?ANva<8c-;cU4tz-V>&!2q$ z{+Et!T7GFG^RKLRFFBa^=($HPZDsz0YadyDXJz)kc3;}g{H1MLzH;u2;g+M9b};|5 z2?>tTU7mRR_e;B(f9w3YhxQ!5ZcWhT{mifH(LHLnIrl{D<-^SX-W{&uHJv+e9(4H# z^S5}DTlCX2H(e~ae1iE;g$3SGXgIlJ-sSI^fB%vZPQU#-maVybmieO{ZI6!&dG4L3 zFJEAO>T^(wbq6kc34!^c!{2;!nJ7B_^0&TzYSuQ9Q5cS^_gi^xR>pM;Ixq^&aZk6= zzcKf~s-5W!`!R>)emD0(;=JXfIO3c*Zd%>9TQ;V@`+hm2oE+EBdQV8#Zo}_i!u4d| zyPe;CIAKGT%?eaq4vpFi;uqjntksbfpnZHB#zKH_rN_j}q;&-%Unq}@Mp zxy(QA>+ns{#Y681;0u}myIU*63V+}~>Bg5a|KORY?^*L;`Gzds&HRf?Yq!sx<@ZxA zU&H(}LqD7Sz=@pgGx>VvfA#gX6Yscj;*EFk%b35{q`UXMJ}PD3R(>V(KfQj{AGzD3 z?%K<*WBxDm)~|W#{{EkT!Ea>#F3U1LO@4LlLl^k1%%6Mz>IbXt+4F0#u$}o2y!>s> zs8^0Wmmut5{^K_5Pa!{FSTaP|&HN9|%6)I`0cn4cu%G#ljc}(ekFOPuF#p|8f0;Y#osS=RRye`@J+mL)_;JnJ^M{1*nctkf@!=suX1sVxILrKD z>-s!<`nD}gb>ao)kFFoP$$YxwAxYGL0&!eq!tLLl+-P3g0~=Jxf3IoX1LxP8zaA|H z$=}cR$p2W1*jg#JWB$blAD%P$`s});VrS-$`E0A$=Y-{zhs0>+Uw%1za@@M9x9t>@ zncw#OvUT@{Bpv=l?8*F(hJU&Jj!)a(_lua#{2$Le`a;Dkcb{sh8N&R{PLEA!`_!sp zS2dd}_q8-Lx!_UMop=Y;?~mMw*H?c&@^4}BjN(EEBpzvwqsoa0YMMSsLvujW3B!_K zT@+jF$|Dhdc0{C48f*_^HF|D+1e2;)wDQ%u+rQxt&g_3=A!VMkj@j=p$5yV34p;z#>s$H}Yaam4in`ZVSm6QBBwA#&l9$Ab@r+!~}IeTDj|yxI+|6vQ=e6mC1>gdt8Q zln7gUnDNGOA0dqJOnp|`D~bzBi3@g1nLs|$dC-sI^n_yyEXfH$4qAtN0;DUGN!jQg z3395Gk543Z%MlR*zOuC}izeeqb?gPFQCx5G_wx4slrjh8QK_nU>NNKhN#=F^C8!08 z+?mknv2Zk(D?wh=f;o7G;CVZqgzF7cQW7OCzNu-pD`|HtY1FiouL_ql_(pv|bv40J zeXoP-180Mi=r>o2#vlJ^|5~XwA_C7z&Gsx%htZX!AX)w^MtZ7q{H%EB{NfYilj4)( zQ{q$O)8flM<5?Qxa1X(-PAYGm_$y z5|R>=l9G~>Qj$`W(vs4XGLqwy6Ot2?laiB@Q<77Y(~{GZGg9JH5>gUVl2VdWQc_Y= z(o)h>GE(DH6H*gXlTwpYQ=pehOHEJBNQ+NPNJ~shN=r^lNlQ&jOG{6K_9{IgJuy8g zJvlukJvBWoJv}`m169mG@fpZE1IaQFOPwwrW(L@Uthzx5jr zoDD}l-y^e*covb076P*a@9MWWAOqpL>W_fm3V)To0wWxnpeh>RP{v9sGRt3Rth%6S zVp=st8FjdgjJIFm>CMBzXb9yH8Z6_Y`dv;h=gvxk_5?UhBLj(;hf7DAVAN+Aog{^n1( z>Q8L+)6mbS#3ln06GB`i&D>Qa$8ozu%nXOJfJ;Q1eEp=SQT-{<^AUVie?cREq2iwy z8yh<*A1eO}sb??hZYhFZBBhzrKp?5lNC7d0%Lp}dEs);;JgL6d<4N>P)rXSqR7Frl z{b!e8X{eHkE>y-nB$}gKh~y&HLyC~qt&v2Sr*JjMkMyQD;n@|>ZFrK-=@~pxRZlsT zLj!6qC-}GV{RcUNhRiFnx2?e8#EQ^x*$G{ zSJH#1e&T%ympL7*X1qqw>h*%b;3xQF=RymOnGY0NX04rZF@sUzB6B< zDHR?UpA>co2ZeWp!>0HBJ`g?>KH-mPzYxCGd?WlIoza{V{t(aerfxlY4;#MxzWeT< zyY$YxH$3&ijZf zum7OI!-f|+a-V%Jyq(_QZwv}a&B%P@(T_g%OIvaKBYOWHy^D&M-x27{d*z4I6Y|eq zxI8N7p0%-Y-6BTcyZ(U(H$MExwikBn))`H0+Gk$Z?}kke?|*x}zHOMbOYiHx{{Hmk z*Y{|oPF=c2B&BB#96V&isL^A_O~{=*rNB{C>Y7zM|CWuLAAe%!p~oJtaK3!!Wb0h5 zsEHAaL_RLIZee>dp=CQwXTJ{G?%Hfki>SKIy3U%;ng~O(aai94X@0@}hR`1UGQ&WZ78=`{4 zy0!}n@f(H$vIE-c{dEHk-TbPJS-qolJ+%J18+5$ZENbhP=64uq@UPo6+1k(OuM23M zsq;^b)`Zmkt7qXT(?CD}{{6xS8b$>S()-u_+TXvuIABnk*uvni%h3BTNNua{A+{UC zw@eIJw6>_)ShxF@Aq4^T@#f&=n->mv;9mN3!j+ixL%W?59~uI zvFe7o$TZfk zZQV@^28fHZTDGYl(NU+Xd%wH3w}r2a5yLdXf<7GsGqwDJLs1LAs{1W+h{j(dEDFpX z(yQ*(o;qGLS{t4$ENBs}DKw4ouX`-LeL%FvPcO94)!nn`BTb+fAkNg}Vb>+!(xgd8 z<01^!VGD9h?NOIhLkmRp)7QP##lK#M^{HB|PABMf2EAXPe>-DaQ&@nxg{h^+EVgRZ z+Ao+7(S-7C#V~z1-%jWlEQ#I47-K9SFD3|y{KLYd!e-4D!ym$V?M2~|c-e2;tl3L% z-4H)^+|p$$+I`ld<@H0(UxaA9dk!2N zG;H|T@ssmzzHRxF&p!9cu04A{3=9sLnEUH*moC?pPyhUAi;fk}cJ1?O=RNlL{1cKsHxTa-Z=EmM<0KE=`ttfSr;DFEX+29YjlAN zwzjC-qV4FnAY5!~;5BiYWQ|_r^*Vi^|A>~Y^rQ8nrk%f^Xb|eUWop`Y$&<=8C0*+FX%{{rhUpew6vyj>{X+c+;YxJ= zx-i{%eRpkt|7ZoyvCiY>*S`gB8g?ZV4}p@z7?7}3(w z(z0%uX5p%~#x_e8dwrwRM}!3x3h_ zQj`u~Z`IVjEQX6M1FlHJ6Viq$m2H4@cVNCh*bkU=;U>C5Joq#puV5+sA%?!ZQBQHxG=LxF5!!;pb1_DmgtD113(uKYpMw zzKxl80Ph5W*L31LgikbP`uXvp8r~06q_(@*(-0Mk6Mm6EV*q~X{e|{?CMDMx5XD~z z;{_oDbE!rEKJy&}5vy3>*CGNRBm`roMQr44;Ps-v(1GuPv?ipCK=#O0)B@A>SU5tt zQk77sK>l_@2I{Al(w-m4Yp^7l=MDS~yr4H3@_E6}s2?PRBR`%`Yr&&LtS#}{dM zY~>P!wt_}9Yq0xP(D5yKz+P-Gbiltp0_$%Z!z9D!i3Cajg};{<4Q&`?c|MqLp%=BU8K^NK1Xc7E#p8ujsGAPYaACB8LP`i8 z`05bRsanpD7k)v{10(nqC{M#;NP00WKIU=Z{jG%K;LUz2FyTkyeJz9n)EWI1XJ`SnQC zO9Ke#%k|upx-;^c0qYDfoASaxUb;?Amb&$k$k7h-&uI?3r8{-rKKN@eWDkC zd))=`)^V~~+6Ah#wUe16S|-94M)KK6wu%RoVJ2+hFc8ZoZRmie*=IN;B7#u&6xgew zg_`M*O0Wn-npx!}9-ib(#4C2kHn(;K`lz^qX^w(YFyXGa3WpsA@WRrVDpyQFQA&{` z5h?+Dkt04oH90Q5AUQohG1U`^SwkHaGm5L66=cT5Vv!jn(sDaI{CDHsH~!D?C&MXg zG-w?YmMM|F7BIC-B~AcWQp@$p=Vr8(@>SB&`UhI=phkr_Rt$L>!jGyjbD)rfoeN;pgalXk?KobO))52me1JA7JN&_T9>wXj!sBSXLBUpN%qTz zv&kzk1{LDn_gg>sv4)3fF_}zgud1@o&UZS?9I#VQnQ{;EglfYhpQ$R)DG1x%=o_;J zllWQ5pf=?YzMFm0(hvY}(fBFc8GIx8QI-4T8c3X}n;8=l$F0D3lFz^fxFs}@lrNp} zjlzakvJPUQ=?J6oi}fL-MWvQtu>|IOgcB~RtCI@hC;7D8Udg%fF5;bZu61}P7%Amo zT~CF38Nz(?oMC6d+*ajuP=6#C z05=fME@cBte@1&rU(l4}b2-YG zt%Wc=k7=!;K#2fO=0VjKslw}XAR6I`{5x}<{OsIEevX%)eU{75C9lcPl5^}?S08KR z@H^D1fIaI!T*aP_x8J6xl($}>>Fb*r1JmfaVP#l3o_$WPi{F6fiVnMXe1KvB74^D(# zpMA&sLv;tw)MfuV_=~+l%rn{B@BMgo-&x;f-!4Q%M=h25rHF~oo!yqxPpH3iV*1B7 z_gm1aW8Bx>cJ{M;_|+fB63+JfZrS>b@x3GacYeaKYp6s+V{Zvgp(%+Ezf+@FmH1B;Cl+^z1|}HhQT{8 zem3J>`{KdzwRZ&#c;SV?y(>N|E8Bi%@PRjimfZA3=j&}3+LnCVcEa_K_8M_KVZ@5- zTMs=kp?Bf#>&H&H_s5~Nzh7Veyr$xTBXL8re}47EiEj&rw0Yv^_LEPn9umH;@}cVX z2Z!8lFS@C?N*wwNTep%vwCddQFL&ox3>|Pjqs5CCHwR z;q--DMugv+dS{!@caF%<)||Vi%`YS7j@CZQPmH>ueDrI9U(A|v!@j8GF>P0^ykSnt zt}RD*ym3R>u5oV}gSnA=e~f+kw(#VU8IQeCUS%yFxp#b|U(3?_N4EdyUyg4#yf?D* zu!vV4TxuA#&HmG4%O2}J%2Ye{-yt!sQNwe$eKYCY!=nnG{wTlt*Uv_EsN6fr?}b)5 zU4~>lvvk^koY?zs+VEIbZBFfLE4yqP^i)pn+21Qdk9?Kmn*RJP9qw#5`kVew2mk!( z4Wl=NPC0UV>@e%SEnmMl`nuNL3*V~zadeB1QhHt5-(^gzVT<N9c7TjqD~ z?`pVx%%zok2E-43eN3;+=g03@_s5u`&aI#S<$?IIb^i|O>Uy(q?6Gg|J>Bx+nz75C zeD#;e-iOAXo|NR;K2$TVG=*DXv1g2XJ&QYA{4eLY7bEM^kH7cexTxgydp_Cs(YO@b zz*&LkTa4co5p(Lh+`i*~tUC8lm*iRFw=JL1GS2qc`2B4+7r*q)@$uKK58D0xhL8!v z_qF}y;iW?-B({(Lec;T66XtcUNegfD+=TmLCTjCP`F_H}3*-9M8mto^>=Cze-7RA# zF7xm4uf8$MCa(Hw_o%_^c1`RhJ^M|r`0K=>k9=uOuJ4{3Kj^?+>l5v{HJ{pE960~3 z+=(MweHV80&D`0p>))+>i<>ld#OJ!9my#!ypSWw_v0f#Uc0V>LW^2*rsT zJgJraxUPJ?-{dVdLpx_{`b_@d(Cw-=&inUsZ}l7de)}nBN8Z15 z%tIrmJlXB0*sa5E!sv*|9BX}Pim+;Y{fv~Kro48++2!!7UF~PjzZHA4E7v}&_PUo+ z_T6s(Aa{9m-^@LBQ}WZly|?eY{U+|vocc)#`Hyn-Yff%=5UM^;GAF zf9%j=|J2qq4P)P1!cY5f<(tulQz_E|GB2jR=_s8xF#A&eeH|Z|HsSr3&M%(&{3Hcv>82Yul_{Yq*1CC0Yi$BO-KW%Bwv0~GheOZqc2bC-@ zo%3GX`avZw-S~mh$@wLQjcGB-r=KqIzjbjsf9ji(A!jz-xT{OY()ckEXIIZ0Rr+FS zV#55ExL;3RWV5&HutDlGxfsJk%OmK%wKSR)z|ADsyJ%@qt>GNv?988#}6xyo1HV( zl}2TT_j9gXqJUzxM{wKiQN|5f?z%H*|9*Xhc@&$wM(9_ciFOpq-h?v8QOOUK`S@r7q^oBrj8 zb3RW_d~N!XTiXV|dg-_6qkg=9ZPlfis>8qbeL(+8e$~xqSKj~Ey$_TymU{Q>yUe|_1R+&xHKbYZ~1cE2d*18jlH|wX`?%6 z->;udueP~E=eS27c(>Yp-|Bb1TQFdYyWsMxiBFooaQA%0HUG2WZK{ork2rex!NJv2 z%kMBcHq}+{G|U`!>EQP2AKwf*eo_3c`h!bDw$00uW-RNyeq4u9IWyvh?fc>6)SG9# zXrEJZbk{30+SD%F(Ea0|XG~ZZw{*tAh?$j(&d214c{95vzO*hV|IV3D%=`YeHJSTn z=HB;pa-Tt$X8!)F*|P87iL;*nIVUpn(W$c@ir@V7k~{C6HFfgf%9NUSXYs%0?#~L> z&t911p5OX-&)EsPzB_u{zhcwup>t;X?@c~3yK?I-MHkiw&RI4#rmlxy z|2fWW=~Hf5I(LqvtW!;D+LLqU4~P!eEIv7B^7!8@{k{sD`{}C8lv4*s%zd}l&B9mW z;<^2A?Y`(}_6u`|q@RD%SbAn|o^H;42Nrj(`SqsI{#g%?ulXbAVCl_<6*cKmukG35 zzq@AdS=aMp0)DSK_v4D9ts~-Ud#noES$ao7t$#1e6S|qJYlke0%-y&0K;hQ(i`=shnyDxJ-oVQ}R=0tc@!2B0JURZHM zX4d@36`kHZxo^h&B=^>y9p`SHzkc7T#Xs-=Vt#WX?0;pq4cp}dPP*Ul{v;@3iv_JO zA<4-um0>eaGvO7IGrt5%fo47_(pz(1n24lG1=5tvDc<+!DH2T4QzkVHs`UoJ@P{QY zsy3ogZq_O4vKLv`s`?;RVI_R%a|`R@*>vA=$H-N)=&Bon8%9ii^pw zl5cKBv?anJMNGx+2rMKbh;@&P!Fr;|GG~PYD?jXo)N3xRMQ~1~%_GQb8Z7oQKxi3w z8GSEsmczd8@u_04%PX-lOD+tn-o#kXUJaapBBHFg95S$DR)GUcvY|e3BLs!Bl{yj8 z%#(?QA_dN}>hg+AiQ{^w$~M?+JW1vqf+xw%s?A=74GGMdQU$i5MSB5+c(V|n^j{6* zHH@A$lAXNY7@LPQR$Kfa0TK)bt{NX`@qhjI zKci)|YX_vPEZxja0T3Pl{K;;j`ZvN)>l#%5BaQrf;BW2o{UH3kef)31Px?AF{rm7| z`uGJw?tk^W3H}~F-@C%^n?H^{Vfd%U?+t$!pZI;@C;Wvv`l>%!GmMCT;fE&tpZ}@w z*(Az)XD&C?^jOw|H&6p@PhbGk#&!mnbj3DtL&8#k(fm* zFzHMghWTKMqNr?cuhAg%xVrWab1LmBqAho9sc5C6ifv#-PMB|t9fg<t1~bD7&& zHJh~IUY{qJ0fMcjC0Y{WtiZC;A}~d+*)Hrara9Mz)OIYZD|ZwYSC{*ID|0$4DFW8Q zu|mAlWrQPkYOLg%U5>f3RHAs1SSkljOKlY80^>?WVHtK`gG<2PPP#bO=bAhmbeVNXCh}6@GJ^O zU&t%;@~d659kVd`vjt2H5Lnsgnq3Ik5KIebhg?jdV+O4uWQ{}ns~iy8Ica)=B zWs5fBX|Y$3HZnP@us60)-sLvjMQmOvdWfwBC)!7jXlyy~58Zk_zA7$aB{GQuocD9G^evvUYBi`Lr@|%;!PuzN=6=J<56w? zE_WfbZOLnq5fAfMCE~P0oSWc?pHTfdm=9<^^BvQq`z9L`@m6Fz7}Cg3y5eDQq{Alr z2gM;<-wkjym(h=4KjC4{~|mJ%NbPkM<;tMAr<*VDArvlE=FDZ3qVJC>pOy(ez~? z8?1w5v}U_umG^86&>R||!>iq6X?#w=@Ej%6jQ-$mQQ#Z&dPwQ&_ymjQnWzi3Yetu3W@a>VbD zpKJ}pqZ9u{JU5LadMDQsj=oV`vX7_3(U_!l;}n<10LcuLABE93icfh4!4d8g-%eo^ zht}XwzElRiQ#^X7{Lf)8fT1UBlW^VPdca)|HyN%Ht`=@7+W*hx-EV4BRES zz+Pr94bBO-1nz#gEpXf6UWPjWcM|RroT)d;f{TGmfg1rg8Lk4Z9&QcXMz|N?_QJgj zNA00@5G)BcxzkwO^%KC-K~E(TRuNyIbZ_wV1wV)?5n=%2%hxwiGRiONz`;tBfgrBC2pAh ziszH4=^sk;Wd+XyVLG<2CNhxU}^fB*$%|}P!Qpk>TioV&En&42S4GT p`kl^V>Ez?Lz)xfSe^Xa%lh4DVm-3`UOvBt0sB;0zqWaKS_E%OT*Owa)R*JO&kG!g z!cGk2LZs)7$wp#~iW)UqY*FJiR7s^RwrH^iOIxhi(rPPhQPEP178Q>-&MC_K{XJvM zx#rq?CD8Vq_w)X72z$*r#~hbuJh$E#yX|`+EF1PE_)PCKr zM0d%h+0LCi-Ofv!TLjJNeP;fYKOP{a!F`W zx4dlXLXr~{dWg;Iv1O0L7bGRI4sJVo8(O0EE0VTe9&`D%TehqxVeyO3#;ad; z$+g>FdREf0eAjHb`sG(`U4O}cy=>d%S6;I1%JrK99J8Y@E(b!uv4)>E`s%XFw_SDh zrb|MOvb_MsDPwb9vHqHkSO4lImtVbU+ZGBZ69Qx~HtS2T-4tuTY~#jcQW;Nu@{E_f zV*OPwyK-C7RsNqCo1d09ZGGwbEddKBjm@)l+hrTpCp}fNdTfTvuDC+vxa1XAZM*W4 zmtMPZqk0cLLYdQ_N|}21rqt5OV@qAJe&hOW>y7q?t??v?xgyB}Ub|&|munx!Wm zcjAfZiRnq%iR4+4u1wSPMA|(mcPC|u0}hwZ68DoQlgXts z%V}q}a5MemXio)`!PB@qIZJ0~C{ZRib22|JbH|;W&QKj7<}|1@ikz6HC##tRNHRA& zGn>*abYXHzk~Es`8u!8%Hi3Ux>%?rA^9u`ylkTp>fBlVj+4WIf+Z)=gm#=^M)mwfw zO|nhvUyo2>8y0)&*(uteEhj-mye(AT|%l^<^{t36` zM)zrVyZfZO$Ni1_g8M7?ckZk1L3h9Vru&NfuKS*QO}aOIZThUrTRF-<-ZBeQP@T$B#GmrN8FV6z%)8 z1^!EXzG0A_Vz=qKB3YGoyqh0nQ;A==?=Y`d`bYjd*ZkL&Iq4Ru@60P(qMycqOOfgC z{1y3cC`*x^nsxe({ANAyx^ZUOD-soQ{7`PKiWctFG&z&I)aUb|^&;tB1)1^1xZ+h2nrR%bFKIx~~I@LQra7FW+sWe?zxYbGG zC(oTqxNiw;Y9HSYRZFY8tqeB7#!7$k4%cb!AVR2kEr>vo4(ZyZ53dDP*gXsJ_; z3Rhk4(psOA5`*ef!_Vd)P)}$`C5DSJi4q}x;9X7l^()mu@QyV6>hBAbhz!+!yJO+%icP6%rXVS}ds>2s!FZ2!jz zyv_9=b?wf<{zdv6QnG%#2UZ)xH-t&@_ZgNDlSHpgZW^LOGMCYT(Y)`k<#kK*X5G0& zVm1e7ymHWr*zi@ug_D{IYg9$%*{#3I->@yTV zavtbup#_S@d0Rnd#}``+kB#1BSDD=6OwXB`==%GvKMX7@{q4F|dbTN%5Vo7XF`vIf z@b(=PN8gD%qzHSRE^nuvG+SFpaw1#N%8eAgRyReG=WhDluig6&{!YAD0zIc&d;Dc6 zI^mlazyWZdA&b|OI|q|R`_SAI?uH#`$jOUL3AT{$LAz-E5>>RJ8S2bGYF+C4&%dhP zrKK1eg7ralP&%{3#{PQID)pgyYOPlXRb1F81*H4_M%IA%bsg7SM1E84iwNy45#*RM zF@pPFnV-&FnxtJZOob4&hGKN3Vhp@fG*ORWg3FZ2ktsG&vC?=>9Nd)l^)da92`snN_dS_O%@%o*yMRz8F+>)vipWQcST;h5FY=qxB)Et+g?Qu z-}j?Ao7J$=JsnLAXrp(BIQU7qixyk&UyD57ig&G*EpfUpr`T6(!sL zqbc+)TF*}6f0s>Vz}P@Z89z-2yCSL=8)>9b817roK5)-JzxuoPer4DD(ESa6dph55 z^b%li`)r%v`*~10|BNi@cdWi$&!xUr(IK=jqaaxhMQQ^<)Dh*gFJ4j-llsb3?5#H=BP zs%Sc3S5*c>6blmyac%0KZvyB$7fd;j`xJ^oYHAG1($M9C&_ZR&e$e2C;n5dily3-m za8Pa-5fY@YkzJ5H1e2ai-Q=M+JMyRZ0&{RN3BMTPn;LSD|jO~+1n14tl5bazgUPYt(vT>#mU~4`w)SN}S zI_a3j=^#B1lin^9D=^mrhoso!a45Y9k|T>Q9kR!lYgRtytc&as=@F19yD=bR6sxA- z6Nh0~qE4MKqqpKKS+&Mhx|yn@j;yAfBb@^|GstO^21Ea_;Ya~9Qp-wU9FpsdBQ`)1 zYlzIcx498aHbVy^mp9BHhkP`uq@bLz9*p!rCPr`6^ncL)Me^(<{#V{CR8r`q3`*4{ z@jsFn`;sJ!B=#MRhNhV{Q+qhifXzlZz@TPo0T*b7F#$?!Qjiy7$-JB`7&9>Q=ouH7 zrCHEDR5M&s)-gF~Xz=uFBq@zjk|(4OGtp{sozY}1D@sE};H)!v3Md4?bS}x?EA}^o zb)<>Pa9ac`a9ucWrc}Qv!8O>A)@10@pjA>%%@)nrY-V=D(0;p!jyH#oGUr;0%(7ly{DC=eSwRBBqA0NT`2ce9XSF6%dgux8K5mZQrt(3{fb zO|#6=Ec1bDyMN%Aze=%$jt@Iuj;E1j7mcQvEE#M#cBUfgnTb1YG<~0dUOK*#GBi(6 zE%SpW=8kY@T6kz_?5|rIFSm)PAP-^|CZm{XbVzdVT|WyFXJQWFUNMj2K7oDsz{tMTXYqVv+J`;}2PfCISS5jGyY7_S2>?F73f^O!w z3FqL^%5=xR(!`{kUC?t}cUU-C{!Wz~U;yMr19+{W-&Pv8?XeYU8d$67hH(|OMk`uK zpXtUxD}Jrjw8v^{jDpl0ttlB>k&KwKB1sQ~&2J5zI5o@XvKN?!3u2Z3PQ(=&w=Bfm z9{-e7YQ_W*d?$=Z`R^(tjEBTEd@B8xotkzS^HG+D8Dx!#LMg8m5vZ6V_~oS3?JX0J zMewMlMer~pQf#?N10Xc=0|8LgQ3^AI{6E#krZqLkUGQEZ40J=hS|qEJ#J6RO$pbX! za#7!JcU z)Q$g4b>Ba%`&GlbX@VL@n^-l{ggUw=YAqa;#|ih6DARlS$5d6f`$jz1veIkrm#jWK z$1>A+uv09pGTt8gAM{$sV-@AQt<6lIYAzzA@h9v(>I)2yCO zj}Mlw6CaMzn_hfariaP+kn3S8J}@e#ej+|h3xd;RtUsZ)itKcE+7uRxZho3>Ej*TO z#wc01ErXUMb9+Y?1$+$LJ@s?pwomTb>YsSiox6ThR%&3E~skW?|s`skYH` z;l46)a+@%5Pkh|s8S&*hSy;H+S{Dwotvueji&{X$1yk06nK3aBxv2c$@zioa zkI_@gu43OiYwSz@9@yi8pA_bi7}kUYcU=&Vz@bq@lB%InM7(%SDyRm4!Grur@RhuV zESmMz+Q`+7MOuO^EhPG81M>GpQ#?7gj^m%<@BIGZg}SwgHMyAO0m7rq1*3#leTM`= z&BC#n#>z9eET2c3O*=iRMr0B)g6U^v5M<5GS)r>t23@G8ob>&c)Vg72WYQ;n<{5;v zfKi*$%ji$nX<9h#&o(zh81})P%?F%^T1(1+RMc+XNAPRYyoC93wXlP&_auPP1jc7r zeW9A;m$akBrO=MN3+TGo(X{)^Lj(+$D3E*2%A`U0vAIvDT-CEV7d@Ar4rE~1#z|2P zJl#*osE=-{Cx<Q9r39M@C%j!WBVi237|V8o1uv6z2ndIa!g zedQxO(J)m9;+qCOY`KKK z$MxFizm!3sr-nuc6@xVs8K$#@F)x5&Booj?2GBr1(1k)CFwb1DF62{3tD;YA? zq2-IeFhdD6zQ=A(6qNfvh|FVz{(+LHLu+*1HMCLyRQ}D7DpsUM7G!N~&p)6c;v{lt zAr^(!?Nb#Nf&b?lRa=jGmurz3Ze2zV3shO=xc$}2vFs>0Zu+cp;59#D9rs%ulVfsx zM$V3OClLsx6}aH4g>}PNKMCk7e+Bo-0p`wTh?etzpG?-AN z!?mk@uu_~+(Eq2eO>cB2h;D9Sp^&dflN7vI$=r8;=l;9i^{!9c`?g)Uq&_HN;TZmU(lOmZ>TBB+&9} zG_IC+4O=dfgMQ7Hvy=4_b#ac1wv*_q4#A#JA9AOB9s4TYYIT3J$&4_t4Bf+-KaX*U zl3dwu`_*RRVT8#zwM0Y;xpFJ|s6xU6XwZtH6HrwEAepfgMF}PS345ePW&)E_Qu<0P z(!N8&Ckl63lK4;VdhR@FIKbxnu9&22%8Jc90pw)^0F+RpBL}y$g9%-hv*z596_`FdTVsx{)k)Fs1)wxDFOCWu0Bo>6 z%BM?r>8Fi~6A%=L^JVm5A(8t4H{pz2g=6|71yuB`siF-Gpwl>CmG_xx818YU6azQi zUTRc5F7vu$nh?>RgmDczfUG=lz-)hV5vY^c=@Ul)brR&)iIK20 zD`Jqp9B+*!pgbgD;vs{iU9``ar!~@kY4wJun5lcC!vu&{B)%jU^&=>e)k%DxnVpK6 zsk}TgY~=&GLAVXM%Dj}2`(kwHLxO9DNU{*tM$g;q)Zt+cK#5U zx|u8l(vr-LyI(_gFGCmz?$Ja3$67X{Uq8 z;ufCLMMk$mLgYBg?};rb=pZZs8e{|3v1wgvAj!Gd4@jiz#}wWWd(csCpf>_3RzaD? z{H(pL403KIWLiC9V;~SNhEEe?rUSG7Pkv0d{g@mYQ-^D~xTc;QpZ6O+Q6IwRLr2Ev zZ`AmN*+v@iY0miBN;xhu<<3rKK{eFQX#sIQj*C$e{40b|WXR!(l?DJm%jf;Ad+1)k zH3=){{hh;v{L@AP^}U*1x$Y0sdgM{f2WRBzYZX&I6l9q7F5O6ZwPX)QCCmGQ=UM+{ zL;lzGTQpX9VCKTuu*k|qWni3$8oj7uY$=ASnX9O^P}?`6IWw-jnnzh!=1izrQD_?N z537u%is+$J(^-YV$xF8aB;jaQTIWnWwOnx)kbuTIOX;YPwdrZPTb&eVC(q)JjEdF7 zrA6U2K%9ZiI?ynnJPQ7y2qzC`3{^{9OgcM}dqT@K2G!6F0DlqHm@$C>uYDKrnuNJh z6b4hdS-OsQPDwN<-1kL4WWlNEM34nA8f5`72`f57Sy;kX<|P7p0hgiek}xePC1Xkc z0SIPz?cxxAiGeJcqX$66Kg3dNZ+iqae7pv)wg z7tL*90@m%$CcF$0piC(4Q~4t#0?G540jsXn3Cl3%$`D@~Oa@wG0D~pVu!a^A)yoq} zY83p%7LlJ`+0J)F4OM7a^4|z%RN}8w3@y_iW)qvCp{Ip=-+0#omIW{#D07MFL@9M3 z^xyB;Jg`3E9E7VyJz^u3UwM?4ni7M>RC&6E8n6mum8I39h6kDI(z3aSmB3iKdBsT8 zk)HB6nQvY-b|}L$91KTLH=eMRb!cippI8UF7L^H5MyT#`!6lRC@M{k*B>v?5bB4KY zcZMQ|isVqfKP0TS4gl9wlK*u`D#)T(P}F&1SNWuu2M9r7@|ELiu@vnP5 zjcL#zs4%XvfGqP-_>UN-%E$im*GGgs84$u_7w-0 z23^f#&T4*mv0%%baE|{4oUslgd0HCY_qO{7_0+Sc*7oZ4l+UoIa2M6f%q-4TRZ`YE zWjT)7?%SLFqgJs;Zv^Kb46K-O389G%JomRkuTnY+<&X#m4=gD>Ku@OQ;;cFlp$R}e z9O@T$QB*@AJY|j&3RG5wml0VROGC7g1%`ot@UDE&rZ@;HW*eF`za>0Zb#!xp6vaaI zRQY=n+Gv2)>Xa7>(50Hne-hzF^Z{ioZkso^pZUblQZPF(As-+*(y)?A^p$nVnlUsrGZMG~tq-=(Z%^!xUa;Qtf(XXgFg_V9>)^B;&*NjLvWxN=*-rge2Cs)8Y@%NmWgCnY@! zXLd<&P#e5-SVIZGx(FXllp-;-H3Lf_)^UdgWEo_TWPs{pOmP>i7%*-@ z#fIHAx502|E?hR}!v!VVm0E3il!ah~Y6v$Yw2;0)cSkwVqHU^h!Uu(U6KP4Li3>GV zD3EkWyM(3m>*O`pz*(ai)szNn_s4ET`!>ReG9;Ba5M;qr)@R8xNi?hVC*TvuVvuQ+ zLXkWo_Obmln4Q{9V^J}|kU{s8<7VYRrU_P5uZ6E#u|_CH1_^_^W$jn5Qq(zXuYHUumti`0nKf1>%*Tm%2qOQhfJdbf~)?FBz zB~LK~0=x~w6CB1Kn6v?gpGN*&)zbYFH`M2~Wf_H&K)Nt%OxNk3ikA93t@L>cvcpIv z1{1Z>&5gb>pU41uwHj6=LzOODh39V=k0M*WU_MLZu&5z>O_rVzv62gV2vz0Z zS3z2E6^j;0_uX!Y*7}SJHWL0AD?*qEwJPF+dD}1w1gGR^j0i=TiTHi5IV?Q0JXrb% zSVH7s4MtF5cbW@oI#bSBRB=SUJlBWICCDPh+6%a+V<1S=7TA0Nkz2-#pM_~1itG-t ze)r$VA-4x`{~a9i`{@WXq>H2J6(iNSa^NB}8ta;Mfl5(3#*9a{E-DqdaYRE#ya`SE7Y8%5ZJ3;) zC&7}mVg8$@3uzVe(1zZC9{>WdKDIC5)(=9rdPoubZ&w8h6~)RcQRF4!z=(s9+P=nPldXQ)i1rIJ-E5#^9K}U)wel!RW6QI@8bh>&!8r#SFW{((^ z;rr2uJ>EAIVN$)%9|;J=wCE9xA`=i_cQ#yaoHfskjXK)fhX1>0*~*#Rmm!+fx==0h z6S~CKhvDk88oMP@X+lz<79;}Vh(`XUz}a{xNPf-~wg(;utT^Z?UFtPNiF^U8vaT%= zpM9xo7gM#ihfRel8v7J2+mbVbcoor1Poj$RuUk00z@*Rbzn*KgW@$b;$Ae@}`0tXlM2iH=FQLXy({(67Fm~zMqDzHR>#i$z*2qba|Ysz_UN{nt*FefDw5k>oN zsxy#iQMd@uLVt~bOXEdSmViAz+auv0?sIY6z&n;o1YsJ&?kvq_ zkPJ|oW?0yr;^=r3nzY+w3^)RhHbZ=vJKbRk8`WgzQk^0x;-IP}UD*ha*F&DZI%1izp`F1%2P7px#%V@m85o4MqoERNXv8=h;{$0fT+uQNk5ZEqy4m;^!e;z~?Z4A38E)1=kO@q|kwXwhIgYV*cutn647Vbe+o;z>gg&ru6o z8<<5|{%wsZ0s@ODf@q$4_&1tX(tKLFFzT05G};X*Wz`VGF#7J&N?UYqOGoYR$hxq& z%fB7~2sEJ$!vvDRwC;yP*zyXtymD*G0%Bks!j%f*Q;Jl<;o{pf=EEG!IG72M-=`=Y z`6$!iaMDVGt;#&4;2dsO&F7D)Q5(EgsrK-`Yz2sMRjfQSQx#+mvkh0_sx)8&I)bJ% zG>WE`!Ou#8CXDoK z;HwG2lQe&HA$XF)CIklJcZQ4>bQcGaa>MNliDQT6Z1PN5P?df)2j5m;Cn zW~-AV>_~)t%$aBBif9U|;0b`nupyeJk5|vutjv|I8pXnOH7Tt^yDi@jzVkKneVv)0 zZCMk{4`@|Nl7QI>0)Qr~pdblFL8e*~Orf3Q?8;`dVuoP};HPHAT=L6B8(a>U*`Jy% z-!UM%`=TvaeR!U=LZuKEe4D&mHRu(SL;-b*-bDm-bnRiH=w3uPLGQ&YU>Z0mbW9py z1kTaMO(ZBaQ3o$HCs5Q_hscr8*aY!JggXe1LCfMz@ZB0ulzI^zH4#`rSQVwwEzd4e zsh?-@^dPY~rdYysjrF}NNiEi<7l*7@gv*8DavpYXx{U#O|DU1<%)cTN@s{ezN%{C^ z;Z%4DSK}3Yv*xG~F;=DPKwEgh!?QR_g3Gh>?}@iVdQ?}6(um7UL#i{mQWO*>by$C* z#G|EyVnknkn_i7kSYOSC^G>-~N)<0V5Qn5DoM^5-W`U;OZ~LIspQC?^7Nf)ZwpRYi ze?^#2X(A-^g5oRDSPCbK69qeHhUDe2iz-)`OMFEWI8NLCo33U^|? zj8&{aFa`^)Uz>v)Z;95Vdt8v|vv?O*w9g;~-mN> zs*9UTh}dHJqqVJ=+=8sK$AMA+Nt76A6iF$vMPW*0zDB265D?~j+d}4SQRYmUd4J3{ zJPD5`o3{W>*mZ$e*s=?;QUwM!%Pnmx)H~*eXjM4_=!fAzz36y5+MwevmGg+_~{Pu>zaXw52Ry@<>(3{slSYZYr^!+;}dGF$kfRW{md z-av*4`W_z?sJCnDyw{vhN&K}LFam^wj$l+kA4qWqaC}JX4_WnK(#!Ujwkcp($f~Mp z;kD|4Qy9*ong$?SE}MXPcWh?oOl%U)!Lb0K;(^m(CW|XnB6y66X-w4ON4gy@CPWQd z)93^WjA|7>by%lT946A4A&n(K1}F4(e~ONZDJOlHa1~Sj(e~!R{MaGdt_%~IOo++1 z`u28MsI`5Izy4LbJDYhImP5wBvk;E)Ngng-QQ7yqRtToocTUJJ1+*08$X?D6bDW z8e<^>mC6LVEmKEgVt7D;hj`G5A?6MUj>@)~C_*&Y1;1&z)=Jp8ofsqr6T|Zc7Hye% zf|OQ_CRI{BlKCcMuh~|7Q|h$E}h1u-ryX^v&4+?1Ll)=1$xVDa9zw3g9$d`CjZ2- z*);ntCQ4ViOcqxLJC{=R!;?PH-Z~S;URG2z!i56!R>CaL0~bs8l!9A zcHva7VbHqBSxip`E_})4rRZM3P7|G4@qCz7x|pY)u#4TV(;PaQQAG5jR{~Noi4Tei z22)c2VUj|_{Rws5?2idh24xX;3xbNmRkDDBQR+yU0Huv{1})K$JVlF5G~||C^h|9p z>PWNRk;x->WWqYqEIWc31V27WM?~Ps(2?d->WG%%OX@y(M<)8y9uz@N{w`Rt!S+tD zR5+LPXTT2YDqTp4w#SGE*j}manP&E9r15%a`G82JWb5V}d~mNx*v}-%9((-E=;NP_ zJ_f2Ob1}1<|N1lHXzaUz_N&uAww5?J+46k+dKfgJFVuCbrTl43fu&y61%ae^6W$05|R&yKaLn&-edi~{5r@@fbt3Bz5R$mzTUO%fRd zvt4wD!Yqp%M?UnKEqWXJvxSzhd;MwcS=MmR;Eylk`K(*0ggZ?&*;StC zx<(_)aD^1va31eVD7W`pRXN0p;d)hinntDbr!-%XkZ$V}WW=k=z^VHHo)o+y0hevn9AIBe=_#fNPVPDL}!IBB*6e z-C-5{54FdOv+##upy+2d|ND@*Iyq~KLU=g9u`P_MEadk0j45j!?2Rcq0W#C#1nKRx ze*){oJf9#?Nt6y;9xTJ>O~IK-!Lb1y){4o4*jM^op?<^Tckj36hbQ&IE6N$zZ6xQz z^_+zi;?#=%G>kl}Y{fAM_$_}04Ju_K*ixd^_Z8gP5682bqX_Zi>)wV4K)yP;YO4dw&)y#a0uA;E^GzExKJXlofAT+mYtu` zwKG<(?&i!>?#2YHdRg;r#|F>8|XMiiy|XKctR-BCrS`wlm{pwNt_ z8%`b7&{TX75s|84mJ3#3&hT7|>uDll%*Om4`CwE((?BhDHT`XJt!Tlk>34^hXHbLk zE3QX(A+ASv3aVPe75;CO!On*rjxg~jOQv9n8{#*ZSI&EH^XXtt+6dmn;=p>vPBcY< ze7;&|Ixy4vnmZqIoD&{?;LhKSy%IJ=`4`T6`2cwRWxNmQk7!?KQcWyc7fr>nn^OXV zRURXdR}Zh0%mAHP#06%%dT(x_()BlOMX;tVn6vx(UN*6-v9sEr|6t9#Cxfo?em8vHe6sh}RXZ zqn=3l!C1P(=Zvpacgtm?cPyG#V-o`&+C252H@|*`Bw>c#ngLV4VnD%ri-5|oE7U7x zei00$bxL}n01HfE3wCf+jdyZMLEsM=z+1H*$;eRANp-F=UB{>Z9w|V|sl?0Z`X6KP zq%mS`NpVR#sH%~^sqmtHEhWABrHn6vvgaxYA`(m|jXYI?SslZ!;jhJ`F7~;|$Pl2) zza^%WbCoUz{?LQnV;4AvQ@dQ)1ZN{i_;Gn~`~N5P!OrFUk=@@9c&|1>VB!d0-7 zdDCY!{l}{lHwDcA18tMaJS3jw!0dzk7sDO8gU9)QFk{+}4p?(a#2k=jwXN6zhNivF zX^Jrl-r#X%+u_lfs)?K9Taob5DQ8q5YP0&n{$2KRVYG=ZO zcewOy;RDAL9q!J6bzC zl=A~tR8*zk`DgS5G1>A{60>Q}vKR4e{S-GO z77t7rYA%|l34_y9Yu@o_G09Ve#4S>Abg4Y4cocZ>9^580E4PV)`_+pF%b~ZsuNH$s z)K7K_om*hM&~VoPLL60$N77Y_fGhWZmitdKoz%g68cAnu`fpU!;=dEm`D7d)ND)yX z|Cj1bC{fF=g*NTgj}14wzt(h>7pD%9zhn1d@LnDgLba%F$bg9uRwUAO`iFvU_HBv} zSe$GK=-kL?6J!;h-fzmGWT6(eEJn0BohQw0u=m?ECLhnBEArrr`Ng=b5k2=TBx$jN zOYqv$&zi?xP1?9e-y?Ryf(=c+1+< zr{XP#{oWmKVXr@lx3~uWFx<+DZuz)X2;~bAANa;y*Jo>!Ni@*}hmH8hWTOg)XD6Bq zPH>J$J#CsAGCw)*TO~W0Y0YfR9Ae!nl5ekCEF%-?o+uzhK@r1IY1yMYdSF>uZ9@)hF>!WAo7CTAEl1kyaYGvw#%u(R1)jj;|I>Ipm82jHCP4#< zQT}n0C?!S-Q69Ys+aTCM(TM^Q3QMG{jtHH(Tq^-dyB|vHpRAChvjSx-Flbn{HVO=p z>p@&Yn^;A&96iB8caNqqr5}=fNO9v-KRY>#OCieyfs;D3OA#&#n782qNz{p4ms%{goUGz;8ya2jN%T}h^5M)D^N zJoY<+Q#~)(92WGl-A7!>UD!^~jeXq1a$O&CF#u9IUrd;5a0;(%gEaKlJ7Zd329^|b zP1ray%l-FW191L7Sabg7J$ks=hQGM)>dm2t^=*2t}&a?!c?k%5))?_>K2ZGl@0$~)(=H5ad57;hM2tt2q+safRY?g~H9w*sM{f%#? z1r4b-phNb!E)kCLT!fDOqy0((bs*>hQ{lMNQ5@8FqF0brH8zDkHzbaH+>xDmTSxzmp z+=v90%Q{QtSFm`{_n@{nath-UPqZ~(&i_gEDjruaKd+a4hl6a_+VH?O4V2huG3}F7 z(9{FUt(7iqsaUk@YyT5~Z^BSU9Oh&L%XjES=`#qeTZ3hNwu9e*84IZtjsjKgSKDNh zWEs@dUaAEXt`{sKk&Eo4{nit^gi!Bd7_a~)uqMUgLu3eqz z0B&u8kixJn5M_}km^9ut+>=D0JRVXiKTrBb!;@_i#j-sQ_O~NdtW_KkV_TgT1JU&l zgsv~?zz~N^I)WM+Q)OyANe9epApFtE(8m8L(R=Zrfw>BTUlO*6aJP}ch0#oFx4OVv z``;iLyjj0-er#L!$a^V+cqkltF0S^ ztrL|VN=A&AtW?q6WI>Q$j1Qg5f3bZwtCJT)^E5IkuweHm_NaY4N9-A!Mver<5#Z)@ z$+0CCvp&k~*`Tfjn>F3vtr*r5Khgs@v7LS{^$*=B_H37{6kuK~Em10Wyh-PlmE{%h zzXX3Y6-Wd)g%AeIEz~X){bw~OL59J{5LTj25Cz|~qMVJS{! zYJ`_L>bQQX2DFLc$K1PU;vmT;zv44E@4OLJAs(x%ir+WvKNVFG)!HIe5mc8{1xl!< zDj42N&&LRcg66T_Tm&d+r3<+r!Os)4Vx^A;h|FmB_m({}4a-uL`n;~Ru*5D!sAXlS zMSGOVu`1-qf2_LlztS(2KdXMw3Imv5kUbLyvDYY1P$xE`DF{_%^rcEEmx`(XK2#=d z1|#r9{yG~`?cpUQWSU)l#u_ipsOl6+@i6^lig7?0OPH`uvBWg4n&00fy^YeNR8)&$RAc6!nroDR?+S^ zR%Fdx+0JS&>%MfUrBNKk(io1G1e?>fRU;P1UQTcHPv2Q2C{k z(Y+3j>~*$+#odh#RVu^ufiVVybd?U4WHu+Gp;lAftB!rR*9}^8spg)o3r&1)cJpk3 zm$E)J-LHfDX=)#o(Yi%>i(tEP&7y^hX7s4@IT4X4qKJM~hQhxJMF@YtLkC1-8(`<; zEKB@NF~SFnsh^QX$WMO~_u?3y5P`??1p+pfIvPZV9KAX*z8G&Yc#MN1)WI-2G!H89 zD_SU}G7z9DR@my~wHyG}(9P?>cm;!Xz?dpp3!qZAf>;Ez;0Wz6;V@Ji>Nc{1*t#eRP`GP1K;jb&gl*$7>D zh@g%{8|IDxvc7Hr(mrNQwnCGfZbMXJY_YNvI*4usS~;Z4urX%UDWKX3Z7Xw3CCduS zj6JcY;^(=<#k(p`9B<*|ZcyYJb$W;9iaka5kWNsZq94R{lz55xgAp&|V^#Wq#Kk1= zNSY_r$96`Mh``m5_?;4oa0ci-HQVO~O_sEZ38r#`Hqh)w47lz^Qkw@YAex@gYhtR# z+a-cbWY!MxBN`)so~d^qHEZPb(i$ntf;W%jC=B2ghU%8a#p5gunW170Gc=5t`_XLe zpHHP0T4(C0UM!Ne=`Ffq2i&A9nqF+8@8sO<(m*fS7`QPjC8J@k&};?YxZP?wAn~`L zF~e*HNBLM2M7f~=+Gzw{gF_3P0p76WryBnq@FFow;g#n@pa%=5g4fKrCY=rK*UX?{ z9r~OEq2c=bs1K`pX>=!hK2AYRTCA>Q8+EFhD~z2dvI6s9h0 zAngO+7w*sC_F-k0<}g;xD>GK4Aqtsh;BRUx=41d8@5)c4_ zfxxU74aLDR&o`3+`c$CH-xQ&^&GK=^XBkXV#J-ii(rA6gnb|Gs$l?y(slqmY6Os)v zI9TIWwZz}U>BG31S?K^1G_0y#a%Of+C)=dr%47@4^4cqZust zd>7mhUBa!5HadgXXr1mv;kD^wl+~U8nAUKrWkX!|XD8Q%@!Df@)mA~sbat|rk%xkh zi7j_)6xyB6`#0;TCogqMNAt(UG>z?=WtElayWv04}8>=YG1LM0paxd5KR(2Ee+;I9nltxXryS9IXxLNmIt zL|KhDacmO!GUQE;1W;i-@M6Wif<8Ff<#}J7>{EhHNJ;c{_ZwBeETGtq;S+#)8+a4k zstaNs<4u!!I3;rDO~6&>(N(E9hVwxy-}kEYPD?plOSw+Q!>V)#Ag)nd6gCWgJ6nBc zFr|j1S zsW&C`X4TBMDfHkQTNF8#8eJG{DVx7V@3m^0=5N()xAKGUOXo{>el@O)Oz8dhJ_C~T z{VIm1`0jgo@;_M)qkgwNAFeOBK;m`&lW$bMGXY6LaidN19#dMmLp{7%G+&HEKyAK= z`8J#|s&}EPdo_tHs~S0btP{^3yVWiFcwrj)33YUy6J$ZfYuzdTjJl>}qDHk}1`)8+ z47AVkXOaY!U^BKtvkDe4$_arGS~RqXX$v!2s-f-_s)e%$6r?iCiP)|S>R?VHf|e@~ zjMk)>QeV2-yI*v}#a_~>zdpCEV4^v)Dy8_2-tD9X;{0qV}kZ*mfwt| zb|y9I7u{1^Bi-AR+A)Z6l`dVU8^S@sJ_seymBJ);z@F%$Fz8%&iv3}~rDA^`G9po8 z)`EUmIAnppWpO`^Gqb`1ek4oUfQ1fF1W;zem2=ltTodsY!pDTdvGi3??x)ecNP1UyN_;>Xe^wSu?Vqs1YPuQe8^6j8^Cc%>MB|lQ4WOu(4M5vVdVW+CeFO zRe~$u_mkb91}(+57+bs2))<}5WO~J_RtS*J1CJoKa?>r8W8TU%nwz`rCf}oxC!C_V z^rbnTY*V{rU=5L!rV*vetClV9I$~6Uqc&UHu>Q5rnTHSu37(7jLz)TGDYnguComnw zxe6dCRih&7;UWTG0*V&@LO{ag)vxKv#HCrI*=lzt5S3ST)*cdq$s z)kn>2TA&SF_I0=1+zCYD!K895OmSz$h{uZs+2+v#Y?VORxL*}yMlp~`T0v9OY*^?O zQ*2A>=C8A6u!38Jte4G%2GvYxP|bt})l6tm%^0LKQ#QzFhPbaaxGXd{!={HRnw_NC zZvJ{}k_lx?Y-~MKv3Nd(;OvHCllhI7mAI++8YC!dR0H*_q>ke64OWzS$r99-mE~`= zEVv6>{uD!}?p9VP4){>ttw*3(Z5wWMii%UrqR_dhWkYPl9PbQo1+(7#P1YQOu%t-7 z&t9R^m%e(lUh%~cX+`#vYnPAhT1bJ)-)a(HiQmdn{FW~kKMfaPJ4h7s?jXM5F?0sD zE~pu!GslFqQ;C^X#d8Tz`HE<1ThJMOlDouWDzwvv$$>Vb5Ww;2!zhD)D3w7Evz{1A z8bkI>me|Y!y=6veC!lRuIy8rgpe_Ow;uoi2BT}aD5wm5aDKNOC45J2-w$V_qI$;5v z*=_#TfGur9IfdH=(ol>y8k+u0fMG}6Tz|rE^S3emA=wjo%=MbgH91lrp&igw=?5aR zrK{DV^q+JQ$=uvyHxY6jEJ$)c1$hkez@{o1{X|Mc|LnM5)JUcwBpinuU#PL^iFU)K z?M5SOKy*dlpyuFz-KjOHf3C4H1@!Y?lkcOwmqUE)d#z@NS`Fx`R!)F6jjbVhstWb98TE8#woL(zeJhy$_&fI^ez+|w2S zEjyRXfsROvw)TckU2*!G4ZwKu`f)RY6p!Vd7<5ldk^wsab=U^3b8TJg zDJZ!=rCCNd9=0(}B8P3vP<<~PwlM>{7Smf8GrOLET7AEX4NRm_BpkLuOgsDP`x92i z&fH+6v@+(Iu5Nn}T$H+t^g?1q7LsN^)Ffs^!Kg>d$P(=+IKFbNC8lzi+o}hUzmk$ zl(HM;rpF8`zoGytO1A8Nrs*cj_&f&YERrc>ybW%POkt;lT>F9@k5EBo6dbS$L~$v? z6Ng_a5i*wl1Xiw15k}K!#Xxk;2_4*%VTrZ4Y6~O(v5S#mg^*Wr2E&ba;T#(a$VV6o zGf9vi?oX*n9j2I!MIgW+(4nb3l!F~G!l!+3BYn$U0$pmVEzUs02Nj%-920>8Fnoul zgr&ns7eJE2$mm@KmWk^SEYk#au&}za0t1_7VLV{6gWzdoW!SU;N_ntzSIoo-W~-f$ zp|zD(K%@aq;pxmJDSC%PgtoC4U$X?p;Q2uhQD7?r450`*o@CLoHO#Z}EdVCNQS}`3 zD}%~#GpxE+Z%g$`olbK0-bkH1S)Hu9xjt%^O`|evSPzw1qrKr_E)PKmN2CMlGSETC zjuf1P039^I2)TR>#gJDRrcs$yO;iWBjZoWSZk=gnkN`rm;k3hbMQAy3j{NzbpTuGl z5vjTQmW)MFCZedHTA|BF9-@&UuRcDXQx=b{~q zKnK*!@`SkYA3mvy{eS=AlmEZ~UVbIW0F0IkxUHeM`@kqWl(QK;6%d8tniZD9_OnYh zKzF`@qvOf=gAJglsA_kCAt{b{Iq0#wyj;5JMcSp_n>^ zWC+eX)8*hB-GkZ^d$1{!AvbV_j6T>eaE+2FQH{0Nr^ERoCQ}v1&j>KSFNMvLU zswD_&y)4s|QAi2tdJ-lm7myYNyE{m%vk_b76-T8bN5k{B&K*HgX*VM2>NpC;2*bF6 zq|yL4EKDb%Df(C`m#(Bx0wLWIeIASt$=vPV|A*Z_eB|?AeDf~bu`u`A-+S}nAH4gW zpMD|UB6B3&36j-cwm>EtWmNH?tR2f?(Zt*oz#ZDg1Hj>2gzD>Oza#k3 zeE)4^q^T62fvX=ooSnmBq|87&ScHHdw9ZRAiPGgq)|A`ALDXF)!Nwn@-ldo+{NX0V z|MLwz`*`2czkz3DS~OTe3(@?fY?s_*FCHPFD@U$CJ9JL)^7v=?du;Pgxf>X!g>q&- z$bg1^msax%m zH%ul~9QcMom}9f;p|B%NESM#{MUs0k*Y1PxsQ{@yO>_!1WT>rRJEF{F>@yW7q2MYd zQ0_(gdYYxUpsEdmLty;V!}=;c+4twki-kM$YbrfkM>P`+zpT-4fMUq9K!Dhzzn$&m z+vx}KIy~`2w%I?FY{H}Mw)vZX6CmeLPi!k*%kL!k&)>XjBj$C;xHwCLYWqm=+!J?w z;q(__EjN+cmWSJ%3-bN-V>zMaX=g8RnQ!?lQzh>Mvy3aM!)!I#caDJheF#u44(m>_O zj0)7yM-o9dj$hktfU;MP(gk&7_6d9wxkwuK$=T<@Tc3n|jBkvCma@;szdvMM4jnbcGdi;B zIXvViV|fk))D!OKJt)b7L?Ib3fkyX-iZ14Mcko#26T~X5T}!&t89?XRoz4JSXLkz9 zKTD;l^1xfbVJT9iA*%S!G?r@I#r8p}j2;*FS5sD<6YwX2(;!Jy6En09F$Sp`b`L`{GinAyE z^^P)benXUFh2o59>&*WhO=-lcc4-vmugm{POetW?y94c}l(znCHthJ)to8vUrd+`0 z0XN9}sn{N(tsxN3I1oN%%elV(@O$7DTeOvqiY}atI_NccT zo3ZI1$Jf*5OQ>b4p+D6kd}C+P-Z8M4S{;NkAOxdKCSI?4gB#}vZ}5hUeG`L>B~7ez zHFaQbGkSqCzsi5!T*mPLMW7a8j|deN#Oj78{TtHS2MvK>A7568ANR7t{nD2W#drt9{9ld!vbGw8)DdeOQh*Sx8usxu9R>Ru|8d9( z&j{)LQoNiq@+plgCxv%KeD|QeYmB@*oWz%p+ROIH%LRQ?Ots$lR@FK^`Z9bloYM;I z<%;s9WOOMze50B6`1Z%skX&jyfUX-3ae5A)sVxK80>jjphNH%0moz2AVtGy+#{v=? zvibm_Va*V314j{RgLN=rXKyzxqu^MR2 zO-V|pR5#}pL9zT`@YZoypSBEBuNJ$4jM)^EPbT9Wr7buSuc!P0xHAFKLLLke;z2`1 z8W17;2ocjDp;sh*d0hiCICY%#3A)guLpsczWlODc8LXVYs0zRm!wzm^fjnq}BRL58 z9U`N{UJJYgRue?l;i5xiOdJIn%({hi&a@HI`5HW`O?5Ms56IxypoE|o9At(JmhmDo zaLTeURU%`mjtoFFWT0xrLFSkfuB4MJX+BJ0^dSgPvq&>if0l=JdJFqZZu)w+{CV+2lFN5GpMW`-I^O;?oZY!{Iu<_-vA&9zq)@eJZo^N}x zS@lr38`NnF`Ha~X2O$h;)?p%HHH1UX{jT7Yc3Q+1o}DiwMTwVgl-Tg0Wg3c~h(@1l zprmngPT4RiM-WLGcJ2Gx4UGo4r{EG{9j=09n0wGc0{*t^VD$zKHIWh%-f2?86|3pM}Ir&^tQg~O-z){f*n5XypW-1aSkH%_>y1riOKAP)b&5J#s6EC!RALdu!wps;`?ziTnv?@$a- zV21LS6`#( zBUWGL{Tj}5yG3*Olc1d87QXO5W9N6nPd|e>>2*qAW~ZLntrQ>S#Mu>R>5$I5#ODPL zAdpuy?;@;##g?w@Q3|6mLkN;4Y_?n*Zz$n!c`u~T%OjzcvUhQcO?`QB)5r^`_)I5O z#ZJLgFy~!WdG|o(WG$xfi$u{09cz9OOu;M9bV)_7>@GOmoktdsV(ti=qRVrul^)Bj z^HM3KvsYzXh>1BVAB0SM%sLhW`$^f0sikOdTR+NQVQF6$;BTkEOxW{QxvUpY$RWVbn z^UoyCb^P#B2~a zvhq{%iR?cFRgUITLy1PO+ESkgXoO6&{!RtLd967u`tDA(%=xF5gBaN*Ii7N~-HjhK zNVS$}fxosC&BM{7?Y`G!yL}oak5UFmPwIbF#s-3b<%PG2s4mXlXPmQ7RAkw@k_%0) z(H(=1>-UoAtz&u0)OV9 zJU|!a==-(=TD_`*mL|%5FW1E@M^MrHNk)~ zHo3hN20GBH&SPw8%OfL-68e(?IDk0-4AV(k`_G{@CjF(G{Q(XGZ)mDF>EF%Aq4d!* zq_^!)4re^`K?}x1zjL$SbS|oCQXg`%6+pYQ<8~G`N9mT|M}tk5BngWc6rTx|**HkS zUn;BMOKuit6Sr1b#l!C^xEuhb#-NnRi+hb!ImcdG!8yFlxWE>{xfQ>v!r7dDqGlO@?~=sJ)mFcK=8|;jb-VxqP?Q%EEZ;5xn)7{!s)IfUvaCw z^|wY3)Z!d;jqMXLCdQ7x1X^pi4%AnyG+CDdpf*>6bOQv-RG++S5`J8M;7&t*$36tB z5xp5dVP|O^g?)?mIC8f-d=`&Ws`dRl6%Jp$(^cKgKdY%ZXjMYl z!zvNmns}P3Z^~BxJRT4A&*NbQLWHxEW`R!85wd)lD=B9^N%!v>e6UVdy;es>JoFeB zw$gawZTM5TY==KI49sMon+w(`=tYVW<1oUFqKK#KKr{5xmtpt@LV_S=Qi=oa6qUtg zgARa|t6pU%i=di#sSln2D&g;%lkhO%uOrw;rfe!rK&`weQY6Vf=)S19OvPGpWkXU` zhs6$cH9IGUlInwoC7Ski`)|1~+3KJ8(Z9SxQM9|ZZZ;Ha)A6WyaSVEiW`UZP|KwA zoS>C*rrl4s%-bAJN~K*bwhS_VEMyWv1R-O=?jL{fOJ7;Wf$(rk=C5JSD6{)`tk5!RvPeW`xvbhQSsm>Lp*+YkFSSX!rF}crGm&4u zuS~1GY73xQA>LTX7hSe15EreuB8#E500AbuVRKQg(6aU?vU1U&n`*ojrg*{~Yr-_F z7n^t;x^kq7$YxF0a&W!yxQ4~yHn*dHn%jhCY)!a&S~a=(ci*NuWEA2xBcfb9rr!vzn0S4C}lQj zb9#>s%`XzafX`qO=1$IZs5bw=!)$&@#=m;VUfC$TxYPsoia}~=g?HF1+i&-I(%sTP8FTnMx=8;)?#<^2o%k|D!~3={w)uX2-#&zK=D~4o{2hm(il!};AvmpZE`tQy7nnzfPqGBgwln?F$THvC8s2~plbP9)F4z)` z^Rm(HO$ih56ujcXr=J_OmX6zwWywoofc?q+)PDg3lnQ*Ge-Hhk7-;A^yt9IjQf=vD z8$@k=F6;#prbaq~zDYLQc~0`8VFB>%Ea~O|F0GOH1-{RQ?$LM7%uY%%G5CnqIc!4F zj^jJ;5?0_`g>*KxM5dagpv}N(OGog`98m0q-xc2xYo_{eA3kCBe`r#`4R(~{=Ds`l zXzYC-e@4jn(ZA&hm!ryj_4V84{a3r;;oZ0J@b2Z|;Y(lTVLIG1b9&dKW@kA~w;ud# zy#JFoU(1Q{AT|EZ97Vn>p@)&*Wdy(gsU*+ZUZiuh;`Nr!7v_1cQaA z#mSfqB+o8R)-0-p0qotDm-%$Nl#ymfI+6Na^6ctFY87lOE~ve;f^v0oK>32d5Xe!P zE%J{ZoSziba;j@-duYayTslhMrai6Goi%}-b2b7G%blG}%7)~mfZwHBf11DPc3tmA z7kpGVpUU#jU%!B*9==B4-}N!2uJYfq>$_9`hC7w;ku+q(HLq&pL~8+~!h#AL@R9%C z2*>^(yo>kBkm>ICQu|;OBI;P9VrAVg{Fp$g&h{`f;aU6gCQFrp6mlY(EhZIMcn&V= zvr9ww+GWcUp9GoDkFs?PgSp$sq}NU;C-*Wt3?!-S`;s@0Z!EAvC#7c*wIkV6@kZQ9 zs;a39*42U@I|?M>T3oYFuWRSvZDOJPPsJ`U7uCm<(q*lawuvE_KyzX}=rA;C6BKBi zTA2+$aEAxfD*w@BxnUM}y*i|53sAC6`P>$Oz}d_yjTYYT{h_$<8UBEQP%euAttM%~ zE#Tc&EmX&kX$sMsyYHPG4y6h>YMx^DIk_0gHRqKpIN+R)UoS@jgH7-XoR%!um!e5} zLKFGqwB!ld+}R!W3EgMOt(A^Ip~wdcd4o zxSQlw(V%5rFA9!b6JJ<1Pd5Kb%o=J_pgzB*>6yKfhh;d?2vcjGA3Q}&49$C@5p+V{ z8Fif3Hj>EyM0rY3lyw@^U_HxDL_k@X^_5wqDeGBYxikx~jbvdFuvQB#|34&X#VAwU zhG1sA6RrvjHlc@$_I=9!Ay3&FLl`e?dmzEw^fmmmJOf9r0TS|D6^AYLb$a26)iw>? ze48Ghm$t?xFs$5HAXcKxR%Z|YD@B{XRW|ILO#mkipQ#tJ^qKk?e;sm#&&0QCTV^$W z-i_ggs2bl`#qdbE?b1frYTKo9YulxP0++86MD*7DHbgKg4vs_HdY=X86v!8>%KfWb`V5JVWESM=K1gaHf*hPLz@1EP}%cnvZ=lP!E2;1=jk9@ zB`TusQoCEl-Nkk%pY?@yr>L~^$h8Lhy$Y){@cCM&*;!<$N;i=YS1R|nBcnvtWAV0S92Z;7RHKYYp38Da-d~5+W1tczk z4H@+htFNV!F7+npEOn+y0SsR$mmB4Fh|bZX3eJOhCG~PK;Gp;uGZDo1@!JP_%@bOz z$L030_h0*ZOpn=#02W&xe3GPd^niIeq(bo2m31oOA@$`>iz4ejloC}Cp<(iqo?;3+ zKm$B-USL8$9rll_D{NLQcMSrc0gNKAZ6!|`*N_!+Zvh6nc7bienMpZzueLCTP1$6e z98kyVq^s3i>O%ctKXE0v0ckJH5;k#VSd<}bl7nNU(RW3v9odYF^sOjCLjRbL+N#DC z1lZb<9U2)ZsE0oiI@vmOp*E${ibmi;+Zt99cxGCRwrSG{ra9diso!>dgORe$fYQ?N zu&59^FuKK>702rIfgzR+dHqD{Pl!(R)7hdqL#m$k^uk^WpK^?HMejIW7qkFmIAa^8 z#pzGm6ZZ6jZp+yTY(loycJya>J;g$Bm;)BruQC?Ql2ooLOIhZy)xi2}I32B)WyZ1` zv)w;Bwvh^ks!A4Xp^>9Ub_~ULr9FZI7Hbvsxniu+@yRy03RbX9c?wHCzh;BYC=N-40+CdqOBp>oC1l`l`B2IV&yl9{l|5<(Ea)w&FpkDd0W-RVTGd&bl+LqF+Jq@ zz|n!LVRcc$n(p%ho;kgV}Ok(O~E~8x$-c9D`ei|>Q(fRoUUy^RVDD*IhDnKBv&K#_RT46Y7Y4{$Ibl)g&Y z;$+2kf0(m3Sb*^QXdK=>Y>k#obXmY%+gRbXB-Uk|)GJlg!-@wIV}=GkRUII%Wd}n$ zrfUdmVa>S_(<}LTQF&e zX%a_k+ciWg-S5)N4RKIKhO{CB;tr^+U>RL(m8Y4m6UN{|zUC-TXFT$U4yj*@s}@Lb zyxD7w^TXCc^mzfpq9XEuESq>$TDsZ2ZR{5g4MQ4W6mtggX%9YxEE;C&+yOSBe_&R= z9ch_3#ZAaZY%qyEt0P(&M=dEjQT>U?meU||fHlXmz4mC{g%?M9ES&PzQ~_|j&s>#< zH3ZqnEQt|VI+-o?>rf!9&0%Z9K_uu{&Gcv*&_fAeM+5}M>QJ7LVAizZ^**U$in(QD=o0tDHhJWSXd@8 zEIcV`P)q}qqzawMG??_#Va24ehmL_}k+A9S6LP8uE+WxFybkNpoPUCR0)c934tnrAM_^-2@bhl^j z$Kln?4LqK~aPkDPMV%Fci8*&epXJ!#$Q8XkZW51NmK8kqL~_HRd*PtBqKKgi3k#&Z zV1*|LxFEHC;R=Lvy3t5n%IVz=fT6D)|Jhf}+p$PxMMXhld-yT9fb0c>)(S!nKl2KI z?<<&&u$ZBh#K{X$aYM!vi-BrWU!2Xr180&bFfsA(ejm)?57@6+$wkU){9N)vz6uZL z;YH=?7xo?`nX`8kzsTVc?4HqSG>mh%PjP*ZO0P|C(>+0Iw-V8e)@}G(r{EGuG!y*@ z)8fcsvG*@7Ru&P{LyodGO_;TIbLSMHaT?9oe*H{$hqV?Vh!J@PfwhWo)Vu%W_kNpa z`Sq>=L)UpLihQG1w0>lZI1_Wp3uqrv+df$4kDKowqj7A5Us%`)=PfLx=dZY{e=IaV zu#2VcOIh!ZL;KL6yJv9R+^!viNlBqT*e9ZM`nrW4wEXMJ0(~vyGvx0* z$cbVa_Q~1PT4XqgtLL?pDZ`-SKdHtRruHTejsnsL3xJ`f4NQ zp(1+>Iqb}?o=5#kUm!<4sq9eOL!8RY+)EW9zvxL`PFyfJUJ0=CE#h_mQ~o|(%UQ4g z@_wbR^tZjIo+=xr=MTK06|1IOda}xmtBd1_e?Y1 zF^Kqy8u3p;1X-fjKUB6Iq?K}xSJBdL*sxGYz(dj6sI#h0lJ6^}1uo9iIHQ_&rZP-( z*@Rfy&IJG90l|Kvf4B~NDA4j7i)DP=wpdQ{B4>Ygj$zWq>Si&!*G`p<0oowG{05!z#@6!AUmB{1KJx z+VQKeocq+T-}P`~=iI`3K6~KyRFcJn=B~c^V+(0BlbxHv(Uc9<`5y@{CuywX3$<#d znA&hxObzS>+2mMcnObla%Q@nXF+RU*v>-&NB^v@BoMa1*>HS#uf$GSXMnR0$z0={X zLWhnoa(L;O{#2&HNn49FO36lK$%#{m#ID>9w*$5eB(yuB@%`4E<|gzZZ~``s@uvo8 zHUx@)$<$LOs_&uNnBn1BmlE!=Rc5!euynz~08-JUsPxGG_wCqOG(jP!`j5#}%K|U9 zEdB|Gmy1{vN5ta)?e06^qbjzz@4Z`--GmKtR%(e=BDaH909?#LEqwp2ek5A}WA+DvJixIB>9CP*rDI?u-AM8- zdylRIHYy1kAUl%eBf|)kSz==T3{>o{L@%hwtmgq0Sxf-cGBzGS3{1EeVr<)zAO-^p z++Jj85#66(?}e22B?L-(1yQgCgmAvg3n5lBgAnQ^=qT`@HHe{a_XBm)ilI>XM_8kW z20*KiQARKjL;z-h1bNQ|P%^!cI8!`knj;aLKhqpUuQ51aF)%`6N67I`PZ-DCfGr?% z05_oqc$S%EmT+P(7_#6{22Dfq8 zeP_)Dfq8=of*k7%Vk8^5v@np2trj>Vxh_%1XmM(3-U)MX%8J#Enn;NSGK~lE`V#aa z=yVSWnzRt;01-$hbp-=2Ge;2Z0a3v^0}n$1&|?Th_)5ps2v#(FbO^2nbs7Kb{pwfFI(~KSTE|LS&~*Y4%!%%qrHTjo;T9GVP#@Bz&f>P7&6k*#%w9c5^Ev7 zftmU;Zy-ao`i9g*Y;ogwuNK_^e2f^o9!pf6z~8CI9t+%Dt%naJR6AO$a!^V(Hd^o5 zNxNc1vx8DC^F@0~D%(tpJebmEwG)^z6PE=8dMx+fM;%4_EuyNSgg6Seg%aYBDUi}J zW1)mNp|m~Gx(Z<{DhwxY#CC%$9Z@(8dbnf#8&Oyr4FsALFbK{Kd^QA)PrBs8NwfG5O*Jas&T zvO{x18LALUmW^m-_+YSOzO*v*^0YF9Xk`eam0g)LhXh9?H>H)LL?>Ar%}6CE6_HB8 zh%deA#kL@l7_VN8kn|PcD$T?=qx6R*n&`V5VkkOgMc>PxuXPW_VAc#?uHolIJ!eq znLX6_Pt0DV=reoWp+2}A0*yuo8)gnIT2X?tDeUqlE0apW?DJaVa zb9JS;0KNGS=7MM!=Au)Jxd<{xN^^mA)O0RVb*OSPz(a1pro zKjpzhoN=PP5X3)(PUN&?7QNk)*+=UMc0xbADdYL~Q@uczY8msZD>* z+tcckczeh(O?Z3H8!tdLt@HMj+&XXH{Ee5lZ~EpkygiwOOwCcD#WXkT)fHK76S3OF z3lc3eVVja!ZG4xd%*^-<=t7{x2?ZHN02yU68tIr78BOLYuPmpvN=nJ#McyMIhs>ue zMDB+ounmA?J9K!MG_dz==?uNBb&KP$!_iBbf0FOqCxZfRG{6}#;&*A9q#F&utq@6N zHyRL&YAPd#Z23w9xk|L4W!1`88|cYlg}nn~p9o{7e7k{Us}S`-swAcmK_=X8V1h-N zx=NIt{iLF3miRdI-^0gALZ{dfya#!Xk_vBg6Z(L)Ps}i6bTZDNLKq!ME8B8mwUok$ zZftKtHyC#*fsI*N#IRkG8kXJpiVj0u!hvGqrcJMr6hbnFk;EO?>6zcEuXO{MreeGW zK?b5cv#31$Ajq3+QDICuEwumG0>WtCe&4=>qFk{VYGgGrro`UEJ_n6Eq&Kk*K9ESy zKztz4DB=xCW~L)d!lL>P1(rpTK?=GPLu0=HU;CSMHCS6*4<^iSr`X|k;;5oZE&)57 zn$Z?sl;eZ~pMP0|NaQJ52DBLs#K?xj)Qd(rUgy0{qInDsTsazqK z7x5!Nw#%Vv*tw+|uv1_DKbTWxGo1nE1qA5u>Bf3rGaW#{jlme?G|6a(7GR(wiyd|i z^)3aKpiq+0cpJNnF)(!fC-B-z=YK-gVF*_Sd>BC zB7@WhUJ3FmsJ+KobTD(2??TVu-3u?A+y(d?wMDxW25kSu8LC5C(O*=Lhm5TZ4kMNa zs}}WA4k+GnbqiVTP*V$In8C*w7Ni)%P!`{Ky=Jkc?e+LhytvfTPBMsD+KWLH4H4VH zBo=}^vh_?m-@;ym)SKr)Ld75kXQ%pG7ANTwqPZ6+N?5R+_oKy!<)?GAAP`bK8ELndasV|hHbJC?(bMx(QOZFf3myJI;e z+nt<^+3s{?yR%Tubn6cpx;M}n8rjgjj()??z1EM`8-A}P=>n3t*U;Uhm~80w7E_9l z&$o(*KC4|O`mJOG52%<5cdoojinHUu8Xu4+pVM znqDN5%~7L&l7l%?=_Dg0gOOr{Bq$lM!F3>v?j(jUHmgMoPGr-b+64(gV%s{=zfO#( zvqaTfy3!Q4rCk01Pcza7UP5IxVBMEly1{55R9U)1WU)kJk7gS}TO@WDg^F^EZi@)y zhxMz@5;PuC9vY+%RDjf#nR|dFlgYvlxZJ}UM5o_4oqQ>1%bV#L>7*;(2LIX zqPboa>&@Z0q-hPRs|RR1i&#ivo!GI??4K(@BEZ)%>hPwM3fl*|84OT}ZRvz_7=hbQ z46maTy96U<_@EEli`~R%;`0cita;2;C*&ptFHIB`2uH6#QP9Uab1=rMtp_mx1*4m< z4D^FWCe=#b8w}*cV!|MdxgmqFAa=(NW$+k;5BXxKG8gCu47b5z7^&{PV?(SSWT*~0 zVL+C~?T<`qj57q5C^*ZZqX1wX=002+s}|%18PIh?DC!b0hX%=}7yTu$2amzz|o_b-MWip zx28(*wu@x8M!k~Z+EcG5ib0}YDe9>g6WYYAt)dTin`2NKR387LZm+3ACB|SH{H0lM z?OzcEVQ^4edg514NP4kk%VhM80V0;+aV%Q5a^`4+?ousctfbGvW2QL{G3a{Z={0(Q zZkq`R%B~Zw$^pMXDtgdSx<-<&-|LQoWflwZ@ua@8bQil*1|xAE@LHGS*k0RWM#r6j>cbRjwS4mB?uD~AJJH%#aIyma1=-r z!K0Iqm|;g`k|`83WYrYNYDY*605Me~xtK7VVKLo6aGLnw99@>;wQ5Qo079@IPy~}F zFfwZ3KY<@HY@T9>sK$WW07WF6MK8g;sAkgMhKA{iV$=``b^!ECP12}NF=djstMWpc zG1+9<O?YXKJmdwk%fwrU7H%)KK)e%f|7_SCYy$iv%i_zGc04zW#ZgPn+ zW};aN!9`Mm0qc~`dU^_nR9G3&cMx2#=Rgc>4q)x&OLb$E`NqPJq3M<`MT(&=#n5!q zf&#gMg;20`W0MTDw;%{2j0-BU+n<9U6i$Xe2zC?rd*1wW6F`?k#dtufSbw{DQe^Gq zUjZ`85SW32-N3nGadlIGjd3I5fp#~7HrP0vTVR_)PjW`@`R9No$|E5*3O50)=gmI{ zSn^M3q0sqzU{r}c(?Pt+`=Td-Qr;O6@qn@?fs&}62wK|+c0^^}tRX5wTa@oc5e>Ht zx=t2vJ(lnUiL3#&6;{1@Da_AlA{=1kJ(h4>?@7dvm6BNdR!ZGT>_6UG6-#&$+iy^E zI}b97=be6*WDwJ2&!!|-n?le1T5~ErPwUKSSbIG%tv$@?paoYTw`k3W+(t@~%TZhE zIH+wBqqJzDC(RV|A;FJWQhD&^?nsYj-S*uLW6%qEH;krC(m2_UNaR&QK-!9=&5&7b zu&4dWe#o-@jV&=o-V#C9TI`5P7%4i$nz-DC2#XFjL?a;*ZFo3RW$r1)nxkcolAv(; z|1gbd6fl+XOhYfmUumL%OjkcqBtl}M66GyXnkKSSN1Nk8V-SyTK3nk;?}EonFi!C_ zTd_2i@@%2Te_*!2ICvSDE6o=4(tkQzo!D%3q}hsR`&Cb}Quib_DU|{yB1U3RXpg%r zg92J`^%Fs41rw3bVj|+rG15d}R85x+c2%+n;(-~!quH`SjsL(zG~pz%(y>nwW7Kll zBwWQrU<$BoB55Kd#sQ?cj3y#ROrgMt8#qPb%A^Yf^y()9nQ0;ziEl9(F=k@s{{js| zt^f37TxnIX(O$)bU@9;na72{p81_nRkeHBk(#_BY2#rsA8ImQ>^H|zt!0Kgyv(Lb6 zF}_}f+$h!K%IrOunk!5iQ6-PhB9nThNkb`2T09|Ls{)-QZm@1aY=h_}#-Uq1No->W zy2PGL6zGXrW;D$!vSFmO+VGfZ&cp+&Ee2WsF_A6Cm*Qp03ysFyVuSk6L^j3>k(Q0> zVyuuPvMDpoxF(2fDPm6w%B12P$(3l~-xk&wqYw{)jd8$`+(r;-VGV-IL%1wCPe_n_)LWY2_ODrDL5wc$;6eox%6tPn&T!eCPUKnU(sSu>fr1t|m%2fxD*^7)N#F4FjjJ&FrP3)vFg zY$k2CK5Siy!mIrnc-Pd ze*>Hz)leLPkuGG%=l~uM7~=?xaRkOV60u2U^~$Y~M4HU2LRsRPcg<)0D@qrzBy?Vo zmeyKdFA20Hkp?V7TB+EYWJeBAR<#*D0ZnB36Kf;>j*IN*|o+@0C0Te_M`}Qz&Y}g>= zW7ek6$S??hPnK#rN-;xMj&360EZi26WY^8GY|)P)7A^wAQZDxB!V9=Pmd=cV80KDc zgGIGORMq3>f^nWac~GIEX*5UhhI)`b^nnLX=_&I?agB085UNLBd;ka%M=o%Xf?lr_X)$ErRH*X?BHk85ik$O0Z zqhoNu!KMO}DEp=}XbyeMndVB1Z_GsE7r}vj)|u#$h~qcNj?X$DLp>---aQ0b{D2FS z2-wIyN4II|s;q!#!)!VqKzDz^0Bic3N^)dKQ*IeDB;fuQku$9#*y9uDP}7@vR7y>w zQr>hcy`U*F-A2C*@f_Y_HrZS20#cfLTBaLWkbvBRX*K2M3`Wk1s!rUptAXopNb%kk zgG)zv#T5r_q6c470je30!q80bN_{=A^4`dF47b(^3KkRKqC_E=$DQlwl0ZDk){Q$G zIIGe04b?^6XE4IMXmT+z_3%SLScYn&J7;K4q}!(G zmvq~dU~QDD$fMWk)B~w5y8VlFX8T?g$IocbZBG)`(6uQvA#yI(WkK$;Tn8OUrRxQ7 zb!` z!^yhGuCb87eN4Hn9%N|SA%Mu5fvS#T5)KoL`bCOcIm0`G7adw& zTtjP2TI_@!bf*xzlL?bUix0Olp>O!9T!2J3B7qe7+{(l^zm-Y)UZhVMx@4(IE>9&& zt_Xpb`6>paCmC#wtWP}FW8#Gps6nWqc$-(QeNe@6~L4&X>u>7 z8&?m}QVpkyO!DXL*^El0g=}PoNY-2S4_m7E&MEHhG2KON8CDp)YaI7M$*YwR|Ih!U z8-lpNwj8|R)Ecc$@8@qY1_ZV-1rf!fmjDG_s}@y8iyi}#zJiM@*WSWl8S%8PkQOC8 zB-j|qI8DE3&6=p6QfHA8R%SX&c`-9Vta>a3`bc#v)gSU!zw$3s57%4t{;H~9^%trq zYD@d9KCAWKpZ50t*1u3agaA|z)L|DrwS@ih10LAl_7|#$j6%Q>a3f$-*aOwD1zI@J}eJ^1eG zD}Ym2D?K=W^%cNftd$Cu9`sE7p8*l(>sBgQef1TC03fNxUVj53heFdQKjDFEtWIHR-bk7BS%Eva$Y$Hficzxc`1)1cFy%dt&{5mzm z5uQ`1GisD}Psc2d6H?VA|;C?DEL(CX;sM~RpPVLf_)_bV93&b1v@5Z_^*fopBnhfezx08TM_mj z@Qk!EfhmQS89=tKCH6+*dQ{omD5Q&wQKZbnq%xV(11uwc(B-dr%1r#HPsT6=b_i>^ zeYR~E+&&~U4E%@mA8n=TKs9BQc2;bUK&EtItd{|R+gGr}01&TAeqcBQ!9{bQHG(}z z=ZHLyG%@H92VTv7;p6ahV>E#bU!EsM54;Wd@MvKWlF*90wX1|2O3Y{X z#nG>cxasu})d}e+praA?0(^Ud4v?6EY}PZJhp_jt%_StBlB!IMcg2pNV zjyeca#r2*9^hoKP)Me^Cfgno83jFl+Ga%9!PUIyKVvsZy783O(w)$u4Za{>w1ND{7 zlk}2hC&t@*kzYVK6wXo`w||9>Tfpn?!H84EtnDogo!`IYqJ2^d=PDQiyyPKr9V=NcJVhc+Tl=HVW z60bz*FE&XJqFWDG`s*xRY1c$5N|yd!ll*Or#8yx}Uo=S%g!7S<{v%6Q`UwNLoZk2i z^4HDhe}tt6%jy2)x6Rr;&C*llbU*UAX6YNgrTSy#bo%g> zlzxb%N6G0r^5A0m&#-g_K6J^Gl)mUYUpTYtGFkrHS$d>g4|5@5=})qB86QYAl=m~n z*@-e@$)(s%g>?mNlN$38-p(W0M|74Jv~LPlH15=v1Z|Q7qcT*4_G_etOlt~^B$kWy z4E2aDT{KUZI?u+Ef$WZ7(u!d#8$$QOMt0aZa+Bwq$kpG%~^GmV|+hHQ$LlNJ(%WTB8< zsLmM{@vKs4sZ`Lnd77c(q<_PM&IbB4A>F`_yF7VhR!h0?@N`7ovLmFsTTFlgq&R9x z*49z4X|GT60t^6=zPHY}0X?)04Q$>ctw(;^3E5b_1H7D6mdf`KF_Wq&AW?&~zX58` zN)bqJX0>T8MJ&7sVa15%B_@M}Q2drwi)X0-Zls(_K#Nd?{+dSHaopqH7+hAKG3#`y>bsRniyi@pU{>rSc+< z-vHO>tPsv}5!|i&e*r?#FAIH7kt)H0Z!&=mi-0+x>L`Q@THMyta6K3Oa2A$%eT(z~ zA+!&J16}Lu#njC|qhbY9;h?Xvu4O5*DZzu$%bVom>9fluO*cg%)`$N#f)J>#3ipfu zTey$*E{pLEye}F;U9XnWPz}8~Q7+S)w337znr;wuKpk-JA%tO}5*=noX_ZBOUXuANCD&sX6ygQ{II8$2x13`wx@)hs)%x>sZ6&5)fQwWz<*d zoavC#MW_)ixU~p71(R4MR$Y=K(KSi?CxPc-c@QnYlg*Lg1Q0>PL@PVeg9!@^1E||8 zsjO)q8~N+>uOyw)?h4>C=x<`xYg&Om$qA?y7qp2G={%!jV^SbX?36ELJtOC=_juv0 z3|kU=sdWoFDlr5~8_48w zD-X~#zyD5bS?euk0CfMzXW+9WG-mpA zl2tkDp{25DiY{%wLHXSRyROXgUQzKc0(A&I=pT`ghMo6;{Z0OIgrSp%HB-xc8Otfl z;|4Vc1Tdfy(+b)vIm1ETt8u}O&&!mYHA4I}L0zSw22l)kpuq8vYg7U9-T!7RReVMp zn5M$UjT|r*(;{c|g;~k`JeFCvzI^`XdJln9UK|`0%eWkAh5)7L8g^b&#)@7 zQb84!V#^x<(LXJAi_m08&`JZcg6zT-k*qE_(nFjD`z;L&-Yj&JDiP+dC=(`+YKZV@MKw`FI6o3K#FcPF2DR38)LD|jH2ijSF}oDg}zw= zV{{9I0NtcXqKoSQTuwoan*~Ab<vPy#Vw2p7zemJa+UyT%@yFETTs)uPQ%;WiC=#Zqy1IXDF3oj}=9Go3v2 zaIECaAhkpmSseQ0sX;KE%5I8EQ6Csa*yW6}QjHJb2x34XG7O<%#zcW9VO{2|9}*@q z9)mVB^b6V{31JKmL2u^;hnKf#9UN$Z_FL+-4>+Jaqf`kTvTR7;V8bKUh?BnH!N3u0 z(U4_~frE91F+=EmlWqdbsGAB&H<+;^azFg+!l~cBU-$k^3#bMz_lZ|OxM}z4-#<;K zuLBMBA^=-y7FD_QZEUbtFh4#(=)ztw!zlU$F^3>#dWaAR&I*)`SaH}e+ahPv;TT3@ zx%o^2;Rrkt8IAyFFcJ`C*Z-f?#_3CR*E()(`2au>00^%P7@sT~1FW)kvMd2doGJhD`!0$M$zG z#k|B2jS1w{07;ce-lW2BXn=zx$Q_VGg@cm>Ip(AZykNNmAqT~nvR|s)!smcoS{Fbv zvGQgTquALl0d>KSPAnn&K|GSlZ2<~VAJ8r$0$Izj4DlZh{R&PX28x3WMSBTo&xeIXaaVSpS111_OXxJ`84m8q#D)tn~N64E%D2OY&87)T*bOEi%$#V$F z)U=L465o{pB>~b~>+rP)oR$rso6s>`xZ!v(d~p5P4Eu}t43R$u<_}?1S1xL1T6Atuc_4by#aSo+@fF_c#kL#Yky{T}b3vBG148Z*|7=N+V?@ zEKHvwpgITwC`yQ@_RhlYn|)?lq|2*V6%zVVL+F&2wlH?16Q)JE3~DC({tj9)>wAUaD0h(bdh`e+Ukye@r+*AN&mc0FVV0S%(q@0@#i13=;(5L`onocNb)yyhS z`4}B#hyOiz_%d*00t@m zUo}8Y@&KU;VpB;`M2KUesYE`4Et@+kgKGL=!%{-dm!AR{RJJrY_Lgj!?auIY1 zb{+sxO`T)EIKwW|?XU?1`5+%1nQOx&id;D|;rs98GRMByLN7(!C#A|EB*z?*ii++S z$0}0c0WBK7qD=FJ#VD$AiwE@%vjUorDxkc>5<;CcI$X(xkAPw+fh20JVRVDLALaHZ zzJiz?Z8@dlej6GvHA!DM5@t#G5B|z6Pda6Xat2jH&xF>Y<;1N=R6Fj*F!QV+tr-bL zn&(Ddc9@%Pyg)}8U>Wp5q%m-m#)##SlFuR9YC2NR@QgH@7~oZcP^y$**R(1bXlxmw zaR7~Qo5q1pS>t}Ug^L>X6=s2rh%Ho~QDYp0Dp(d&iU908fR=4>h9ST~D<)LVFXW(J zuuYr=`wKnrg(;vk4Vl_!BbRR7fM+;clh6m36L+981OituyI>n=eM8l%g@351Qtk=D zKBfG`?MQHxrAvcA-ssL1dWV?beEK+ucs)M5&dxcAMPUALRV1HJ${Y2WJc7D z-BL#yMtp}w6z12}Vbk}vzJayw>CA&HYWUz5o~Ny6Cui7y3tv-F;jFRSDqQx`D!1KP zWvdYFPN&0}E!rt=FBWU6oOWB$3|nD^T`Y1G+Y`pQ>`qsLtJZFF7dc9+65@+&&gqT> zr+s><%k7+#;BpovlvWknXU7*gZEm|OzSI$yUXqkioSa-(XiG{cR9Ux9cxpEx*NE(~$sKbzZaudH^9Zii?q zE*5J`-7`eTEW5L$!cj~4eBQfi3f)dyk-J4ErM-@*Kf<^2rsXSZD%_>j6>~0Iz7xs^ zpo~&q7~-N&{2QL*diuok@xGl;`~c$Z5&xe;91{VMa~pUQSA@0Ce*;+A>&mi+wu!u*o_s(fd@JHc7wau+3JCfk$J6EllTZ0YvI!nCyXtmKsBw6rXH zN^weNT8Z73X3I)RN=iQ)wscp}q|gOxzT- znS|hnU=!Un)xbtaiRdbwYZsG|))9gJ08*|Kf=zVUXV%!OitHTM8F3>5(1*d_jHd;` zw@eqrqYx+$g{}yMYZxwzcgHhY{!QgX|KEmM^Z50(_;T&MSh*eWuS?Y3?R!tX6 zO6?WJ;xy#BPG#cS;Q4en6YFbf)ht^@X|Y&gubK{2k!Nu1hH@>_ILekC3!$9>Bu zApcn3j+eSb8dzynsaqOXaX*?5ryW>UTu=ylHKU-!;VhWpz-%zmz#UbSTQBNy&LNsn zMEM<61yT{z#8L`vMdh(#31(M;B9d=h$cUGGnq^j6n?QoU4`_Hbn7r8-jORK7D+`w$$u2?CRVih~5V@*`KUGetW z)fJ9Xcbv;zQ^?j1789+LZRk@d`V@#j>tKMbv;y^ESiVy&RbS$CREk5!j2sa!cdT_F zwcb^^h}@3?FT7gMZmT3zbYXL-0ks`W!}I+u%|w!DudvhjIIdP}Vsw}AR*yjIjbL5k zE|4dnptM-7)Td6Vo@AvS7qk%-9HiSWWI4XBF_uRwc0tTpG&JAB_Xq|%LkjMbaieqD^V zMC9|O%kbK263;}O(&|tq3r}!tTrULr-5bHTY#+q?A`nftxiAr|pCt_Y!N(NaE8I4* zZyzyH0g`9a!7h_fTso%!+<}dH$Z_AJJu~VVhCq9b5+5PQ(RD5uVIRUF&?FHraspIb zLnC&bxFnu?k-tU zKl$V9;_sYt!@Dm#@Biq-8xq>L-81U5^6IJ~2itsj`+HS0pX#=?WY3nU^!6Pmznj}T zaO|a`ovv~FLr?u~|0#O=xZn03X*lwI)tLjQjuiYhM&p^=CLk=Sa3>erfp$O`w|)AY zgkq;{x}ypJZ8;sq@s+kJx7b%q&-=xIBuQI$+;xiGC@_9cC z@d-Zh#m(~D5%;ZcDB^@G^mnv>cpufl@PF?*xBnu=-`I2a-q4HHn~t12%;F=DY=8Ou zleL$AJ$Hn~jqjIRPpumNa?tq`EZ+P4f|Xl3AG$gA{C6zA`0jB@(fQZDJK+2o7JugT zjayc1o_VkB{CO6CbJ-7FYAtKOnRi}&iQ20iGdpM1;Qf!^ao)({6AnB(bxzyfi=I3m z%;Fj2&kavsZF=R+^N}n*^3Fk-j&JT*`S0^lEWS5;QP($@xIf@7#IpFAH9OY4b@2Li z5f@Tf{N(1C&^!H8Po-Vx&EmH_l@@budgfE3F66OzuWRz-VN`b z_vvd(E{tXIJ6`Yl;(`0iZ(DaEpT!#=Dy)yH*!;;07m8W@*N+PVCYEe^@VyHaEZ*(M zS3kS$?D3yZU2wDba}Adsdt}Qq&-h=gWASA}>MAq^g*SA)*vR5z5_hFeyR`lFYc4Kl z@p0W=Shak~h&v`aoF>j<9&(8{Fcbp1I*d(WMhC{%v^B zt;PD2+vi{Uj>Y#c9p&)bzkT^#m(H+wti8kWiJ|{``{_&PS)Aq^6l3jyOI~7Ndg$<1 zUtJ=qPJe})U;B3U78Rp19M|Z#`t0niYZi85R2qC^d)@2v4y@Uk$yNZzRp);*??CeW z6=OK!>^N>l!`GWOWWMuWCEFD^uD|8(&~DvF-oKPlO^)k+ZujA&2a3LbfXid~AK9{R zd8YldtuHZ($8n$7H-+D#-@EujZY+C$cgLBzzjvIv`zJ1+#V39lu`#xE_^knaF^hk5 zb9H#}5B$g7`3e>vQhVy|yB@53AeVQu_>%JaZS!XP{gltwv3PCRr*qby7`v^OZ)EXT zUb| zc*ucQ2)1DcCQmUrM|JacWzMe}Opd^-BB{ z;zNAm`{no*;Z*4;Cg5ZSnV1Yjn8$dl7Q6|DHzjc@Hp9a1iQPTtgl$A= zRY_t?*brzSHAeR!)~3=n8^2LbX>$SkNqb(ABUUF^XnaTp$#>wu=Jwm+$>q@TlU+$`pi z!B_@+akj|4hccwsP+nEmxS`R4nC8vGokpH;%akLcAhrTgr$OjvIwG@ZhTPq(0^# zsO4bAvrixI>`$w(Lk<<4rPF7)r->4e>n}omP~y&pK9HqjxZFn6MI(3?&rm$y!jtg4 zX-O&~m&H4!%xSqS7c7-g%2K@wTw?K#<{$^bh(P_#Md*i+hal45JTVsk_{aL!i}lgb zcuq~6-Rj%|d9Yw+qRt4EEk&R{Cqh%0n4FlBn3|ZDn4XxCn3QviVscV)G89dz$!W>y$r;I+$yq6hDM=~GDJdzbDQPL`DH$o5DOstBsY$8H zsVS+cscEU{sTrx6saa`>X-R3xX(?%`Y0y@sWu#@MWu+&kC#5H+r=+K*r=_Q-XQXGQ zXJsU2BxNLLq-3OKq-CUMWMpJ!WMw91CS@jPrevmOre&sQW@Kh&W@Vv^S!g~BRcE1C z7LvTPr^qBRMKw+*mVHu|GG@{R5{?h$4QGD3S3b^Wa$m9Qx~*RO!Foytc)QN&UV7nTZf&|52|4l(g_ch z_fmPOcGeO!CctM}6)40aTs6vspv?7n5)E@XYMf|PDk`@NvPTj*)AvAJEt)|(4hXH1 zjM_Bo2Gm1()aUUe-PnL@q&3a|!++??-~1D<_@`?2r=~xj7F#SuYz7I{v|~F-cH_>6 zniviZ04@<-@{N;jMu}%Zw@2_*;?tYOXUOp>@$vCf3t=Xx5_|Wd=@z5uM-Q=f28big z87Up6aWlhAOoz1qPwMYtJPC&sohj*86$F)4el`&n3a3PHp;qoC(*EQ^CKs_BVzi`^ z?LkC&8n+Ggk#2Pdp55>~i6`lqzQ+??^|V7ZG@;~DaZmZk4icU!{c07SGA}R;d1+nx zVV%d~*&=TZ_7$?ORAWD;t%+&AIc_$}bwz$!ucTX1;>7b1E^}H~+jzC0(dh)e-cRs{ zUw5F|#0Lp&HSL0e`SwDn&>=_k|CHkNIPo z&xJ45UkN{mr`2bLKUC*EzE?v7tr(|Xi8ZvCum~rDLPR_q> zT9Lh^+%>y?!A%<;dt&R(LytdE<#_qF>n!s$Ds`NyM8zk>H!SL?N@^3Sj`HiI>8Z(6 z2gWo!rj1fZsiXC&h7tW1X848p>%)5W&r%iX{SreoW>tiS&&gB|)g-9>b$+@WvAf#n zm#)gzgzMBs-KfDCDFG?Ec)kC^Zlj0x)W?K`cZ&=T^&5c(@&Y>O{I!Gh-Ti6|xqV}_ zy)^#XYqh+_q|!7jE9^8#@87WTI!k|pzc!#2cCgNxQ%Ml2j_?1;Xk>jRP1PuK8fSN}#W zd?+;(*Gfx(_9cPsxJ9$nLTIO%?~6_n7C~D%E(Ux+YB9c?tFa0HThEu zjyK+X%c@%+ee#7DU)%Hg8=svxd5KdqgwDwB)o1XKsg1Yb<+c}I-1EkPgC|aM9(3Zn&_r8AMU_elh>|Xr`PneQ_T|u$^=2efP$ZM}3J#q4MKv4g|#rB5Ar?$Vm zIG;1MGyOuDY%##>fA`Ru=T?Ao*UgP@Sm zDfz$tcJWd}<;>5H26nD;M0PBwpa1w13trqF656TrfPo`M68_I$@XTw6-#c>p$6uVT z74Dily2U3v{KUU@>^=Cw(Ytfj+?lwd^E-zRTpBTQ@)VuEjj4OW52vae8GWwF?Z0x> znCUh9UO)8qhaY`;@e(H%SQZ^sFUr$LsI@^0HwQLs(scG)7@_K*=hX@7RJBgU>$JKc z|50t)>c;6*>PUY-m0qR8rawm4`!tKTs=~F4E~qByLj1z~2;s`K{@QTuBwbI<0RLDua6^@3h*gJc4XTFC zc$JVeT-C5a-&@s2)mxXT@2OdIDJV>z5EQ2}w=uVASgu~Qrh}pV($$&-O)p?tm|w%o z7PqnC{cxkE;gY7|sPU(JRT+K@^Mf0n(>J`S@ek{z^4DhS2jJMF+t5ihSv|?GVR2Zb ze~8~Ob;C{CO&g4%>ZJARg&%j*88w=Qji!aa=y)+ki?=tc8(vmLsM-WvmWIo;yr9_T zwqYaf-Py!!aHBx3Y2Q@h`S?wIPK$c%q_U?CAiriF-Z!E=(f>k(F0JJ!HFja?bcu_G zZ2|c^A>U@~HTb_3xw^_B$vrJOQzikr#NJ|RD;bl%^b5f$)x#->19 zRzleNti(v$pr1RfAC{A98+E#D{k0<<=F#_VUq6~VXd7dHd;J*hWAj+<*yrOOKW>}w z-3jxgLtm|*ByvAYI?XSb%vEzbE)GnbfdBYGhQ#(J-VVGI1YX^R?-Vh`knQKkhpBl# zY>}Fts^0pTFx=#a0%|?*OXn|i(4_yAr<4XT7aIUN70nN!`&PZK$9slcgue^D4EfF7go9Rv-(MhI^kz<1Mk zFvP18F*ZTy&i4c41$bua`2-%eTUlR8jD5?2EISseagG_yQGy5-j)FM8mg1twF3tO)8S~sMX8yE$?2X<%z|mJ znpNs_RFUZs4k5G9@@VE`1R7KeOFPWZlEECBrWv+bc9F;}luAXm8tA%e?P3{RQp8%P zgQNwLXpyhf4gHbgqwordBlTa2zlwMu;$y~I$M*kU4XPT3_fi+*?mKjq{G5o!lO0!y zFTiiIX)5tX{O;iszXQL0^Z$%^DuV3SL4HqgYa&}MMr;$y;H2dim3DpVxe?=~dgXHD z`#_!!N>+$vrI4#31Sv{07iP1#hI|TaB@hx}0cJZw^YYCbRK~F#?TKiQ)L)7x#o#C}JBIfrpR$D702T&=(%mJwP?6`P9*A5d(t+ySI+P{33){O}M2AVKl8SefHnN%l zoTUyz8m&wCdXQ$6MgqqNj>|_n;g{l>O8h3dS8fMBI#uqq zNb{|8mW?HITaixwM3P68k_!7Y(wXi=a**)6IEHlUgYxI2pKswW=SyD*9|s}~La>Q> zrLO7<+nhgj4S@5YvPvuF{MYD`*T+GcArJNc>7C?p8LxGoDBhf%qfxpw&NYAJo={ZSy=B$vOOJ9|qWoOy5p)uad;qOq}BKBiJ2eW*neT$&Iw<3 z-`U^%!N31FmUO27H_O*$P3qfYK-5$W}Jz46Jxu6^s*C7nDuct!Rb`uW#I47s~_{%e5|*ACfv;nP{~*p>`Q ztiL^Y;0rGd>09+_Ma8z$Lk_$iy!3|8qlQ|~cPRV1!{nil_8E0NY1GQ0?S`M2+_!l5 z&j8Byza!E!y?vJKUCB4;ILJ;k{e2$ zs^PydAC%1D&a*4N*j-pPeBimPz!xt(FucRueQ)=8>4V|--R zqR-w>-+v*#c7!qO_T{C2Y##A&zfXT#7U9(XWhpCZyvQEq5CIY*NhugaPIWAr_SFrD&pSs z+uDD&b5voT`t059e;GAzoaR}6O3byD<6aH=eD<_!_r;`+@33a|wR6*UZ92OB^=m73 zO?=Z3!j0bhWBkjvM5K<+di;e-r=@iC-bp?D+LYfvy5on>+rNI`-O*7aqIW#FOh0Ce z?Wf0=Ki+qYv3|n$p>eJ;BlEX>HTCSnV~U>su(0OWPsens-aFOrg|=h64$FFG*^Gf> zk}t5d>`7)^+xf8V_)5Ss?CMFCM^YOk9C#G2k%?>&jIB8dO z+_&H4_nY*i^Xx-iQ)f@wvSL=71nc9I_IG%!^rf$kPr7DZ@b2#(2%S7~Ux!~FUN(Gk za>vBq2h}c`JU^-~BclDkCf^q~MN|0kcas;LpV+TnZ<+F7uY}cWZyG;kxqq+c`^7Dv zvgY5r#|&A!Yf2yS*{||dzfKwc$QPE>#-90!gAd%kF4>k}_lfnzK?`orpEA1bH{nO$ z$e-gH`cCzm+|&u9KGP1rm^!uc#O;HQ^(mXW`|+u9n@iSBtqFf7b3()6scmh?wUz7q zuG>^MJStC}bKU!&Op6<*abLH;?enuA(>{9Lf(c)Sj2m?Hx+m@!6`yu?bNUbm(MTg{&e=Klc7%+{8->ue)Q8X3%>u?oBb!e*KyjJ(f2PK|Ip}ZPj zvZmoyN}hhtfZ0!PD7u)FJ8}H6kBaV}(c`zYSX1$ySAKT) z%g8I9{dD5!;Qn)p#~<5XGU<*diqnnh$9{Y1i{gGO`h8flCCnb|8av|M4@cO)+k3{; zIB>E3tKXB_+dDjGx6PhE`Q^?(*!vh(oPGaYONsHoQ_t>SI-z96!h#c*%5E~Z`PdqwdDFd&B^)~Vy7P-(&dR;&e*2k*zvo`PtCkz`nORJ|JW&T|MYgX z`U&qY-u=SLTPybbz9;AF)V&oM z&z)V_MYvGW#dS~icyn^)wW4^(>7{m|N5) z?A7+&dOTnK_3G4n9IjKS|b>W3)Z<+bU2XjA5O@4Le zk()b&ymIlknPYyu{~qVXIOpMC`>ogQD0JRZ71VZ1erauR;cc~B=YRL=UD^9;^Y8mIHD~a} z+TUL>nfHC4Jo~wy$M(p6bo%Uv5+8ed>23GUo_^hs>a@CdX7j)1@6V0U%~_PR~99!VG$;GENE->tpwU%7G4@VT}AdsC0hsos23$@z6bbC*wuYv|=SV6J0J=CqrZ z&6{hl=u(%S@#NeE17jo9OHR(cZqje&{{If2_sN>izqew`yzetRJ?#NB+Lm2kN)}c30MgNY(tcHQdtP zCo<-%ZsQ&s`f26-<5O~mjC|~Y`5!wEMSd~%gZV30s82-11T1*rqeWHMX6G*Gv9ik> zC-==-kmBClyYsxw3)b!XcFE8CKVNV;vGl)k`i7nS0XN-$aKwWAMo4nYiA+58Vau;DHomm6rg^S6sqHk>_bi~0f zMo-6S2RH~3#Cj&g!B411g`>(2j}BWg&6*2d29D`;cm#FLfHhtM2)T7v(EB1sC2Z%O zm?8?hyiyyp(!yx!Ee!wk8sG$!3l*i6kb~{Bi|lZ*hDyMV6f}-nD{3mMMCOST9m^84 z;RqrnXNw#+IbE`|PQ#Pr-x+w446WGZ6&R85oGn)2h+3={P{_9$`ANssG+)y^+mVOl zK;<0G))W&5ah)T-G14z6@y`%9`^1kUPI9*L{!7FoeBxg>%l{MNF+T5qMLgCgPJSJv zt5E7YD#sI(l2cOC(lau%Y=uR|_L3U;uh3mpQ{q%&-lx}N8I}Eqe`II)fBo-&O4sN_ z4#?WlOcV1HT#q>*`-l?XfH?UtDDg*{#rGiI&gcC>#QXZh-$b1BaZ3635YP6B3xb3L z%6lW?y?owxL)^E1T*1L`P|4pH@vc7k`yoy^47KwW|0L@VGX8}>4B`LzKLtJ;p*W*+ z1oTDf|KyK@@k6@YUoIux@qhU${_OqbOa5PZLke6F;%SmDGCRAbs@7?%j_!dSwF(>1 zv=P`Frpb!S!GIUhInpyGBM|-$K~Vhru)orYAv#XS+(E1DPIj0PHDT{9wHIS+tirx8 zod_y{#=U6@oX%!Au=V+z9c{s|uZtaySxImsaEK9qYcLxVFy*_u_J35R!kG?0<@*Qst~RvA7ib zn%m)=L)va{%#+Lj!8~S(mc%)#;5u3Y2FW$Yh4aR=|GH4x2KTv2dvR$^rO&$xhohP@ zz~_xM;@vus z@l83IOdsx2v`vgnt&^Ao@}{kFc>3kS88969w3iby)Kt+gcBGry@aZja95&CU&N|?6 z{KZ^Io_K{dt~vJEU<8<>5(5N0_*`>}0ULs85uJXEE4I%fUqLoFjNfUmqCUfm7zcpn zuw<~7(x|8%dJA`AcE%BJfjg{WN7Z!iypg8g>8!yS;bIJ-rn;KpOiOl!>XSXUD(#h+ zR>^YB_*&Q+OHK{~BIkr6u6-VEJGk#NrHxqg?XCwn-^y9S81a5PD5R z9c0f@`~qC=VrCDMe2);sBqa}bpH z2>d49Hre#ZHbQx>MHr3H+`oB*!##k!nn!u)K^`Lq{XFDgG?*Ds1K$J?gFzq$BZkpZqvs7&+RHme*e{ zmRf($@}nG-k|!^|ezf@Pt~|E-Tqrvn%WW7aj7#nm6`;jtl^5GEtTk!^D{ZiMeU0<3 zuW=qDPJc%UMl!NwI9pUB$sJ^z?{f04R98(A$c?L{rb5CgI&(ojq=a7-h~J?&*{Fz5 zC;p4}BU(H3n*!Oj=pE(lhLDLsYm$7!DKFtY$qiH=rO`XePjv<(5PlQyPHB{fd~K*+ zYJ+}LKKf1dhxLY!4nh{fP=qN6Yr_ z2{sf6h7?!eLGNiy1Q!~g@}&3591uKc{0h9OUVc@-GK zjKtbY%rSA92!jwNAbNSVJN}` zghGTe1Q)`5gc}joA#6r?4&e=icMy&te1~ujAut!VWP~V$B!u1wR)qhKtRZbI1!Sak z#U;k4#wYro#XplL-KVhvaDfTX^LHhCt8W>CC;j>4zwCV_O1Y63& zNQ*;0QF5FsR!dFw#ro6Ih~g4ROKK7q8y6efBrXPRi#SS7&WzJ2t%;VF78{o)w6vHs z{A)^SA}tO#&C|9~V-|8t2DQTpS6WZXhm4 zqqru-lNSlC+q7+mVsSaKv1lg&ut6b=K!7(bEjA`DmI#gU zKLSK@FlvpP1|Sp2l|UV_PA*sCCHOzl)v41Z?hv|*Mvo5B$Q2VBXbcb-#l@8_Przl& z-m_I*OZXc0k(LsA$JjgWoOr)*dB%(#H+JI4n?_9@eT(ZWinw$9$cbY|-#KxNt5`G{ zJ?i$+ci%p0^4O7gjk^ENyC;vl_twd`j2t(1?8tFh`6|=-5ZLzjoJR{x}yTw8At@utX(VozL z7H@0Yv>&vS+K<{P?X)&@z!lrI2kv`MyQkY$?Ya}%ziD`-=+}S4P1+{0S-dIU65neZ z#a8i(STA;HZ;Nf>9kE?}tL+h=i!a2N;!p9M_>U;j-q#jt3$#tNTwAFu#Zk=DU3vGhqUadx(OI?8CeV=6bQ8SzD4En9^9i7&eT zfl9VA^quCg=uULTTpZn1oGLc=M0fJcn}KS+P$NpOG!q+m!%81P5Be6fYlExkO|zsy zBYMMJ)u0vqW$tf~M<1JE4d12j&0P%(=yfwh_u)QEZ`tzoY21p-gZ}f2GBH>T#pM}5 z6fj)5u2Z|wX0qsExY5ljGoZIjIsQ>4cf-{@@h;KBOTD5|#Y_6f=DYfyu&O6`+FQ)0 zV^Z0rzm=5=#ZY!f7X89O9w$y9FYWi#gbM&_Wnvtr&$X21As z0Df|OYf=7^`FwmH9`?t#q9tZ%!p*p!&@+DBw1jRV;$engsxjkLb4Q~Nk*6MJ;HDZ& zUNs|=vf`&s=UI?f0Gj+0rB9n~_Daf+fA}I9>t-hnai@RG6OST~*JZei^w0Q-@8k7D zd~1$OA3~Mp`t%9(p4lv;#lY#)D$!wxn)Y@s;dcWFA;v6~9^n;UO|O-nEnN7|8pQr(&+S2J-2u4U{3EqDZ8Zzi0yN9qn$|u2J6?PMHi$Qx(Y?qxKFda%jC5b%Q!e5Y z5Q1(C8L@eFXIHKb2BD+6M%b-ybP_|y-DrgQ4NO};YIqJJX}AINAtS93=e%P z=c=R-?m8SG;ezJt-d?dk)bs_K;bb{#Bqc=V12X}3p+9Qo`4W>A5hNo)^NOMZ5sq2& znBtA?=2V~0yus%WJ3Es{r^)MgQA*fKMmZzK{J@uW($9}X8X93$J0a&1Cs!?VlLtO4{E0B!L9Ex7x-_maLVI>qywN`ATNEdD&*2X z#nrrFsh_?wbDLaxnbjSNL|N$O@tlTk62S5?3V^bTnba{$ZK$pE<*Py-6$a@C@_YCO(0usLY#?ZQhmHguamHrU*ZMX;x%D8+qn+hDeT4xzHTf zbR$)nzGi8(+w9&fGnlp0H1BBE2#GVBwTSuN8aAUaI&|wN%*tl%G4@}Y`7)1i9uLi3 zED>0v-*UcTF!jo-{$PBVRU5O;ViEfR`!gQ6rR&USMB&hm}-rr zBK?S2m@^>kco`RX&U`GVRoGc|KiB*qXL6HbRq-?CL13*Vb)F8a;5whJyQyU>idNK% zF&OQNz`mZ!O`}8Rrrc|zzP4t>J$-HZT5)psR##|67% zUF{NHwr0?r>+`CD-rwC~F3U@>@!He2CWl)>%RigD@`j5I8_n$e+;F@8E#?*8M&{)F zd+B}iM1F?YTWLnO?iOuPwT6xbNOO4WZ^duLviob)TVCH*M564HHtq5^E0$QpDIZZ% zM+A9OkT@(RVVEyI)`hwFw~yt}IWs|Kfh%{F+3Q|u8&6S|xG=~Y3TS`a&fj*{uF7IY zU?pXGMGNCNCm3z9$PJ5(QWhn~HYHHjSP;|yGPBx`qVwkL_WmY+S!n>IU%`R-VNfVB zMA6Hx_HDhpxls^57EPgcfzWXqUSu5L3`LRezB6@cGd_iHDe zf_3_Id0JaPeXDuAOFR17OzWBzwR<{a)z#U2>2-rEW5`0hRn2l26r?o?|C> z>XsEXZ$_|@xpwm7NM2c!JdcwjzE(q|s3_Cuo{+h^CfkOOS20Qc;qfRcxTJepX5~LA z_y7u4{gZ;5Q1HY*DR>SA&;65vU3;Wu&SG|M!SU}W^AHLy`6mV6Lcvx4px|Ny(D?`D zOv6ZPdEg%uv=>OI1v>Q)DwuB@_c7shEo=qCyS&zjSmLTisrM|Eo+@a?_^JILY*`((HnzwF3&ln0Qg+kL!OE~w64vk{_bf9ySz6YuHMBbYeDe5=pRv}9dY-!~}rAoDDrD@u64H(B67_UF1>e$6=Y>f*~g z(n0f*%UjZZbKK>l;+(P?O96Kg=Ju)i>E$iLR=$efphS53b&k1!2b#nBWs@}T8MGp- zWEQiKSJrv23K8_Y*=$I5*ap@i^o8ctL%O9{_pk7Ld|^>;2&3u9G<-(!Ec2xyY4n`A zbBGbF5r6gkhU-*W3`el037K+rGw_`KS4-Mw-Z|7q>&!(%y;LmsJVgltt?U@uk}tmw zZAFip#r@t6cb3HL*FVL20Q}AI{e2A&&12E01_R!>&V0JRucq{S{YTT2X0u_pQiWME zY-ml!$zkoyTlzJkr_7uI?T~rnfKjy6+&Z8OZ8HBF&=Lr?XlR0IT+t+<#)k108RgS> zqA+3Zzrs(;%+f15qwaw#*2T|fWd*bI7J0)9U4@Z_E`7ea?8+x;zS();Sa8VY1G}eh zU?|kqZw2(D8vXYCz&5Z_S`X@(yqpUvm6aeo!Sn^Bsb`u-!aRL{g6SPS!!{#cF<%^= zLL1HZM(5!7=h629lDCcVu6ygc2}E*T>+AOsJ-IGyWEEkwhi)9VuF3F;1du*<&ER!~ zqflnKx&EfXR`I9I*4K|Q=Zt|GA8DB83 z9os~f{!2v2L(fr4ppz@g8{$=BF2rzkaz#U1#*-Ttpf#%ohZRpzW=51xh#nXw6NjI8 zaK>LW!Ep5f)sV*^Xvr!CIU&$qxirXw`tWnEE1CU-rSol_wI|Ehg-JxkHzL) zi?i8&|MTYA;Cs1dGk#cmOJ+iifu2-koKvWaste3UX6~&?o`t-Kz1S#on}v7G4-)++ zcQj?9KX+$drcLxb4POL{ebHR>@I_+I9gFaD#8srPG_SlX$D#FgQ|}5RF?FgrXM&>N z4HI&cYcq=oaIYF>p{U(gta!~@1v-y6f@xUwrDyt(Aw*r@+7l$C7JH?Mo;-i9O|nQp#)-`#xabpMsUhnceBn&3szowen) z@Pc5xA^I%yh5PTwoUszwtip;K6_)K-M@54H{I%Knf#UdouK}&Gv|}3eyS-t?zt@-_ zJ@DkkGamX^X{@T@jY2uD3Dta|*>cLzdgVjC5!}#YQ(nDz#>fZX%v-G*Xzg-6Tu9z< zZF7s<-`wM<_tp!es^8rAN;R-tv51hR?8IJ&sEShdD{vABQO?w43G*khhA zZXH%_-xo}69(HOjr*AaJP3;+0yw)o7^3+bLCF=fTMrvRIm;she=bw1}2QzG%H?`~{ z1;EMJE%k$W>9p&D-mCJp=BjDlfaA=nRP`K;X<$Tnqf>khyp4SEpe&C!7IUqh!{cz^ z>IU+hs*?golu@F_ZI>~EjjNg2jR#XtAvGt6rN%iE%^Uf~>LuKbGZJ3DVyjVe;`Ej< zg_liF0zGb+o*JpFM-SX)mF5@I3uJjKkstLg^D_)2=)=j*RNh6)UBH;^?hRSvY7T4r z3&lFXILH$qP2MnCBn?zD%&o`}{xgGm>u+<5q6fGUx2d>X2)AH}PA+AQdAYdlUg8|h zk{(uhbJ2_hGk!*1x-H2p3BwLh7BRtQ%~3NNH&Q+}|HYf=@6GsUUM@92c6`l7A4!gTkE=2);{9++WQ$aNyV>=T&anLNe`E}Pzj$Ofe%H?G6j`qP(eS4(Gk>0S zeS?)ub6y3vBK=wOhS_Q2>$&EGvnRK=eARGeV5dm=SK*I>4xsD1xUXK(tOUdt=^v?{ zdDZc-(`+`!%MJ9M)1OwFkIu=Bn8nT@BSine{9w-IwAM_VTPRAOHm{xAJiJu7%^}L? z&P_(nb8~Z9hVPp@iT0S6&CBD52j;a5FP_8v6vbYe*9@1T<8 zIBWEwY{k?{Ps}eDMarGX%x4zvm5VWo%VAZTyIej?X)?mSVP3a^-nW(b6K$_485;=v z%GfN5j7)u=d9EZ0(l23AZeE@34r;D#Al1$RXgLRY>f8bAaNy-tF4UZ`Xhaj$Gy3(0 zchH6#OCG7j3O7URsAQa&#!s8gQ;P=toyzva;>G`i%4Pvnscd`b`*k-i=_6=|x$3d* z7y6>c&}{P=SrEo^UFI4QVUWRnLdP!xJ+J+B`yhdg5VO0m$%NmT63+3-wlH|L>auJ zO1slyb9t$k=C9jY+Ls8fhNn~ToAoqQ!x`q&Pd`A_X5(eU=&(6q+10V97BEND_0>#X zaB3GXG!HE66#JyoE8NC*Xl`zH)GakL%X~>TXE(YaHCqe;6UJo(*y;6Um%yf#WgV#0 z{HSb*T|Wd=S_JWv$@SYW9|EpFXL(!fWxct)QT73gbF+A=27OzsJ4E%UQlMopB}wzo zM7sIQ zGs$$+j9HOEKbfspycAZc%$--vZ&ut(&zLu?%%X+n!z)|E;M%Y<2lq!-wxfOP8bA92 zK{Ma>Tnj2Ue|#>99y7zAZwAhu_xzP{<=hwC%H#|6x{Oumak07R`2<>IKL31X(jw0F zDc6&WnWJ5#)cpGSOi+CIs%#h#tyguYGIPQzFPdMxsv}Z9Sk)9FuxGeS!H7#Y%; zKc80MvhI(YgI;V(@0$0%xZd-FN{5FGs%OFKacK6b)pz4JZp}4di+8MPOViEeYw}?0 z>{-)=zB3!V)D!80UmAh*@|T9;H+-!>=1XpcF&SQxSpq`I?7a3MK$%c}f<8CJ%b#M` z_w$#Z>TyDiE8JKLpoFoPU^xGb(0{PUyBp{d=Jn_&)pIBi&nh;Miw)6#G&jCdN~hKh zTbE08+MKz52Awb?U-e}>^(#@okvGh)Ph3BWtM=fZo~S?g)%zSNnN^dL>XrmbBb+27^VCKm*X~->S)8x_E>pIt=h)UMO-%DILB9~O{0>_ z7+zx@TJY8+JDxJ&q`Q{!`Q8RUmf^b%BiS*~@AcO*s(HPPm76N@n-`@0%4z(ZYLuDY zjaOpD?%G%dwCuI1AkH#2fjydoPrsN8Hr)!WIJ@aah@xvYPmeuouOYAv^2Hyj|7M=t zd>I`#JHBxvNdECR@&j8RV`jr5yi6<7f9DF=h9x}na6eSJOi&wu$bZz!o%t3It^sma zU!<<7ay8^)h_&lxi&bDzppIPEY7M*KX1_P@PAgVDbudo6i8l2!3=Gr+`M^s3#r*uu z`S5h#_EzV{f7(;pfHpt3OPv5Q?Kj_gt4HjMoNH;w7VWJuV=5>6?B=pXu^Z|y@NSk{ zKW{h0oMONETxGMs*W4UKf|HbPgZpZ?&DX%yoE6?&XWboz`P540jShx|>3?wtLH)7r z@-yDp8YcX8R*#96hX<+!2Dlz8kS#WlUTu!rG9*yEhjHsK{0n1moc;oHU8vY_DrSo_ zyOHT5!({{ttOqYeyE&(JwP-E?$LTpP%?b=c8j1>C9h6T4=^#pD^A_Y?WcO^SQO!B} z%a&lbx>r3q4RYv*HJaLe28YVKb?oFj%bjD;?5;es+nlp?GOU2VwvKP~2~P;BB-lb2 zGzCa-e*|3k=8U&5Z(OyW``)Mo4R$`+rp8Y^HZqUBoe5-)+LoVxrhXYOm&tTohHxPe z#{_saZ2!WUw%@#c+oXWCArKxF$1W(p{;nEB0zVvb*-!EOlxIJva^dzvEaybo4>9}@ zX+P-v5N$ueUoDIX`vDs!8a9(LfKSnvdBZ!GV1r`mJDJxXQj^niUG3OJ&2_bh5F>pb zrvf6O7!TXUn$f60wDZE`;!SL4^l$*!v-+D>%*OAg*_$8XQ8lGMH7|R2D*FH6-Tbg4 z7Who@UN!)l^WH5ztObGU77Arxo62?^2M$v_Qo-xuAUuMWY7frb`(DSm*VVMtnkDgi zq+-p|w?CS`QW=%(!L>BwXVo(+U9jTUntQfi1EV%)M;q+5-mqgJ7~a|)DJ+e5q~iCu z`VD!%JjGVInrqnOodO^ng{aYtd7$2}%-!#2QHgo>{SK&+|3PEO_{%@YYE#1A-DD=Y z=Z*Y{om^uf(P6&`gDhVgeDqc`p+!cPHx$aMx#ENN7)*~3^Ua8z-fmS&JlH~`H7^cU zgN?q6$`5G0JgKPLbxVGk;XC~u|8H7ILJQ`Woh=&fQV@lwAM2v&ADO@J?4?Gx(av!p z9V0?c#IEjSnwRZ*6`BJA4B$#{_fd9wa9dvJtC&CeHEhKLflx`Hiw8bR2h1P;i1na@ zA05b=&psq$7XLE4Ccl<~_%AqrQ}oZRwS`Y+c#AQHrb_wIh3#C^75H*u?>r_!}UW3hGm4Sil(ht`j z&~fzml^ODJPAA7oa_aMVt(ikvgiVYkWT%emD@^~gb|Xa}cgS@-L#n!R_OoxuYjqrK z$<6Dm|7z~~I0wt|`^Qb9>NM1RZ)Us`8C826=BT}iQD4{Ya{Ath^p^R{-kiG0xm7t4 z!I7AwsuGifb71Qpi(~(U1N9eGC3dXI7D|2RLRK6XtW{?S3i=K#7;!LzFRPN9+Lgh* zAt(M8#OeEnLqETFUs|Yz+)^(T@#e@&Le2I2(i&BAB#zNEsK}J7$eh*Y@qIb}jr?1G z(h4518$U@(FI9ZOUE|wh*BOYHm-~-trf+{dp#9<}?X2S27cbr%?kP5N`KoGeHNE>e zHmzX)d^&4x+kaV`vud!FuHa~oTcc&zKwNF$I3gq6$puQTGP@rLz{~X3fuyJ{ynafY z>W9p)5BQQCs|QhDzi|s*mr(+qblglmm_Z+zT@H?UGMI=w-)(&>m-svVS{*u&XiMV${9G%8mnqNAAGs;54G-K@hQ1oLOX zS6Ru&)MTOmVX|)Cfv=oaiP^(OGe7!j8wxG?I*X2(o4;;?`|7Wo#8{>pSRk(vmg|@q zf8^;{$5MkOZ>`*EbK8-gNmCgaEe_Qu8jRhjgjOx|KTYq^L`2hdIGUe4(_U__$?-J! z@q(@*^)Jn-NAsK5+1a8}_!Sm!7y2}X;_7LefWcRFv_;hZU^DtbGxD1hy{yjM%bzvd zf78rX7qKCTUd}0i6$?OY!Z#0zU5m}r-(&@r1v!glntPr|L_BxoLrnlDOr>1h=66{+ zx`VUu0_sQY?%5)Q;!j0J)nz zM0z8bpPNz23r%qYuEr{>RjEHniRSKS8px7<L zTSdA6sd+9K|7vbbRVWavgck=GFe)Tq0{U~@x9EWmF#X|vw;@is126V6g!P8H%1GFbGZb&;Suw-mF#+x3&<}-) zZhKzo0N>wL$KqS1?4=5ZD_Jn*W!(fk;;7qP*YIc< zIk~QDdPPU_^;)^Cg#3YvVMVAl*&tS62(Vao@=$^e!>93$MJc?Z0*k`9U||AKCtKX; z4>!u0Vqh64R@y6C^J>x16>1vM%K}at!=s~}wI&5pja};kxWaK%M#A5Lz{083T#$t| z;IUD48fA5=a55YX@MJ9h&4hv_3ui?22CRzCb8y6#$BYpbGmF4VaOj6sC)hzvnYweT znG#Tip~EPOHhkex2$=SQ;ljnkM1rk^4%~LHXgHJWH9p^_nJ`5un4iM&lIaXkpHU_c zx1xkV9jSmpg!~z_PeOl))lFoZJn91~Xx<@3n~0t2m3-Mz?^znYol7 zOl}O)5FBwME};ct1TKuU3c14>r#VVgtp!s`m^V~;5&6Qs0@qb2NsYv+&GAJKF9PBx zGB1E72>q4&WWCH4=;Mt5@E|@64m(j9?3~2HvaCl%Me;m}a5V`y`w@J+S`iq0fL)i*YXQpSE+nUAN9j<#rDt?e~ecjGEprf+@nb9h@6%n*OLw}Cef zIk7|5O!4bO@T3n)0e_10#!T_Yc_WAT;rR9HQ@mlwkM(+npnVTYumFnkHuT0k7~r8t zak*%&{h&8|&4X6)2Ht3HFdD^~p+jm2Z=5gE8|(9UV|-EG2EJ&HT?it4iBc^bX9Ape zKr{VWMoi2Dytfi7&69(}iq!}t0yhc*VkJv!OH*OhKz1^NgoFDnuBeWnSZPt-=-O%UTEenL1Mpf3{SB*dKw&Am2b`@T;RdCw z_(a4pY@iO>Qnh2RX0a3|S7f+0DSzKo= zn7J?=)^<;BQzHi%R?CO)C7;Jq43$UI%sS?ccGO9@bF6)z6!XqwjWQg~GL?aqU87f) zZ{sojWIlWBh2U1u(Bt>e3iHF`gQLsd2qdjd{?f5@5quZDRtNvLwN~-X+s73 zcAHswA_+#)!4t2?*OfqEanHj9f9{7%k^S8dZEKqtc3!KKIUSs!hwY3;3WorVpI!PP z3whZC%^hZ2WH!G{G4c9q%XM<2|a z8-C2gcH)8`n~R61nXmtt8nBFXfCoJ}mW`2ZJEpwgG##{Jh92PN*dMrc+~6?&f|yjv zt7SBI%we{WOCH&RB%g6=KCTXOF=}#i3UMxhpyMgE&)k%Py*etIQ{$LD{V48wiW&zIH1;~hV@5Tk+$WF}i3uohW;WF?Ll-&my( zKd3yqVPG&w;S^*3SfrO)*aAPdUEA;OWhs%_tXx4s{mLBjOIEDYj-{@Ns0fd__9wvf zm+1dXLO8>=NVvzC^Ntz!Yl{e{{rP6^UrVT5jv7ZPAw0lia_TrrHe=3qZ0`u=;Nb1u zPfR5qp80Af*Np?iEU`HQUbJvt{%ZTy4@bO;m`uNGz-cloU8|Au|_Sr zS!n0xj1xc?g?2OF=E*m%g<+vKt5oQ@%0bVaTjg<$G7(898@Q=C&6OS9)Gf~n$+Jcg zs()ycQVmYcVsti|8|xKX|0JJvlh1DleK^Q$aY&q5cQ8@kDUZ9UWt`Jo?ToAt8Z1`7 zEvJM~$4i2Aw-S~-PYZg|>}kctwvK|qs}q!f66nv7F%Bs<>Ap=3F3y>|@%3DmDc=O0 zvj2qK0=49Z%ai588bJJ06i2QXo5vRpCuP@jGcn; zaCjKDCg2W5g3ZGa?&BjbFTeaTlpdw?6*I%AJx&11P2toj?kjGTZFx7#K$v>^BQiXK zE)TO0HOlJclqm0vplBRt=5`Cj4CeE@m3*0jb#T{cwYy;~vQ~?kK@+VaY?G?_g~9ws zuq+Pe-wvZ1=Mj}JCfstLa7!FC0Xv@0emHTnRv-2zMkr*9Y!OM(pqJWH#shBRazPBOc_Aapw6gqT#3`DBU7V1 zSdmD}P2x0BlZO_9-90Vu(CLaASGe4!Q&v-_J-R#{r4IlwZYB%SM))`l6KENOp;*cqq+-;whnfH6y#Fz?^ls+GfSoT04}j^g;mC z5}TG<*perj525*Nyb_vndptF%ha8P8#LyEc(d+17%95CMp$aB@Cs271RsKw%Z|bUF z@>C*?r~MTp8&L+#2^nZiDG{$IeJeySmn$066_M70L!}CldJ-kcxMb=V?UYe#D|;kU znw*skIMp#7+FZCq95oi|Kfz(2MrV6UCG)FHNQF77kBRE(rj_;YlpTf+CO8f0K`t;t!EC%{%O<(ND)Y*P6KB$L0KL>@K$T(l{`aJ>dC0T^2jxKFtwL{ z30Nnrbu=I&(yhgBnNC^t79X4;J4`;9PK__Z6bj{U>2y@t( zs3sKOc&%D)e{i`S3N4chnt*L7LaoFFPbqS7CJh9kew|63+d9iyL#Xz8uwLv?tCI;G zBt$QfgYXh6Ixg>QN-b!Se4;6(cB(C9?FMRDa&-yOa)Sm5k+s*l;YAF6{cmBeP=>BE$;?2OGH!L=^IwzY?xkpi4J>S3%77eN8Bz_nE^2bZKxUrV6S|e1nD?j-Lcs)5GjbK;STgF#zqc)ZRuAruBTs{H*0PgZ38);XDiiu0iFMUwR%j6wdl%4LlV2;;P zT$GcF6Hd!@S=5`B%HR27N+X+^h)<`=aoIG1fyM-o7zF0AgEcYFcL^dQ;CDM4l$96J!@!R$kCL*;5k)M& zZ(d77@U)ISO{*mE~o$Cp!5<+0q?0Hwl!D)1|=>;+mn^3aA?9arr<#hWV~6%cmO}o#&qX zaEP&crg9qhmTH`OTPCzdKYz;Jt*Ik;MW8ihr+ldh$I{qqR+albF1NO()`^PG^P<;M z?59nW5p5{FyAm0oP2|GKs-m95;O})$)`QAk7fgUh18`#GLCv4<56W?EXmCo6AYp7` ztSBRnBZ|^LmsM@(0SKHc+fp*kmPKu8Vq6(Jpd70lObj-X{IM-147C+%Bxy#mD&)kh zIS?qRSJhhK+Ty4t^3oc!SCbQNpvK{r4!WjTR(?q7^6_@m4)Gg*?aGipw4;QEc4Xwk zG460!5;zcjEHT%iK(-W)Di}LDJyPo1_i{*k8mDC3ruNiQVAK2i_S7u7(h7{{+R*W= zt?q2K(=Brfs5Lc|*B8+Az-w0X+2Ss22C4nRY;hd2lw}t0y>Z~Xb9>RPX~BDkSi>p4 z5Wd`}g6J_!tl1%uz;nU&{eoRoyqBk8)rECXT#oEOp4?hpTxRI6BOq5Ho7ISomOjPIi_Xn@s7NAnye{<7A@eQ z-LfETq7f*4ZMK+B3;0pEIw{?H$`n(3be!OfoIs@-` zX4UaG2b*xF;WVMiZ#vNeFqA90Kto;JnKnT|$9*p-7)!cPZn~pj)VF1^;S;8RA;0WG zN$t1TRBIWcjI_?KghdQN5y8P1Jmdoq5wc}hO3J&4-&koIfLCpASt{4^f_zso!Iy87 zk9MW3mJZ>trsxpP1&aPoUT6I$dAuv_3Ud56y3xJOpLZ5y7DWTKxQlu4z^EAHvkE)x zy##rEcWA^bWuQByM%T^3Ns!jGLVntvI@isq@b`dK1)TicpiKW(6}9ehb|7$Y28R-q zii=-X)k|fQLdxu{TmV=sh<9H@YnxsRs*$$f(Y(=WCmcw`Iy}^ zO^i;E!m5WLT64?-r`LpJ$sU(d9H~!k)I1GP5UajB)Q!`UdwS7-=&*dRH{Dcw>qPA%9G0E>(9M|+=GL`%^rfsp049ty$K^YH2ro&I zXZldfpw}0w!$H}yFQv4rYo0+TRFJGK1L&lae;2EBeom+G0=@Q){R4r zb0D&yVjOB5$0Jl_OB+@Nuwl{?Q2YqUFwdN z=37vVRS53d)|x}JMPHCGE(3!uJ3REa7G0^yc+~xB2NXZyC>p?7VikLepYWgyG?W!z zH`=!B0ZZq_mh&Lqnga{qV@)M$snB3N_AR)Ak1JqE5dPRo<~n?)Sb?oCE`V206tI9{ zSrHg}psp1WYM>ZkU{v$*Ict_SWB@RvX9t0Ro*Wo$<68zI;wr2zY9KPgg2#x_b!M$CRw(FkGe}xL^uQ05@9{Zrh^ZR&2ncu(B)w zquO>vy*6EzF%htOv*C7;)>$?aP7gAcCOBAX)H_{>MZqCmWqK%>W0idXy}dTZS%8IK z3&VDrS_sB63%ZzpFc6`Grce$`*+By|xr)n=Vv}n_o)=Jm-Xc>j;no#fL^CjIEmBd3 zYp)PZGR;Tru2tyu~0tSU-AF_{izw;iRb&1AgZXKD=d5Aiz_e2`x_|Uk8Zu- zLSTcXGIJo+gy8bY!59d10ksKsox@_wMAyxQCW=u2hS zVOX)_^4ek47D8shF!<{JBi|fGJ#hJJ7+pnAO5b%*NN*iZX}vZsWdvq7I!@~cPuQ`j zI)Jzldlm4+DC3;4b8;PsR>}{CQ*sw8z};mWM^P(CpTn{uyBJz z9OsP$Rb2Y6ftU6v`TBKqwVZnmMJAN;!1Sjrf>c49n*NJ?;Tmchx0&{S$r*(S#xdIuV$KOF*@fUAx{M4=&U?XvmOvQw;m8= z*>%8uHPn#_+a9k!N;gKCJA#^KR&ka!O1whSmF@bP6AIL@!_}}4JudGVp@zM41Xkxy z8GSunLNCfb*VD~e7E=f+v8xax#6rJZ1kVOCGVGW8uBVKe!-1UUXt(8BExt94(G@2( zYe()GFD=4|@Dh~Oj5)Bxx7K}TUy54z+Dh>frAsfheW+e6LV=KzZU8?0KAobayn#|O zPL#uu!Y>}+cD)y#{oiu~b!m9gF7yj8vFBR(ax0OY<}%d#bc1z;^+FT@*<-y}cU;3_ z#b-L8S?C^TXUR`SQqy*hQVxHVvk``|^OK?q>mG_AWC;r>$RmA=%)5~q2kOCj8~K%T zwbSt@si$B_pDPGmm>rf>@GR3sctCShtFnu@g=W=a|Hmy3?6Ch-qlIDfe+4WoF-$Af z=_!)u?x*&mL`ctrl!9<{w+cs(Dgj-I9&D{H5^}@?l-4i;eB1it)Wx!_1>Tr|gZrUz z*r2Nyk?xTpiPR;))*E2KLsOyUxJOtyudbC^fPQhO^w<*6jIvv5dO-vTM+UJ!6MGOC zFAn{I!l5-o=~Qv1i>F4btK7h&QzM&$f5**&i905Cz%J?ob5C1!%MHyPN#-LlV zpTIB#=6Df3n~#gqG2!ZjW+d0%giSh}Hnc)ZBjk)m)GgPZ*%Czc+15%h7F>B7G=L7f zsLVEJSyAAzwIQkko;3Nz1JpRG7EJL9$p2tB+U5D|QzAKb#T?Jvji z7qlya;WbWeUWX`E*9otYC&y4m@)Chz!Jc>a@Ep+@?vXbDccLKs6rBSR7E8SMFcGE^ zzthnUG>falGPwOELN0W{4fj&lDiykNevn2C|qO1!J700ug)=a@O-Z3TR9TG=+W z0GB{5s$K5707p-_J0q2oc@VryZjoA*HNtG{p;;`bO%pyW_-m09rle@H_Q{ zkPoMQwoC2S%4z~OEzy8QsUsQy0(-CQ;B;8HQ<$eWPQ=(@urmr!HzZ9re2Kmf?^OVpgi~hK%HQ0G+bI!Fpu zk?-D2-o}oY;4oC@^czQy9+!XJOgR1~Gj5^lU_t-u7Car5Pu>FOz0IBFrd#Nxpmu)O zt+ib_8%RYRWAdBfYr2RlM=v5@jpql&+1+Lp#~V2j8(G)Cb1jO)^E0K0`quOB>?xwn z?B7{%J9KP(hzMHO0bnI_F)n?#82XmWwi{(RiQz2}| zEqBvhssCOKcC|*wMq)AN!t+(D;DCGJ0b3+z+(Y>RhgV=Nts(v$uUIN9)u^mS1!YiJ zySNJAwT?P)j>9)j)$olA4F1L4c$`L~pblC&jn}lkrdrQW0B&y~-#R(rUKkEmptq%g zuD_R-MLxqX;WxG+JPWU(_sNIu!@klXx%NIPOgzL80SyE{V&Fya@^l$?KMk|DDqCSC z7T!;-f_o$o5kd3aimOFR(0o6@SO{P5clXnqK?bq*0s4^E%Lo63otTC4m4Crfe^ws+ z7jW6H_iI5RUM@#G1joR7 zIpZN3o^o8#L5yvBvo%~J(SLo2TJ~@XIIWMEhVNV9l2MHPk8;_q7!K5OSyT)sK$$x6gv-ie>R>xZ)qa~j%M-=aD$OC6`Vt(T z8vTguFcs|PxEwJRNc?ZPY$|zazO0-|ZEscRK9JQ+9EF$(VHYxU2DU9QhuT58n2Me9 zi!~w6MGB{*-h*5Z+t=6zf5EmYx%StL4mc-N*wOfQi5xKvCV>;d@IN;gagk=Qr8QsK zP`)5OuU^8K*wuNq$D^PRf4lx74~2z6b8QwWDQN`1ZL#uEd43uVqPOJ0>2Q@>cowt> zYsC+rx91C4y??4X==b=pwWKz*6UTk^U!*oe!V7~=#vqVI9M~?;O{apMPlAQ85r;*C zB?oM=pYf^^Uy^r&!!T1;C0+@gfOiG|?HV$a&FUlY1(gTCvvLMZymsT@D zmRoO)57}E+h-a|Z*k-qiAyfyoG;AGgo(Ju!Y=Qh{9%6>8WX^nQoW1^0#=VX~+(WH8 z!A;6s(6PaF`+TSbSnvh&scCR2N|@`(N;DK)it71P6=ZRn7SMfQYV8)1x872WT1bzx zmhwjlmf|PfprZlWrw_CDUE4U4;uIR)w&it zz)(+9f+h{5%|Ur&DdhxF9lOUs_0-2}p*o^@8_B_s)2bl8izf&N8|1xDP`%SK6(2r9 zEtvJ3Ed{J-<@McuWK|RiKc_Bodg)fhxw*5DS7ZpIaH_Smy@0U@NV5}GO6K9w;L@Yha;nF?NOv3Vw zy5Sqmb4}YJFI`Sq2{U#e!ym#~Zb%>gtj??*GO(NmMb73d<43nXPky=_I>UQ1?HOtp z_;@NOV?P7$(cGet4x8&3EeH{>*0u8RmY@srK2>?4h@87HuiCB`%H6$PuhAna69F6G zu5V9mRLtWI_V|O!Y@k=l0V^mu)j@TJg@w>uG?LMLjZ9lXjT+aaT0{OrH4tt$5M8GM zIe7&>WLAq)%mS?|kL{bPF?v&OSpoHUhx}v(-JEjvL(JZJdmWqn{t#Xw;4|RvO6t7sZlDg*|L0#Sw4!-w23b%OI|9i}T`3rkqMP;bW8?NgrVxFZyD7{*- z=tb~EI$BY_ntr3yb36h&>NoP8muPONeLr+9b?99GeNaB)SHnT2 zKurS@OSisoM9R15d<0NstdiT;f?8L}uH}@3uMuI42z&IBen^fgN9f6G@>Dr|?SECY zc$q#SS|Vv34aVi_b+p;~ELD=sSr0q#knFi0acghL<*!jf2=_Tp&R9=RpoNTAxdnO6 zt8|1m$ZoG8G+Gr)#n#Q6uThf@bv`P^-=;(0(MOmn&H=AusCjx`^y`H(se<~T;~Ohz zLQoexwMBkbfxV40GGqf~$yYbfEuwgy%y=CP1=qsYX(V4)yiU#ey6bhyPPATy#=2Vs z{A2viFgL&8Hfkdsqz`2FCdA(0QZaCrNkpeg$QWuAWKCb)ko!$H=y1j_~Z@h5q4xZYU(e`%s1(__(z$;vzZDFl3zcd z8QWE{O!?lM)GS!`%$wAzu?3n&fEK((0Gaw!2T<~L+4(K(vh9#_-lA*bj-hn}XI71= zKsy}Z=866C77f2>#;8h4Pv#mm-#f#uu2E?x$;T@J@M?Lul0FFilZ%~^t>4C}m+f2V zdMn}4=X16a)ylj#qI8cMg1%S2{5Hh}R;ow0zL!@v*#mjaCtmq|h#22`l^Iqiv)KA{ z38L;)W`nw!!mc^%W9}uz$@JnAGe$Q4R;qE@l=NMQke6tH zfQl>MCI5}qteA1Z^o1^8w?2kiKP4oXa^`Pq@ks1($Y$?R1(nDz-lIuZ)gBtScCe7e zDZF9zQ;c0)!$`9mbB@{9swr1&r#bdY$hJFZ2fF%m2X(@wa zCy-@_T(`3xvS~IJrhiDo>R_Rh0W3_CWgk*#T~yTSpd#Woud?2W7h^|lBH%&!P0xKT zhwmaEyps>?qC$_wkJ)MZnEClQe5q7^zl#QiDY{s4OkVmCT`5kN%OxLCS7^{5e}v88 zZ)E6h8kP7tuLHml!Vc5ZY8Or*l=Z>glrDZOuXt)V;bSszLVZjNaT&aqE(!kzvj_8h zT`t)RAK5Ya)m}to|4=T&s_1sB%cqaY2dV&=V{&Vi>gty&nuz9P(LQ>HIZ}g9&@8U) zKS4+(u0!qXy`O-o;`#AUEKauh6QC`gkA6be^R?%GoFv4xXg|8db)o(I>VCS4pCb-f z`FRJZ4?o{`fLif&)d9+nP|!#sh%D~Qk|7zTJ3y?TjYh{cil>>V_4 z-o13&JbJH(Ld-!8lFbEOqACU-WEbIix%^YQ6&KHE)HJ4!NOK$W&P(Gn%0_O{XNU&) zOICbFUxHmTf@@u{Bn{_BM^m~kk6KcN&JW?gc+sX3KA!=%H7oA;3l%jXCfwdO64e~xwi|H1SI!F3e%C4G>@)6x&{ zRKV(@z<-KW${G3NmvmE&JUu0^tENqDPogwTF{l+G)^U&!7IZqC)uGl)H!VAjF~w#4 ziPIYTHx-v1rhsTF9hs(HLC&~)0t(J8s;2$a>A zWz`W#vy=SPRQ5eeS*bR?W0gaV4X0|&0t1nAk0QeS8~NN(YJme-dyY~@)YmBDe2GV% zJ4%hMuUE3bLHH8Lb-!%-4P6i2Yx*}7L-vAIJaLQ~60MUj9H(NupW6u%rLLGnHqk2AdisUomhT*1Tdbo(vox_)^Y1L+c_G|88uos+Puo z;8NWu5B`T*#_!`<@G^&bV~q{f+`yx<@h_Bx0>&@YFV24Xs@vEW0b(*r31^m;{Q~b> zl|20mrduV$ekFg>$J|abo9=F-5^7Z_-g~S~&_9;Ouh4VnRowV176@+-u9$b0)@x&G z%U$DpCFWANu*) z1aJi36d=7y-u@@0cL?TU+h7#~e-;EKv|UnB-aJ8HL4kttuv%vkP;5?m#bQixQ@A?%!RcsXj$~| z!n-U}!UcBKL&YtDIyy&9aT|cfdIkFAx}g8xr-~l-pKKN;zP8oF3arN+1l8oh2+=a`uQ0`EK$ZSz(uotc^!>HJT5zah|w)Ba-AyP02Jr*fi7cdnRh;m*#tP%VP zz-q2iQX8xWI5Y}CMOPGd?6CYZQgoq{6`efdc1o!sP_MhtHQ4V-F}}3PwPH(@7^Y}2 zxdBepfd-#!ASQzbD`Fao6v8NSbx}je*f7wTkXJ_F3PK*Ei)JV@R~ISG9MUXinhX-` z61EJW?NuoYVQsNIiS}rx{6QB!+F8*sMsyMm6_Y*p@z zMLHW+WN3O-#aF2!GYq2-%M_ah+S=AkJZ{mELz*pWMq(3mtx4D^7fcj&>a(v4%fuKl zMx{j(HuJE`G-5f0J&lOE!gLKLjP3#Zm)_kM0O`UIaR{dQ-g!tl*zYpMS{%B6CuH{<4U=#tw@Tp;!N!UjLH+v zr^h(N%*!)!!(}`_Pb4KMUmAZcQ>zICahu~?@2&TNad}Hy(JJB?$7kYg_*OR=wY%XV z`Q4Zk_lk)L{a5)(ThTN7HwK3d47(6`ndP8zt8jS^Hph4h+lj13mTwPnTGp$pISa=F zf0xDW1YY?pA8RM_BTlJNL}L^mwG&AN)+j89sSXe?q9Dd6+yH3yhimH7q~tKno!U;|&DC;qdvQtF67_EVjq+T3F);Z3 zzm@Cd&;sELKCfRdry}MH{^XYmL^lL3{7@jCf&*)A2azYHPM4cIz;!-b4(lj#XpWrT zQS5CxcRJt(ga(c<3S!A-Uyw3K{_7IaEaG7veJX+&J6JayX~!}l>m8H@q(yaBJb!XK8(9?wsYiw?&2+N-t?`qVGog^J&K#w zJw&6FhBiHrzKC1(eByTVv33n-cjUizQmR?f#VzGdyj&DfRf=l(O8R$<96lGDcuYzh zJ?7?3WoYj3FTjT&a4GU>Y}jZ$yy_^ihIbL;C4T$i3V7Zh21^mI;f%a2#T#D4Mr25# zKE#06eV{))1#e%`jE9O4fS`(p;YBTh38+#=C>{ozRMl`7c6=DIY9WQiVu(6!^-vKy zb{B@v!dN&xeAWyfK8u4^(WIu1AO6?DGM1~i#bC%h3N_>o-jKkBLk2n288j27J?IYT zmA^y!zZ){YDv{wEz`O!{Q;f6QY&j#w>d z%vMuQOK{%*_m=q0s(d0v-dRa{7w*t;YSy66Gu)}C0T!JJ%ywkdWY1FBGiq_z-ydTl z3;Q2g1QRN=2{34fMI7iMIwHb8#t{8M{5KdPsr?1~iW!t*bi6tEsbXQAR5!5uMMDgM z#VM&!+)MAv`wK;LdPlA(6dmK#?gl1}^VZls1d$cbl_v|uaM*2qF2(6g75x{huVmXB z2P@{vdoP88v`%iqC9a(NLnQzjDj>6&r({e|(F89)YTpyexhW_06#e~AF{z;pJ5R90 zhVycOkl=^D<>8*<5M0D>_7eW6GV2UiOQ6@|@(%vX8@|Uc-Tx2#rXBT0@$FW4@cq!L4gwd;?@YMzkUUh5%2F=@*lpF6tz_9RE z09d2|Q?uI8DCz-bQNIfSQ_;@>Ouu?CY16+3CY=X~#NhfWYW`h5)n8R=CVIsPs7 za8%UA@||--tTS@{9}f1(m-~to-`}E;gMIRczQTJ^RH~t|zdVo-xepStU;|7bwf{V_V zSK^}cwY$-H)e|zJ6e>7t53Qgc`!ENK>|V9_DxZvT>;xMzcv=_oRVFjx3H(a!B>&SRv zd$0Pjew_VonkXwo{!DDTJH&3j<;Sb8Z<5~MK%37OMS57lAx%# zVNsV{E7nkrQ668%C||XVtGyt{Ung=StDobpea6n`Ew`3`qe$>L6D&o6f&WiqR{|bIm948!6Ce;sk+6mYI{`un zOMpPw6zHHa2pCjG)Dc3HbV4BMgmi--0}V-76#=6h9FRp2L~$kvOzRt;AHy(!i0s=Z zFyb=c!YIS$Jjds}|5Vj&Dj_p(!uNCQKX<8fZ=Ji=z10&@k#>j5C&J9@t0(RG0}uTb zL(lD#s30L+)vVt-GgJ_3hsC|YX?a-QTftd*lz~kpbMol-;Wt-Tt2r~D#)tWZYTlMl z?;zOIUV1v}gfS3C4UfWJmwjFuOotb>M*X)FfjgkWr_1^8J&kU+~r&h~#do|0wrq)-I}zMCgQJ@-~sTx8!Z3T3hlr z40)U-Zxdzwx+22wHRSCqd29Tdl$p+XLmp+xTbV!2i11eod2G<~Xo-U`W`rM24@(}4 zlQ5P-Z;C?AEqM%%#hCInwd5_LutH*FV4ERVH`e7-ONM-Rt?48 zAwO=&W33xEGd}hrCG@2sS0xc8hlGsqKO6EPR`{m!%}+!A{#%lPmX^E;wlqQ>L_)_5 zkG_^iqgw9_g6NXy-Yjmo5x=%jr16mQ(h|y%(C14iEzaHwqNv<=Vsj@S4QpcK zJ|87z+~M}r>zCT@x!*^#3=K<7P0LFE6HVVMrAH)IR2g*>cVHRaH|kER|Gx(H>vc!U zd&}<5qdm_9rqQi?c1TB@7=@Lq=J;Ymz8rnql z92>Ur&T{IVV8(5TPa0o4g-BKkQxVtw_fzcfQ#@jJ@YCdRD&{rmYQoP=N#|{|Nog2< z)}%=$RpIm9yF|ISlOo4rd=Tx5oP&dXSngEOR&3*oerl6ogo4q#aasZ^e^K%sUI((& zL{i`u0a_jIqHCaefYP#8RiJ!jvx(YOvRVYPAlM*t=;EzzCr(w%uh*$tU8=3O)#2~i z#;MckxJ&hqm+bj)E9tRq+geydawd($VUMFTDI?r9U#Qs2`Yei%-EAa-EvFc*xT2=u z2UMzg=q${LcH{e$G%Ot9Dk8i!i~5EIKSA)#EJ_Y4z1B*R+<8`3p10SQTBEf0YfG)L zxQ9IjE9_yrbR0H^;)#=F5tFGLe8qbCv#^_L-u^6J&{lJU+2q4JNdIiS*Zn=$%tjM* znM)T^7rs85I>w)r>>>etEvGR)wTPBR27xX)Cw-ZF|B4Pd{>(r9ijrD>D~(a@=I|=_ znL|n81^%ktJYf!{v|MPEAX2f8{6y&$mHg{DSd2TzH|Efz^#^!zF5PSSKn014|BR^H z=Hh!6H$(i(AfCc`{#B5A_EGix)NWe|$?CCtpCPf{&0%F9{%F~D?dA(XOghf5nnykB zR{-nLqT!l(ICZ^wCnwIQ;q>JqE|^baTN%HPDZLK94eNei1|3*V<)iayC{{G1E2v|n zdb@Rz2Uk#GSgdiG$X=uZ#Ri1r5hcrb8u$e}7?jCADs6{*1t^Ps$v(E>XizT9>G$r>#r04QFe(KTe&GwQWJmfjvaHui>NX*i~ke zKa8@llyV&$ZuCsT-aP*+QG-GsE@5|q83ncvN?~J za>hKl6O0a47a<$RVVdF3eq7`y7SOnGQs)-(dkgS6f!|xkjQMS2V|Tr2%-D=B`oN$g z7ScnGlRRc2wQW?j!<3;e%x&`3RuH`F-BrUsETqY(FcTMH#lbY?2KadobIy!}8;CWp zUqn+Hy)8ppH^~uo?zEWN2Y+h_DeiTmxqd;q`9!GUP8p=dA_qIeVPdDa*W1Eq za%kbM!8Z;}%aTEz!MFUzbgjWRww-m=2&3;kizz<+pm7iRglS7`%eiw8{gToKMwEm% zCHQ!q?4E|29KD3v(a}Aex`YNbdRG$Av59pFO{8yY_~Rv*jh)<6-K=*T)|XO3FO>@! z7};~-R=3vN8}0Yy@k^Ph;qnJMx4rC6@E-ko5! z-xke73wX`bP{2}eAZrN=;Rl|>F|6_YWx5qoIw_cm#n!MUWkg-m&-`5-NC(( z$iUXx+=!k167c3RPFzm09d90!2oU@v7Z^5R?I8ochE(2;EI!WTmQ%OLw@mHz8~ogI zO2JHT*K&F!a)ZqD@Q&p@ZoYyFT3It(ybSB_Y)r%4`1J?OY?rK%Y4l#MSwZ<$3>oJp ztfT=V9=DQ)wKWrh*ceLZI4EdVA)Fbcb~x1W;Yx~cv%<_v18F``c1A}pdIEW+MLyp67aGf7ZzBDX|IO63Nt&j;(g2++T*a4zCxdqcI0cQOlN**GdqDBEoMe72j09^rl&{W>PneOS)4Ppr<=nkN{ z&>CC3CtQ1!G>&MNRk&W(?L>v%z_KxBp&UW36TpqcG+hhevJ}V`nQ*@S zI`xaJQ?6B8XrQBnKiEP;Ta+MNIS>h~Azdrs=36N};@uowo5ERJDQ&!Q3Ex&uGpp(W z9BQa(Eg-jNUkY3KCp9wt74Knjd-(LwnXS~m9ZpeR-$Ut*Uq$pz0AKne#f2XH1Fds3 zldP-K?#tKr($S!ioiu-WURsea;4Lio1d2+1JBW0uh>&mlItlco$d?pAO1))^wdOMLk_jxaGSuDJfyOJ zA7zBS*1=0`&h+|XAH}$5fDQo0B-XbL z^(H>CpE@?a&`~#X$UP5Wm7?tddcd(cG~ocPr-Tqvkj(T0R0Y7gpezMy132ywr8l{^ zi*7twR~H_4h%$o%;U#|(4KqcpxM)(jr+ikLr?|K@&v*_6B>|NGcEppi%_lPxDX37G zYKCufFRtzUK5&tpL%bnyhXTU@xpo5{KU#%A5x4z_2FCPG(X~VfM*(82y;DMYAJJ2e zV4$mx1Erew2g^h8AHk*Q6n8*<$*AJfz{S`Up8-D3#w+WD_k!Eg8wrjEDKzY3az`YL zNz*lH47LFgfZ|OMss(R3fp@TD()hp$>LczyPEbas3X+cEl8U5wF}UPV@h`w1w(;-5 zA2K-mPa?gUy?EM8EolawiL`&0Bejw1Ygiqff7A5K3_NpZdU=$csi&9!1^n&w+= zwn4ttTzZ;XH?u$GOn&h+^-p*nQCtYR9j;WW;ea$jg8TV0g2a3dFG=q@T&ZJ`>6~_k zk{(dKN{k(R5pme~4Obe+|Avc{B;5C(P=^>5?kePxE6DFTkHK~P03LpxGGej^=vrsUB`Z=VvIm5o zJ5TRK#6%6zjjnJEgraxU5YG7wwl#JL2jM!ZLcjTpPC7fe@D#FuJYWg%TcEy9e6p?Y znKsZlIyT>nh9cZYbj71@%QG(1gAqnI!Fw;$;GpU;I>1+IoZ@Z4T{iv=>Xtkl<^MGN zW5K5v7ne`>dW!wtJAOytCj~F1rtD1m{cNBsVC$8FS}Fu10A=glYX>lD--?HIEf?~I z0QArvE)BTQAi5^a3V8jla<3=<;ZmRXvC*;#+Uw6ZkIeI8?@X$T?>W)HyN{Loi)wwEnG+Gu#$xilvAJ*;6o@jFUx zlUG{q%`GY^E0!mv6=&&M1tL7ehrXsRqqPUkJ}e5Z7M7wOWx`mS*{SB?kFq13@ zxq`q!qne*2HNV8x;CG$|CPGd6SQ~4@KNHu>N}e4u|MY=sAcC;sYQ1G zXkB{*?xVnCfLxCS>~-T8;Ew}!>IOb}Iph|;%=wQLXMeub$r;IKzNct9Jese3Pm^5s zyGdVqmz7PsMH#&28fCOn^`{EKr2d#@e)$^SeRR*^k$eBYBM|7|f|{Y_6^qAZ~9!!YeL=9qIDz zJc2tUI@4TAB*vBq+*Q)klANRN_0B9qTkMlDsq$&538H$~&S*V%aw9jxT#ot=+&zJ?$p5Pf_@bE;uaM!K>mfUevm z**UnGz2!{h@2=5cUY6`^N!zP!%@}JjniAWCd~2#RqmPou!x|zCxfKotC^=L98^WBUyE(JM@h;*4OM0F~=Ai0H zq%W<%;%&fXjt9LKb#o3use}%6bABCZ&lX0PAeOnD{*tc2aJ3643~9C%|1-FhvErYDi*+b|1zg$##lNl-{yKQ7 z&Hpxdcd<7WK?bsteZ@bu_}vZ4KAd)gG-C4{EvdmNL2BUz(py=PlFFq zT*e|~S&<451wL2>fSU|%zX5)w#wd3ceh7GH6+TpOuM^*LF#JL@?sN8c#61Z=Rf}bo z(;s*WxVbiTV2JZ)Y9_TFN*TC^Pq>}kV${4eZ-d$7!DgZ}or7rc1|FFSo7o4sw8D!3 zd1Q)LK^G}J`#qlq9}b8ON=q`n4xa!nQ;3OxG`$kW155%20`e#7WdfL9WMPgFx|-=c zPQhWX>e?8<1NebTpc>c$ybJsZI0<|O+ywp!v|OiaU4a2W7Vsnx1VX?u;0ka9_z7sZ z9`i<^2apAf1w6oXV9t8IqqZ6sTY%pIhk?(4s{o;RqJcQfm$RH(f=_JJwTVC(FdtX} ztOs@gdx0asS>OtA9ry`|d`;J40T<96xDUty#shvJ2rLC&1l9msfE~a=;1qBPxDNdI zn%+-qya_o6IszGh8yE#V3FHGsz}?kMMycOE=vB-GGrgH1#Y5Q% zMDU@@l-^5;ej_44@h!NPXITF|qDMH}=Waz2A;dZalR?P+7Hgt|(??s+5A|o7wMvowe!$I?%ZD&LnQO;+dEu_MML50uapJQOqv(L_Wt?6qgI=Gx? zoTrS;AWv{iT>W@ww9zZ5k@2sfyh0%o1;s`=>m@pblmCg>Xc6m(O?9M3MlxVy)Na0d=X^5s$92rq5g!EH5;ib5-~PHqlJJ2kB(66!Us2W)u&qMcE#oOw=%(-~DSI*JHw z@jt?7GzQF0ZW-ejOO9A-jahLx>bJpv^&Qt<+r||{BkAtDgPi237o6ZMB)zDp(oyIx zbm+w&Z*lOml%F9hoQc6BhKzV*)W3woJ$T3iLq^?u-=Hz~4|5!(uty%gchr#k9~m{+ zaeci^bIpMnRu~82@#vA8C;<6`+2(vFMcZvvk;E_=y9veQ$F-^E17<2EK zQG*^H4e%V(jpm`zg)fM@ocPF?LBsDI{n*Hn!~f-wA`(gW4H`b^;rjv81CBW&8VRF@ zjDBP|fb=&oSJWLn1~>q=!9zwqGWx+Wj)g+Alb(2R%&@_u20h_;NkrLck3BqU$j}Ez zk3sJ*i#Sd-wuVMGTv}Zspx0LvxFd#)88mp%m_d$Z#>LQ-!g3;qPVNCy=@WWiY!?$~ zB7G$$i&Nrzaa5E!pQpXzGHntch&`f891)Y8)15zvjm|fnN1R8U$DGHV-#Tx*spmV+ zCm!469NnS9d1saL6}tTm(c{L|&ez22V!hZPzHzP-8^sE-O1$fQQ@kbK7VnC~&K+XE zX!n`;T>L8Li_>C)bG&mS&34XpO6MHsJm*W!mz}RT-*TRCo^^ih{L%Td^PKZ1=PBoD z@NoFi^6*o}H(|5Ij(Nrt;f?t5Qh2&}b)NA-_`Uqda_3Ny(a*hHY?H=i_d1$rtc!@J zea6m+yf!oEZZ2}@*&d-^b`TAb5q-m>*ii#W#w_ftx7L;ghl{h51{G9Pd>qx!9 zwqg|VIQ5tUk26bz`iLKzwp}Hg8QKTNg2=XX+Bgt-UHE%rRg;gCQ+kPFWYJs^WVET1 z;4UgbhBsJ`&^8zY>UcsnjYFSWg)y$qEeYl0R3~WPD9zV1Q?OO5xnCP{}rspJkA9(RmG z%u;$D{$EtC_RPR(}fL&VaxTPSy8%yF~q34V2yN$me2>sot>o7ff1b!HVN7b6Lfeex4KsXp)}iS<_iGt0 zhufJCE_W4RY=X6I#+inV>-}H?Yz?(bJ7r{LwgTYyWP0hCQIr|)KF%fTx&hX=#><&q zLzXUNE?#K-lzBTHEAO7=afa--l164X){b#;ZxBzI9$%mxGgf8a6tZ{$*Ll(SJG*Jf zI`ux*XwhU$`g&FIQ&WQJ+iHAGSP&ygoU zZjnyp?r~^e8R<>$j5und#Sk1dCN)i=uZ-nQZvkF^;(fmn-|PVlR$((Q?KPG(ySeib zF79?Wa$r)>tOLxuv9c0Fo2Hd<7PCH@uX1QbCHPEqx2P`3gywN+=ZrJCcZf}I7+ss^ zgf2HR8fNsKP~R|`KS4VU_cdwai%oLj0#V<%{+i54ll=fR2z#gT#5Ld3Z^ob&H=|^E zi z6k&>NoiO=Jjh|Zi+F#rS95JzL8Qd^U4`+@IH({xVkN`O>R1d}?S|{yB0SW|us8=<-Zn3(q$0ArDg6p(_f_6B=Ga3-n!_ zp)EJ^TMwkm@?4=vG2U&xpPnhhhHS!mF;JSs*1D7`&Ast%ML8E<#%!u=sL2!8@ z9@tMbv<}%wez9iqBrEw(B+o1YUzw#RTgm-9W=5>5PJZ4>-q?kshbZixNkO$gJ z5fR3c{Mg7n)nzeddVZWg->veG*Ukq-bMsRoFI*-4Aks^V{UDj`p?s2_61n&)=>w2n zc9rx6NZ)vs^skY=>niDKol+u?UnPAY(l1^meF@TMj=d7jqn(~)x*c$RQ_$`6*E8Lg zU+<$gjnA)t(p=^fVn9V|SusWMN*+u1BA5q;CoR^P(Rmcgxw?2mDpkgl#*FJ?jQlRW zX;OJ(K_f*d0BZ&_~8|JqAVFg`JSeEX*C+C&nK=8i%ZS4c%!| zjmACO)w@D|7?1bNqM1hTTegPUh#HBvCYc|=%DC=UZ`~Eov&dbeWDTT(G2&Klb?Mo+ z-cPfQy0^8Y^+xC02BEQKx3#B@#xuq%12jb8Y`}PI$(?<8J9?jFETa`aP za1>z}zaMmK`7d`qNr5v)S;I^ojs z70C}?=3S=t;?xc(NeUe|#}VNrkq@YuZxpPgU#3TOM^`Wuxq&d`2B!cE7aKe%?SZ}1 z^(IcpaYS++NX#cQ-HG6aLB6=;8r zHLiWM$yG}P`%8>{G{-Dq%S)?`Ab*KnkLH3hFFhJBE{-+okIIBX+i}!QNSZn-KJlWO zT$eITvqZdCy@4JelHMEjK=dUg-~-7GOTd`EV3Wtj+)>S9pN(l{JX$ctFB4o3HDH<0 zctkTlhYuW)OiPSsMr7M5lbf){X{Cp_|g+MDUC4AD0nh4ZX9@% z84nD2+;+#2KD?&>@80o8_NAS(n7+vBt4~J;ska|J~bbncFj&Qv9ehfp{QJ zJVCJ4KK%EHjE$_rGZ%|$ZI9W8d585ZQ29aQuBVD(Hmn32@sh{P=yQ2O^bISGvroNv z^^Ap2&yP|yJP|0zHKEduGkQMLuU7eBPZ&4!#xonPo>BPhyUjML2AVq@<2#WjRIjM{ z`9{r8G&a1jp}=EiVY9+BJnvJP8o})$dYC??MoKVJPM_v7r!9#PfetRJl-*XXP?RxK z>@r+yevNj*kWyA7#Vk`lu={{Q<^7AYh+!O8e1llO()g&jXUL&dtQ@>=q>gPKa@uo~_0}pe@AlMzS0ggXTgOx18v}NCd!m4A(FBIW9#QhR&aIU_IpMKiq>04|zYP?X=1cu>z zCGjvF4wNK^E9=V*-_Hi)?~*)MDa?0SZ-$6A^zrf6T5E(Uz}b^#I!o}vGF(Z}Ajn*Y zF4{VoI4mk^7x(B3iL znGjEJ8(wd$acaW#@O?F#IIWgF`{Beqde5LqiP2lQI-?!q!=jTVlC`Zy(@E{&#;g@vy@aGU!F4_wy-Y?PTNO=f||#rkaFb zw6#+yAnYTB9-?VGIipJ?zTiF8K2*h6`M}2qM*S%sZs6J}J)vlgpOO<+$&Ls;NZW4g znHOX1nUY7Zs<))6O~nDMty3F?9#BqOthY~3O+>Don!^k2_Nk+3m(g}wGyZsJT9eRS z6IlwP*rI6-k+XeT78Lfg(*{79?Kyp#m_NxlG`$V&HeySM(jMcP(qw%v!xj-aCl8cM-TOcK(PaW8(#3m6)6V`n%PLK#cmP>dInaLGcUwr;R-f#nkj6ew54Xl zjo{N)?Hq6vXa_irJ7ARy0(n3DHO76$fOOR}`t^jicHRMLQi%a+h}Ka_KRuSeHX28a zoBm17dVb~$|3S?%$5*LYd+CSrn`d_wp{5P`pL{Zdv14G&%?q(fXV2W0Oisb`vTG`F zX6th%8aK?#jy%E$x=&(vt57^EFSn)yL(XeMt3bCM>1RWGQOEl&FZROUB``>#Dfda7a%wapNR3DpEEsg@yicX%1%e8$*mj(R|&yuI1{47|Knoz7vKPOB%kF$|8 z-{*q;7o_aJ{YyI1cq8T|4;7cUdZ`=1lz;Z+B>bKC@?+w!aYntR|E2@Rl%==Rm&Wm> zw?$o;!ZfYf-Z_2ZRHMf$ZKF!ndgao0KqGLm^KYslU-8CUGDvTa)GW~#;sTEW%=oWd zOVf<-Wvyw3(P>#UV^~C1f#g0^LMBM{ zs8aN@Nh}Pe7$cXrN878H=f=-aPzC8l%Ni#tzc&jv(GTxOjHgy-(PU%k>W;8_kFWMnnGv+64N^L+ zX#i_^@S4iRlT5x?*szLtoe{7fD;4i0>t(XohuxH0*RG(G#>KVWqrOqS!b^h{Krg}q zaMHMaU9Yr{tf2weNN1VyBR6TiR~g&ZHK5JL59`*uPpfnnHca*yD_?s6;AyWvhQH%q z?+;e4dc6hy#*{aMZr!=OJsmZQ%R3`wd-(wTO<#XI{yw$dSMO_Xh0SG=CnmCFG}f&D z5+28i8&1<9R@6~uZJ;8ZmjuXSh90)$f?Ehda z*mM|eJoS#J@FbVwX`acO26`)fSK#IW%17uWD#g-O^|EPPE=%9fPg|8TRekJAR89#@ zJv5ce=IT>wl-Xdw0+k{pBZ<*doP=4@4ov++BZBw`qH;6 z@wb^@8dQ$u?__&#+jf%dZ+TmjZH!JVsenSsE< z+Aqd~TT>uGCu~hg{H3~NmRJEH1k%lMlwteMcz5e#DZ5_aW?Sp0nai}F7&kNm@`riz zqtR#ER7mZwx3x?7)q-#%IzMEUIt^y{+_>ib{HW!eYbtCe@2oUR-XG(&n#&SJE@)z) zlZh_vH>)8Q1D_fR+Zz@h<>nYMPEzYB-m6@e;DXq)Cu|o_r+>uChbX zPe0B%nzgrMcCUK08|3|N6Pmz2{h;!W2>XG~apwSqC_bwLYRaC&K!u#~yoU}jhxsSdm31Oi{-$nPXRxEXNROz|(EI}#d3H$2 zRp21N5NyK`s(ld%!*2&h!58}Am)Q|Dk{5rOU3hiSx-n?};m3Xeb}o3@uo9?0q1xx% zzRFOzbi1Ows;_F9kuw3K7tnAzS_XY;XYJ86ho+k@yg_!8#)yOQ5o%_TqUdVI!8@QH z|8Ot`8fNHM?dzZCmoYDGl z_iM@)F~*hfmza`4pU(-JwP~WCR@td`F1TWW@%rJy1}ch%36SHlavbOm-7=ORYUVB*(P9f^_l{Kt2bM{kB(d zL=10ak#6@f&CtJ1@YwB6V>Dq=)iVn{_g-a@L$3oP?cd)vgps!7+cKo@wPlVDlVdx=t7q zzF!z+8+ou%%$fVqX#GRyW`8h}rrhkREZ9ou=R*6FJ5|-O#DuWh0Xr}dBF3s8audf| z^UqE35{^F}Fl{)p&;O8{Ze?eQO5wvonI(3hJyk`0Z4)payPj$s@u|NV?SS#jsU&TF zjlrl|VyrmT&{AEoRg8u%su3&_7{cSHo)z<_8-q`0)}85>Y#D&M$av#-PlQdaU{p5$ z6OD_%C!`&=I!xvv$f|Y#EZvF$g`919VU^zj@a=`i5d$~ik6R;WZs*}Xq>P6t<(vM< z7rf*1m&bedea;BcEEfQ_SCp;79yV?s-qj8l8_*eJ@WqZ{cG+o0*~KpLCIzw`4!2tM z&R3Z%?MSgSU)Fn_Vv}l&24g>yK#bvT{qRy zJBu)@JYF_E;MF#fz^-ae5hSg`QX6$bKuoeZ+nkw4rRCTn;k8 z*tO(8Z8Vb)AzbrBmR`z!AHAU}tshcMwREeDCTd0R%kD(&EXS2o-=%cLWH_$mY$9*| z79Jt6qytMV^w&Fl(5JG*K-*K!!uvQ>7}Ja8#Q3nPi4=X4>BW-26SbsivWXxc&5*qX zWrtZ5tH?D@ZfZ)2ewWonMN#l``CV2P#mfDHUbjhBPIb~4S|o*wy4NJyiaT7?Sakf_ zoL87KkR=!nk1lRNu#I}p(&sBO53idQj)8?%#dL+S)2b|jW;A}1kzqh%w`>+ho#;I|DvWYyi(DK=Nwi&V3Zo{p zPktXp9@-|u!>KX8T7}bHV%=u>LO8XFyyndjR*DFG^xk6IT z7bX=g+s31sEtiK-gMTEYxTyb5O2?U$Fp9NEX+e}CrT3z!Gf2r5P0dr3Xh7j29`Y=4 z9;OgKK`q!4lea`ud)g_dM^k>3+Ez=11c~s}!44oePacV;*aWKuc$83w>rN!_C~5m- z-56@z!K5h{XPgEpD4P01QBOhu^#og@PSM^9oAxR<%O_$e0~>a7K@2sbvGRi$>d?&G z`BQ8Tm)H)ATdIksgh^Fzq_0yXdseoLC9lu&*aJHy9!y#1(5Kj>rhOovh@~dcc5{Il zZ^Y8AV(}K~j-xhlevVoyOpYo8M~#(7q9~>=Sjk=$6jwbRN9j?O3Y=&gTOHWE7Dx4K zIJvIED^#CS`V^HEA<&rPuEAn1?HKFq4)?JzZ2i!)p@r!fPM}&U9`ZRd)VpSD66YY$ zZGi*Z5~?H;ev}W_r&s8&ikNt;8uXmJF@f4fAK^xL!_392PYCp;5-AhtM!G1ECQze7 zuBzJ>q`6N7^}DTO4~cxxgG1i~&VQSy!3P5lDSTc*rCQy-&mGh%2OS=cxvpMzV@C|f z<{g4Iv8C?~68X-2Pbhq7XedNSz*a-9${^ULo&rIc01SiOt}ITZxDXT1cjSUZO6%tE zhG5kTvrCu|vKAxUZnPf8t^ZFTmER`PfP|%6D4%Cq*wLhu-Chtt5TOyTd!cZYR z>VSMRiE?U)xD2&MB5=QHG9`qVZJm|9lIaz{DEl*+Mqxo5kwUO9B(xG37_uUTU}025 zq|#ED81l6=@_Fr5#?s{M%^V0|bPvLtCC{f33<{axp=<85?E}-YfVc#|z%PLLioKfuKN5^S2h%LT>lcTUb+zeY6g1>NV+fqu)%ZUQ^|?bZQn^a}E74 zT?xL^>7e>Aq%VV-)HgMJH4Zgcc1Q+gL#3UOL9rbJ*24?7>{_=4RG>GvxtY}w9!qoK zGnKa{jAJgAy>BzjWiPY=rPm;ac-gZ7C4v|Vdr`cf7{)iCb$(*Ft|6VMsTRrHOnR6; zuUM2xY0&BAdyOb5Y}s}OCkVp$SR?8cZceESdp@#H7RAe38&i)+yNsGWS=5+P;*n~PYwgprc6YfN$+Z%aUj{IvEr~f2BYoey`_a>A_f6Asg zl+#>Ip`{Q)t=VHq8StNi2~F10(&dyKx&{RBUJkYGGnVNx0_Qy-S*^*%vWA&MQ|2;N zd#aJEfDD}LnUFtOVh$@g-J6=TJ-jJp)|hS2Ke2u%d2KVg&p+iaHKWns__$oUr`F6D z=R)4kub}3%#u5TCa@#d@lb`2S%fuGY2&K$xLAmYxj7{)~vo|0N(-V9J7sEEIoi$l5 zX+bdwFDp~g=bv&rKzhFXqy>ainFKpl;(@Ou`Dsh)19nVrMeSPH6I#uV)}*jULZ{0AsmRI9+Z2AGoJAT zuYN}Rl4&TB1193Rg*!nY*efKfg*(j_c()ya0;t&98Sf!aQ&pWiT#Xd=+1Wu~uo@Rk z-CX3*GyNk!ajHDqn)<+ZAoVtw|Cw@h8_G(xSNW4z)a@~6&!5f-Kgu`T&x`e<(b{{X?t>D|9_; z={S{F(Q&}u>@A6tv)U?Yx~^@&(h5_d+|OE*+tK5+P(qvSQH!<-j`R?AHtD4yoZ&-iPf{Hp_$p=t7lj&#lc$WFxiv8f})w|`%;QDb{Dq2lnSgt_Cq zp9dJ8On)#%;5vz=R}N}V(Z;k(A+m8kT}S)nuzbn|%gxQNEl<}$R_>RF^XYnjWCR@4 z=!Q3MZGp<~RkEWFd^XD=I^9$MF9yH|9}s&cD%A`o>&LgqgF5>8Q@T4*8*pXkPLu_S zIieFK;A=uBY96NqCzDBl0{myO{G=15(jIvRB~3RiW7-~|aX)xvr@777{C+@YUr)C} zr!Tx7ZGR@`UQho{{(>1wz)QjH&lg>ldNv0-x>Fl3n{}p9g)_HSR@I5jZZv6OtvyD8<^v-aV@+xYhQv z%h7f`S}leG2|siW1)Yx%OzFu5US3YIR;%MGov;T5h@g>s!=3r^x~`NUZ{a`3x?#N! zm5JSHJ-BmscS;L;RjE96q4NCR9mH8KJvULzfQ^1EaAr6DHPM3F zToUcJY{fR*ZK}MgqFOZV2JI4Ij8SMGbv`5*ua<@k*m*Px?FH4YW^py^QFfNyr=1nb z$+LAx(I7jgrbV@xrX+~bS#roPmxq1}i@o}M62T~ixi`nGqTCd8_Gb-9b&^eO`43HM!MZNT31OzISW{Wnkd>l)8U8tH}r~a2U}* z5r2W0;x792_sZ?EXMakkLvmz)YFxOEBboGEdj+52bm7RpQYCG*#PN_X*z8vcYqiU) zG(`>*fF6lQs4vu-V5mDDS4k%aNYCT&m_D5e3dvyJy1)i}fLrX*8fs~E{ScrJ?KITiLP(7kShyoX zdnzLwYav|d)@#Ms0>*GwV?#X=th)wtNKX(@%)`EVFb7C_cso2#B;(;~?QDYw0`zn7 zKq>4>VD3aDzO_|#N+aRBA`*H>0< z?Dci2is?g&e|@z@MZdeL$}cLeyGMzN4fiNt%i(*7eJz*ofiRpRv+h;Qf9Ji_5T2Lf zdr1(juP7O4YKVjGtHJow?o*7v9H}0g@j0@!9+(o#15P^xu>Pt06zhlHPx)asJFb>D z-;X9s@}HwE0@?|ML1?Cqgqz z*eq?A0Eciz8v;8SAzIe&}|5&$%TWlv0*ncS?(Q7$&Kw?TS$a?qRpvejW!Ud z$+G?sxEj{Wn}!g3q(INx_KWMdyI0;Pcnrc1XZQ*#2R2LJ`u zw276Gt~Df_`;S8cV*@*u3iuUH6Zm^$C(f=7w+puKx`(Mj#vINv;l>>njx5J=PRLV; z;F<{_vUs-q10w)LdOw1R`&E`cLf6uA`QalpG}9Crepl}b;d3!TtrPxOS!K=0J4RAk z_oGaZtivg*hClGW&iP+fBmMPhfC#6_>;RbU(`4mHimS0LFjHwwbKsDYr$<7E!|GJ` zQEFK0W*+;n8N`igP0PNIQv15~O)q6USwNmB(ru^0r{@|SIC;@!gz5hQzfwbI_R zhGd)4G?1;o@lGXB&(&)U^EUFS)p(b!Gpes0ew`6ZeW5wJFrv&g*S)EZ2*rwQt;Xl* z%8if<0mjz>1p-oPFAgS%S>gcJ0iNk93^ovea%9H^7a?Z16f)k?31y44*4XayfGzUG z(|BOPdlJQuo6XDDR)Z(*>`L|O1o7PgVggF}O*gz3dqV%C;Le2s<+v^N+7%NXSD{5M(v?2`( zvf`qY7a$&Q8hFV*_$s()21i#Rl#M5o-}t}=4^T1`N_OaTq%#|ndX2CXZWXc@B^eby zrl27Az@SH?9-z~>lwTB3+B*!p4?~I3^fU|T5>U9E*iTVF*O(*BhdB~fZ;W2ND#inCTlfh$eZx74GCY`kh5ytAw6}kN zkmsXDztF~bWx$!@54u3VJkRm$0Kihq?>L{ay|T!mtDuWQj=FbQ$B66(v{^j! zCViOInT{e#Rr*`V^$qnz)l4w zkN4XxZ>{<|WPh1sVJk8I8LEysK@uGBh1vmg&P>|^8?g}Hq3ktbc8B_E_i2LT3F`!g zOX5pg@bJs_YQg#svi*SN52&(byCM$&J4_*j#xa|=DHrJLwl}ur(p>I z`5O=)1*WzFq|6mY`K0B!r^u6FuU`ki+jd+iBH-W~ZS*uEbv}{ZpQgKD{k?)Oe?SvV zO8|&swU-U~?bGCs8kO^&p(h$CiOPewks^b560^i6;0{Y0#;0N*ThDF#EEbzZa=^1! zcq>XcXNg?)EOo2pefaBH+Qi<6jYX8nfEgW$PGR+U6+fYoC+E_~H zYPW0hE#Z14)DDLwg0YA+cazbYt?6lYF}`I<9riW5k#gi%>Rla`DtC;fjP`a{CR^eH zEw_GN4Qb$Ztjh`|QQR=V+RA(71DQ1rgF0W{IF7Pwg|XV$POg|Tj^L5{UWq6yU>L8O z5v=l;68JK{m)}1}gKOFiOi$m-d&kqnXq)AbWa0#+^w05>SslAt2bb`Y!wtu~S)kK1 znsv@y-)55<+%bJ7Pyx-6Z%=?Z`i(p@fffP&sS~k@aX@}Jk?u;hx1Z38>MTp-n;KL% zpMZb;`bpF~&Mu?x0QutJAEdK>aGG2(3E^Z5qy2^JU=_>Q7(EFQ-taIR7<)_En1>hjwYKY(AB4 zxAxHz<^0iV9z_B1)wpms2%cN*9M zJtDi$#5PTt95xdUyD~X*CVUQN052Y&%%s+qi%zLl7U*%asA-B#)&72LeIIiBkQ_7% z!lO!#p9QK~BzMjt4;9NFX2CxGQl`$PlxTbJ7ia)Zj&l4__L@y;g^Mk-larJsg;las z8-2r!%|(vY8a8Q**vt(p>7&-n!0^a`rmPjrKWSV;yRv2Me9TZ*m)CD~i3_FjM*x_z zgyCR$&FE#qxo<^njo8VU+nP|B&BIvp1-0%Ku|-K=khG z^AM17gwP6CF7Et^5c3&A4u19dpi?~#S{Mtn^TN_qAn3ZUuVy8^(fd1O|3aTWGOV*E4SttGH}mg#KRwuCl|GzojZ3J3f6ht)yY2KWQmY11u8>yY zFVTL#wEFfXdJ^*Ko|nl}YtEj3ndVaUoV7IPEH_}z+URGLT;fop9&13l4>UyM^r-}SV}I<8zO;hk zcy``eL7ij$vr}Y6b57*==;)PnqyLmRh83)dA%@5rxl%FD^p)gIvE>WrD9Po);cvGd z1np+Uc=_>4N)oHb%O6%!^Msw20NGO}YZ18Q_aup42Sc|mS_-9f6e8#L41U5e=|iE`OD} zG?+S;7agZk_dj50eZ;o4eiAfQYUXKg$$Dj!c+*x38R-0$E0T-CPEaQ!waS3n!1n-V zLa$j=9iW6Ei+JE2^2st9d`+zZc+ylcifsJVWIpYWNnuMt)>%#2eqIRNV6Rfs6}Z7} z%P$05)|bz$rWJmMXtG8Hk1tts#Sw(x*VG6ek1-iS3$TXc{U)jvhG`qa{_WFQa^P#w zIgiM(uU#d0Jk%`@uco91e$$na2;ioFG+iMCGhe5c{uO?*9Q?XEYw+vq>a0O*IknHU zXWtKuyEXe(=Az0XMt_8mBF%sZA>PQfD5AFA z#ux>1C0u13CJu?Fws#@X&abC*e=rkEG#l<}VIW&=fFt^67Cxr`)&>7!_<}f#uZ866hA(~~S8kx2!!Id;b=C!jcD(_`WV`J82DQBJlVT=y?9u4K+9npx zz92>F;A8z$D-VZ(ugLpcZ^!n3*al zvFBE6=ooj?ug}1Q!}iuz2Gj&2vC}~vVXQ8ugoysTYBAJmF|tOBa$yB|It7TIiI_gM z-w@c!)mvvE*x!VB$Q`pc($J*SyD)Io0nq2Hc>fDvQ#p1cwTe5!$SADU8+wA=Iv_vZ zNFAFULtVZ?(tigabOF9x^c~i__?H4aip$X>b`!Og746=n!eDx};_de!ap_RS!Akmr zlK)}|tUw+QR|)Zi>xaJM)Wh=Z7J5F|dN0~at=rW;6^=WX;XqIu2~exC*}9rLM=ENJeY^HujKRFXqqS+JG(%%p^FuL->1)s zN@ey3h;AyCg&*K|EvzfQW#1hLb^1y^yn`Afm2=+;TXy*XYxsz8!W>W)$u&D@9#+Zj zJFz8kQI6Y5$7zim_95MeXqS&Z#O70xJozD|x2|z@H(%dR`i@U97&sBRlACvTR(HtR zsEK@C{Z51I^bvIh9FsqyNBy_QpMOUN?ZTGMN!e@{Wy)tS;##Tv+?D}n?Ss^%7qagz zDiDh&%F10Z!SFn`i|*xT=Z|rW4$ntErmQ$qcLqv&7~D(+dZx$qkhWQ_{+PbR@ui)g zAoOJEC$JgRdw)FAchfmMV)oEJ9A!GWhrH3pfeGKn0nOOFzhcjEnYVudS7bKE)PfrOe(({i9EybsdKh^mFK8DSB<<%hn2ZPWrozqEVA9v+f-(qnwi3?c~NC1 zsmy5f>ERfQEc|b&0(h$Y>I=#YDPhIJ>oWR`jHyUDK$!wm+T|em2AWtgD`6;LxY*UK z!J#Wsg8V6`|FISWV0Zt)L8_nj^pf7@P#(%H_vs zP~3h-3}Y3-=AJUY`<k)RdpyPgCw~YBZAd(@G{-6I}<(frl4>wLA{)90zzC%MyveS?BARc8uQiFOm)=rl`<&r%5BjQ~yN%vVq zTKp~VI7?rPBV}^kPZZ0~-sf<-?+DKV-?Y%y5zech9`m?f_fZ|$&zz$MI=9)*!PJdQ zf~_2Xg-B1Z4xI`poa1tBxg3WPgyK3alsB8X>t||R$ooK~m!3l@y@`HOJ-3lw_A@7J zacW;H!r%=Q6#Ma4PR-Ka{f(cCgnsw}zpNEzF*C-Rw`AFc$lJE+jwhG?MUcL&#uzAI z7(hAKLizu9)Nh6ny!vPQD4tQ)b~BpbMO=HX7paufvh)|a&%Z{WJ1Z~#LT|S?gVNYN zgEE7kSjodp%0awDYOuV6O|KO)`H~EbmP5aU^I_WIiXYD7y2yrxy*{eT3YpJlR;OTl zttFUm+mCYk?=TCN%M-s-4>|33YAA2NfI}L~+~hF>Q5tGnuS;rNvcHYF=TT+ZS+gHokxptB2=V%-9!4%LRW> zg2@_S2sGg02ITfX=x(To8Glke3O1*=qTOFqmtfWOxQHYEkM8%#Qy1ZvSzbYxuueb_ zy!kiXh~Js02)Ya@9(96&KoBJc3}gxRJF($r5zFONew%~fcwElRNOb!w^QdPy!Akl@y#(i>4uy|Zl z?vo8eL^H8vpS(RptV>f3Hqc9t@HpDiUw+D+CF|$DmJLHid6-%v67&_{$fKb`(k}V$ zFwrDt7bC$05$uW5H>!1Js(dR)FwrBrqyz;L0nD~AP`o~$aL6-1T-;p$Bd(dq z*t_&f&htb*v|0N|t_T;t);nuvVv;Xkc0Q_^$*7Sfs=~dv7hW%mgqo-7FD9+1g507p ziIcl4aw5cf=iopMKtH7x+@x9yZm@r0w$^-n`&W2|0(@~r8BdbG%xSqUNz|8B3F20{ zRuebG7g-2X19r2 zyKoAcb9JZoQN_RN@lQLJRLqPPTY?H_?yJNE+Ga}qY8WkTCi#k#P|Vs=Rm;|R>RnOh z%34>n49jsxEGUrmt61kyvvo{5;%~MC_IgjD2f%otC9;-MSJ?T;;U3KoRYW=laoEThxS&VJ4ydW zr9nL0=MlFnW_{Z$3Yl5k`@|S9YsKq6kwoD5Ptt`4azvg>7cuy3l7V2AlnhbFd{1g< zv+jk%jI+(q6WLyY!ns4)Eo+P9^bG9GZk5wAgqOBftjiE>h0Wy?zm~r=6f1(6=`mW4g~x64y~xl`MSuibCx@UoVC(E(?!pWpIJ%v zM_Q(HHUd68&~W^B7Mzh?I*ASusx~y6Pcl68Gx`OY0SPetl)VBI4<=^@`2cZ>(3i+rBVgq0f6l zz?#ZKY3d+{e%M^>%!9RoJ4Q?!K^YX+vk6jHCBo1MFiYy7373wwJ=p&71)L%)Kpc}> zDZx0wVEq8srZS^!@wL~fu1ww79)>eKr)Z@594^MsiM7P3Ut~BnONV_!7|nae$<;e? z1jzcGJ~^(lXd3n^M;GI&Q**x3t~y^leIN;eU8J8ni_Q_}RHqgh>0Pj*yd&@KA~JJK z&nyRxVL^k2&#E%6ALim};!VP|2@rFeo3mc^AE}x5_NiZLQoW&S;6;EY-N`yPh{Q%F zwK#dq;nLL9ZGh~EG%GXdTVyJ4zCq-M?N4UjO&Tb#i`J(S$b0on4`b&zGUy#DWkry5ko9VW~K|r5k>z z`j4^li*8~bHnm4}7uh&by0E+0*I?W@3>c&WxKPceODn!2WvrZiqiAR|K;;Da{*BPE zEq*xgoGk7k2BWIReb$;mMHcjZ>N?_2uStAg5RmB z*wjEvz<{UafQ=%>Hw#H}K6K?nU?NODD)fz3@}VdrIZR-s0ovE3q9b zhxHNfg{-@*NK?6L-c;|Q?5gp=*`Qq7miwTtGN~|D+GQ3a?viR@v|UYo$bTem9%7z; z$ehhLz<4rcjx6dc()nCKU(u7^l0Wqo@fPKnl&EAG3ok|E9BF7$4ky(JN|zmO6a3r2 za^`IUKcgul`iVx6@Ok}2n`n!lv8fn=JxdJHu1T`EpSS~Okq`F6Swa@{y7fyDZhgvR z8GbwTg_W`w9?{mFD4-I^46wXQdqFO}9Y9ZzJ8p;4I#CASA$s~=;NeFZ_F;fy^pfWw z74XB&LH-}3lVk1>hp;(&bAREBI5`D<=7}cY(OI&vzqkhXcfHok9@pu`rxA zUvb5;e!_fhg4ZxUA4U4%*>cjIBAK3-%kG4-I$0jOQ>1s@thhW>yP()hAo>>WeuO%H zsV2x}ale_)@nCRkck{tSv+n^_zjUF!EpNIDIs^8y?-E^dOetjLsQD0){0m+Y1wLFF z?|>LpdB7A`Cdj>agXb>XCF1HVQ++~0a`QjS@GuPLlm$O<-WO+v;VnKeVoEp{cgEOQlBpVgXC*a5Y$y>$N- z*xq=rjct!wh`xWXjcA9Gh?8_X5~QPtsj7mD*zjL zWT1$PSDAdb8{cuyWaXh8M^6Nq)*U38HZJ1d?a8Z6+JF8B(k>aKNPF`jk?tL*M&AAZ zHtpH>*>s#Lhu9VCkeVE*2gi|!Ag_kW-OjG{TyhZW)>e#HMr6p%i+8u7t{uRwgxU>k9h44Tzs zRtr0p9!&Jr*qPY>QY>#CC}L&S5X|#0(jt#uLqyh9$pe~+B9A*P@=yweBI1v0p+>cd z+X95s|C6}-Ye+S=?H{-T+mR1cW4r7D5!dvp*z!DF6a<^w2=0eoN#72Tnw93CoiV`iIP)d8pq*8|J+Z7)dgFp-;XMjV-2jyPXo z$L{knVN8A&e!!|oju|GhtsiQJ_JZq5<*UO)O337wcrA;@`W+{~MG!TZP8768Me^6moBw61l*as<{g9DCj+=M`XZm&kVtMCZ_B zm1sRedr5{pByON%vd=@}x`=Je*I11awYXN!eMlsk#RQ6NdPsDLwDT)D){GDZd&nzElc#H+gA< zh)g&%2c@+a%|$ujKK7k5{b8}1uC(@!zsMDqN#`RXC%p7!?#ruRcuBU!H?5Gv9ub}% zl}pX!ZGUlDTaUYHswW7VT<9~VVyUfQIQTGhh@Bw!JtA7&w3r*xGxU8xT<8T+b+0J(=J;F+lHGfeA<$qD> z(S=q<49<&~6~-@PfTFGRXxvwB0i@FFSm{wXGGeALuaRDlf3RC2utBBU9c%nU-70-^ zjq-(caZ!euvAae_9lkh6RXD8DZGa-xjU7Bf=Ty2q5)piIMwOquoDt|?0qW*U4ORLM zl^$cIha-j=={UHkA5s}Dt&A{SeP~uFUBL}CvC>2N3QpC~CY7FHrK?kND!odj+anar zn@lSGN0n|P5X9T0D!q8+mLi_6FVmuE%e=G8JAWTtO=jvJ|Q>sRe4F4?OPR?MsNp+eExv*t>9%^foT zvfcT%+)@Z>{F^*iC>n*C^voOkz9Qk1eT&2(mP!>xB8Q(RibNyNp2-Y=SFhx!Ut-(8 z0$Mp)HY*mrxpYynXqFftq1dsaSJ#$1i$#8T!1rq>ZXsq~`f^e(} zY3#WFA*8W#^f=L;tG+f4OFN!lj}zDRtZw?hgK>4>s#E3Ak}DAnMEr1x_%&@A&yyFo zig@bit}(tyy>c0rD)r+Ik@}8h@~7uOGRtM%@uFk6y+G`FMcy%9G;eFx4fcfTi}#|E z)xtwK2ClDA36cDc4esEF^h+>Noe*Jgi-jV5YwLJ1tk7<6@hbtVqkr967nmyYJ#{_d zokWSJj<%9PUhNC(3yrLn5k2rVW{SvbYZoqJw~yTg|1vdPt~ip7pCLvdMuE0U@g)*D`VhaE8Hqa?k57Rv zx=IF375Q$vnbOOfWuK{{r9WXY5~fcT4ez&0RPun>9r-cdQ!~|4v#M&QS{e=d2yDSB zd+zVeGJYCX$_eu3Y1osSAXiQk57S;5KV7s>UdQl*8sJ0<eMF3&32mG)cIbGaH zAIP_-V}U&^Kc6l>#A8XR@WuSV!iSw!E|2{qBB$gR$ceLAZsKbJEZ1B9^tech)&5qV z2Xuhm_)moP=UCZs2K-ICi1JP42OT5{SYe?2ws$9W{Hk)zpkGp(!=acj=i#KmKYjl|6=`K*=IIf zsJ1J8uPmG`u7@LR>ull6{Zf&ZI;#Y|$UkD{um3o4X&u5Yuvi7nf_9UTE%aD@HQo)*>RDO_7yj)n;Q~AhJGft2inr=goTDUNH|?V!8kwunc83o z;%kP@y@nvZE5_WS2;$uebBiK~Io8~wU{J6{ArDC$1vyeSdya@37_iUK3;kE}kxo26 z#PSzx{+JRkCFULo2G1@Lge?sPK9X`A3Vw^}a5XlcNXPhM$7TL%`S=`hO~By2Hb*ps z3*o>VksM}U(y>=wnj>!ad&Mt~mG{hrZ_y@uSfHUQg54r}d&@$unk#Pfd~kKDh${9n;uFe=a86&M%4r@!BT2?nTkEu$+}z z6;tmj(C0B{Y5SN_yZ}niYU_xGf?eS+6J4Oc7*Gakyd9y8i`Z;!8)uB!Xs@Mh^KYxw z(6*uaH*yUBa|`-c_q}xDc&19x8c~kmD2|PC=(|+UxQh!&=<}<4*1oV|gdy(3eFnIc zl|z9Yn%ZPwc7R(u$AK6!Ff1GAG5Wqua`$}EHe?gGiQsl^ffy)$DU)>;A^K#}0&GW^ z!QL%zvhii<5{R!K9EZN(N?4Tgro<9omIe1KcY0`(Oj{^g=KN!mM-_$upZi*9w)+1y zb}djrp^f(-EZ5nU?3NIy{v|iuzY3 zQEqhxoq_7k)bq7TlImZT#9Oo==uD*>2dh7nH+S$6K6OUr@s_EP^;qn1(pk^%@oAv5 zK6tFx7T#PvwjbMoGw!uVdjZ~1pUH9UQvIn|#A*h~9?8tL~c$KMaIwZB#)lXmghxSF_j7azs1*T}=Wc%t1? z>VXf;rLHEH9-e-C>T~~9x0yz+vtFu%3nygeD?Bv8Q(%MnFsLMV`9(0EhL|@VW1wpl zp7tF0KyG~nR|c+88*szhqWxSWy>|15sp6}5^A~+QieEI!h&_BFzfmLe_h8|G+OvCj z<}8nRf1|lpss%^?k5pBYQ;jleFK#b;3ao2%FW8HHjO8)+L$C5^E5BJIckSoRy?)Vq zyYunkjvBfCb-u*%wEOz&{AUYpAN}(U{ld!m1L*yK*SPx}#JkaOZ|l7``NH6~CT?Nr zSTmX5g(e<1x6 zNcSNOMeHWoeuxj?&DFBsTL{6&yu~BZo2xawZqc6XR3z3W_I{?(u8&ahFmPRoX{-X# za$q{85tm!u;-js%cT13rIgAUeC9>!+pV+GeicY`>*uphdBHf31qV>nw8Y`4-hk2Y` zk3!l<7|mCm_(3*`tkLYg56_4?7vpz2JG3H+NHV^5KR|(=nONn@2d}A~J zgC&64th#Nalz-zV<&UTN@}7)swP_4xv3i8Q@?yNf`7g z4@|E@t}#G%n11&n8ViN0 z%sb0Nm*a z9)aRFz^UsLx1jn|d&QT5)5KAHIruyiuj!)i05_L63mg*>ZFMjC2fy1o_;{?w$lUe- zRzPuID3V#~KiT*Vb`i&8W$QOQfkN9wo-|3RCZaS_RlF3O8mstM;F%`g20l~g@`Z~i zuRTsSUF5M8-n_^sQJ8j#e`%?Zk(YTQ-xM!%FY|~A`{OkhjBM>MkQ-SX`gOwCBy)`BNhB4x-Go)tb9 z%?g3=d-OidX~jpQbZYKgx&8{jdw6T2QRNPV5lD90%ZeN}M_GZbq^!X4kZt5Bquw2f zvi%Al?vo9E7xW6{h*mx=a4l#b&=(PopzO7BZ7WakJqJ!lxi(531-JGat+C;<=e;6Q zYTxoj^5JiJU3x~6rdMq$sz}{t=Cm{`J{C(E9YpaW#pQ$F@#NrlQA`hrPa>pV{{$g* zHJ0mr-|?xrUdbBs1Mi8D9KmRWv~*2Ch?1aZ47jbN(pFyOvXvLw7ME9*6@V4m7GWek z`AZQ})0Ms~PZ51&UK{VuwE0$AiPW@b zCP>#$u+8QPvH_vR%l*ku{1aiT8>z8lz*m3|MlgkP+eH^ABQOy$S6O#g)3Vtd>V-L#4fAKI(m}rx7 zOs6pMCZ9EU{$#_9R(V2yY%7*RB^4l5oy+>0{B*SW5Yr$s^XcGSySh+n9lVFnp(z?8 zXER9->AU?2_#vYMbLJYelT4r58lTxn>vC3|)_lz#>pe2yf zo}8tzSqL+L*#O09xipVY7C4z?m+@gy^0b$zDo(W?X5yO>@6?z1-XhVetI93jVu>f}=Ocy$ zg=TB4Ka}rWm0qru6^_cdB6}rfW*Sr%$$B4A?HSV^Nn(nu@D;wj!tT-711N=zo_0=5 zKH)1KxTQ8-AiuPyiddQFC*rElL7$xSE`S`Q;>Wu1N4oIsU3e|{L_p;a_w=^ngTUb} zI^`D;$7n=#CbT2LTmc&T&J6BEfAO(0U^F&2hCQOO#mEv5kecFTvE-`E+$!@@MTp#+ zB>IJ_bZT=ra9eNd-S}Fv=q_WEg@1H2j*$-?IBMN;6vxI?U%Bp>w|8{zqeeFJ3se=w zV-cqo-Z7iEoH$1KInE*PLg-L4$T$@*Mx3gv_-_!W@)UO=PBTk!>KfXoDn1u+y*H_R z`PvwfSltL$MM=s9m6W+0MGhx8W?pNgZJa3VHE<0a3FMu2r=JNHm={9Y zd7HV~jqgL&agdD%%)9YIdr2v_gsyVi3TKJSVOvpLUh1$dt|}~aI4>a&jU#RIIBrUNf(^QB=x?R53}0rU+l&^q3r)A_^1Y zYcxiycMp^ngwV{%=oIIja(OgGEaXRPq-}!u%(J*)?M{*@sp77HOKXiaok^!@P3p((!~3M)42`m6`C$m(G~9b>Eg1F(H1v0LHl^{ zk&VWt?oSBGz?u+}kz!*SlqsTk`$n0PDI%(En+$`DMM#!!dtPI9gy$?wU(pr+9Gv=7 z@h`#27!|(=P78+Om%HeH4?f%^zXlFZ7}J@7wpi3^Rls=rrHiMH9(UDIN}59m4KVQraN5Kv`R*?K z7$(G!yatOGUz^}s>k81ON07Ptaj16UnaZ=f$Q2p9>Z19Jd7umY$7ehX{{ zwgG#AgFq8-2DkuR13K!oc;>$y4F`q*Q~v=-#d=Tx diff --git a/res/sweat_claim.wasm b/res/sweat_claim.wasm new file mode 100755 index 0000000000000000000000000000000000000000..02a69a63096fe442c4d5bdcb17e89108030101dd GIT binary patch literal 216340 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 literal 0 HcmV?d00001 diff --git a/scripts/build-integration.sh b/scripts/build-integration.sh new file mode 100755 index 0000000..685de31 --- /dev/null +++ b/scripts/build-integration.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -eox pipefail + +echo ">> Building contract" + +rustup target add wasm32-unknown-unknown +cargo build -p sweat --target wasm32-unknown-unknown --profile=contract --features integration-test + +cp ./target/wasm32-unknown-unknown/contract/sweat.wasm res/sweat.wasm diff --git a/scripts/build-stub.sh b/scripts/build-stub.sh index ad68a0e..b154e01 100755 --- a/scripts/build-stub.sh +++ b/scripts/build-stub.sh @@ -4,6 +4,6 @@ set -eox pipefail echo ">> Building stub contract" rustup target add wasm32-unknown-unknown -cargo build -p defer-stub --target wasm32-unknown-unknown --profile=contract +cargo build -p exploit-stub --target wasm32-unknown-unknown --profile=contract -cp ./target/wasm32-unknown-unknown/contract/defer_stub.wasm res/defer_stub.wasm +cp ./target/wasm32-unknown-unknown/contract/exploit_stub.wasm res/exploit_stub.wasm diff --git a/sweat-integration/src/lib.rs b/sweat-integration/src/lib.rs index 27d05d0..4759642 100644 --- a/sweat-integration/src/lib.rs +++ b/sweat-integration/src/lib.rs @@ -9,7 +9,8 @@ use near_sdk::{ }; use near_workspaces::{types::NearToken, Contract}; use sweat_model::{ - FungibleTokenCoreIntegration, StorageManagementIntegration, SweatApiIntegration, SweatDeferIntegration, + FungibleTokenCoreIntegration, IntegrationTestMethodsIntegration, StorageManagementIntegration, SweatApiIntegration, + SweatDeferIntegration, }; pub const FT_CONTRACT: &str = "sweat"; @@ -185,6 +186,17 @@ impl SweatApiIntegration for SweatFt<'_> { } } +impl IntegrationTestMethodsIntegration for SweatFt<'_> { + fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> ContractCall<(U128, U128)> { + self.make_call("calculate_payout_with_fee_for_batch") + .args_json(json!({ + "batch_size": batch_size, + "claim_amount": claim_amount, + })) + .unwrap() + } +} + impl SweatFt<'_> { pub async fn formula_detailed(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result<(U128, U128, U128)> { let token_amount = self.formula(steps_since_tge, steps).call().await?.0; diff --git a/sweat/Cargo.toml b/sweat/Cargo.toml index c786410..26e8949 100644 --- a/sweat/Cargo.toml +++ b/sweat/Cargo.toml @@ -8,6 +8,10 @@ publish = false [lib] crate-type = ["cdylib"] +[features] +default = [] +integration-test = [] + [dependencies] sweat-model = { workspace = true } diff --git a/sweat/src/integration.rs b/sweat/src/integration.rs new file mode 100644 index 0000000..0896314 --- /dev/null +++ b/sweat/src/integration.rs @@ -0,0 +1,32 @@ +#![cfg(feature = "integration-test")] + +use near_sdk::{ + json_types::{U128, U64}, + near_bindgen, +}; +use sweat_model::{IntegrationTestMethods, SweatApi}; + +use crate::{Contract, ContractExt}; + +#[near_bindgen] +impl IntegrationTestMethods for Contract { + fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> (U128, U128) { + let mut total_fee = 0; + let mut total_for_user = 0; + + for i in 0..batch_size { + let steps_since_tge = i * claim_amount; + let steps = claim_amount; + + let minted = self.formula(U64(steps_since_tge.into()), steps).0; + + let fee = (minted * 5).div_ceil(100); + let for_user = minted - fee; + + total_fee += fee; + total_for_user += for_user; + } + + (U128(total_fee), U128(total_for_user)) + } +} diff --git a/sweat/src/lib.rs b/sweat/src/lib.rs index eb2821b..a300da2 100644 --- a/sweat/src/lib.rs +++ b/sweat/src/lib.rs @@ -16,6 +16,7 @@ use near_sdk::{ use sweat_model::SweatApi; mod defer; +mod integration; mod math; #[near_bindgen] From f521ee9c0c4656ae9b5a8a9a5ee23ed2eb083602 Mon Sep 17 00:00:00 2001 From: Vasily Styagov Date: Thu, 25 Jan 2024 20:09:24 +0000 Subject: [PATCH 12/13] ref: extract payout calculation to model (#59) --- integration-tests/src/mint.rs | 8 +++++--- model/src/lib.rs | 16 ++++++++++++++++ res/sweat.wasm | Bin 221082 -> 215625 bytes sweat-integration/src/lib.rs | 9 ++++----- sweat/src/integration.rs | 9 ++++----- sweat/src/lib.rs | 7 +++---- 6 files changed, 32 insertions(+), 17 deletions(-) diff --git a/integration-tests/src/mint.rs b/integration-tests/src/mint.rs index c7d4ec6..748f41a 100644 --- a/integration-tests/src/mint.rs +++ b/integration-tests/src/mint.rs @@ -1,6 +1,6 @@ use integration_utils::misc::ToNear; use near_sdk::json_types::{U128, U64}; -use sweat_model::{FungibleTokenCoreIntegration, SweatApiIntegration}; +use sweat_model::{FungibleTokenCoreIntegration, Payout, SweatApiIntegration}; use crate::prepare::{prepare_contract, IntegrationContext}; @@ -30,11 +30,13 @@ async fn test_mint() -> anyhow::Result<()> { .call() .await?; + let target_payout = Payout::from(TARGET_BALANCE); + let result = context.ft_contract().ft_balance_of(oracle.to_near()).call().await?; - assert_eq!(result, U128(TARGET_BALANCE * 5 / 100)); + assert_eq!(result, U128(target_payout.fee)); let result = context.ft_contract().ft_balance_of(user.to_near()).call().await?; - assert_eq!(result, U128(TARGET_BALANCE * 95 / 100)); + assert_eq!(result, U128(target_payout.amount_for_user)); let result = context.ft_contract().get_steps_since_tge().call().await?; assert_eq!(result, U64(TARGET_STEPS_SINCE_TGE as u64)); diff --git a/model/src/lib.rs b/model/src/lib.rs index d6f5d52..15080d7 100644 --- a/model/src/lib.rs +++ b/model/src/lib.rs @@ -86,3 +86,19 @@ pub trait StorageManagement { pub trait IntegrationTestMethods { fn calculate_payout_with_fee_for_batch(&self, batch_size: u32, claim_amount: u32) -> (U128, U128); } + +pub struct Payout { + pub amount_for_user: u128, + pub fee: u128, +} + +impl From for Payout { + fn from(value: u128) -> Self { + let fee = (value * 5).div_ceil(100); + + Self { + fee, + amount_for_user: value - fee, + } + } +} diff --git a/res/sweat.wasm b/res/sweat.wasm index 6d5fced902ee8503c6cf76607bab936c5a63df5a..e8e8aca6942bca41f0803a6b2978addc447abffa 100755 GIT binary patch delta 47549 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 delta 52177 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≠nW;wYK-xS zrdS0E { impl SweatFt<'_> { pub async fn formula_detailed(&self, steps_since_tge: U64, steps: u32) -> anyhow::Result<(U128, U128, U128)> { let token_amount = self.formula(steps_since_tge, steps).call().await?.0; - let fee = token_amount * 5 / 100; - let effective_amount = token_amount - fee; + let payout = Payout::from(token_amount); - Ok((U128(fee), U128(effective_amount), U128(token_amount))) + Ok((U128(payout.fee), U128(payout.amount_for_user), U128(token_amount))) } } diff --git a/sweat/src/integration.rs b/sweat/src/integration.rs index 0896314..81a2082 100644 --- a/sweat/src/integration.rs +++ b/sweat/src/integration.rs @@ -4,7 +4,7 @@ use near_sdk::{ json_types::{U128, U64}, near_bindgen, }; -use sweat_model::{IntegrationTestMethods, SweatApi}; +use sweat_model::{IntegrationTestMethods, Payout, SweatApi}; use crate::{Contract, ContractExt}; @@ -20,11 +20,10 @@ impl IntegrationTestMethods for Contract { let minted = self.formula(U64(steps_since_tge.into()), steps).0; - let fee = (minted * 5).div_ceil(100); - let for_user = minted - fee; + let payout = Payout::from(minted); - total_fee += fee; - total_for_user += for_user; + total_fee += payout.fee; + total_for_user += payout.amount_for_user; } (U128(total_fee), U128(total_for_user)) diff --git a/sweat/src/lib.rs b/sweat/src/lib.rs index a300da2..362973e 100644 --- a/sweat/src/lib.rs +++ b/sweat/src/lib.rs @@ -13,7 +13,7 @@ use near_sdk::{ json_types::{U128, U64}, near_bindgen, require, AccountId, Balance, PanicOnDefault, PromiseOrValue, }; -use sweat_model::SweatApi; +use sweat_model::{Payout, SweatApi}; mod defer; mod integration; @@ -153,10 +153,9 @@ impl SweatApi for Contract { impl Contract { pub(crate) fn calculate_tokens_amount(&self, steps: u32) -> (u128, u128) { let sweat_to_mint: u128 = self.formula(self.steps_since_tge, steps).0; - let trx_oracle_fee: u128 = (sweat_to_mint * 5).div_ceil(100); - let minted_to_user: u128 = sweat_to_mint - trx_oracle_fee; + let payout = Payout::from(sweat_to_mint); - (minted_to_user, trx_oracle_fee) + (payout.amount_for_user, payout.fee) } } From f19b87d146026a71e1bac145441bfaa15be9ced3 Mon Sep 17 00:00:00 2001 From: Vladas Zakrevskis <146100@gmail.com> Date: Mon, 29 Jan 2024 18:42:36 +0200 Subject: [PATCH 13/13] build: docker binary (#60) --- res/sweat.wasm | Bin 215625 -> 216127 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/res/sweat.wasm b/res/sweat.wasm index e8e8aca6942bca41f0803a6b2978addc447abffa..8a84d7c053e25cec56490094e6e29ab89b2506ed 100755 GIT binary patch delta 32704 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 delta 33042 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