From 316aa1906f42a77944933b17d244c5ce925bfc02 Mon Sep 17 00:00:00 2001 From: Luis Covarrubias Date: Fri, 23 Jan 2026 20:46:36 -0800 Subject: [PATCH] feat(wasm-solana): add transaction parsing with full instruction decoding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add comprehensive Solana transaction parsing to wasm-solana package with BitGoJS-compatible output format. Core Features: - Parse serialized transactions into structured ParsedTransaction - Decode all major instruction types to semantic InstructionParams - Support for durable nonce transactions with NonceAdvance detection - Full account metadata preservation for unknown instructions Supported Programs: - System Program: Transfer, CreateAccount, NonceAdvance, NonceInitialize - Stake Program: Initialize, Delegate, Deactivate, Withdraw, Authorize, AuthorizeChecked - SPL Token: Transfer, TransferChecked (with programId and decimalPlaces) - SPL Associated Token Account: Create, Close - Compute Budget: SetComputeUnitLimit, SetPriorityFee - Memo Program: Memo instructions - SPL Stake Pool (Jito): DepositSol, WithdrawStake Instruction Combining (TypeScript): - CreateAccount + NonceInitialize → CreateNonceAccount - Staking patterns detected for NATIVE, JITO, and MARINADE types The parser returns raw instructions; combining logic lives in TypeScript for flexibility and easier maintenance. Ticket: BTC-2929 --- packages/wasm-solana/Cargo.lock | 2803 +++++++++++++++-- packages/wasm-solana/Cargo.toml | 20 +- .../wasm-solana/bitgo-wasm-solana-0.0.1.tgz | Bin 0 -> 401620 bytes packages/wasm-solana/js/index.ts | 30 + packages/wasm-solana/js/parser.ts | 330 ++ packages/wasm-solana/js/transaction.ts | 132 + .../wasm-solana/src/instructions/decode.rs | 452 +++ packages/wasm-solana/src/instructions/mod.rs | 9 + .../wasm-solana/src/instructions/types.rs | 334 ++ packages/wasm-solana/src/keypair.rs | 24 +- packages/wasm-solana/src/lib.rs | 6 +- packages/wasm-solana/src/parser.rs | 266 ++ packages/wasm-solana/src/transaction.rs | 163 + packages/wasm-solana/src/wasm/mod.rs | 4 + packages/wasm-solana/src/wasm/parser.rs | 38 + packages/wasm-solana/src/wasm/transaction.rs | 154 + packages/wasm-solana/test/bitgojs-compat.ts | 303 ++ packages/wasm-solana/test/parser.ts | 136 + packages/wasm-solana/test/transaction.ts | 127 + 19 files changed, 5071 insertions(+), 260 deletions(-) create mode 100644 packages/wasm-solana/bitgo-wasm-solana-0.0.1.tgz create mode 100644 packages/wasm-solana/js/parser.ts create mode 100644 packages/wasm-solana/js/transaction.ts create mode 100644 packages/wasm-solana/src/instructions/decode.rs create mode 100644 packages/wasm-solana/src/instructions/mod.rs create mode 100644 packages/wasm-solana/src/instructions/types.rs create mode 100644 packages/wasm-solana/src/parser.rs create mode 100644 packages/wasm-solana/src/transaction.rs create mode 100644 packages/wasm-solana/src/wasm/parser.rs create mode 100644 packages/wasm-solana/src/wasm/transaction.rs create mode 100644 packages/wasm-solana/test/bitgojs-compat.ts create mode 100644 packages/wasm-solana/test/parser.ts create mode 100644 packages/wasm-solana/test/transaction.ts diff --git a/packages/wasm-solana/Cargo.lock b/packages/wasm-solana/Cargo.lock index 27ddb0a..6805a7b 100644 --- a/packages/wasm-solana/Cargo.lock +++ b/packages/wasm-solana/Cargo.lock @@ -2,6 +2,72 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm-siv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0784134ba9375416d469ec31e7c5f9fa94405049cf08c5ce5b4698be673e0d" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "polyval", + "subtle", + "zeroize", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "async-trait" version = "0.1.89" @@ -10,7 +76,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.114", ] [[package]] @@ -20,10 +86,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] -name = "base64ct" -version = "1.8.3" +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] [[package]] name = "bitflags" @@ -31,6 +112,21 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +[[package]] +name = "blake3" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures", + "digest 0.10.7", +] + [[package]] name = "block-buffer" version = "0.9.0" @@ -49,12 +145,119 @@ dependencies = [ "generic-array", ] +[[package]] +name = "borsh" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" +dependencies = [ + "borsh-derive 0.10.4", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive 1.6.0", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831213f80d9423998dd696e2c5345aba6be7a0bd8cd19e31c5243e13df1cef89" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + [[package]] name = "bumpalo" version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +[[package]] +name = "bv" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" +dependencies = [ + "feature-probe", + "serde", +] + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "byteorder" version = "1.5.0" @@ -84,10 +287,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] -name = "const-oid" -version = "0.9.6" +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89f72f65e8501878b8a004d5a1afb780987e2ce2b4532c562e367a72c57499f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "constant_time_eq" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" [[package]] name = "cpufeatures" @@ -98,6 +337,12 @@ dependencies = [ "libc", ] +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + [[package]] name = "crypto-common" version = "0.1.7" @@ -105,9 +350,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", + "rand_core 0.6.4", "typenum", ] +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -134,6 +389,7 @@ dependencies = [ "fiat-crypto", "rand_core 0.6.4", "rustc_version", + "serde", "subtle", "zeroize", ] @@ -146,18 +402,14 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.114", ] [[package]] -name = "der" -version = "0.7.10" +name = "derivation-path" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "zeroize", -] +checksum = "6e5c37193a1db1d8ed868c03ec7b152175f26160a5b740e5e484143877e0adf0" [[package]] name = "digest" @@ -185,17 +437,7 @@ version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "signature 1.6.4", -] - -[[package]] -name = "ed25519" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" -dependencies = [ - "pkcs8", - "signature 2.2.0", + "signature", ] [[package]] @@ -205,26 +447,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek 3.2.0", - "ed25519 1.5.3", - "rand", + "ed25519", + "rand 0.7.3", "serde", "sha2 0.9.9", "zeroize", ] [[package]] -name = "ed25519-dalek" -version = "2.2.0" +name = "either" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" -dependencies = [ - "curve25519-dalek 4.1.3", - "ed25519 2.2.3", - "serde", - "sha2 0.10.9", - "subtle", - "zeroize", -] +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "feature-probe" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" [[package]] name = "fiat-crypto" @@ -247,6 +493,15 @@ dependencies = [ "five8_core", ] +[[package]] +name = "five8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" +dependencies = [ + "five8_core", +] + [[package]] name = "five8_const" version = "0.1.4" @@ -256,12 +511,33 @@ dependencies = [ "five8_core", ] +[[package]] +name = "five8_const" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" +dependencies = [ + "five8_core", +] + [[package]] name = "five8_core" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "generic-array" version = "0.14.7" @@ -296,6 +572,32 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + [[package]] name = "hex" version = "0.4.3" @@ -311,6 +613,34 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.17" @@ -327,6 +657,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "libc" version = "0.2.180" @@ -340,20 +685,93 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] -name = "lock_api" -version = "0.4.14" +name = "libsecp256k1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +checksum = "c9d220bc1feda2ac231cb78c3d26f27676b8cf82c96971f7aeef3d0cf2797c73" dependencies = [ - "scopeguard", + "arrayref", + "base64 0.12.3", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.7.3", + "serde", + "sha2 0.9.9", ] [[package]] -name = "memchr" +name = "libsecp256k1-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f6ab710cec28cef759c5f18671a27dae2a5f952cdaaee1d8e2908cb2478a80" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccab96b584d38fac86a83f07e659f0deafd0253dc096dab5a36d53efe653c5c3" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67abfe149395e3aa1c48a2beb32b068e2334402df8181f818d3aee2b304c4f5d" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "memchr" version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + [[package]] name = "minicov" version = "0.3.8" @@ -373,6 +791,36 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -383,6 +831,28 @@ dependencies = [ "libm", ] +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "syn 2.0.114", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -434,13 +904,21 @@ dependencies = [ ] [[package]] -name = "pkcs8" -version = "0.10.2" +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "polyval" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" dependencies = [ - "der", - "spki", + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", ] [[package]] @@ -452,6 +930,24 @@ dependencies = [ "zerocopy", ] +[[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 = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + [[package]] name = "proc-macro2" version = "1.0.105" @@ -461,6 +957,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "qstring" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" +dependencies = [ + "percent-encoding", +] + [[package]] name = "quote" version = "1.0.43" @@ -478,11 +983,22 @@ checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ "getrandom 0.1.16", "libc", - "rand_chacha", + "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" @@ -493,344 +1009,2120 @@ dependencies = [ "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.17", +] + +[[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.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-big-array" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" +dependencies = [ + "serde", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "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 = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "solana-account" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f949fe4edaeaea78c844023bfc1c898e0b1f5a100f8a8d2d0f85d0a7b090258" +dependencies = [ + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-account-info" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f5152a288ef1912300fc6efa6c2d1f9bb55d9398eb6c72326360b8063987da" +dependencies = [ + "bincode", + "serde", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-account-info" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" +dependencies = [ + "solana-address 2.0.0", + "solana-program-error 3.0.0", + "solana-program-memory 3.1.0", +] + +[[package]] +name = "solana-address" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" +dependencies = [ + "solana-address 2.0.0", +] + +[[package]] +name = "solana-address" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37320fd2945c5d654b2c6210624a52d66c3f1f73b653ed211ab91a703b35bdd" +dependencies = [ + "five8 1.0.0", + "five8_const 1.0.0", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.0", + "solana-define-syscall 4.0.1", + "solana-program-error 3.0.0", + "solana-sanitize 3.0.1", + "solana-sha256-hasher 3.1.0", +] + +[[package]] +name = "solana-address-lookup-table-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1673f67efe870b64a65cb39e6194be5b26527691ce5922909939961a6e6b395" +dependencies = [ + "bincode", + "bytemuck", + "serde", + "serde_derive", + "solana-clock 2.2.2", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-slot-hashes 2.2.1", +] + +[[package]] +name = "solana-atomic-u64" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-atomic-u64" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a933ff1e50aff72d02173cfcd7511bd8540b027ee720b75f353f594f834216d0" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "solana-big-mod-exp" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" +dependencies = [ + "num-bigint", + "num-traits", + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-bincode" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" +dependencies = [ + "bincode", + "serde", + "solana-instruction 2.3.3", +] + +[[package]] +name = "solana-blake3-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" +dependencies = [ + "blake3", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-borsh" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718333bcd0a1a7aed6655aa66bef8d7fb047944922b2d3a18f49cbc13e73d004" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", +] + +[[package]] +name = "solana-clock" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb482ab70fced82ad3d7d3d87be33d466a3498eb8aa856434ff3c0dfc2e2e31" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-clock" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-compute-budget-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8432d2c4c22d0499aa06d62e4f7e333f81777b3d7c96050ae9e5cb71a8c3aee4" +dependencies = [ + "borsh 1.6.0", + "solana-instruction 2.3.3", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-cpi" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" +dependencies = [ + "solana-account-info 2.3.0", + "solana-define-syscall 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-stable-layout 2.2.1", +] + +[[package]] +name = "solana-cpi" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" +dependencies = [ + "solana-account-info 3.1.0", + "solana-define-syscall 4.0.1", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", + "solana-pubkey 4.0.0", + "solana-stable-layout 3.0.0", +] + +[[package]] +name = "solana-curve25519" +version = "2.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae4261b9a8613d10e77ac831a8fa60b6fa52b9b103df46d641deff9f9812a23" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "solana-define-syscall 2.3.0", + "subtle", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-decode-error" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +dependencies = [ + "num-traits", +] + +[[package]] +name = "solana-define-syscall" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" + +[[package]] +name = "solana-define-syscall" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" + +[[package]] +name = "solana-define-syscall" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" + +[[package]] +name = "solana-derivation-path" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "939756d798b25c5ec3cca10e06212bdca3b1443cb9bb740a38124f58b258737b" +dependencies = [ + "derivation-path", + "qstring", + "uriparse", +] + +[[package]] +name = "solana-epoch-rewards" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 2.3.0", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-epoch-rewards" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-epoch-schedule" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-epoch-schedule" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-example-mocks" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" +dependencies = [ + "serde", + "serde_derive", + "solana-address-lookup-table-interface", + "solana-clock 2.2.2", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-keccak-hasher", + "solana-message 2.4.0", + "solana-nonce", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-feature-gate-interface" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f5c5382b449e8e4e3016fb05e418c53d57782d8b5c30aa372fc265654b956d" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-account", + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-fee-calculator" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89bc408da0fb3812bc3008189d148b4d3e08252c79ad810b245482a3f70cd8d" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-fee-calculator" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a73cc03ca4bed871ca174558108835f8323e85917bb38b9c81c7af2ab853efe" +dependencies = [ + "log", + "serde", + "serde_derive", +] + +[[package]] +name = "solana-hash" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "five8 0.2.1", + "js-sys", + "serde", + "serde_derive", + "solana-atomic-u64 2.2.1", + "solana-sanitize 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-hash" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" +dependencies = [ + "solana-hash 4.0.1", +] + +[[package]] +name = "solana-hash" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a5d48a6ee7b91fc7b998944ab026ed7b3e2fc8ee3bc58452644a86c2648152f" +dependencies = [ + "bytemuck", + "bytemuck_derive", + "five8 1.0.0", + "serde", + "serde_derive", + "solana-atomic-u64 3.0.0", + "solana-sanitize 3.0.1", +] + +[[package]] +name = "solana-instruction" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +dependencies = [ + "bincode", + "borsh 1.6.0", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "serde_json", + "solana-define-syscall 2.3.0", + "solana-pubkey 2.4.0", + "wasm-bindgen", +] + +[[package]] +name = "solana-instruction" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee1b699a2c1518028a9982e255e0eca10c44d90006542d9d7f9f40dbce3f7c78" +dependencies = [ + "bincode", + "borsh 1.6.0", + "serde", + "serde_derive", + "solana-define-syscall 4.0.1", + "solana-instruction-error", + "solana-pubkey 4.0.0", +] + +[[package]] +name = "solana-instruction-error" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b04259e03c05faf38a8c24217b5cfe4c90572ae6184ab49cddb1584fdd756d3f" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-program-error 3.0.0", +] + +[[package]] +name = "solana-instructions-sysvar" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e85a6fad5c2d0c4f5b91d34b8ca47118fc593af706e523cdbedf846a954f57" +dependencies = [ + "bitflags", + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serialize-utils", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-keccak-hasher" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" +dependencies = [ + "sha3", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-keypair" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +dependencies = [ + "ed25519-dalek", + "five8 0.2.1", + "rand 0.7.3", + "solana-pubkey 2.4.0", + "solana-seed-phrase", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-last-restart-slot" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-last-restart-slot" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-loader-v2-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8ab08006dad78ae7cd30df8eea0539e207d08d91eaefb3e1d49a446e1c49654" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-loader-v3-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f7162a05b8b0773156b443bccd674ea78bb9aa406325b467ea78c06c99a63a2" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-loader-v4-interface" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "706a777242f1f39a83e2a96a2a6cb034cb41169c6ecbee2cf09cb873d9659e7e" +dependencies = [ + "serde", + "serde_bytes", + "serde_derive", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-system-interface 1.0.0", +] + +[[package]] +name = "solana-message" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1796aabce376ff74bf89b78d268fa5e683d7d7a96a0a4e4813ec34de49d5314b" +dependencies = [ + "bincode", + "blake3", + "lazy_static", + "serde", + "serde_derive", + "solana-bincode", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", + "solana-transaction-error 2.2.1", + "wasm-bindgen", +] + +[[package]] +name = "solana-message" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85666605c9fd727f865ed381665db0a8fc29f984a030ecc1e40f43bfb2541623" +dependencies = [ + "bincode", + "lazy_static", + "serde", + "serde_derive", + "solana-address 1.1.0", + "solana-hash 3.1.0", + "solana-instruction 3.1.0", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.1.0", + "solana-transaction-error 3.0.0", +] + +[[package]] +name = "solana-msg" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" +dependencies = [ + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-msg" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "264275c556ea7e22b9d3f87d56305546a38d4eee8ec884f3b126236cb7dcbbb4" +dependencies = [ + "solana-define-syscall 3.0.0", +] + +[[package]] +name = "solana-native-token" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61515b880c36974053dd499c0510066783f0cc6ac17def0c7ef2a244874cf4a9" + +[[package]] +name = "solana-nonce" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" +dependencies = [ + "serde", + "serde_derive", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-pubkey 2.4.0", + "solana-sha256-hasher 2.3.0", +] + +[[package]] +name = "solana-program" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98eca145bd3545e2fbb07166e895370576e47a00a7d824e325390d33bf467210" +dependencies = [ + "bincode", + "blake3", + "borsh 0.10.4", + "borsh 1.6.0", + "bs58", + "bytemuck", + "console_error_panic_hook", + "console_log", + "getrandom 0.2.17", + "lazy_static", + "log", + "memoffset", + "num-bigint", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_derive", + "solana-account-info 2.3.0", + "solana-address-lookup-table-interface", + "solana-atomic-u64 2.2.1", + "solana-big-mod-exp", + "solana-bincode", + "solana-blake3-hasher", + "solana-borsh", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-example-mocks", + "solana-feature-gate-interface", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot 2.2.1", + "solana-loader-v2-interface", + "solana-loader-v3-interface", + "solana-loader-v4-interface", + "solana-message 2.4.0", + "solana-msg 2.2.1", + "solana-native-token", + "solana-nonce", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher 2.3.0", + "solana-short-vec 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stable-layout 2.2.1", + "solana-stake-interface 1.2.1", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "solana-sysvar-id 2.2.1", + "solana-vote-interface", + "thiserror 2.0.18", + "wasm-bindgen", +] + +[[package]] +name = "solana-program-entrypoint" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ce041b1a0ed275290a5008ee1a4a6c48f5054c8a3d78d313c08958a06aedbd" +dependencies = [ + "solana-account-info 2.3.0", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-program-entrypoint" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" +dependencies = [ + "solana-account-info 3.1.0", + "solana-define-syscall 4.0.1", + "solana-program-error 3.0.0", + "solana-pubkey 4.0.0", +] + +[[package]] +name = "solana-program-error" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee2e0217d642e2ea4bee237f37bd61bb02aec60da3647c48ff88f6556ade775" +dependencies = [ + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-program-error" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" + +[[package]] +name = "solana-program-memory" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a5426090c6f3fd6cfdc10685322fede9ca8e5af43cd6a59e98bfe4e91671712" +dependencies = [ + "solana-define-syscall 2.3.0", +] + +[[package]] +name = "solana-program-memory" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" +dependencies = [ + "solana-define-syscall 4.0.1", +] + +[[package]] +name = "solana-program-option" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" + +[[package]] +name = "solana-program-pack" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" +dependencies = [ + "solana-program-error 2.2.2", +] + +[[package]] +name = "solana-pubkey" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "five8 0.2.1", + "five8_const 0.1.4", + "getrandom 0.2.17", + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-atomic-u64 2.2.1", + "solana-decode-error", + "solana-define-syscall 2.3.0", + "solana-sanitize 2.2.1", + "solana-sha256-hasher 2.3.0", + "wasm-bindgen", +] + +[[package]] +name = "solana-pubkey" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" +dependencies = [ + "solana-address 1.1.0", +] + +[[package]] +name = "solana-pubkey" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6f7104d456b58e1418c21a8581e89810278d1190f70f27ece7fc0b2c9282a57" +dependencies = [ + "solana-address 2.0.0", +] + +[[package]] +name = "solana-rent" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-rent" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" +dependencies = [ + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-sanitize" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" + +[[package]] +name = "solana-sanitize" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" + +[[package]] +name = "solana-sdk-ids" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" +dependencies = [ + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-sdk-ids" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" +dependencies = [ + "solana-address 2.0.0", +] + +[[package]] +name = "solana-sdk-macro" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86280da8b99d03560f6ab5aca9de2e38805681df34e0bb8f238e69b29433b9df" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "solana-sdk-macro" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6430000e97083460b71d9fbadc52a2ab2f88f53b3a4c5e58c5ae3640a0e8c00" +dependencies = [ + "bs58", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "solana-secp256k1-recover" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" +dependencies = [ + "libsecp256k1", + "solana-define-syscall 2.3.0", + "thiserror 2.0.18", +] + +[[package]] +name = "solana-security-txt" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "156bb61a96c605fa124e052d630dba2f6fb57e08c7d15b757e1e958b3ed7b3fe" +dependencies = [ + "hashbrown 0.15.2", +] + +[[package]] +name = "solana-seed-derivable" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beb82b5adb266c6ea90e5cf3967235644848eac476c5a1f2f9283a143b7c97f" +dependencies = [ + "solana-derivation-path", +] + +[[package]] +name = "solana-seed-phrase" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +dependencies = [ + "hmac", + "pbkdf2", + "sha2 0.10.9", +] + +[[package]] +name = "solana-serde-varint" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a7e155eba458ecfb0107b98236088c3764a09ddf0201ec29e52a0be40857113" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-serialize-utils" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" +dependencies = [ + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-sha256-hasher" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 2.3.0", + "solana-hash 2.3.0", +] + +[[package]] +name = "solana-sha256-hasher" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" +dependencies = [ + "sha2 0.10.9", + "solana-define-syscall 4.0.1", + "solana-hash 4.0.1", +] + +[[package]] +name = "solana-short-vec" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c54c66f19b9766a56fa0057d060de8378676cb64987533fa088861858fc5a69" +dependencies = [ + "serde", +] + +[[package]] +name = "solana-short-vec" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79fb1809a32cfcf7d9c47b7070a92fa17cdb620ab5829e9a8a9ff9d138a7a175" +dependencies = [ + "serde_core", +] + +[[package]] +name = "solana-signature" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +dependencies = [ + "ed25519-dalek", + "five8 0.2.1", + "solana-sanitize 2.2.1", +] + +[[package]] +name = "solana-signature" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb8057cc0e9f7b5e89883d49de6f407df655bb6f3a71d0b7baf9986a2218fd9" +dependencies = [ + "five8 0.2.1", + "serde", + "serde-big-array", + "serde_derive", + "solana-sanitize 3.0.1", +] + +[[package]] +name = "solana-signer" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +dependencies = [ + "solana-pubkey 2.4.0", + "solana-signature 2.3.0", + "solana-transaction-error 2.2.1", +] + +[[package]] +name = "solana-signer" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bfea97951fee8bae0d6038f39a5efcb6230ecdfe33425ac75196d1a1e3e3235" +dependencies = [ + "solana-pubkey 3.0.0", + "solana-signature 3.1.0", + "solana-transaction-error 3.0.0", +] + +[[package]] +name = "solana-slot-hashes" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 2.3.0", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-slot-hashes" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" +dependencies = [ + "serde", + "serde_derive", + "solana-hash 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-slot-history" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ccc1b2067ca22754d5283afb2b0126d61eae734fc616d23871b0943b0d935e" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids 2.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-slot-history" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" +dependencies = [ + "bv", + "serde", + "serde_derive", + "solana-sdk-ids 3.1.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-stable-layout" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" +dependencies = [ + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", +] + +[[package]] +name = "solana-stable-layout" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" +dependencies = [ + "solana-instruction 3.1.0", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-stake-interface" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5269e89fde216b4d7e1d1739cf5303f8398a1ff372a81232abbee80e554a838c" +dependencies = [ + "borsh 0.10.4", + "borsh 1.6.0", + "num-traits", + "serde", + "serde_derive", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-system-interface 1.0.0", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-stake-interface" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9bc26191b533f9a6e5a14cca05174119819ced680a80febff2f5051a713f0db" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-clock 3.0.0", + "solana-cpi 3.1.0", + "solana-instruction 3.1.0", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", + "solana-system-interface 2.0.0", + "solana-sysvar 3.1.1", +] + +[[package]] +name = "solana-system-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d7c18cb1a91c6be5f5a8ac9276a1d7c737e39a21beba9ea710ab4b9c63bc90" +dependencies = [ + "js-sys", + "num-traits", + "serde", + "serde_derive", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "wasm-bindgen", +] + +[[package]] +name = "solana-system-interface" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" +dependencies = [ + "num-traits", + "serde", + "serde_derive", + "solana-instruction 3.1.0", + "solana-msg 3.0.0", + "solana-program-error 3.0.0", + "solana-pubkey 3.0.0", +] + +[[package]] +name = "solana-sysvar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c3595f95069f3d90f275bb9bd235a1973c4d059028b0a7f81baca2703815db" +dependencies = [ + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-define-syscall 2.3.0", + "solana-epoch-rewards 2.2.1", + "solana-epoch-schedule 2.2.1", + "solana-fee-calculator 2.2.1", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-instructions-sysvar", + "solana-last-restart-slot 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sanitize 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sdk-macro 2.2.1", + "solana-slot-hashes 2.2.1", + "solana-slot-history 2.2.1", + "solana-stake-interface 1.2.1", + "solana-sysvar-id 2.2.1", +] + +[[package]] +name = "solana-sysvar" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" +dependencies = [ + "base64 0.22.1", + "bincode", + "lazy_static", + "serde", + "serde_derive", + "solana-account-info 3.1.0", + "solana-clock 3.0.0", + "solana-define-syscall 4.0.1", + "solana-epoch-rewards 3.0.0", + "solana-epoch-schedule 3.0.0", + "solana-fee-calculator 3.0.0", + "solana-hash 4.0.1", + "solana-instruction 3.1.0", + "solana-last-restart-slot 3.0.0", + "solana-program-entrypoint 3.1.1", + "solana-program-error 3.0.0", + "solana-program-memory 3.1.0", + "solana-pubkey 4.0.0", + "solana-rent 3.1.0", + "solana-sdk-ids 3.1.0", + "solana-sdk-macro 3.0.0", + "solana-slot-hashes 3.0.0", + "solana-slot-history 3.0.0", + "solana-sysvar-id 3.1.0", +] + +[[package]] +name = "solana-sysvar-id" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" +dependencies = [ + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", +] + +[[package]] +name = "solana-sysvar-id" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" +dependencies = [ + "solana-address 2.0.0", + "solana-sdk-ids 3.1.0", +] + +[[package]] +name = "solana-transaction" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ceb2efbf427a91b884709ffac4dac29117752ce1e37e9ae04977e450aa0bb76" +dependencies = [ + "bincode", + "serde", + "serde_derive", + "solana-address 2.0.0", + "solana-hash 4.0.1", + "solana-instruction 3.1.0", + "solana-instruction-error", + "solana-message 3.0.1", + "solana-sanitize 3.0.1", + "solana-sdk-ids 3.1.0", + "solana-short-vec 3.1.0", + "solana-signature 3.1.0", + "solana-signer 3.0.0", + "solana-transaction-error 3.0.0", +] + +[[package]] +name = "solana-transaction-error" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" dependencies = [ - "getrandom 0.1.16", + "solana-instruction 2.3.3", + "solana-sanitize 2.2.1", ] [[package]] -name = "rand_core" -version = "0.6.4" +name = "solana-transaction-error" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "4222065402340d7e6aec9dc3e54d22992ddcf923d91edcd815443c2bfca3144a" dependencies = [ - "getrandom 0.2.17", + "serde", + "serde_derive", + "solana-instruction-error", + "solana-sanitize 3.0.1", ] [[package]] -name = "rand_hc" -version = "0.2.0" +name = "solana-vote-interface" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +checksum = "b80d57478d6599d30acc31cc5ae7f93ec2361a06aefe8ea79bc81739a08af4c3" dependencies = [ - "rand_core 0.5.1", + "bincode", + "num-derive", + "num-traits", + "serde", + "serde_derive", + "solana-clock 2.2.2", + "solana-decode-error", + "solana-hash 2.3.0", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec 2.2.1", + "solana-system-interface 1.0.0", ] [[package]] -name = "redox_syscall" -version = "0.5.18" +name = "solana-zk-sdk" +version = "2.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +checksum = "97b9fc6ec37d16d0dccff708ed1dd6ea9ba61796700c3bb7c3b401973f10f63b" dependencies = [ - "bitflags", + "aes-gcm-siv", + "base64 0.22.1", + "bincode", + "bytemuck", + "bytemuck_derive", + "curve25519-dalek 4.1.3", + "itertools", + "js-sys", + "merlin", + "num-derive", + "num-traits", + "rand 0.8.5", + "serde", + "serde_derive", + "serde_json", + "sha3", + "solana-derivation-path", + "solana-instruction 2.3.3", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-seed-derivable", + "solana-seed-phrase", + "solana-signature 2.3.0", + "solana-signer 2.2.1", + "subtle", + "thiserror 2.0.18", + "wasm-bindgen", + "zeroize", ] [[package]] -name = "rustc_version" +name = "spl-discriminator" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" dependencies = [ - "semver", + "bytemuck", + "solana-program-error 2.2.2", + "solana-sha256-hasher 2.3.0", + "spl-discriminator-derive", ] [[package]] -name = "rustversion" -version = "1.0.22" +name = "spl-discriminator-derive" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" +dependencies = [ + "quote", + "spl-discriminator-syn", + "syn 2.0.114", +] [[package]] -name = "same-file" -version = "1.0.6" +name = "spl-discriminator-syn" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "5d1dbc82ab91422345b6df40a79e2b78c7bce1ebb366da323572dd60b7076b67" dependencies = [ - "winapi-util", + "proc-macro2", + "quote", + "sha2 0.10.9", + "syn 2.0.114", + "thiserror 1.0.69", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "spl-elgamal-registry" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "56cc66fe64651a48c8deb4793d8a5deec8f8faf19f355b9df294387bc5a36b5f" +dependencies = [ + "bytemuck", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-security-txt", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "solana-zk-sdk", + "spl-pod", + "spl-token-confidential-transfer-proof-extraction", +] [[package]] -name = "semver" -version = "1.0.27" +name = "spl-memo" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" +dependencies = [ + "solana-account-info 2.3.0", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", +] [[package]] -name = "serde" -version = "1.0.228" +name = "spl-pod" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "d994afaf86b779104b4a95ba9ca75b8ced3fdb17ee934e38cb69e72afbe17799" dependencies = [ - "serde_core", - "serde_derive", + "borsh 1.6.0", + "bytemuck", + "bytemuck_derive", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-program-option", + "solana-pubkey 2.4.0", + "solana-zk-sdk", + "thiserror 2.0.18", ] [[package]] -name = "serde_core" -version = "1.0.228" +name = "spl-program-error" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "9cdebc8b42553070b75aa5106f071fef2eb798c64a7ec63375da4b1f058688c6" dependencies = [ - "serde_derive", + "num-derive", + "num-traits", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "spl-program-error-derive", + "thiserror 2.0.18", ] [[package]] -name = "serde_derive" -version = "1.0.228" +name = "spl-program-error-derive" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "2a2539e259c66910d78593475540e8072f0b10f0f61d7607bbf7593899ed52d0" dependencies = [ "proc-macro2", "quote", - "syn", + "sha2 0.10.9", + "syn 2.0.114", ] [[package]] -name = "serde_json" -version = "1.0.149" +name = "spl-stake-pool" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "6f0db03f091f43b5766296e80088718491b50949cd3eb4cce3e0cfed58fe2c18" dependencies = [ - "itoa", - "memchr", + "arrayref", + "bincode", + "borsh 1.6.0", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", "serde", - "serde_core", - "zmij", + "serde_derive", + "solana-program", + "solana-security-txt", + "solana-stake-interface 1.2.1", + "solana-system-interface 1.0.0", + "spl-pod", + "spl-token-2022", + "thiserror 2.0.18", ] [[package]] -name = "sha2" -version = "0.9.9" +name = "spl-tlv-account-resolution" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "1408e961215688715d5a1063cbdcf982de225c45f99c82b4f7d7e1dd22b998d7" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info 2.3.0", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-type-length-value", + "thiserror 2.0.18", ] [[package]] -name = "sha2" -version = "0.10.9" +name = "spl-token" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-sysvar 2.3.0", + "thiserror 2.0.18", ] [[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "1.6.4" +name = "spl-token-2022" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" - -[[package]] -name = "signature" -version = "2.2.0" +checksum = "707d8237d17d857246b189d0fb278797dcd7cf6219374547791b231fd35a8cc8" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-account-info 2.3.0", + "solana-clock 2.2.2", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-native-token", + "solana-program-entrypoint 2.3.0", + "solana-program-error 2.2.2", + "solana-program-memory 2.3.1", + "solana-program-option", + "solana-program-pack", + "solana-pubkey 2.4.0", + "solana-rent 2.2.1", + "solana-sdk-ids 2.2.1", + "solana-security-txt", + "solana-system-interface 1.0.0", + "solana-sysvar 2.3.0", + "solana-zk-sdk", + "spl-elgamal-registry", + "spl-memo", + "spl-pod", + "spl-token", + "spl-token-confidential-transfer-ciphertext-arithmetic", + "spl-token-confidential-transfer-proof-extraction", + "spl-token-confidential-transfer-proof-generation", + "spl-token-group-interface", + "spl-token-metadata-interface", + "spl-transfer-hook-interface", + "spl-type-length-value", + "thiserror 2.0.18", +] + +[[package]] +name = "spl-token-confidential-transfer-ciphertext-arithmetic" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "cddd52bfc0f1c677b41493dafa3f2dbbb4b47cf0990f08905429e19dc8289b35" dependencies = [ - "rand_core 0.6.4", + "base64 0.22.1", + "bytemuck", + "solana-curve25519", + "solana-zk-sdk", ] [[package]] -name = "smallvec" -version = "1.15.1" +name = "spl-token-confidential-transfer-proof-extraction" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "512c85bdbbb4cbcc2038849a9e164c958b16541f252b53ea1a3933191c0a4a1a" +dependencies = [ + "bytemuck", + "solana-account-info 2.3.0", + "solana-curve25519", + "solana-instruction 2.3.3", + "solana-instructions-sysvar", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "solana-sdk-ids 2.2.1", + "solana-zk-sdk", + "spl-pod", + "thiserror 2.0.18", +] [[package]] -name = "solana-atomic-u64" -version = "2.2.1" +name = "spl-token-confidential-transfer-proof-generation" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52e52720efe60465b052b9e7445a01c17550666beec855cce66f44766697bc2" +checksum = "fa27b9174bea869a7ebf31e0be6890bce90b1a4288bc2bbf24bd413f80ae3fde" dependencies = [ - "parking_lot", + "curve25519-dalek 4.1.3", + "solana-zk-sdk", + "thiserror 2.0.18", ] [[package]] -name = "solana-decode-error" -version = "2.3.0" +name = "spl-token-group-interface" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c781686a18db2f942e70913f7ca15dc120ec38dcab42ff7557db2c70c625a35" +checksum = "5597b4cd76f85ce7cd206045b7dc22da8c25516573d42d267c8d1fd128db5129" dependencies = [ + "bytemuck", + "num-derive", "num-traits", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", ] [[package]] -name = "solana-define-syscall" -version = "2.3.0" +name = "spl-token-metadata-interface" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae3e2abcf541c8122eafe9a625d4d194b4023c20adde1e251f94e056bb1aee2" +checksum = "304d6e06f0de0c13a621464b1fd5d4b1bebf60d15ca71a44d3839958e0da16ee" +dependencies = [ + "borsh 1.6.0", + "num-derive", + "num-traits", + "solana-borsh", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator", + "spl-pod", + "spl-type-length-value", + "thiserror 2.0.18", +] [[package]] -name = "solana-hash" -version = "2.3.0" +name = "spl-transfer-hook-interface" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b96e9f0300fa287b545613f007dfe20043d7812bee255f418c1eb649c93b63" +checksum = "a7e905b849b6aba63bde8c4badac944ebb6c8e6e14817029cbe1bc16829133bd" dependencies = [ - "five8", - "js-sys", - "solana-atomic-u64", - "solana-sanitize", - "wasm-bindgen", + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "solana-account-info 2.3.0", + "solana-cpi 2.2.1", + "solana-decode-error", + "solana-instruction 2.3.3", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "solana-pubkey 2.4.0", + "spl-discriminator", + "spl-pod", + "spl-program-error", + "spl-tlv-account-resolution", + "spl-type-length-value", + "thiserror 2.0.18", ] [[package]] -name = "solana-instruction" -version = "2.3.3" +name = "spl-type-length-value" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab5682934bd1f65f8d2c16f21cb532526fcc1a09f796e2cacdb091eee5774ad" +checksum = "d417eb548214fa822d93f84444024b4e57c13ed6719d4dcc68eec24fb481e9f5" dependencies = [ - "getrandom 0.2.17", - "js-sys", + "bytemuck", + "num-derive", "num-traits", - "solana-define-syscall", - "solana-pubkey", - "wasm-bindgen", + "solana-account-info 2.3.0", + "solana-decode-error", + "solana-msg 2.2.1", + "solana-program-error 2.2.2", + "spl-discriminator", + "spl-pod", + "thiserror 2.0.18", ] [[package]] -name = "solana-keypair" -version = "2.2.3" +name = "subtle" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd3f04aa1a05c535e93e121a95f66e7dcccf57e007282e8255535d24bf1e98bb" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "ed25519-dalek 1.0.1", - "five8", - "rand", - "solana-pubkey", - "solana-seed-phrase", - "solana-signature", - "solana-signer", - "wasm-bindgen", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "solana-pubkey" -version = "2.4.0" +name = "syn" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b62adb9c3261a052ca1f999398c388f1daf558a1b492f60a6d9e64857db4ff1" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ - "curve25519-dalek 4.1.3", - "five8", - "five8_const", - "getrandom 0.2.17", - "js-sys", - "num-traits", - "solana-atomic-u64", - "solana-decode-error", - "solana-define-syscall", - "solana-sanitize", - "solana-sha256-hasher", - "wasm-bindgen", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "solana-sanitize" -version = "2.2.1" +name = "thiserror" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] [[package]] -name = "solana-seed-phrase" -version = "2.2.1" +name = "thiserror" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36187af2324f079f65a675ec22b31c24919cb4ac22c79472e85d819db9bbbc15" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "hmac", - "pbkdf2", - "sha2 0.10.9", + "thiserror-impl 2.0.18", ] [[package]] -name = "solana-sha256-hasher" -version = "2.3.0" +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa3feb32c28765f6aa1ce8f3feac30936f16c5c3f7eb73d63a5b8f6f8ecdc44" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "sha2 0.10.9", - "solana-define-syscall", - "solana-hash", + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] -name = "solana-signature" -version = "2.3.0" +name = "thiserror-impl" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c8ec8e657aecfc187522fc67495142c12f35e55ddeca8698edbb738b8dbd8c" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ - "ed25519-dalek 1.0.1", - "five8", - "solana-sanitize", + "proc-macro2", + "quote", + "syn 2.0.114", ] [[package]] -name = "solana-signer" -version = "2.2.1" +name = "tinyvec" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ - "solana-pubkey", - "solana-signature", - "solana-transaction-error", + "tinyvec_macros", ] [[package]] -name = "solana-transaction-error" -version = "2.2.1" +name = "tinyvec_macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "solana-instruction", - "solana-sanitize", + "serde", ] [[package]] -name = "spki" -version = "0.7.3" +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ - "base64ct", - "der", + "serde_core", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "toml_edit" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] [[package]] -name = "syn" -version = "2.0.114" +name = "toml_parser" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "winnow", ] [[package]] @@ -845,6 +3137,26 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "uriparse" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200d0fc04d809396c2ad43f3c95da3582a2556eba8d453c1087f4120ee352ff" +dependencies = [ + "fnv", + "lazy_static", +] + [[package]] name = "version_check" version = "0.9.5" @@ -918,7 +3230,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.114", "wasm-bindgen-shared", ] @@ -960,21 +3272,29 @@ checksum = "7150335716dce6028bead2b848e72f47b45e7b9422f64cccdc23bedca89affc1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.114", ] [[package]] name = "wasm-solana" version = "0.1.0" dependencies = [ - "ed25519-dalek 2.2.0", + "base64 0.22.1", + "bincode", + "borsh 1.6.0", "hex", "js-sys", "serde", + "serde-wasm-bindgen", "serde_json", + "solana-compute-budget-interface", "solana-keypair", - "solana-pubkey", - "solana-signer", + "solana-pubkey 2.4.0", + "solana-signer 2.2.1", + "solana-stake-interface 2.0.2", + "solana-system-interface 2.0.0", + "solana-transaction", + "spl-stake-pool", "wasm-bindgen", "wasm-bindgen-test", ] @@ -1013,6 +3333,15 @@ dependencies = [ "windows-link", ] +[[package]] +name = "winnow" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" +dependencies = [ + "memchr", +] + [[package]] name = "zerocopy" version = "0.8.33" @@ -1030,7 +3359,7 @@ checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.114", ] [[package]] @@ -1050,7 +3379,7 @@ checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.114", ] [[package]] diff --git a/packages/wasm-solana/Cargo.toml b/packages/wasm-solana/Cargo.toml index 3cb7dad..f942172 100644 --- a/packages/wasm-solana/Cargo.toml +++ b/packages/wasm-solana/Cargo.toml @@ -3,6 +3,9 @@ name = "wasm-solana" version = "0.1.0" edition = "2021" +[package.metadata.wasm-pack.profile.release] +wasm-opt = false + [lib] crate-type = ["cdylib", "rlib"] @@ -12,17 +15,26 @@ all = "warn" [dependencies] wasm-bindgen = "0.2" js-sys = "0.3" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" # Solana SDK crates solana-pubkey = { version = "2.0", features = ["curve25519"] } solana-keypair = "2.0" solana-signer = "2.0" -# Ed25519 for deriving pubkey from 32-byte seed (solana-keypair expects 64-byte format) -ed25519-dalek = { version = "2.1", default-features = false, features = ["std"] } +solana-transaction = { version = "3.0", features = ["serde", "bincode"] } +# Instruction decoder interfaces (official Solana crates) +solana-system-interface = { version = "2.0", features = ["bincode"] } +solana-stake-interface = { version = "2.0", features = ["bincode"] } +solana-compute-budget-interface = { version = "2.0", features = ["borsh"] } +# Serialization +bincode = "1.3" +borsh = "1.5" +base64 = "0.22" +serde-wasm-bindgen = "0.6" +spl-stake-pool = { version = "2.0.3", features = ["no-entrypoint"] } [dev-dependencies] wasm-bindgen-test = "0.3" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" hex = "0.4" [profile.release] diff --git a/packages/wasm-solana/bitgo-wasm-solana-0.0.1.tgz b/packages/wasm-solana/bitgo-wasm-solana-0.0.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..16cac8eaf5686ea426ad0b6212d7a985df4a0c3f GIT binary patch literal 401620 zcmV)fK&8JQiwFP!00002|LnbOd)vmbFx=1i6=U8>V?-c%L*(Uka`?vSIihlb2{>9muCi@(I&WGoh+VAx9i~eA6anXl%{ej-U#D9Oc zg`c&zGF$+q0wm!_3;u1$&zEbDXx_@TrmHWXe{pZP+GsR&iLoNz02^5LjrKz8tZpq& z`{N%q{I?hT{#g6Zf3(h<$-l{T)nngif7Uv)wLM)~j@@y(+M=u7!T*NG+UGAc__1bM z=WeLIc=1A81FOv}o0!KMexltyr!5c;lXz43gpYhfR&O5cx304!?&|Sd_|CPKE645N z;K$E{aeq&{AxK|BmoGKTW&{0M`~3nyC*Dtvxt1r^|Gc72BDivj8qn#{k}j6m&k^4L`!46bKmc*k4?atQZNtB{O3^UrE+C-b7)E?|sNp z@%z$bgMHbRQt{rHui=k-?a3#Aba>}OFb-mOk8OR-ti{rCSMNZaB{+p&GHm?OwT?eD z4&pr6Kaxie`iHZJOrQzhOWE>gV?jI|J{&#L-Jga+_~GO8$QLum)jIg?9WpKS!$s!P zEL~^itR9!7cWZdUguSUTpHuDuUNzhghTEGH`(}0fG2{gQhjXRjh95tLzw&Q6f&eyW zTJ{hBHbiUTm?B~bDtv_WhJOS(I}U`wF~i9aOP6?z`#uX$_~ZQkg=Vkk^J9@HF9P6j z@~&pVC;jK}&wpum9BcUN>#rH%?mk!_VVD;o-yO$ywhjZKi?9I&p~G_MNbAQM#Jfewnbucmm6+FGpwxM3 z1A&n5o#n}#+>^OBog1DPp$jb1J+UofPYK;EIkKaFd!qr&kwS)i4(5!NvZ+UoMol~$ z#rb{iq-Q1H%^6W8;0e^uhmOfXVc>+xxhRRC32P>SFTSGrKnfyU7}7W_;(p-69N~;$ z6h1#AHsvH4u|pQi$0NQ=6(@TLMqXsHh$RI zqJ5|bUw!ojY{&2DXWDCXcz!;(4)#*q zYz@-{^VIeBp?~FM2r6`&;oNturw^a(;CJJH2C~6VCGJLCC@7pkdF`FW52RL(aS>BX&UI zuarjadWv36`myL?VQwtn$__g*uOg)p{(PmqV*WWJdV0$6^n3g_Z1Bc{e*w^GClpD) zgHLfuN2a)YKwBRv3s5ld&|^(b>A&#N3dn_kyz?jN1k;IFMtlizZt49KKHwAeaIg^@ zV{{i8F5#N7$%7AHhmy4*CDZ-(9}Xj3|{yCz~6lIl2TrBVUhWTEI-6)zY2vf5Sq3!u7+$|PuRA;16K zvR79xUDtSwpbBOv??NdoAmy9Zfxz`xI|Mif25}Ejgux3}ITMDEXgM%MH=g+ZB#`Mi z!5zp;em@F7>r0OZ+()CJzho_Q;5PhL1(#1Ybre#S9t_x(^9}tj2h^1_n(%fxz~Y^Y zJAcI6F>3Jm!lZRzp^0l7bCht+vF8Gn{jU-%fRkr~=7aMjIbnV0*%uY)f874xvi^5= zmbCxR^z&B#+oJvdSrc|^!S+k>0vwD=#_iu$Gb^N-wTjq2D`KtQ)#_cX-c_yM^_%kl z1rFb>-2dpH^dm2!~{y=t}!w{p_rOtQ0u^d_V|Y z^;zqc**D9H1h=GPCBe zpGU`{`k^@Bx167V5>vdG1WnJfXATn4n0t<9+#A-M#(iRZD2w)_Bl@^;1&NZJZMtqa@UfsIRgQvZAU07FZMky-JIyG$DS!ol( zY3##GJ{gPUoUZVAJf`bJBV_S|z{X3vEKW}WS5 zqg7%orpKI~YHuBHb+UAwDXN+x$)5QwUg5M#LDy*#vYi%sd5UVJWGtVMq-w`KkB>^yn@JG>aQ`rkHwnxXLpCs=I9Q}tA~I#{cNwK`ai;@&MXFgjw(%G|D&F7lv!bB_vRp%U?)VddCNIWiDpcHDt&Q7p8Q)dBqxg z($+MGrjbP!#?M@0%NsfNXv$jdebi#07w}iL?Q^2NeE+#!{a?StSkJirf7x&K|EfNp0eXx3WN&jy&hd|x>-}$AUi2pp( z`xmYL*I55=G^nxyCosRoR7wgJ)lMTfzpk-d681o8?mX~#hwy?ve5V8=x+F{h#QT4y zXfFLIh;R&JO7Hbx_Y&`kgHQr`xBeZ>dK-pW1o!!V%mlrc=GV}Xd#Enm9>$5w$>T9? zMhvr8=muICqg(1a`t(%$TMYGQ;x#oajxb^`)X&7r=E!C5>QnTVna?6brTA3pfK@Of zu1n10XGQO~WtZEDJL~5-@wdrkU~w1X?J?s9k#;rN9^Zx`B$|=TViTxt8M?MKa6+PP zzmJ5&)a3k*Ge^EAF0QD`qa?hWULrT;tJ9!EG2}7fB-a{1ok7LNc96R<=s=@-VaL05 z)^pQ7T4}eqlh|}8flUzhH!;-dIB{tE%$=iEK(i48`_F%-@Z_NBk|`=plesg!yEVL9 zh1Wy8&o_RT9Ee!!Q7}UeK=yhuAv7cewLb&*K8$vVN6;jIf`0FU4mlt}+fg`r-pep- zh%rVBU;@x{kSpenVQQTR3`l~xJ+7!qUkM8FV*UU$kcoD2Sy!o*z z@A(;TJzDzBQxJX^>=5y2B{WT?(*8b*VA}RjsXa%n&G|ekSB4ii^CepoTA1{CFz*>E z_EA9j_cT##a$CA%*?Z||EPhISGsn8(V?XGd+==jW7DIDK<7bk2B71^o=I%I;2!f0N z38*i`K)^Dv54uR23;dNTM{>l)K6yaLA`??YTLOBdBUN^|UHF69^;Zpa9U2KqLkC5( zOz10FRXE*#5J!IzG1Ve{pJz}cHq8Ftr$qJa$h)OY{Qq0F|IW_OlJ?)Awg0y7|Ci_g zlV1XaA=z2k3R`2WHO97Lj76@3TAM8I9;7wFS`(}_!CDin=_XifcC}_#n*^rf_^-Ia zKbqWZWCv#1e;57B^S&Op|IRN5m#zJ`jh{J}f#-?GaHG+~0jFG5|&IdtxlvC1S^!{97znb_?H(Z1QPEAC2K(ylB%g`(wEVO-T4y`&t_uKNlal znP|%d!?3S}QR(j=pw-9cUj*OLzp-@G*Lk3dGkr$d83TEND%^~r{h{9NFqIJX~ zO_PWS03E$!(+O`0H8O`YMA~}HT6g~NS(xGJcpQI;C_&3#R0(3p0URUzHHr#fNY*B# zEk4P_&wPpblh#kcaQvNL&h8JNDX&Gq%|Q0Z?|39f57^M5;_e05vXkBN=)aU@lh|^A z8NR%BThIizB+B*h{n3Y`C@IoWWnI305to<`eX*`v_(~KE#|}<~b>s%Dj$EXQT*~N2 zUF`_=ruZb5e3G!+$D@P}M8A9hUmySL<7tn4BGb;wVZgBpfpitvOo%e|lKdR78PYX2HgHz-laR*-k>&J9 z0%)QgJ`8w$!vuR_4H?6lqrKy>{0~|rSn|k6>XkqE$D@RLmOwAQmk5vn_1T#ekvjn6 zfgGWq0rf?!H%iNBau*V;0P7>R|LeOqKlhmMS+hsYz{nQrf&}w$!L{q@<8)5ALT&j8 za4~Rhv7X+FgAv2CU|KL{ZEfy2OZvDQPL1`=Emk_@(Ki;MNpZ)3q95>vr;GcTBCq`L zMHY=h%MOpPwWH(6J~yTG?~IN!$4i%ff~Q+3{CH{z=OR7(WJdr!0obwkOk;m=d;RHO zHv1a}nchVY7?h7U-@bu$1BqDAfq{H!SvWKV5m5CsbRKmzn!jTFj;zKkyT#v_ zh#U$*3?e5kP@ak01NkZqqWS+Q5{{8AZu!GPo*Y7M> zZWs3U*8=YQIfj3F|q&s?&h66?=)v2x4Lt|#6DbA{bv zYnxyX>FP?DD6zhhkrFGMXwyS)$=~={56$~YT1z1WYKNZ}qIY7r1jQqg?RO4M2Tg1a zTeCSQOo5-lmhRpJwm@_T_Uq&JjOB9vNPRrKxqk-oeU^w6popQFW!Wa26C-AU>7A$@ zMUF+g0M{0w*#%$NW=F7J(-|1soDxgC%Ub6zr?_4r6*CR2LM1`P`XCbFDD$XWw8e zUkUjNH#N{h1er+N3(1NN&$mEMN^~5J{_*kSuiif} z`ZdG>K2yR1wc`Mfv#xd)!Gm=HZig%w_;RWveejUVH9;PK_l0uPBePX^`q1(CMw=zJfnrt~#v! zanzQhO##eLm){+06IgGdVmUzjfzg$9McoS9$JKle7M|_Gu_^gBVJ`xN98Pa;O-T~O z(28Re<_sAewq3p^e3GxV$PT5;*ol$o9t1jdDWd9|kG{`j?2M1O;puXvNx%>G%3-pG z)A}n-i`jFy5wlhA!L?Q^BKT0!koEzJV#hf($>ywi_U5oM?nqMO7O{&S+-$U%o*tRP z#VI4I5K@Lk61e>A6h7%3tyi;?t0R2WVBOeYOnmd^r)R-2xiaR$D~H5*J*J6uf`vu5kaBy~Url0pOhtDZ&_L^PU`!Nnw>;&Im zQp4lKiFf>(@_%U0$G`v6i!`W`I$3q3N*z}qncpT!iU1*rq9+-vz+R1nWV$lnwBo`e z;LSgwn2gm-a?-hoY#C6q8lSOz;3(9I4w971yXNOQ4)Xq(T3O)HvNjqeA~ zgmdbPSk|>bAx%m>9v%$*m*kbT1e1IPpnqrCVQANjz^^HO{0q6UJXEe}lEC2HKVnyT zf2Jxswjk~^EFO+o?4G)yA0$8JT=R@Bq-+Yh!9vqO4Zj%~WEucFnz@8@0@DjOykh~Y zAIW0_(82iREIhuU&N}liuCrbeGhC_R_tf-39oI6g)#F>&ab|mu?}TA|dLa>xuh z@1A3`L~N>~%PYrj1a}uA&y*om9hK0OIV=)kyhJJb=m#ZTdS%k3AEI>WRZEwCaMGoh zlCF><;cu@o^+IDLDx^U88{rt_OHnTVO_7{jGN?#PE;SklXZ6gnjIA%6=gg}vT%>~$6Fzc;+wy~hyW>Skgg zJbK%EWQ5mzsyKN~LMofznqq#a*d0HyFzda?g@=P@;u5REw)Z%(!m73pZ#HhQIYR6G z-x`)2P$g_aFH~dj3SCZ07`|B&8$-IAf}X?R&B4vZ926jq|Fl-OuZ(3g?2%;vHonZ6 z8q0k9Lyl=v>D)xmO??%`Ya-?(ZhqsQ|sL-UPV=6}{0d9vC*aOH{7u%CT9sSU# zqnDvh^DowcBAeZ!>r2noiGI3pzJW}FeclE=&S>K3cPP7Tau3RV{esw0NBgE>tx z(^@!YvND5s<-(t%^XdfvlWQz-UhxUMH2+ojHr|>18@}dME2p$3bw`|{2Ux8fq`dGL z9yAL-W1h^5;O7#N>H0t5wQ#`mWX&5?WzK1(r~?XIkFU z@yM|zU%?O2W|$C0-mr%=0msG|@5i7xeDxfMrHM(-4zHDei|F?-f%UypOTrZ z2Os`G(~EILS%$HGB#~HTq+!NL-&i*=*u_~m*cD6rCK=4n`NMJ&_Tk_R6VW}>*hoFY z!{jhOcP`GlFteEENt;=$wE5>G>GD=7vPe&I{(H?1NlZhk84FrDgVr#hS#OQB^AyWk z#5tJpj~1_I19w0uaY;h%zBZ{raU8owhD zq+Rp91R7NVSr+5fgTu35dVW2#m)b;mj45U=o?-4{bjZ{$wV-lgQTaM}A!20iOC?8=YVl>#GS#H?mjR`?jj(ARs=YTUHb$^1 zvKRLxWf?4i4iXPddPLc~2{DdCsh1Vm!aL{JI=i$2Q++gD$IuLfGu43(8|2G;?$z#7q+cF!A8c$&r> zS=21R9eF`rNrvHI3fWdhbEj6ukZ+i}!OGRrIM~A?~_-!+{dpr*+rk6*edw-IRhO z(xK+W#-U=Foh8oYl1i{oA>SK~pwk5B{d#@QgJL5M%6YFPBMqe^(Lxu)cxi&LfTWNa z-yOvIKFOTmrOZ-)kLqvJEglM+^^1SRrDZf`~2shvJkrMUDP%44*c#RAh z(GvT~8Smtm>5*R6+z;wxwF-P%375^LuC2s?F%LaDXoXNVT8*2Py0<*dCIo9Dpf7fH zOI_MyI;aq>_w3m}h-=Lr(}41U8H=;{&V71kGM%qY?iHpUTr3m5yoCde`Hc-vdmvai zo;Ts{H43L?1855t>%w7OIodr1he)!e$Tx#ZQA=(Y`4}l!LS<&%iD{IvR0VAELg*%W zkwQ`*C$ixctnXrXONC7FVic0|AHze<4lgv{?l@1jG`q3D@c?Pf?=nYMYkTj3?M)TP z-5B0nAY)f4;-yqh)5sM?yluV@Q|e!?WSCnkJ7i8WPpm<5gjiy)C(X~8l^iRzsW58A zo1IM_I^xQ8ql?p(6T2%XUN~1BG8DvcVfDso?R2w2IBYq(zeNKa0D;cMn&d3qdIiN-3{C4e0 z_*-^CQ$cI}&j;y$jyf1Obv{Q&t28!T(VMI9Utq7^#K2y?rodjkvcO)w!oXgAe*$~; ztpxV!haT9gH#o3YZ)jkz-Ujwo<{H%xE3j8@1ADi{92Euj=5Pm$>u!ZPA`|VNHzMFP zjWsf8SwWz!zTJ>-eXAkgdZmH3`u0P<^(_V3>U$9Kt#3EvTiUZ$rN;F~i%?@BOjC4>t5W)>gdLPz~?atBDfV4?Rj;uQp0tT&gx^ynM`f zl#X?Un(Nhvn(KQXYOdE4YA&u=8-m`R$gNAfxB#~P@PqV+mkvSK3x}YiCp_e|6CncK zuT~xUkg+|wVGIkz253e-%w#^dmZ<7X*X}*5L&NjEPo2fmv5CF%m}`9jJBhYl(q5i* zvoJIY)D%!lI;e9?p>HRGy--E=UAj}%tFGrqs^=n|$(sdw%Xm?|;fUXAXofPc7GOgzw#zZw3Vlo8m|HVb^+;%K%pKX7`xp9_9rPypSo6ctL^oQ7 z-z_Df;094^1@{CDPYR;E#OSFI=pe`0&VtcOgrSuV1QYSj^jxN8%PSf?ma#jDv15{` zF?rDg^f>G$@i^oAwSh&b&^{ttdCb9LB zA1E0+tK?A0XdOFPUTU4y18zy?vFt?gEl7R?=wCe=_LO*biKmbZ^xYppoTZALKN$hSEY9)GgH6or%_=s( z*e`FBDjNCw7h)3^n2=q9!%SefvBxBVtawzBONv~Nj}b=WS`Cykyz zhW@EIK{I#3giNPzfr+NE{qHSX8{E7$P^=ka)Vq;!<}168vF=UW#w3vMeiviAhtejd z=#S3{UFY2R_lvVm(xaXxi5yCyZ(Q|AICP^DS}H+i3Z|;}7X>NuPiu7>QYG+Orz(63 zE_XF@`V-4ZDsi8eq;lp~7~d7rcfxo}NmLmx0wTUJ@XLSj@GjgVhg`4rw*87SQF&r0 zt30utr<7{2?8~N=sO~b9Rd*@i-%>+AlP!x5;qz+=mZP^iFDTZf^#GP?U;lc5wkZGDC+nWLgw4QYiQ{T(&QFv)_3s$5fS2b9dCz%zOH z6l0@Y>c}}u0=gP|<;_vE-a9mkKZe{u2`up< zvH%vU&mzmI1NjC?F~V&8K(f$u+qF!pc`B)f;D+xd3m~NYXj0JwUdGhTBgW>>C)Fm} z0YBCHkWzhnZ_V052TNOIH_B1p zMUClEpLcb_MYKf}U>yE0_>xrrqNz+DKw%hq(`YGFJ%L8;$7LT^n z)uSzCuDaAv`g$F7>B(Tqy5&+wY@#zx4Vm4$;1XHU{kZTV$y94nr1NsL7E80l70c*}35QVbN~NHrq-mvPoUJhB({{O|tld+Ji$I3`yt4|-l%EZ^KCaq0 z>8>glrjVonGb-ikEyJIg$GXCKmVTHkbS`v+>$^F^^~#TM{g94uy&*@qzCTBJ0bf|z z(_XLQw2%5?c6Roc@DC|()Or=_LYiZys2ZW~jT*5zhgPO>=oM-lGKSt8{X>njYg1YD z3RRYDf!Iiu(JNDB^i5P5Jyn$nidNkk-tBW5R-_M4@ODpg)~n@ug*B-R`Yl$xG3Gap z3v^zD^{XsTW6@6-SGD$tsVyATS!OF@YnH8zJ!fv%#))U%jp;*Bm&`$dF|{eL=i|_* z1jDj%JVX2N?)#S~!}E)ebkeRiS>q$oM;c^B4AXCnEhls1j_9nR4^YtknRdHcExl)_ zr^N0(Sa%i>#xi=2dvl6^ozix+2OlQva03{wC%vh&IQ`~tFMoWkpTNxi@5y+p?_v6y zv^*TTxF(0a8l|lz0N$ZShRmd*b-ki11Z-%N2gU*pUAkDcsjsy0y)j>tv33F*2_k3A zDZ^sepP@|*kDOoO$>3m&A3#WV$Z_ZfAH!cC?Db+o+>hh3yF#4DvlOmi*R&0oC5=l)BSNND>e&wxeY40yseYmV*5)_tfJzTf7W< zbxWpq9ujQz;AmsSW9-pNh_p<3Tn6xa(A41Qa+7-6#Bt`tuw!+Oa2U`>uuFPXBmA~Y zshFjpP=@CN#wkjN$Wj|{oZr6)w!#D@e(~u~B0B=~Te<`ks1*wk=4B%hls&#sqm*i| z%J%Q7ES>52>BLT@LR`nX#5wLA{WQXIa}WWO%!um}b1)LNu;>>80k*-U9MHycsX$SB zKBRq%leq&a&%tzz3JLbEgBP;|L_nr1!X6cu?2F&1A}ukUq77o^5khvt!NNxvp1}XY zlM!wR^#a4lTrXiKFoHs(a86hNy9Q>ZHJ6zi?%G@7WT)bcrO)t@=fIH$R;(5jm*?U(+63&=*>NnVmJ;*297yWI)z){iPXqpp~-O{^cN^IOY zVX0gVesv#vNx`7^C5czpC>rf;g%mdq>NwWHc0wRJprP^ zi}l#`&qj~Y6-lLJHFAc{+(r^@V%x~i20*klriAUMu3>uybNc};J@oiHOX3>L;7khW zTWCbwaFDGCYHZSd5!fXK%l5%i5nPH1Fg5hE5C_8C83K{lDW zc8$rL{LK5l@q;P&=NjvdiIcPr-W`9!Xe5t)ERG|3ZBWsIv8b+!V4H-+VTf%grC^yB zhK;&43X+J6ClVkSDEyS6a&hLzc!;1F(&%1qGCM~K>RJ(Q}MklNrcwEs@A>|JJf4i$(4!Np_-{wq_&MaqWwrwUMnQ1 zBO)- zXq%8s7adB*4LQLR@?>f(!`#4rDrA;&7*U25recc0)eC${6P9Fqrj3`uV55cciDgBk z?{;XCWZ_#H^K7jid6S;@!;Ggf#;pV&_^@LdeZ)6Z@=*UXm?s~GwifG!hM-b|zsr*v zb4R}%3K$7~gYQ5i2E7-3Q#g%nW&sAhaBL6eqwkIaK>5qD2%z2q)a^7tC(z351_`4x zr&IwnidhJtY-990;Ul+K#&U~w?&Ndt&&J_HhpZ2)RJ4wr9K9U5%|fQ9na^j z8QL;Wg#U?GC^O_tNBc1TpCA1fm#o$JV_;rUzsX!P$;z7LtvG+d3^8n%$l?{Fv^rR`H^NeDe9y;9M!+BJ1)3WiD53P_fTFnZsjAUV2 zX$iqnQbrU;=@;{_OLJBy!2uF5JVWU8fY&}*JT+=jx|b5)yd zMz*=LRk*W#w$PMx*@{jRWgl6EHT%*F_9dnse-Vvp+J_o_a{AO*lP`V3s+?bqtGTC$ z#@@NTir3UDpiGshp_c)rYRx>gV^yJ&Stg!kqbI_V|%Kn*<|pEc4_@G(-I$Nc+lgb10hTw{D0ohQeAE~T`R(>zLO zh2O-M<|w(0mK>~z5bHGvvA!Qdtk*8Y`XLLk-cTXd>l0$VN+H&Z3vt*v{OvVQp-@C{ zbH}MqSaYW?C7`*ZHccptA+%dT3`H;e%}?x6Lih@Bh+NzGo4(v_IkR#p57Jb zwRhBqcSoIJR?9sN867e_3x37JB3=d7r*@A5uY9>dUszZUByN>jG$90K4G2*8D$M^FM9_ zXPW-;#xk?N(&+SEho#pTkA9ee=#7g&uOsxlnwaw{g3T+9GT(K0d5v-9hZ#`bxJdFk zLddI$9j_v2oR5(fafeBMXh}mbOEHf#CS~U63!<4NnTe789iw)cOr3cXX-plop>n8( z&t6Di;ttS16-&vU0(WFeokIW8@^%aTDwH^VXA-B^A#wVFNu1ssiPI~UIDJEj)0HGH znQ~H5wcK9acxe@_G9uIT>hZZ4>{cu`t0AAg%5v5(P)VLMyDUYYGQ(%oL#~DCvn&1< zV*K24%8g+Dy)Fuk0EQtS&-wpjVF3~;^b9jC}xc;cYu`vgBhix3o z>Y#&X>bTHy>DZ=a-)J5IK3?H)*n}14!x0uR?F}&jjM>Tb*0AiJ_GY#sHr{nR>zmuI zWMY)mu}m_v zY?#%uwXsL1I^k1|waI!Ve(srfW1j;kJ3P~FSF5G>?DUki=z)QFYC2Qz6c&J-@@1kR z2W%1c;h(^6)_Yv`R?aDHN9mn2@N{YYe;mjYzHBGKn$b~0RKuaLf6w(!Lu^jxKsRs2 zKN;aCo^@jr_w1*0MbvJvr}S+zw9M<-pRxwqB`=L6C@4mX=FoA$NYcLI@q zM~t1yzc9glCY;hA0Q4VmKk-jlIIwyBZE+yF!%WtTrF5Hslla3&wu5+STL>R;WJ%s> z;7KkmoeHSEW&K_$5z!}I{JA12VU_r5a86WoD`rRA;y+0^6#uzgL2g%u$e+LPju)vJ~wc*q^OpdB&O zhK{#8AJ3KV-Jx()?%feoniRqG>5z2Xv@V*>T{O}oY&WT@_SMNC<;&Lbuz!vRWgRx5 zs;Q~6iEa{&*5Z*Y=+U5BEj42>q>gE~Gae;4rX&6kwtn{PA5`m&&Wn#)#W8)8>IV$I zo6gs8^3mbwvsiRuFK^-Spqxs>7{SuQe^+r`+p+Z`gi_uo2`kLq)z0HLrNRD zs_qj=MORN9yGE^@GL{cy5uKg+h3K{%qoBn$%oE%iQ;a$ZsuI%); zj%Xk0Yx;MOU|lW*-^F%rSrgOli`nZ@zyvQ%k&-C>eF>^RTvJVJ0zk+cOspFK@kyH- z3tT2I?R#%&Oi95PD+0YUVpLzU=bRk@i*5*SH-N0mV30g%iJYa8VGG1N75{u`tStfpS++@H8+fposh4%8m!$@ za3|fnFYws5?PMm_#I|kQnAo;$+qUz|#I|jlbMpS*v+L|rwJ-O@)2Lp3)zuf>>-l`w z#fsl>9qOBMpiZ1?@^qh)AjC?r`g217mrz>*3lbJLYlV_9-N$c45N;v;v+%p92+brU z8!xlwdYir5hRi4_>H!xAKu~n<@PO>#E8@uzyP7_|GLFqlue)}m_+8XiwQ-E%$t=u? zKXjSz5@fqXu<_nR;iA%b%Mj$sv9T11FK&I2ugyR)fI?eR2{3NYnAg|Q?6q;{u<1qj z94M{>f`S;93jyqa{jKxzRKl3*NjAU3c2zzsf!v;0(~9nxU_=(>%X0G z#V5@+NF3eOZ$yraM#dJ07kvj4a^n%9Ms$_H)01x<+O|u`Tf4_*X6P@{7fKvrRy4YZ z2))D@C>fM42nI%FKPufh#Fl;(@yB*FWEPr0mFTy)6x{5k5O!CL<2sj}3=Gs?`wy{< z834EkP2g zIt1}7OFP;|(PxCs7xNT6SSkB%Wn#iCTgW)>J^*QE^N4N>v`e~gwo$17g~G{RuK96Hn|h9&UjS$J+ow;fYOa;7 zW%>R!O@|mMRi3i*QaE`l#`V1FxWv0@&UW_GSm_zHlJciV?%Zd?nr~Ax{CWzwr_@~+ z*ozq2*Cw<$l%Nqg*kkCsf6(&##V-NCtxw6HBqiA#ss`(ZKc(Ih_~~cZ(hd`n>wvDt zze3u_#+E+>!pzs+vX#MviFCmktm{egjQ6}9IKN=>g3lG3NbxQY<*Am+O+;p<$QnCiwZ9&W-=r>2@hHS#EwPTHTH%{b+AKoI?y;id)Yh zZv8t+`3w)nl$!Ol%-Su+4;Z(~DWA1Q>F4j#9~%|+}Wq98d+2!e7IX25VM@-CF} zh(8M_aFje7qd=Yn!W@f4IhIEc7Kvg$(jEu0g7VcyX@}VgXLc6|&9|HD-_n0zn^-;A zGc-r~yl`}58!cqNTu15VnEhdQ;LF*;H2wBDx@fFFQA1x_Vmfq#RvwKDgXM!P_#7MC zj7hI+F7{Vxh(W~CI~X!&1gm$0QKjd#V?-~GGWrb z=<_z#87gXcFm3#f$f>3KA~$~Z@xhV}|0J+yi(X8SZ3O}hZts^^W8~-~CnLqN+Hw(J zSDP$26$CUm8CD4y*+oC}?`ds4xEe^cW5D6+&YPo)cMi?;gbIG*?gF~VGGifj=DGMg zGybjy-V+P;o9z`=WhAp+Oidb+=GJx<7afbx$tzIclYw}LSW?o&_DBdFMR8VVTpVC# z2GZDGU}E(VoD)}7R(#6KBIqE7Y~%buxx(3QconCkQSsf>IAgG}v7emrF>>|cB0xMP z5?fGTyyA@MbY4z?2mkcbz!zv<2S*5%;{Yz1NzWyncjO5A4Q6ouF9P~gD1j_GpJnH) zsu22c0B{-9dO#QXkN z{k#s+XZ64E${Hp5I+>rRi^UchA-1y9HB+efTuyU^GN`3WM>}=!Q9nb5u(Yunnbq?f zM{lID*)Mbs;)oZN+qgqDYW_3>Z}2ium?a!y5Z*j~rh3mJwufUjj|KB?n0#s9ZTfk$ zhi$cz0Ec&IkTlZX=VUz&Q<{0-j;<>4E>g@(-GAH-v@t}jF1BX@gS;eT1Fe05FrCnS z8B8n>;mSO$?s&0fPw-p5H&#ku8$>rsSR;g2Rltz)NSZB|Ft(E|V|r&}Ex(nlkJ1~n zjljBKamlvVsIIpJAVcQS=t-9lO)k$9tCu$RILp+VW*Nb?l#vO!T34idI8 zLbgKBw_~>fO+@>iMvhfnZyc_P6Fm-0cbEA&6*6eCJyScaWT3Bs=f*xdfYIk6qHP53 zIe6pf$l0B7atsirRKrY+S!nOykn<^pmxoBcF#XMigAjd+Bpe5%r1Loa`_L%xkv`yb zqa7Q5;{5z8&lmV_8o=3+8Xd!2U0fAoi`Jzl^B8k*G)UXuIn6B5>hXS)&;ZoK&|tiO z2n%871792WGjjK_*cn=3{lJL8j$`}Ai*2Enp1yV>vR|L0T{b(m{f z9D-c*%-Q;S%lVfR8v}Y zEkNCKN#glDHfQdWnX$QFg+onQdb!|ox$J8Leqz)geKzh)9Ua`%4j)E*l;8S!&k#kL z9S9Wgc>PzNyv+0^se`Mpb#_=|_xHeTp#Gcm?#3cA&Q78=l&P4QN>0Dh{7Dkew2dN!37t}dd*hK--E-kg0{+G_-JVq_PPZX9B=j%eTYT8)zzjvlUFTsX4f zXLvIhPegiAnKWs09N{Q)@S2+p#N^xSFJydo2dWWGx+SwH5!ZW+W zQ1*7=Wc9afESG+k^LFDX@2}oZs>=0SPu|`zrqJ9G4-cq zfBJ15AKQ!OxX#%PHD$Il_e=3~ML^XM+^~UMA2*qOyhAOIUK2;ytWwAI{{0GdEsXp^ zQ}%UoG)Z-0s1BtTlDJW$SM1S*Q(7HPg89H0G5G#p|uc zKl1&$xo@@m;$*6+2{qH7!ve78K%~p_`F(I8p4vBFSB84=0L+J*OIP-@|!2wW!u@qj)h@@*j#9S^tBln z@Zetm+8u5E>bd8UhG5|=`p|Fh#>hpfcJ$EUTa5tr{mKv#z%3K#AU#k#$S_oxHda>p zFT4l+fNjftxn*SSS~Tb2#+5$7hZCQET;+Fc$j-5>%`1nX;lNWNfSBQ`VS^CK8$_rz zx;&6uJC~!~Tl<+F?a8!fymC-1LAK}M!pNPQqo<3LNSv-a(#8rN_&v#XDDV~i8x&G| z`ep{`wcW`<)Zj`D^xoNVGnD)ik@6&N`5oLsE)est&u{6`SnQ2Spv0-v{Qif-dM}X% zx)RA5P~3SuZMhnVV@z-PspOP{&JS{EyXCRL<50NCTO5?rVyY$dNvn=2CPo`&+RMg% zpXGyGa`W!*DO%PacE5jpwz|Un6~a&X3dOv={9Io*kMZgCb#N&e^fq56%tD;rY5Zb?s)H~Y2A5~UFO~Cc+Sv~I@bX{wTmmTue$cvPzG41*J{V7g zHr~!i-a55Gc4hATz}WOBov0uAO@v5FA-&K*T-t+y^SXHAe(Gp zM88hhD2whs5%4QUu(ybT=JOM@=?#kE^&9f)(Cb(k zR9ATls+h?Up;t?zm@ho{L!E{{0Yx<=q#_ItgXLOAJ;NrMIH~Y`P`n6^bma zchkYe&K=2-c#G*Z_U@fHk*+0=O}G}38Q5EoXQD>}v~LUzWUg0WEh;kRsR|w3s6Op%M^y=^fL*6{hUZm<0DU$ ze`A1TXYhTIcK-ol3(+99Eh6NHifAtDuINGE$L5h7O_w>80y=SnZs#)?N3i4Z@^vz( zkc4(x*6>rWH%w|G^lN0u6aKA)uqffmpJ8%`^W$C*kM8C3yjDq!@61xHj(wQ2{va`E zlb3*8mu8+mSFHRs2gqH1J)^4n^=zmCyuO6+Q~$4Uqu*|c_qW^cBIEz>ZlC&M!gx)C z6OQ93u(T2hLV6Ytoe$DF#5p<|J`4Sm?4Vx2nDa9pD8oDyF)-F=Ml7luX#5(^YHH4c z&YWMoh+;K9c7fLSCRQw*ZXWt!&odkdTRt~i0=XTOf#45v$-%IpR1H7}p4%Vt|8x7Z z5An}2CLS*ho=lXmvBg=Lyt2nZsfKmjGYU3)b76JE9v-v^qHxnBX{CL2&F%Yix6KGS zIOmyKlkRof0XQ&_3E+{y1$+=_?HxaSU5>_S`Mlyq3TGMy_pL5ZI2xu$K^znIi>3JB zf5HY6%E9ky7n$W=K;=;aaXsZ&Tp;G0fBa+jGv7=KA>qbGGVQkeI{byJj{Ep~n&|K_ zmBNjZk>Ky?T$|f}i|N-=RMv|v8-66#>x%IlxMPyL^K7u)?j>K8!F(p*aIn9;5cGM!L){ceI40&;m)FgTBL4I7}i zZ>e|UPH@Ojt%348@}MS;r&!L83^t~F`c->S26A5`nBrS76VP#U?EJHm>Tx-a+7g0^ z=D6h*PyU|G_8lTYzDPsEF2sOxPj#$mfFUk{xA7civswj<>E?AkrQgxSWXT&C@E3t6 zh!eUDJg=&NoY$Y(}x(DN26%A_%;+SU(j?pCjaf~9PM60Y{6#-xWP?}C2L08|x}kP+JgySj z%onrf*hKC3dV1GsWCL>U{j6=gf*4g(MSG??PXwS*zUNeTYk?gpIam+shC*`W&?xZ- z3zMr)^2#C(9Bdh14wAcT##qgF#^$sU%^sl4E_}3faRhJqG@I8nIWnF>cUmmn1_DlYz$Izl|SQC*$ZD{w}=9EyR89NqB)mkQmH z3GJJ@vu04BJ1QPX4z~uC#28Q>Z|z$#nXi_og{zS`TyO1*9wK-hPAOH!&pmC%5JKPZ;Men!{a2kTP2@>+pwsJ(rK+?to`3ETYxa z&|&qi$I!62@%QY+Ghr!t@bc5{BmkaG%)I-r)?fl?MUc!%uqB*s{Ik-4MN zj1yKDXIr~cAK}n#?$X&)a=mp3PXk;Z0Fy$=DBaHY52H=QcRRKEa8KO+CX}aOjC0NB z%@QLndPbA8^x+9v-(?+$C(!Gep(j&WAtBE12c`v!ui;_Si^9aTGzJoQxcfL#1r-OFQidCFrRpe~+OaF0Vrj0kMOqTEf>j>u;nT;Nj)|eY z6&pvyvhb@yw`#%OXpA1$I4x!@fsnV$Do}P5wldrckvS(Qc$to(;_@n-q-0p^dr@(D znGT{^K97r-Yieu%Sa&)kD@%P@*}4t}d3?qu{E5kM?7;!X{J~R9I{GZP<$>+|#-e8& zdJa(32)pfK=&ZfuYz>UStp#!*8L=!9x-!zPfKb`5+ml!VpL7@Oh5PX6aE;Dc#*^Gp zvnPQ$KcnN*ztdV$=+N^jhZs&yB4{YHyAZom?_BeEvkF4(6X>jfX)C~1g4q6=; z8TEkk98e9E#N*K>Y3l2fP5}^KX*|DjG&gjS`MZ=Du^84@7@shB%fN>5RTP$hwHIW-&%v^oTV9cYr|UWC7Jq_d#jgy-7Dik|?4ZzKv7V1$@)SEn0fkn$&^ zpKJVLV2!&swkO_^!Bm^*!;{^NX7H*)%#KhPgUs-sjsD@RMkM}XVa-w{fBmF{VrM|D zuPPf#ii5U*d}k~oienlzB#Eh=6&$EjUuBxm|B=K-cc@D^HP0};#;k!1=1OJCn2=PI zLY|vgqi7tTbMWz;k)54pqQs0bg~I{6>tvy*MtYexjAG+}VCwZcBqniZ6EsMQHx7AK zmm>jeED;1|d&@P{9)uVdcmGFp@*BJV!AQ;<)iYmOMh7l1uWHCZA^*5)I*N;PiH$Y* zl$^+U0<9kR+jVU#%c)nNI_2J4NCW-;9v9fIZ+T+Kzj%p$j`U`}8V!Ta)Jcl?*a2FE zrFC*e`-8=jjC3(l2bC*c-h|5R2oR4Q6OSCi4nHQeL$`G2<`vv$hZ&&Ad*ua>rir3+ zy*}&TR<f5goPB}F_URGDc}La0$P3VW@efc4Oa312@ggup@FC0nhFgtbXa3*Q|fHI z__MjdaaQRS$MYZcu0$>tacMUEQoK{;zbH?^r7R;ViY*_pPL^3RxaNs!Y6O-^vhEP7 zn&OXk!hH)>UiJoR$;qdZ=E<%Fyf@wZr-E!_Pk0txW{w-7H2~u5d;vPiBD|(-4Rb_` z&MUcYLY=tbrOxn7R9^5Kzt=*P^nB^UHx-35(eA?4Xj}WU7BGJc;es2MXwHT*4L`0s z!|?>T!G5%ao~R?)>L}7&1%Lm$I9h;Gdr?ATI-Uos%Xp?^DPCCv-TKjxmeqO|6f;{I zD)8Ij!O&2{fjtSOZCc)^WwZi32qS%ISO!o+Wk?HxS)U-N8Uv)>B-IC!TJoR$jD zf_%GJXfk|LuJVIGWA|SJ|Nd>@i}t?_{Kmfqe*9kp-+?^nR`R!wpfJvS>t6$Z^C9J_ zxJYx8POiww# zBtC35{UxAn^^^t?%=fOIHQZZ~hbc7wx^}>8dlu_rt54eztd!*5|Br{i=lqh&wC|$M zN`cS&p`L{p`uouQ8I9=b?@=p?3H~~j`uh%_Fo&fJ0f4j=VcaRLuZG%oP+UJPVcOn_ z6+?#Mr+G7$4jQFz05`4`X)wk13602)cJw2oB7N87^xu>r>HtOb8z3}6_R&bRgg1_O z_*(sQ%uZ@r;}^`rxU9ce1eU7b`P42W?hVDO(cQ6-;#L=_oE@4{zKC?*75rC#iDMA# z&Nk%QKF18vpTc`K_dF$vb}rg6)Q3bb1n)^{_= zYBjhzSv6TJI-Iv1#OWQx0v#X#9pK_>u?Nvx=}tmv=SXDXc0HIwn6_h;5aBmlrlK}B z#xJGQka;s#TK5Seqc_N?Hv57#Bn|9aSn5+JoDI!Ustsq+n6xS2A2`S4)^Y>e4TG65 zn&+3i;&!eJ{cYuyT));Rd~DDBelU8fAV0e68hQU6$bX~=5jtlL7CKM^YjYX6((o;X`XChARnGzfVJi>>@d7U_z(A?uAWFgckkZsfo%Fc zD22W7Y1@R6fAv9+jBJLv&=&LDx-(WhK4*;1A1#f}hl?#qFUQ5!#7@=K{Cae~{d#(y zf!{oMfZz5an*HA|!#95IM8fKyd-I83d!F`re+LYBcMI?IsHSK68$6Q1s>GK2FK zaHRbc0!X#XqzFGS%B6a<+x}`ZJPq66)~LT^_BxB~zdOZGCHaGN8*%6M9>EljxM_C9 zhi?yj^Z9AoMw4#;zZLVCz0nHz?Fy+3#c^w9#9M{@KEKu1cf8X(+hN`=IrR0ggW1G= zl_<*C82GB?RogIwb{3ilp-{{2h4N{%Byx~wcT6teLCk~Ig)~ELGd+cAWGWAlrXpDz z#2rIEcjL*dWegIyD^y*6mshwnv!{Tg^*j|c5VV#xNGy5?!QNS)gV{u&HnnNxM{QHm zFQ~7!7VxS)5)W%IU&~=R{Pebj!&lAdgn(4p7YvFtYMQPo-^=eiTo^*x?X|3{4EexN z#k!kBG?BE%TdVvvzZ8{dDd^@jyT)Lx1`mHIzxhF%AXs9>`;-}aa5Pn~6I0ImplV@c z8?ClTn%}JLYTSM$qkb8CfDBvs?$GRdF%1J^C1R(u0a-CazKc8_Eq%!2=B()=Z=H-Q zg;hHio(iQNUAQe{xE$?&9lCo-1;N@!Hb(wiIG-Xs@i0av(`Eh(cojW>cad$`IFFLD zLb1p!izY!fUC+@gfjH-~$EWPw19UUqhX2UmmBcBK0X9Z{0d_R-NAgSv0Ohqh&11P~3Cdu_SGmK4~vfnA1 z#cU{xHUCn4ryBwvpo)KQuc;lDo(0+c4G&*E!QZ3aw`oVb!Sog+NXpiI8W`V`&(=q$F4My_}-U(*x2P{k4W&VAaI#(Wn|5#fG4*t7j2VDfK`2L^1Y zs(w9LT?BWENOW8xS(A9DA#9$iQSrf__2Xg|$z=zHgmSDVS8{OWgr|-omsZV|xowXn znD0ldZI$OFGkf!6Kb;EcB-Q4#a$3bIPtWkE8}1=--i*uN=hSI=N6^ACFPB90{epXy zYNpmNqfH}E58{FxZ4QS?4Jew|m6|aa*K9HG8=} z{VJjonJ9Eve}ucWOS*>|;TfINI(Fo1X2m<&bXt6tf!fmCP|H5pT!Qy4DAmeD*6X!A<>>dBahr@@pAKPRd`+Zj>p_ zbri=c#xZ-c72?mLoP~45+xhdO#{7&J)JTS@4G}1(;uhG60aVAs9>Lo9F#gw)2mu&w z{Gd!-?A_$BBup-Xo)zKkiT>EZ*xZc5g=yTlZ}?2V(zl891tTsD%Rel`H^o6z$ixe! zgG5up)kHo-Z2B?5#f#4tqb?Xn4~;zyUyBbu?^75%_$q4k(L7%F9FWj3ellr#TTv8C zSa%;l$^xcnIGvd^M-XxjMu|@G3Ha%or_O*~8Sd3x?p`2%_NG773d4I!a!;n$vxD+m zs^gl&kdd#|4*jmu3oqYIEUjllv0KnSV{Ol=IyJz0bZy|1{Z_Dyg%*nz0x8 z0Z#E#csEZDhsPK0)6^lr^eP29U3QxWRp#)$s26?sJ(%l2t0kON>Jun_j*7{sPQC(BaRha-<6GaUiGIjffeuFMlYbPOI4J zLM!^iSG{N>p4_*cQ}K&N8>1|KK382Jn@p-Kqb&bkF8m_x*)$wRRLJ;JKiPTTFW^M zi;tEm@Qj-XSR}1#3$i>|pQ?rt4W~x|N5p;NNtfffY)LF1#N1{x_H0c0+7~`f@ucaI zzrr{s!ZNT3UGUL$fozZr)~CWzrXF9ODHdeol@IF5HDRuuQcc3<3cKs-RqYdf z3!5XIwF%FAz~VDmB=4(?q{e|KMxt(O2M7z>2G;-$x=(P3dVdHRMfgbsK6)XQwqk)b zH4HX142LJX2aT3~r<7`n_)@I+54!lFdUFn$&S-)ywl(EmqxXa-pzN6TX^U|J+4Q|eXehx@A~cYUH{|r)lO}S%;ITj zyQ3dAU|lP>L_Jb&+Rki>jsTsI(0 z?vsI(_YolCb;kN#TG1~Hm9a11X8&cO75BFMnq*ID+wgmE^!MP9f6H47IrmNV`zD_7 zmxcAP>B)&>wmm0A>*K)am#AiR{O*eW{5M{((6dE|&DY9EHldnLR+UCFtdh8*A9k`Mck1r6bg;lKx0D(x z+OP5Cz=uID-wSOK{_SXzJhd9Alh7il6L16H|s+GMM!w!kU#OtOD7TFab zotmJN@aPfG2?bM8O}bdQwN6{yB=K_hS4vN6)TW%HtLieJw5o57rfqZlq+27Ynlp9B ziM$;+sc#mOw%N@CVbMa?YP7bw;B*>fljXj*l_ostFh*F5E0=M33a!cLw7jYdn0lHceH=j&a!90~2f7qdT-V=!1QF%p}liROtWI&wK<*XqK~Urs4| z?fGR8cO71T;K~eF_Hol z!zRiNAo%ehQK#@#7;J-A}Qgo@Nswt zNUK3!(~Bx8fzM7Jd?KO4{M-0DI>|1r}OVW!wk8I zajS!o5M~nEff}^|Gd;m};kZv*5jOyeO-y24#X4(3I&_1QG@wEuK3E68=vRFB(QrE8 zsd4rR)~n5zh+0fo3pd1LUh8XsP!Z+ggqtzqIy~HE?e*5j#2`r%psKI^S{xl062sj6ab=Qt(eXfxl zbS@QAw9*@OWKNunX^oB%6D8k$kKM-({8u}m!-#;UI?#17m*Ha6h%jujh9 zn5grN#EprB^GntVp{rr^z{p3;7qaCMUOekCgQ66P?1`*QnB6p&xPv>vkCGl!?YS|x z{5CBLH1lGBX}Uu*9J|P2r9P9}5Ln9?B5Tg+OcDm3lQM>brWJKXUx1>~kgzX2iSV;j zV3w33@FS=tMty+6Db_PFLP<`NJm|Wi- zhdusdNhfK#n=dmG5&w>xPHwg%!tue;n7vazEEATp+)QaF>#C%>{KK=^5Ql$ z)@HQ*QHhEU-wiL$2Ih$4xD_%d4oWr?@n4dMU1?aq#jL4H6`&EMiJG=2Qic9TzaYq3 zaP&?_bH>Ihab8ORHj$r;6)M2~O2n<%Ax!85dl5)u89M5|zYl99w9m{GsG72Jqa&2| zNdm=@TpR0S-9hb9nnfVduVh?Z!sg*+Zn582e&@uW_yni^+H=>&7F zhhob}yciRlk!gkuBIE{jXI z4^u0nGJ>~HS`m#wZVh-WYwk06zgtZW(bNz`XM)w#VlrRz~ z7aYHMQARFnljFoBSR#f*TN1~QDAHrZMCg@5AoHKM+@FM_J(NhTqtz(1b!6>;)^sf# zx)A-dl#Eo2JJNx>*ZRm5McwqrS;h>$Kz)Z{jz?nFaDL=OPv3NP4=t0cJ_#lmpLq(a zKCaN&g5-=p;DUO)q`qc_TX5(A^YntQC0aq~gU0ywsf@d*uz{L)qUCEJn1jLToTtKB z$x-LdBj!|3G&^NKm5k1q!Sq^mHBzaLWCZzdu2F=|x#OFN8TIaIB*F~cvo6F%=ff#y ziNL@BsfcdXrH<|=$4{GxPjB)1TCyh392-7mDq-aU8gMD4nN{r8`&Zm*k&AL4T+U{f zvybq)++1v-Gc7r@g*t7_J6J-}#mkA_YtgW{*E4oN>a4pX-nF76ZTos*QhDW^h;@OW zb6NS9NWIF4SsK|jr#75puN*pTOK6G)-1-vU`nz!MBz=CoaYsuAz+YuvyxGNsAfTzm zp_P9^R_-B+6R3w#bzaNxZZBk%Y5MQW-_>^%hV}}>U0upV2?|d^l$K23NjOuAZh8T4 zI50Hf9a5_8XSWZY*7vQP)1p$(i}gfeCg3Cyc>#U_G&kF6d<6w$;US%cV{u9J-y#k?ONN-cCORXZtP>u&)vt$i{(lxrLx(@edw4plb~j^q$N+t0WE%yKZ9m4 zuyYLIYz#OS0+6^Q-=k{H!kLzhV*8>ZwsJa}W7mtz#a-r= z$x=hg#h*5m$#O?aNZi9RB8;!4MH(_oNLGI+#anMHlj)?vG&j9n8oP7{)86ku<+)Py zBR5kr??64uD}6rUG_{@8(6qhD^wtfT`Y8(4d5NP}ZOXYN4^p$GNg^Dx>Qp8~KFk$rrp#N(9m6b*m3{G9sdtw&0P*BIj!{!-&1*{AU4ef*P0>xwVg)3TpWOkR+2E3{grB%0lbLz<0Y$1#mf#9YEN*rF9V-A+mrnnpujF0_0RPa` z35C~o-BOIlqJQ}a3gOeI&sa2th{0_X2wv@^zs@gUWiU>XC;z0@2~5n|B`wa+!s6F(`;k0tg9S=%Rk0edfZ_f-j4dC70e^- zthMur4tkQUDsZf@jWXMX7{6uhqM)akKdX6t}i+A}dU z=82-SqI(pfnSIs&i9*N1Zcf`X+O_jn`y2qLTS+vL+f{dA8tO=1i6az)t|np>`(kmQ z<&rvChd#41UI)H#FHO7(94*i>ZS(hO6%iZftY-n)lSc2lBHBpOS!hrL-RaOx8AJ9_ zi0jpF+F=WNp{`<D0>9XVF&X85-a%pnn3#q8#%3$ zNF8)k6GmihT8=!5h`wI3#ItNaqYyQE5co#~R$yClcL#76wnR%g{@*+%KjS(`M1h3` z62_ZXc6~8%fB*iqGlr0L3B^nLSc`<%IIP_uouC4m8oz%OK?$VBbOQ3ZG&Ej zlLlRbj@O-W6EK4$@Wwbx?z)xZkz9L=r$=K@6MH`$NPj%u&h)%cD)Jhw4Ns~GAI~L+ zhH~o6?aK>kq>BCkX3b}MJRq-LzU7y|{FotMF5{R01v4XTuO3A4Bn&n0=c0(_7jE^!9tCmYCK)jF8f6(o9(E`RU#Duh5hN@h&7_Q~?a)&0{S*3~!Wf!puP!pv zlFh70hs$*i#fSlRi+Vw7PWA-If%2R}uz>`_68{NoVrRuaz24NDl3MKL5~z(ui8BP5 zbF9Ng`IH$%#HIoU<~)|QDBIG?Mb+O_c3ai*sa0PBD>VyJ7SNl!j1a~IWah2_E&sz94x_zOq>!7>IRiMgf)@g;)>W= zFq*rB^zn+Ru76?Yj*C6&S&r?6RjsV^A$x z!7XmDX>x-)vW*2x($0Lejl8pEbC#HF{Xy=4p-D~IH$Wa2fM3f%;D`SndlL=415udQ zFAtdPiiSd|o%2R9Z#I+M+S%!c-OnQG`X;#nw%r`{mcCyCLa_(@CB@TQm83;ekYb*m z+7H(5iWFyp;PQ45&LF8}qcwvb>A#pHXAGzbw;vE~2uMQNSO-Q1)T~LidLHl_N_jsU zb3#8ffMGeZ5Sc2ZJ^M4uHKv(mAbN17+J$;IAeV9|a=WorBBm~B4xyLy) zVdt5ma*9MjuML0W_!0%8pGSeF@%U!pmYJ|;XtPm}7^ot15U%&asAb(L1k4!EjwN9w zYq=Dfh$vrp4*f@AL&2Ibt(J}ZIFOt!QH9JR72!^Ua5DjR^CoV|w4EB`qHFTNWO^7r z5L4Sw_tFdgLL}mX!gH~4cmv2NpTes;Zo+yaoNR(6Uny}(>!43~e%Pl?6f@t;@$^D8 zNtsm8ArG(+XS*l@k5)3DFfm>)RX`yb=;o=XgP|Zgs`z9)R4;m3gwTiEww-mgW7GH91jQw|*J$y=nx81$N2$xg9Zz~89I170=`S(_yc+NPUcMSbjlVB5eGT)drrQDO9BO8N1HJGnDmv6XBl zDOpqC-sMjPEmJAq;e7qf$fnSEl^rcJYDttwfQuthE{SX&~Y4cSQdMiVg_J!bGyz}1M4 z0Uu(R^994D1A4fLujh#{dc}yqlD}7?t&+l%t@35nJ%+9IkX9*J+Cc04=Vf%*W=gm% z0&`5YD>V-+cY(7?o8_K%KSxU&J0Vlf6PbAEZwF&Bu>i6C{S~)mkfK6Ug>LWfQ0CK# z-?M}EN2oy2@Uv4csr=?wf4|c&>I3nrtFqsFoA#pchhdY;^wEZ; zuT|Ra)y`F22()gMT_WqMS-L?!&QNFdGkK}JnxJu=qhikFz+bfQhijB2Zi$Z$NT!&I zp+{q&a;>F@=!>UVXQ!PkR~OyX4@Hcz6bS_rqrf`A9K$OpFXKMUUhtF&{1>XIM^(aw zhoc@dEXKzT`U7@J-ko~wMr%boQMPCgU}KYL7>Mo=wy5cDvQ^voM33b6A6*iY!zj;q zLvxVoqw#wBk?s_ud$({4@jfy|L(LlU|HIxp1?SR6;exSk@7T7T?AW$#bH{eR*tYE* z+qP|M2b2HIIdkT2F6MHks;j$e)qBzPR(1EP^+>z`-r&@Vb3}}Fo%H4!$1*17k(Dkg zvRB*W5J_gnNa&e(M2xq{a*jM6X!kLRj3Y~C*8bV9YbZe`nQIxr=k9x)Nk;cCCHzbG z!?pKGlow=UI=?12JKc}@M`qK8GU++kSg0S9i{#(ON}C?NG9SugEAh4ci!~ORnL}#} zM+cjB*?=uE?}pY+3)nWq-nXAvl`PAPCSQtb)6U~_n`BMrfX+TA3pkM(J4bcL)oK%~ z*SX4#O~+-Z1yS#t!68X~_Q#GZy<*{143_ie&t4-ZhN5e&Tf+wbg+ptQ9VC-ny|D?Q zniw3@{c#BH2f zlj>bDyQTL{3)M{qH6~AbYTV;;)k-H9>wX(h$b^G7WuPw=Q>RGPgh9)mP&q6OlL*q{ ztmNAau2(Yl>D^MXhFmkaok(!_#l3`x<@Pr&oUHE5JnK4-%wlUGJSSyWnsrRio|*($ z4#4vk@u(Vj`AB-Gn#$9Hd#$q@eCkKUzqIc^hOx`#$?Fzmppj9_wk^u)jh%E$HdBkui%mPtsk3Tzt@0ZKPI`bsS*MO>WhQur ziEla7`~4{aTL&p=74NM1rOWGOmJD<>GQmPlbZ+#Oc!PNvt%bH1xE#!`$UoA$91Bh{ zm`4Q(+D%6m3Z2@rw&7&RDqR}Ysn4=^^GPr0S~jF1Y6^LDPZ8xQLlEnqlIJXD zkRbKQLlvWaqO$uGhH9g~%9cF?aB~JKwep)$s0!CcOSX~W*n5cUeOo7gVWJ5hR;VjA z3kfwL7bccdGg|S&{aat(VtVvW;`$v`O_ERh=`)~>W+&9FmA@O`V>u&lV^gzYno!0Z zy)?aXsO6O7jM}_r~B+!8O*jYbG2O^<2IU@ za&BZ})JCtP8@@w1Wk7nzlowJ#LC}O3`Zo026kRrU$?ucdKkB5R6X$xUr0Lev_jD-N zF|)+RZh~6NNMVcEurkgF&9DM{*%=b|ZBj`G_9bz@X0T}y9sH9R=mXqHmO-dTZ8(++ zYH1bLlu0*NWY|J%s@)@2HR&~hChWb2qHjkQ$gVWMVH2?owSl;)J-}UL^h%#u-}G2A zWfO79?abv%5l#R!Sjfs6zPN~{i2TH#YLsA~QX*>DpqQJD436$>1aoPxnl$+^tBRvk z>rCf1Tq{C{YTVk{$NxRdRWeyvc_LsrVEh ztnfY_FC)C9|C+3lJzFG6{^~|g5-9nuKZI~KuI|7hTFeh4 zJa}t0kGcMlZ`3f^c;mCpsGWwI!rAdOlK-zsNzEaDZekq!qMh|(ye;*IWe3-JkKlV6 zYTBddymjQ!Djfsq5CL_GFaujsRV-JvN*|uXOP*#=E=&1w8w8ja&=a84V+r(~<`aZF z$}pa5jBtSsphRnRDF!i=E>p|45Z$u=5nxEhNyfg_I|l&TI-xmCCvVxX@K5`H`U{Tn zMmD#S*lpzzx51zrO-1vlM>CT~kP*;QlW|!Xpe1to0HbyU^alWLj8|d2oJqr&ks8v1 zPu1Yby@F;*?A!b;2mL}(wnO~;0J(NB>yicq%NekwNB-!{>9Ym_>#SHGy3UV0XxbI#U9D!+;C;;9-kzhek=r%$A6v$f(|^2J2+v z&8CL5sbMR6&tkx!ru@Lw#w6H#`ypqEtyi*tYltRXwWP4v3{x(~n-O;^rg4PKHoPp|Ad(hZxGjoE+(vx70zc}^h_fYsX5>lZkXleV;( z8n}=|kKhp#SSUeyJgJw7JDUCY} zEqNc$iZT8#G-ittTzv~dAJ1bkirpr2praek3sRf|M$AFfkV<>jc+#Lr4P}WD0q#k& zrmh9J<}mFc^N}dTBG)g5l7lmk&7c^9!aUx#&PC7(*m@;;8YqxlG^ui(_1Iu9RXmbr zxWW`FpE`&T8R5eN?4GQ^8Yy&CDh4`HK|6?F36nGpmV!yB54=!*SqvqYOS0bmOys|O z7X?gM1U%C3o~iPmQEBKVLx)JO{4Ru?5KHK3Yiyl%biO? ztUKxLMrktTMv#f|=Ux`XaQy^@JAwk`Ssv{m)LgVcv7qRxlA%tZ z9C|h3zY2x(dI1kIm>-~D-$ujrL4^}1)}Bmp8ZyaXARp2xQH_b&L&l*4TzFe>zS;t& z%7uyhQc?1fh@mv-Q{=p`RVXPruBw+QU>%8aeC!p^$t-Tu}Tg+`BNkh8|AhloMw7sJw($bQc=fz*fUX? z?>q|9+=CKfYSg2-2y|*lKhUKK8;EZpNZ79Rm|%`Pcr#_p4Q%LAjU%%Dt*YSyfaH_r zg2}MT7?K=yfa;|wq9SDYb1mW|mLL!_tD#*27PY#8o{ELbvE+}(*KEqOfc-SlHVPlm z+AZu~BSv&hP|@X+m;=+OABs&--gDgxXDVC(&=hNetMFPL{B(hk1el3uqRez9Tk{2H z%W}{id7A#Q2M23L^?1?|Z=yfC;Qpo2Yi0XaKygDF{m{5kAmj?^R*%3*O7GsZZi|*K z60A{ImPE3%Cx51lnH2OK>HttYWat#@xd*Z_u#IyEt%=l{C|7p)T^A+_7OlO?EE|iY zO`_#r1&oIw8**h7sXOLZ{^RvpL`@6&52ck|pgiXKRu*-$J6KfiGqMW$Pr=VM?ppfY z$tqUWQ5a7L>~TpH_s|+AdwBS4u-(f-JdA0@Aekn)a+OMNghiWV;3`ds^`pLk9kzIEiV29RU zlZhc3Ou5n#!o-_RA&rq=s+wlkyrFN-X0xt?|bGe@XYX$W^d1iztM zgJ%NhmrklAOK&=Vf7m4Gglmo#8!+q2{YdH5!cF(Pa0kpzP)7a3RIPv0c;`Z1j(FG* zWz(5OF{Op~c9mtJ^Sw2LC91;|31?xV?6M|Dp7A0A?wia}NaYO!K8-~BC(2={n6TwZ znU9*%P^I29wo&on(jd8yU&X8Ak(t<$Q4QqO=uey+OJ_0EoRBw+NTecCGeSg((HRoO z2xm)usOzi5_d~%N1aee%h*48uKWqSFwVAp9yi?(e`kGyHdn<*C`-T z$KX7E^ku&a%X#W#k#elc;?0&y1dWv3!}TdY6|1?=zkkAgh7oOlf`(P-o!lm}V^EU>h&R{et?){onuv z!2D6#q*5t5mQ&2wZdWJPt-3m??^gQFX;iO4p1ePqbMRM`c>+8!Z{W^@95u+P-h(?~ zviC%o(Eua35V*(%CafhynIAF1PX*CnIE3O{(NBUqDxZmk?^ohWorq(UkvAFTpn=|K zxv~Sud!8+wuVFzI$q3|!A8gq-nZloEp!XuZ3ls#%&k;|xs4oiC^rYHv*t?s4qO1Xg zD;(;j($WjI*})*t9<`61g>QngZs||?lKFbI&$!aN^q-}9-;AhO!ZUv?FgaX=>*uqo z0CS#6vC|?vx7~#E05isbUL%~7bz1POub!NDIJ?h23-FL3BTOg?b`0F8g;JK7@jpEg zq6WRGyajF%xCNE8O&TIu<%A(}a&`}0IJBP5554+SV!f^t40+v@Ly)VCy zM)ue0)8O8~3K)3ME&usBHchUjthChzcgd0t=Lu^4ktNFXU+SAEo5@766tSWOj!O;; z4=RH$Pau$vBa68aXB%}gzT4Cgw&jtOpp(rOEt0q8(%mQ06=GJK5IplWG9koHgoJ)u z!*XGku$g*!aj|Hvy9zWOE*9r8*0m_>xIe5P-avO613X-oEIv+zx1p~VE&ES`(c^;tyOEuT zk68(|U1}R3@0pZhQ4AV&LZXp{)J^OaC@^5GOxz6~PDVyX(6|Hw3djj9U+bu1>2m?J z;|^#-akKNH*w^4G>|)URxRL}Ev^1q1^hwhIIcILq!-)>Rjdzw{(opQ&*~r$fSh04` z4Fg_{St%~%s0z=>*v9KuHKSHKM9T(x?=_i8d-V6|M^VV^w+D9$)1Y5sMB9Jww>Gr^N+ z!?~QwO!z1yi(P$M=r=J#5n6^ibAHMp@85XbQq3woTJ|^mbrvCdMrJ6|=Jve4&Y%sx zjox5q^F?biMaU=GE^oL=aw_-~@h@MLcCVBom1%>%lm)59kHMU zS=Ft)+jRHG4AUX)t+Tr)a7UH9z}@F}$mX{r(HN>_Q?;4l)xpsQl%|DX z&iq8PqY}NjziR2rI4eQv3G3WI8}t5dC_R!ObYs_p4l`4vI;V4@M!&5i=>V3BntoY8 zAQKl^2)P@h49j$EWV4bkQV24aAuCC0f;d2ck%cC_n7SmZxSjAYbQX$OJ7a&eCF#I5 zZj_&u73o~la0@g)&wEuEVknSCs?9!IlIYI>v)(vRfZ7 z{sg4AAY~NQpyN1j7`u+6FJ^dh-dqvNaZe-iHy+=~U&Xj7?xjV-ko{X5<>0Tt_rr*v z-^a`Ub<$6}%bohxG%2(OHrTim$cfDy^joN}68K^m6kt#KTgS}BriK0zrK-D#K?W?U zHa+Q)($yjFb{H?D$*&=<{-Wu*hF~Em>G58J0AZR@n}0Rfg$3n=V}CtBZ6a`N`2(3E z=+$K&1qY?Nq(M-(^O@(!0q>u4G2IedgcV^AMRX*2Dp330%JW}Ch~Dgn9=eN+G|B`# zS(?c{N^MqU@*kHn5m)f@NQ47ML~$5giDyXBDoYjBdn0BuI8P##n4JQ8Kta5W*?m=V zK{2bF`AFYkpVPoXvonn0h%dAYeP?i3M${{f0Nsp*zAap?^i;+k)y5t%^J@qjF#)zL z+t$)tZvM6`>+!@Gz$b^C9m+v62Y2twO=yl*k%N()$)%q@&BVJ?u_Xr6hMxj|rpp=l zJi{|jLgjd#vRKAaG2?Q5&#@0Wk}>Yam0_W+6d^qMMyuIRSK=m@gy;_f@4ZwNBDL4` zH$bFdf9%`+?;w{1uU(n(>fHd*#U|abUBgm<%KgYx?*WJw@WV{&Vc>k;pRNd1YtTDsZdgj^^&-xfo|f0^Nl z-ESP9G%3_)Dnj2HNYcrcJzi?)8NsTLzC@i^i7E`L4*N1pO=r%d7uh9Wp&%J`(gN?Y zpp?!nte(!@LVx=or{Mg0&tnpps_xn}F1oKeinmir0Pb#d<`Oc{!=g3GIM5Dj<$oUh zhdctKrsWnZVHdo{@7g!HZkHzi1okgqsOBZ&WfIdjL9E?cqC1RLCZ|rRfvthXYGkP0 z(E>GR3WI!ak9V}7EnsQfi_Z{vV&SK*75TyAq2m4%18FhkOegb>)cmda3~j_p2ik~~ z_Qc)`mfl0I?Sh*ZsrHmm%}~?CUw!|m2Ax@>fCm}De^JJ9I2XiUcY&lU`Hx=_;&6dR zsj>Q6$tuGotwdR;t65O6y4q&g7S{91^C5PqbdVXVBLx^3-sWD4`a!e9H+Vq@+rDN! zBU{L+Dg9Du-ndr6n;Kw}s0PL@+CwhDkEs=x>CehQsmj2FvTI^m)zWne9+`~OfIpJf z2c~Da?!Nt2RT&^zEd!S`Zgvp+|i!qxGATMls4<5`~E(D?N9#$~mqk~O)K z*zO!QyGe5g5#d|iGfOPrIx8uvyrlIJRL>o6Ofw7->(d6jd5`EKxSM8Sdoz6fQZsEJbx3LJo>skNS$n zVx%fkBZR|?_-F70d8C%PUQX5?C&iGeLt?tb-7Ea!NVKF>`}yfAcd-r$ZCJ!5df&qp z#k-4h%h3UR+S=|1oCD>UGuGkbF5BRAe<_ju4yCs!0`oDio-Jz|u2fw>DAuh8qd+$n znXD?=v@`00Q=;2o#|{aN3x-ZdE2R}5mzKb(QHpH>N$}OiLP)YR6(a+Oqj@BzEDR}x z;zA}wSn0rFwXZ7ATbQk)9RaDInIqR*g?whmz55 zk)Veez+%2aE?;_Y4ULwp9W}{Tv=5|3-al-{Es75@Azg;@SE!gSC@o`og)kisQl7tL zbsVTbznw^fi4z1MIuw_4PxJeyI2A_*B_LpEe%hd;1Vd*DV(08nTro4-dmt>PfRF!%c!W(8Ul20c>@_YyC}NisrI-UlOXI`i zsuaT3tN49aN*HfdK?dFuU0p;u(^8 z99!T(aWtPzBVC!7DxK+9`)o_)TMneUbdtyVAK+HQuxF9!sJUWbtJ%mmAGu7(4?#BTG3Ps2Z+lnC1QtaZ5DF~D zXOee^`kbx_rU7-8v8a3AN(G zTW=xQ-J(C3{zrGl)hD_SKB5KDG)mUlYRHDZ zU*sHadB3AkxxF;uqar1%7bjS#vTO(7u;U54B2qeS$=f0t52JL4spr$10Z0#ZS=yT5 z=1aN=yh~5H5IwH7PhT*oYap-Xkg3C8e~Wj&-(LQ{e&ybLzy04&-}Zg`e(NS^TMi&s zpMPDr4R61d&XWATZ~FiF9Y@GcW(yV<*cPCBR&Uv)!qsl%GVeMCMR#3R*?cy3Rx7h} znsr(s&9*BOW226FkcyDXQ8S&uFUe(G_tt|ljXWQh5mvcfD9CH-rI;CKl9)GnnmlG1 z9w54(U#FNJAa`JKsh6v9-GS5x^F*J`cS590GCfrD(QT$Kc7rnBYW6j3A(DzLE|U-w z*Iod~+^c`&HKrg1+6Rk8B(=*Ys|n<;R9fAUIJZ;bWS%!64fC=mNK!b`=nzvRQ6w#H zVk(-f6qTc;K+9B5q{$6Vbibk+HWeCzqO(v#k6II;m1GV>>RXnzT+;))XuGa|COzBp zkGkvNnx2K|xMV7j`khr3+RHY2dHV9E8my2rCiL(NaOs39B%SNJV{F>PY*o_)apCT` zodMU3b($2#{f3*d2c9YI+FK-jcf&rK;~)KIv1T1Cy(SrMv37sMR@yV{mR9=ZS?#16 zdOY52#Pw}4UdWJsVZ26n)hubd^-3r|tyTC-YLzOCSl+8Q9I3cZI}GkxjvJLupR{=f z&NhI<*9UL6cQlT@30tY1h_**Y(d1i?L(oqB$(O2jT?qjO*vVt;TdpOWw!PrO9!Rjl z`wAsK-a}Tn>g|S}IB@o&wc0!zd7*cjUBtur!;!cI7pclpbURsAi(0V@0E?L`3gaDj zdZVFRZp8)W11mcU{FZM`{?o*AL9YC@Y^&L|i1Wp$$OrbDy%mQSgAYHWTW3H@LzG3P zMX4YGCoc%h%45(}BrrpKO{2?IKO^TCyGxVJT0^`(s#P@4En2N{*gos*$IN3}o!fCm zc~p|sCK0TXH&4hC_OOTrfi=drKFq`4rrhtX-0!ys0l%-4neUIc+@I$8#P924=6@Hx zdcIc9Z!seQ#;*$(CbMo|sbi#xp>O)^*EioqkGZwP_!eZUDK5BJKBi5^1A zI6^VySPg_-Yc%juduQm>5Tm=(czN{n>lD&x5i(;q+zli}_=^XgSGZrvQnC}wf`PfM_P<`024U_jmtz|ZYm zLWp7FI-GTZ)DvKyv;r>4=lY$On#{I(4C!Y{!k1e#4%Cjs7iRQ=OVPn_^I-msu4%X0 z%pwyNKqU^W;VaHpUoZ79#@23YL56gIiFvE7!@`|sV4}JAh`3E`TL-+&ZHJ#XDVk}` zreK?Po^(|N>gcY;pJRg{>t|TD2o|_xkJb@Ty6ShpXL8?G-(Ggg)mY0#b$004Qd~VC zyldA~K$`)9Sr;^CI~bX}Ne(!#@G8H#7MR0RC3f-#kBR%biK9s+r&HC>p)pvHml$v> zp_8F_l(8cAMi=W1S5oa}ySJ9m*>Gas$HI`)6X2>_N=&u9=Zgeaxd_qerB%>k99#Jc zF$Q^-tptbcGA9s+w!DOowz|!A>DVl)?sD^&$8`cVp{i*FSaM4862NsV%BQz)XK4TRMm2C8{w6MFwbkpcKRqxc~uiy4PjyusFLt zJ@mS&Lu`KuX`!BE&0Xz+Jyn+dp_{;@zS$*Ts#UfMka~fBUdC;CpJm#x&2x|0w2KHw zw@?q9rJt1}|BW!M`ER>&k-j(9Tx|?IdxQ+rjUZL$)KkZ4?$~imEc2(}Ltq|N&!uWf z3)QbDg9q5k=5*r@JB9C&!&3AICpclIxU!vU1IW8IaQ%X6RTLO49q+kz%T7B*G$pT;s^%*ROivkS7sh?-S zJv(r(WS_ke2b*+Iis>izknH24rm_NPSIL)5EN6mQ+f86-JIPPKMGN&3N#q8c2bNhm`<(iKodAmO zl1$wONkgHmG2gRQ_!K+B$u>u^CeR}%$YKci{k07vS!Zl{SWOXu7b5Qq_-Q!!X~6bX zLmhC=CB$vbzk8sD%xm6WmNmfoQoHyGL0*XO`Q)edNTeG~J5NrOHp|s8Xx&B0G#`-l zDFHr)H1sKWHA0P4XFT^-@OCIK7yN82iRMVhd3Zj{lq()>=NgbRTsE5^(pUvNzE)Qd z6Py};(E09R7eeeyl(kBPJ3|TS`;~8Yk*w(UruB-1hL1OJ#==}=91r>nR=gAB=EAf6 zN=qRP{;q$&Gu&*p?|Ifg_Fg{69gF&|hhC_t^@ZnxWEaUoK(EOQhM0-Q6L!5?xvbmq zy4#S?Gm3E-f}1;>mAv9}M~H5^f=5%co}&j-2Veh^XYhI>_BC+IwAX00;Wbj(oNy=5 z>ab7oK}4Rl&i1jh9ff$e{crncA$M`P5nk5}csD@xbDP&<5k9S~$cM-9eodyL(tX7PayV)${NJt7Z%3S63HMVVLEUJx^4TuP0!nj@ zqUp}!VuLh{R$EvLTaL)(b<}rQ+KotqR>1;I9d58dRFl4=#Z85k4Z4MD173P=th`I2 zc6x5Gpb|lsOGTF2t{^+Mz=!o#aS2kA9cp&nht{=7?#{!QuGOuCZ?F{pqk|vv zJIk3982KFt`i!PnRho*I!ppD+gS9rHmupe$)AUy%fiPGbG$Ue80VYe|-4;`4SNL z&dvRvnfX3B`F{BS%m2@NVjpq*O>>nzdH?M>_3woGTc0~YhD__>yI6UxE%)2r^5|O` ztpi4x+)jsAGX2aM6Tx9qrm*2xsGFSeL)h=wFicJlxVTFrwSa@^4QGQ6joMh?)ASC~ zoZ229i{3lpJHb|eXS^saMC(>%i%cfs&hkxO4sBFX2QX13#}mhqKK*OXYZIKh6waRE zyM@!Q#6b8OE;1+1YE~57cb+{4Z+@9dn%Mdr6#RM2aJG72MqnC9 zW#D}ND-iT*uW1#r{U0jSeyY=L_HtPHkH#!JQqLN7fk>?qk~88*M}UH-6j6H*FIN@W zrZqSv#favFYW@=uLQb*h=D!T|Cl-7!OcFG&H9Fgam@n!P#4GV9#$!L^5o%0&?f9zE zVXss@aS;QVVveo;8k*oBxj~q35~Z~p>@^qHp7j+}VHGw4DvOIdTt4JC<>D0uPbGbp zjxVtI=`^uClIat$VHQd#*S`B z?CRXQGMzmg_gKUTPu2TKJ8`ofSQK8CVO(9$hlCyq1lHN>jEYXV#hNWhID@%n&>0BCU1xGyldd8`CKcT!TpGSG9YWLOT&`hwk1tOm}Gi-U6d4__Vwx)7blNm z56DNKwtr+)3b7x7mcOna4?VJ)(f<=taeCdu9!HqmoFLcSaP66hu9OnFc8U`93cegq*#2)F-cM3u<}rF(H;Et z5X|fl*VZNy2E=%yoR$PtC|lMb(E2jPU6`2u>%qMB$k`-tH&5xT)~w}8yP9X$CsEr)@{`)EqG-s|gfnPrb6$v`V}B%bI? zd;g^>!u-U0z3PzPNmwYwpl*q!cudRUqCb4^){dM$s~oC0v`envH0oAI+#JympCEQ> zfhm9yYP2gMLKjzHlmu_mGy+8om#`2hzdYj-&&`=JHpEE_Eh0@*FjGV^o8Xrq3X$l_>OI!qC3z>*_B9*kYVUHmS!KI5qJf2 z7&%yISm%NL)x%W;yHh;3He0Bk|1inCWll7awUOT^i!Tvu#gpM`IPz(GxF4*je--EF zjtjVWA%z2nO)~76A+iah&N)@#_wZ!t$XjQb(GJuW*n^H>acE1(5%7Rf`BGD}I<88m zn}5Z-HkO#uE>tRZhV<01NT6EV3z>>X`OxrrEm7RD@WE538*66~CeqPeWBSXgsm(zW zO)$Yguoo*pN=K1$VNBFsD<Gk#SOF?!1e%L$0HL z#W-Z5>=H1nWXs?e$F>XgddG5;OXsA6MFlXV0(%8+h#vhQKh?zwTW#;m#HK(u;Lz2~>#-`JOyY3E+q|i%C7nH2 z+ni2~vGM8wfC$A)m8t7@rpBRN5Z}0w&CsPpl<&>-*FNizeG z?PR5ae@f!Cltt=uZo;RqqU){Wf)#fvWsa(fjm#Ks>Y*lk&rKlK%dn5KnY)ME%G#y6 z-Nzwb)n5LpR;EEzKC+l?VfNEz&cHX%$WVpRmcINt@+Q{dKcj0iB3?1+hZ3c$=$QsT z*D{OW5BE#KO;zyZo=_CpRF7t1F$WadF$dsX0!xgEnIMpVBVu`RYAq-GZI!5+fuimQ zr4c@U=eslB+`D1nQM!K3F(xdNx25@rtik5L=DC!w3UyBoDtAV2`eJXH(g z6WB>2_QVB6Z^y`J%C6pntPE-yhKJeWhlh`3+K54M0gZP17sZRngeN?6hmsA{ zCSF)=8Wny;p!`g+7JCN+bI`(^iM-R+Hx3gXs5rxn zlC0{k)08!0bD*KiuA0`96$B8F3&tJDRjX#$lyS!F%t#lDo0g2JUH||V=nnB&d)B?$ zUO?SU{=4Z8lqZd{^WkOP7dv+s?_c_g8G6hw-)0~G{67D`edH3oe5X81nZ0~t{5Sb+ zgnaoPUO1EaG4AgE<^V{H{A>^A;jc$)B>uqE&=GQBOntmwfxak;eoUHQ0TG0M;QLd7 ze8lO=X9_T_1@=65hAt(8`Ji-tkU!wT4mql>#n5Q~1k)4ypWGpS5#)h0bU^j(#zmce zgQ8BbF{I4hjC1(xPzam@az)2L122d}GkoY%9d(M9!$v-tLE6ax*XkAUDJk_k=HTj`E+}vB;ciJ3CGYz^CjE<=g*yv(JPLX*Vh+mx*ldmq})bP=2Z) zWQPf<&cJkWQ$)gfN*5NPg)B&EM&MYcR=r?LP>EV4$)uGqYK*5H`QOap5W&@k<%A{- zU1iF{ai;pT$pFFbIp-`SEu!Xcs^SrW&MYgzFTBd9|@c{8%r z9trY;(nicVC&uZb{MO3W64k1en6JY{DwOC4V>(=!bjd7tE;?wSLKJQ)L+d8a74Z_c z#iB}wLrQw1L-UfEef;CtP1QcRW3$x(Nc;&QkLZTz~GIdkir&{Nq$peh911Vex#>KQXVU! zysszCr5{pe&-QJr;-5!TnZO*LCRSAC(2BH3sU93+(a_RLKJ#+fB^Vh?7PtYE#f%l(n(_}9=KMUJuR%S5)z z%!vn~M&}QTF!X|9koN)Y{VyuEv!2I!jxf0z$cHc!SvVJyUgUD-L)u7W6Yp(47qFLM2#jUrHWd`t5n#~K7XHSy@&Ypp@z0a{b zXLwtCPwt@=n&4(mP=#p|oW|lzXpy5RSdM6Ok(iCBkE*uWx=7KhsD900L>*~JO;RwE z;qJ|;NvDh(b)eBiL1XDkwJax%ZIYg%=}*J@Fwq>dFx3sd70KpWvN2)G11Hy;P^n3! zI5}pfFi979%7O}ldH)Z6&FaRTPYawEiUSTXYi*`-3^!#=yhQQ7rXrAdsuK1b1Q<&w z1qaS-^O-1lCaoDb)6|I6Y~OT$g=Y*6@T4nJC~l$I;V8?fu$;t@(U1-k0!ZRiG8k^) z@FWmbeWfs$^5g)Nrp(E`5!~=<3n8?TqnnZ)AwyDBx=di0A_MHZ#R)%?W{9RU5&hvq zy$3DmFA#ldvuqs^yr*&3(^Z*z6{(|H0ZQ|6rV}e?pF*|KaErgjAe46PS)fzl+z}+U zMtb4NPMShUuSGx_3)4@c#KUVw(4kQ_p^yhE)5TZk^?fm-dFLTIC0V2XRfh*dtZlZA zCw=f)46IS$cp?+RB}w2bWXK1e=3(Z4SL1)cPl?p)7^*k$ZX>?f)%-AgJ;v zNkYoDH2rM|E2c25(xM~WmL0_Eb${55p%%n9Ya>yC0Zvmts(11xk-|0 z?l=*wR-rtRI#n}!I1;7Ljxx6$d|HbX;?L~$pmG(AWL%I)l^$Y_uBvycu>dtJJg=)) z==>)s5(}vbMc;UfJi;PGJVEuhZuN*Mnecvg4x$w8YK49%O z(O`nrg9kouAL^zQy6jc4F6^M~;eY=V$?x6kGoY-y3`g%1^sr?_f~!IZj)OBM1*IOK zNCFB6_Hb2U#S%?>rEh?^g#h_&oSv*>u+|_*iUK{Wbt&@I%GN>=5aQc| zwYg^hVEa#btZO^Zl)n0w_dqkC2r! z%#ac8_ZjkStI^>`CP4o})h;a-;!=Us!rRURD?f*T@&DSi@CdSo3}66jR%P|(0r7*e zo$XR&=K`Q>akP`M)X{qrXx-eDP+ZenDpJW>MA+~*RIM`HBL83D zxA+{|*_oKzP<97xa$co)VpkZTN~&IrL2BV*VCD%3Bz4u|lOtHaXqvt|A-}ze<~Dtn z3qO!WRs^MuVH31%$!iyNZ-FPcvNMJDc5POYU@w8*P!Kd1Aq4dB#c9B4U2s-S~h(YfG*jnja`@>^ZEB=k|BV_y`1vN>?i<_u$BbK z_oZx_>WDK@hyzD#r4Fv9BCvf@8@}J0b=J|8GL83+rAbh)N*CnR|InnQOE2wfzG^>D2xG<<2rrv4MTWV_N#$G2eT#$q6s{+xbr_ZYj~3!SoG6 zZVAYl%O&W`dHa>{0^3>6Exr7cr8d81)K+@_%es;K{$Xi9ms+Q9?N_-%M|MX=!8eOZ z$l}^4uWiI)U&n_uQ*Kj%M)u%VfOvuBope9K5TIkf*5QDMyz_#`t4??423)63SKz#AVhE7K44R29wo@p3tMFkm|~&4zHu7i1!C2ZQ^^y z9&na#Z~kiINOREE>6R3@J>GT3`>hV2$e~3dsYT+c>d>mLUvJ9o*r3i?{pao44WAu0 zQ0@U{#Dwt8!8)%>Ck-R9H?IOh$9>6 zS+i2=!L9Y;l$b7iEz2kZg;b9fw~Fgi8{`Hxi_@S}LR5-!14rd~wp^{v+O@9WF>#&M zl{zgr9>gEKt;sUARp1Y;1JM4{D_tZ$S(W#Ttsg!ft2N3l%JUqdxu)uB*@4?=%Wa*u z?sK?@^oi>?1^?r6T3|n>OX_)9fO|xrxam6QE4wbjxVTKJ91tH)GI zP<5pGLjY%YyIs1MB2;m=wAVM*8?qbqaOEskv8;7ufBHWdd&{Ugf~9Q~cbDL7Toc@a zI|L`V1b3I8_{isp`?5=_xxs z?nT`x%9}e~0`9w>;pGp7P?KRv`{Yu_v zcS>(Su}tXX;WE+Fw^TQ%`j%do0%;2xT5XhB1jiwU*^Q2j`k7m0xD_nG7xh)33#HQ%{0Eaqe;E70QQ6FGV?`4C!mCz1&Ug6v`Vag`HU7svj<>t2a$^3N)Xm zje|>ErahWM5A5?R_-U3l@_nk-l!c0kHZhbAVCHCCH%UzTQz)>L+p15S>8H}e;Gf|#2? z@*gT1OXc+Z{Ixf>?Wxv@Pc9PdtG&Mb`4p%ex-@3+F-umJ9Wr&502->eEz|4MyNB2Q z0}px-S{-il`1JgvoHo(&Q;ViR*SVFbjaCf>zh3F?>>Bbbe!cQ=nQ0|jk6emJ@PsP4UCNBRee%-p z;;o-Mw<;S9m08yiTM{RB)6$GVqF*H(F;4_m+P3(8BAP4y{;7%Vbs;1O+e4%JAO%il z17C9qk*C2E@#B)l_Vv}`FJAS&sm!tn@$JBAi;lfqWDAJpG18oe%QEO>n|J`LZr(Hy z6AsgsyOx8p3gbWs%{US^;W2k5^4qtvaRLiYMw^GKpM4s?IKxl-!e(&VmroKqxZ9>q3p-XRIN}p>!0}|OUnn%fhq_i| zck*`{237c~`ELVyCg^_C2o7U=`o!0H7tcd1o!Y*n{riuRs#i<)dWN_RNz|;s#Q{|n zvb_gGJ_Xq2O1mtdzq|`2ovm~P#{r>}gt!)1whhw1S{eMx$A*LsR0=zH%TpY5%_zLw z!sj2q3Jr+|W389_lq?itN-dsj?!XfUk_6kjHH}~~_@h>E&h)c}Vx;7xo8cn)ayP3! z>RR9Y?&;A)U#BwVq>)8x=dG9i>^@LAh}r(Rel)kFOmE>Xz1QZa0?BK==M;|rh{FQj8Rq#ET)#R&Atf= zKnyybSxNJTmp+u}DQ}z~ULKB_3wYuFK4MA(V%I-BWBJ?~KX@Vf3gZFEx?9+9Vux+10pYK- zz7qQ#JH^3(7z0#gF!K$y=Yv-0ZRqh(zLtz3L5Bz^YS{ehv2CVF8b}D1ewsXHrS{+m z*OI(M0y|!TkE^Jvf*w<3AgCu0yzMQ(o7=ve=gr|T?TllHFjlJwC}UXT>g90X(PH>dzB!33( zvnF&&gFig`m|b`cLD+7NuG;z_CJ11l!B)Dt%ZW-!Tfv55lI1UIO?j{SMH~aV}ksx z2p}uS=q_poG2bu_tbAuX<0!d>>u34YbKEonxd``VY~@HLeL7#`*&yn;T;FbtYVMZh zYqCcYFjyKl^bx#i)goT` z-6q$Q3IjS5)x#WHm|5G-YV+LIu{`!8BFeU>mNioPw)!eteX|A9_qJbtUwHt*{Y{Xo za}UF}e%sEgmF`!SRDsAf_s>mdUtintIx{`bG_H=d~lriJGr7RE1PJ zvX5!NIC-}^cDFk8KO*j&s@m?HeY)2;fmyL1VA1VGL!lpmS4D$YRfs3zw4mkaH-Mkx zHKqlF7^W%4OEF;lj!+>*&@K3}%kb5gMx{MXWjze z-!)afX>~8;5|Bb9rjQUOYgHZ5c}tK6iD|shDZS8XpUW`c?gGoUAa`yeu!&3jwuVlx zjzT}pwm;ecRBArR8ox16j0kZ_&vXx|g`56Jw@|`glq8t_cFd z)dIiDU$*Z#1#N!$$wLK-fqRn4|_^d>p+tF1K1kb3JAw6~lqJVqForh#sz=ZPplU^ir)z#4tZeVG5h4Q)aa0N|TSL%~*W@)?0IPsZV3wxD+*_Z@3^(F8-flpa(tK29bfvjU~V1E9GQ2wj}%OB&xW zYH%O&y8y3RH1ibV@)g1&6mVZNs!hYM?BQQCpnDO-fiNQg>V35xpGN`*@2Lq9uM<{i zt=T5{Ye&kbCal+OG4yDdFykq#zXF+SHFb;axe~m-J6P7v*B5EmVE{r%9pTciMS!@Us) zk)KUk+#36Tj?AXM-Ew=I5b1o~cr+A}o)(DM)RpY|m1`(J9lWw)BYcLLd;FOL;<458 z&}P_tc}UXrA=QK0=M)RVALLKggK2T(bnD!eGmN5gVyS`+__6b ze;rG^TB(D`7`8s{y!iW#9mK)wf5}N(vSh!(Wcyop1o0t%nNb$G>Cgh6z3+RwmWK~I z(XVd`uV>Hi8FT%g=XfF8wvgxV+qopqoVPC@rNIXZ;P<)^5-@1`JPz_4)rHzz>t_+0 zGcYXDy+4%=X?lIj&H&zKjBSC~1}+C~>j36rxiI}?{hambeBj-D7Fe?Cb z_V#|bpnAl%;0X6McMZ6#d+=U?cVN3f5A+w$^D@%kuBVJ9|Kkijee`zw=$8wGO-H}S zNG(HfWSE2S=tA?_VDqKJy5HR6h1ZE~SL=OOV;iyi8sWnRdfR2og-6xfObo!6?Z9T< z-gMrB_XK=baM}L$lh?poaWnb2f&I9R$KcL3vBwD3&Wr3W z;Bzd*YdC9eX)yQFVcKs9&~;PelhgSe)Ajx6?*GDbywB9)L>{gR3_*1Q#Z@t4TN}AA z$8kWCU>37=(x0^nYs~Ugs)1iN}D`=JQ{+*8Nep?*c`0V$8-R3oT*tZpa`I+N)N$H_vNCMl{mhi}{1$os<>DY}) z0n%-cp4yu3d+^=?k6t{$XMupOb9pbV-KD|dONZmP6?%W*i`yk=+HtP3uxjgVnH94m znD~N(;3pUyR}A*NXC;5yPi5ZGy8xc0gc+p1xCTc*4~FFBv_F>G8bU&3s^PYyPIj-u3^`Mz8wE^=E{z9PS{GxDU*G}*x?l1{jq}t|M-Z_T#JOE;a6qB zo2!OP;EkgHsVn!5ZuBc`I4~d=5HADfR=9K0aQLLR&&~n)1^~Xqh%}!jU}82Cd#({a zEpg1$S%S}bA!k*F9s5U)I;S@4_NMCqvwX{`*Nm#?Jw?pd*E$cf3!7zbl82Xxu($W- z&eHr>L@L|%gk_++^1y3fy_cGwj!RZAUB`1eDAIwg?>>SXGu=kO#|2f zcZjNYpsZBLh=1qlLzCZOu%SPT*d>j3<v=8?`0TjVb?CZ%Yv=S! zXvq}py${6W9}0Z&FaSSZLLOq2!TVi|z@blaho+sX_u)Ip)ZpsSH{*T)-BTYPCm53JXHfBO-f+*?8e?MRq@u>NqX54+N<2{Me;-?ZT{i#6I)0vwj;1 z>wHO|2Y8=hcPsIXON}5w`&*mF4GfY?5l3YRIde*mG&#ml(t_> zGy!jK0iC<&UGR5hhfSY?56QT@&Ka!E60E*9k|9rQ@pRdfYzuh<*JebQ*l*Wj14Er} z*Z2Yixw`DbQDY5p)&=nP#aRi_%C&pooAd1W5CQr;q``3obvwpSd>kZ)+k2^Yo}9jR zW1&mkL#iuIBEBETLSdP+f$vW_1NugM-{CGM$uR5(v)cOd(3`(_@YP$aVL#R2@IGRM zft+10ofv}Jyu%~{?TyW09SvPC8%=xZq3nBhM2#4@I$MyHS-tpQYp=l;u$>Q=^j+I) zhi@?mNJl&u;nx+eSC)I3aQ-P1Uwm2$nhSPb##Hi2jRHJ4?_d4FuIa1z28qy)ybp$9!MCiNJnD0Rw&&2_3Rpcz+}Re3!y+%}=Uy z^U1>veF*Avhx5P_-Lew~w@tf4|dyCvnu;>@c`V&Lywj>$$j z;j-n&Qk;ZG^5^Hi=L$Z3G(o(Cw?vPJ{Xv}zg32eSC_!X6!8ClHhfVO42oMS?p@wt& zksAv&%OFN3H7^5ok__ht$iGliePk?oVK_ne5wnR~7pO-g;|{1M{lh9TKZbN-j(0Ed z*mV@U-I=E`?IgJ&qw37j?Ix0cp{4rBT=K$r662GXqDk48f;|sg zgyw%-8`g=lDKOvVQPS`-!nW`Zr96Qa?Fh^z7oCS?I)R42hmz{BX084MAi_9DKpImZ z0uOokf=^Y0R@KKr;i=g3W5X6^k{xKOtZMI~!dg&*xrQ1vd)a>l0ADf#x0*0j1tN$z zUXg;lKj#}%zDurwlB%N^@}-B#(~F4DL|Xw|!_QRoc(RE~!cKhJ^@N=+->tYyRP1>r zlTb8~MY2BLg4E9(ulODYZ=t!&?0QO#Qf($rD0CJNXpni^&ZowBW_F3tOQ)f$WQFlF zB5;ep?~{;vZ&tq@(TeVQeBuimEtLlo+cU zL?pHm(|W|qvWTI7l46IAHzT1I)s|=2icE5(Ny42sY(I)DhV{XIkG;L*JPGni3>@HzaFy}pU*%#QT&H` zhiDb-W8jR?mMocQ{lL1Hb`WZUrYNWXFT)|gYt;~=4L!R6nkqnAlD`!9H>Q?MgPn3vh5^eEAq^Z+CmTO{zH&Asu+5~4V2u4P13p;RSVp` z_ZbS6h1n8~=(6npVCJqtdO3a{TbE)|?WN}RkWVW9@f%b5FF#%*EiCr6AOSk)UOMq- z&G*soyv$s1kDCbOi9^ezkx12%u7vkr%pVK(E2T%sXcFaB9Q!LNOd68~qSs)sFsT3Q z)7twYJ$wa4vLh(hKujfANGIgKQSU%*3kqMca6oOsr?C6qzFHD-UMkM7EMJk6 z>`2Tt`0@`F{9lkC;lDuOH%sAA*wOyiQk(Eye;3s|h9aMwrUVh$rkdXNe?#8%&!s+2 zjQ1xLi~qXR`I5+MNbYPtp-FwR0C#T_M0_^F|NrcN?_pWSmmEiM{)3LCi8b0pbwGlA z0C&I8^}6)-{mCg4hT`OX)8!w=`+qSL%lO8lSIO%XqT1G@S8V|BHE+)+{c{tPfD%Nc z6X<{12>+{nu#8Wc8_h}ILa0)6AtLgPQyZ?Hyx zV=EQwGgUh=5h-Ft3?t=_;90{n_n$EISW7x3qLc)uyW@x@RV7Q(pr|?}AbsUR38%={ zf#|*nUR3yKB*IJhKj(wKPpwupJR10%KkC}LPQus!h{~)|zSI)-zw4v3>>y4#ha^LFljK{;=;tbnm~tc(WT^oF!b`SgiO-TWq~x(};IifX=JOv- zE#Un?)z)%mi%IK+t-!bUH81e#`^2wu5|g@&)JjLY+1H1>sn-x^2|IV(+xr;B^sy*_ z-(q{-Ou6SCr#qLmg&LfpSJI8^<@3rGucOuM$Bn0GGR1U0xofT-E%M*vIWN6S<0R=^ z9qyd&*g6ECPxH;*tCvLNyq?Pd;0cm7tH!h{`Qhe%q7<4v6yhKcsFiuuQMn+B6py~oR6`^ls0F%S|jrL3Pkp*yjZta&j&gF^SqD7}c3;Z!uk3Ex)kwo|xz=zf0)x&c85zuH8 z9PEoGeCcIbhWa3bj=8Y z_iY4`3u|D+RBWM?r;!8?BY2LXB~0In+(U7B*l99zmIm)KBoEvdO4T@|-HD zrlxkMK!2UX@=Wh`YC&S@iAm=u1B43pjC}o;5mOy~{!2`le%X@oz%|;BrO@}o@{#^- z!8rONNt0ffJYKW5IKZe6W2dJJlBDVfV}g87Q8@LNiY^)c)~3g3oGx@QX~y<7~c3*XTd6;d-`468xwtWU~FZ&}tWtrPmo>PWygNBH1_yE3wEekSeZM7y`PeO`HxkjBZDEE>WIC8jVsST-Z z=m3ur0pv^>k{pKl;Fw(chUfD?R2`QnUJhRmQsc+=H_PRaITKzmG!&M@*FBh66?d68 z-A_q5QmOm(x+&%fJ*3F0P$u&vtK>QTlT$@ZeAooFg-mY3JL;HB{$@rlrw%%xZC^t<(7iS^*|V)RS_QGphxbdE(daDosvoqf?}kZ>WoMu~H9Bc1)i zc7l*>9DSVd)H9WjsjnXt&W`ZDM%5=dPS_!+U^RFgK`0R#0Xu?r|IIAghnQ$D+rKv2 zInE*)V}dX%oxPRIbe_xf`#aZ}=$SI20%cC=E{kaB2|`A}>e;%>qswovNm9TZbD zE>kmZ(|s<}eQr}cE>pDkh|EUUNOKNWTSQ||5Xy0eRuS#-Oc0u;v-8wjL`Sb;u@BnY zd^ABz!6Zm!mrjZ#>{IP~XZ{(MGj!w#ZJaQ^em)xdy6=+7v|ZR3O(JARU(9idHR-e< z^pXCw{8iZ1y#ia4K6t&v_&gGvgbnU^ZVtX2TLQjfTWVQ7Nwe=IWHgFeJl!Q-h92bz zz)wU_K#WF^WnLAm7(8a17$*;GmullwZFu!DvjRIrNC|)XNVrA@jSKzU@pH>jF&DR0 zZhksrEWn^y49<)gA<`iimD^OV8SnV{<1=pT8TtC208*2xxD8g=D7IPhi_-|jY|Br$ zwK!Zm)m1yAlxQp)GCIod&Cs@Z(CnqEz1%($mXR)%2#XhDPZ%HsuZ*OSTDedyu8tq1 zJD3sgfyYL*ef3MA0tbj#JRd;Q~SQXvG`&BWV;(M_Tr@522bPZXk zjjW}2`3V&}>`z4Gmz{1>N!vgYL_c}#fznxp5@C@({qAu?wCFIT6#T`K8wDxTcurn< zRa?f&c%p>?$!`joKJzDcY8A}y1BGYbMtfQejk?#29E}Rb$y{LCh$wjklhM&h8UKt2 z(`u#rFjRU61WTEpOV_A}{y}93KC>NV&>6_2XR#?y)EW1VjFR>XaN7CK8EmSEYR1vC z$Ka%~duJ`p&R7ID|6O#3HWVpB!3QSlX(rtl1=^=*b8~r8vo#Cd!4fZ47qPykFiSD+ zbL5k~rui24z$YgP))Ixf*hGv~(f~YY^R16Y*Ih`gln^@rKABHiZI( z;K4hYR@44ABsq?PLcis0UShd$+^FPVyI-9D`mGi8pxPq?#r`TD49jqyj>>Ig&05CJ zy5;4IR-wvteZ{R0?Wt+LvO+1vU5X7QJbVoQi_A@IP|Yd7YJBhP@DQ&1p+t(z5O?$t zwV5lggmEHOMH)9xfli%{5^v&{0s|*yQXg5cA43dQq-+A#=nUGgg8455-9r)HFczl7 zaJwHG*{BGSHNvTXQBfg%K1prZ{C?Tg$80hC z_9;HC!=$ls){aa=AZ7fkrcJFl33pw?%J3q&EgH_28=l9Vb}$Mc|}j>jN0JHbr;s3~%=`9ti^MiTnFg}E?KxOmS`)RPcb5ivnmdpIdi zFMlq{OqhKracNRcL1nBaYEpt7zGAYYS;~~{=3Fv@*%_9;nnE)9zgAj1+KaIV-|OEl zX@~I7n-gQ*p(tH1@rU&JS1I`p-G+VnSF!mpY=(Ni*Z2L6FK{AVj18&ZgXjBDzo)%= zO+`9XzbCnRjYCRbzh}1Uj1v2EwIw6x zQ1bVBSfn%`r6%S7H-Z0H@B3@T+Fg@NhWftjbyg6F{aw%jH-vo7mk{gz&%84S*||C2 zhXzx2vh$Cm#SMGk`B!N#ER280rX~EM{TcW^MN-L0^}}b=RPItv${`6Cuvgclta?<)e{P}neZ3ZVB3Y``TAm7(O+PSwE zN;Qg(C~~15HX5CUMLvY8B73l+*}ZR%mZ}X(q>T8Lj(LhMJ~?D`(vTauAsgMz zdGiS=P{X@~uBMR6jPS6UId|eG83q+gq%4WfYUdn{Hl}ivtH6}@umpZ%6+ehFL1EUN zPyHxw38_xddahiYuOuCz2~pZe7i{z^Ju8ux=F?QE{x#0mLvNumoEf&U)xSE6g*uB? z+2)EuW5lI8nmii2_=MNHGqM&suyZB&$|}p$sWu$kc~ z^LUD{D1%sLB$O2}lS^D?zCKZ|ZU-Q6+0XXd2-9TX)i>+B+5aQ}#INK^$plyl|-NutGzTe^4(=0=NK*hwc6L5d2EYTrMbG80K#!xfZRWEwov6jZ5kz)f^9$dBiukyu+SNma+M*s@29c=oB4`+4>ve>r zC==bcp_%S3n>%WHN8xWyO7QWl?VSHauZhJNXY!$oY;xw^UBPiRH66cR;ad$2Q=8%8 zlFYdN7QxvlFzHf`J<}ud=ElpiV*h2tAwypktUj|?9MuSvqTTg8oi*26YD6ip{$8M{ zF^veY{aIVlp@bh)Sk&WIwp|=`*i;oHm!jBE(JM>5A*+VZfn&+XxOV0Cr<$(xZ~CdG zF~hg|yax?Jg%ta0dwhi1V}$fS@yUE|Usga>Y9XD4MSe>a;*PCW9p`1!KUwsY*OtJj(`rX%U#6m1P{yM{$?DAXWrb;}RQz+P z^>eER!|y0f8^aKjR=a^ljjP$?_97-c8YN0by&ZmyVS4Tf!zPrL?=vpvW$}tBpVk^t z(zsd`O!4VHfFDl2*e(t=^!?bOZq2}(v)9PTH*!mq6JWO8OQHSs<}@-}bB2$9{hkfH z=dAqY+aFG@Q{Yj*CHg|hc3U>G;6cJ|7(&jLo$tXVU9TZ>2}KZ2MdXCLk*V6w6loIeamD{=Q9svhYVDVJVT*0%-vmR#4IRY>^|BjgoR7!*0ec$AV2sW-cm zLG8L9@>24;SdjpT&-V7u!1}w=%M_R&q>X<3h$tM^?CKizIhLRIk@vF7X})F7@QnGdvbyLJpl#3X=f<<%Eo~g+xZDg+?>ggYP&8<=aBDDFn4&l9J!35_@b9^>hO030sK%MuqyPq5Hb~lTzcpQC`FhP1a-uD*kc)} zdl+wlTwzfWv=YEH1i=bw8iHblHN6If4h=Gds(`+$f<}i0Y3=Ai$D!5w!dj&bC?hy> z!Q@slLAmuFJs|4Q$96$rS#|5KYOYP4`^T>%Y!B;5?^$9!9{WXJ|2k&&bW1u5zT#0u zKO>pOnr?Dlhp-ajIiB|OV*0uamFFixmU$u_I!tT*Z%==to!lgw|3ura^&3YycU)qE zcdO7SUOL`8l{Prx?Js~#m|__Wrtf@n7G0z3ydf}LW3=+Qp2N*MkDXp5Jb#FYiM~(i ze9BUzs|N1^vR~_s-Zl(D)4XVd-p8{(z+RK`E|+a(Vd&R2`b|iPzlh}*gy1KlaE{|R zj^jPFi}Yb91OnhLH6$Ub>Pm=nUXXZ`2X|eH z$T|hVBF9U3ICSq4Y24{GOU!uP6HAUVhP_ zVG*Fj9E{;DLaB3KUnZjjknxf$FWGK1UvF{E+rBkl6MCJgSJ|rFtPRFMV%3mtYMl3G zke)-G_a^=(I+F5&*FqDwgdJX?yrRo|){=bZny)2F6CKHUH>kJX% zJ8!-g(QccM9}oX?c$N>3;E30XR1bGXGyS1DOjM@Zppddyn2C&njoL^gPzU-2X&jkP z*2ti{R!JAj5-~74Km#TUMic2H^0K0lPPcJZJ=G*tpa!%Mi~!t6tYt={h;A0>rISK# zXAqn_Y6;RAw$qPp1L!5JW%}(@rB&9+dpHcF=GbmAXc=Tu95xE4n1BqoS!3r-rS0$l z5@dB42a0KeD;^kFXiomWy3P)iPU_tPNc!~KS#XsEPPleKbzN z0T_WK_s=|mO`L=dD7+F+91C{Mi15jD*;!#Ihx) zOrM^TI1@Kn!oD}dmn7A#C$>{&e==?gMuG_++KggAk%?oUonjvhnz|*kmc|%yvDU#Br#*}f;y{P@jH*TF- ze5BpZAp^Nx?s;1_Qc4Y}efSK^k)(vgOm^0NPgq;U$pebjY5(NZ`~DbBM-Pu3 zcdkt|rMPR}Tfy9y_5JBr@{T*d@7$;pGnsHB$GSpTTqT-_rJ#ZyN9Ue+`_=K0a0L;7 z0964&IOcu2EFofR`bVOeVGSv>!jnKXKg=C9jDFt-#W8XlJOTxDVLh#Bw3h&mS`86d69O0)nXQwTs@B3IcHPOxfN!)#%!&!4! zI_;-eC_HeAC=MNGSnKC6eSzc97l(sOlp~twf<8aix;ia0OMlinS531c-}i-<*%6Sn zZmfKm<+fw|{eJTi#Vlpxn@NN{G2Ud6G@46xWEM}VU7U7#c+?Khhd#x~oua6J;=&#| zZ*EKk{g_1;gTmEvWYu0=LknQJK1JqgZTmJ20_f)t&~HIHMP8qLK45^zk>$mt%_9~8^5&D98Sv=n)Wn`)}EQ>B9@<- zVthf;R2{z536txxg>}3*f7fFq`TeOASn9*?*5wJJ7a}~aHH!7U7Z_PPPLjr|_zw=W zvTjDpl)M(EYiSTz^=kN(zoyrET1@f%E*;WsM}YOBLbIYO`|T-J*v~#1tLkiLKBVbP zT9;U!KRL%!Y^sZK7LxJhE=cM7t_4okbc8``nk1`^Y%P>M9f-W){iTTa%*_gf#yvRt zJ0h-87@vEMX$l{?(GcveC#S&X$5{I1>mPiZqp?kqd-i9Z8GH}brg41P7DIEpshlg^ zmXWSqe2=zAl+NU{lYP5_r3`rK2vmjNM!HYxd^OyNe;H^o6u^wQ#cCQi9-FGhe@~EY z-1LE)n^`M~vr!%#(GiUP_rqPQ6B91RrNqXrWfaAT2|>O{~Er#kdYG zdw6I+EUSDY2Sn^!yigGOQs#vH?u{4(lOOUX6lI>it{x2xLvxCyR-ZZf^S^SH9esPV z7_}wPbbnXmiqqDv?nR@7ApiW zXmhtWi$pq++y5Nv90TJJ&f;l4_BVWcQ}KK;s6q)R0nWtqU> zWmNfI+WZV16S6=*s><%us|>VtP*k72xVkzrxX$lg>^00DlOCw}A>wzON|wU+TEY72 zY^Z*0*9@uh7r{*tcx^I#ISnj1u4dxN57lW9lvp4s6)rEI7_1GULrGC&uW}o%9P+aq z!Q0bC{0bycV6SKpIq;ao>(kY$SjKFfNU1n~AZk47mn<+)+;W?LU$z9}q)_9Ah zW@?6;9*^jrq9Xf1voy|F()E=SPz`gK{l=3qkE&0VNgG|gg_0UpsXI6N!>x~E2v!Ku zfE)Jk_ZUuU4#th7fEr9yD)jAqE!>BqU>IczQqO4=Z9n(T!|s#sD!+^7td1%I?D59G z7(u>IE87>t9+d~&&sQPoa+5J+hx1*<<5%B+puhZ8MiicsAoW~Eftl2U3I0p5oj?jY z+V|_nF(HM)wj!zpl6aMJB>a(=CHx+ko^E4azBigAR1QEmu(w0Xg`2{`Cw!8h6N}(2 z{eyH#rGc|K@He+PMiJTb>Y;@6YS6emoSk!K66^Y_nS>s*>M4CXR8G7WK#kNZT*O}A?Op1aHw20K3yoF@M7@dYwhe}?~5)@gk_@9T^6VV-kCudST zAK8U@tg-|S=`bNgjW}Yv2h#36l8J1=t-5rbvynzdsXg7*vFs000g=Zv^x52v9MBWX zNk>?Ec@$GKNkfAJ3{D{+r*c%~xc5_JByM`o#BysjR|b4Pf(I)Hw@N{sMGTSh_K}q0R7H z>~YuBj{J|#QCHlUctLE{s=kzF<1|a&eC|%zJmjdX#&MY23wK-WlR+Z;rr8e#3F^w~ zCJDZ^c)j#9d=!p%ZDDcqOT}g_)V4sTS83;Do9LDKS@jeDmI3i z8R!KyfyS}dhqBo3YtxgTq~KSPNeM%%={DbV()9?^tSmY}>|x1?^`fba>4cGvnDp#F z_~kD5>>V&x^SAgu_|zF!(_z~K>4Kvv>LkiocyVpn2F)E%vXGf;n?I!YZ&M!INvCu$ z3Vs+@HHzbjc$T>0i>CKb^R!#88Q@-`p=0RTw+oB~djxmr!{FkK}UQ*vVPZFqR zy8`?tWIaF^kKRIXGgcjK zW-!D?eT07~^CEF#D`k(V^WYh-=}Dt-9CQ<$U~yauW0s$Wk?`o(acI|Dsdm1} z9z(T~yigF0?fwwR{~@47m$a!7QZDv2O}d$2{@RJm=o$bFXd*fyRujhl?K>8k1i@jv4FDnuNC=4! zF>Vq6_Fa1~Lt#V>0CV&F^rneZ>lBiE-j7TY2}(j+sJWh}24>!5sg4RUe^sJ1$DUSO zF589U$-4Q=a4`O^6q-aU3PE_$&1U?{cr?!N7w9Ur>X9L4a_~mzYoEkto z4MhLh4SriWjjeu=Q=93&hwnZwxpZr)v<%9B@W(w%Ho96V=1^%|xx$;6(gyUE1f3l) z1U06VV0T_ds|d_id;#|qMfWkp*fm4R@1xRN@92Ejcxf9HaQ=s1&6T9-39j=A!Mh^2 z(l^+rQ@ZlR5PA}|oM^SKdX9T~J~!U(EiU6Rv^~e9)m21@RAHDsr=|p5+!ptqv0L3W zqj)I6!a_4UjP2##AX|Ay9Eq*bvfp|D@>8BO>_ZL0Pz*E(Et=%*?k|AXh@jJP{rI=? zW%Gdk_4fq2envucsD*E+*YF_%O2 zNTxGSs978dyaHfPI$L3r&j0RXY@E!%&3dO9F?$d)pppOG+t@mpfy_YL zfL3k+mAOo^)RQg4b%Vj2^-P;qZUj|8E8^>2Z>2`Qr-8N}ty~Xkn^r{PV{f)b{(gJ4 zM>2yB>)CtpAnJ=&#IE;FHM0xM}J5KlRF-siuYGJN3BWx?BUaA5@Rg=&CE>Ha04a{L$jL2nW)vc*a zfG~3LE!USfaJ;>+xj41&b+UHu^wco($DhzjIaZD@Pe#+ws(jZBWwApD$pVB);W_mm%|Rn^P_{WpA&3@d zc?$CLFs6{F^aQzpTtE&W2apZO24n%U>Y_`Uhfqr1lhHS6l+dg5+v3M}M%qYtbNu-0 zm;?Daa`&lihFkIExs$9KnArN9S~D^J-2Pxd4Nlxa-$6AzG4|YkH8c^BYe@A^4AHlL zA~z4+xhs`tDWnhZ)$FtTDa{zc|7br;sCLZn-+v!vm8GJqel;@DLueF~Cn!0`C+<}J z8V$57Ce%F2mZRCURSUCxbp|~+Pt2R6`m|{5HWvZ`#~0j15X=xV?=HMY6+|9w=&B6UTxQBy#nuAAla4!ez zG+TBg$b|-GLvJ#Z-ejUTWpr=K68C(sTCsYweW|ZqU+R;-)XyB*->xqWaPUC8zBI_e zgYEj#5C;#n>q~1mcul*$G|a)n?fTLP2amMxOP$}dR_M98R=}W8p%GWrgZyr>bW2k# z){6U=^z5cE&(h3mKS_Ig$k4;e?UUNBqoX<=#w%ElJjJI!3Yz}BEGUITQ$aWRb*RiF zZO}1})6UmamAYSmSR&?mdzXm8mQ~jyr3_83g?iwDX!&@}5J1D_p%TQNJw1u00{gI} za1dlQ2j$`*yE!P!3lWPSpQKRCYz$g;Ol=IBbY)OWKL*Y{EO?*W^Az%h`gMoMIs)=!DE-~ zZBhCHUdp63K{pGZ5aymb4qlPkB7~Bdh?boUWOGWX@|=>Wm!-ezZm6(O3Gpmk1uu(E z21P7BEy}Mz9F@gNlPa9!1ztg;V4WKsLbO$daE9tSz=Ao1GKf(lGNCU(8k~(tc*LN&`iJ#BluA)ul%X+GlsMWa}HgnU} zqvX1V;Ew_n&O=*u>bevLpzcAu%SsDUT^mQoK5u|%7o0@Ibbz|X`Ebmnt_D{XB>_q? zrPnw8Td8D8wg&w>C$(oo+Sb3cbLJ}+>xOsFrVUaDf1-t zpT4O*gG8XL5W`mGhs9v6WJu*eo>Hm(6BcJ}%Mu&Q1Rm9Jr{iNHVbupis|qT6lC7xH z=IyaTP}QVxwrQKen~PPQ)M9(j;f|@Wno4bkb{w~;2T$D5_*^oWkEKtZAJ}sgWaf?C z&`EJXFShMQ6sI*$L_UmSF(C^PA?N(Lt^*QN$sW9W(o-bXFKR&Sm9tiviCIAP6^E3Yy)Ma7fmO_1@J z*_MtknQaOAg4vdmi{@&ie9>&E{|U1#F;AH{K+U6#=oWA|d>Xp*iUuIuD>6YL;F^Vg zWA(?#b=Zrx&Oj+W2WAB9Dm>W|WP#lnsZ%A%1}HFiXL znv$Z_U7I>aCxty&8LPRAk~oNQ?FcvG`Mxa*~cI7N!n*nW^pd!eB$it#j*x2W}A znwl^QE@?flq@`IJG%LC~N$#U@38Q9(H1#RL+}xlM@`~2R>1{+_6}27~S>Ux9w{D@S zb&oZ)?iDuiylU%qU^l7D71dl*Qt6gcx^60}x~8Jit)g`Cl$72S)(Q`OlSNT^Wtl2< zGf%SciZ1i92)ISUq zmy%3Jgk>I!@*>X8%6JVT?V?CWV>BxlrexH$THRY{XlIo^4$4e}``)4z^JuHjT7N0g zd99}RWKa?Xz?884lUh#?FCam^kb|<*V7fhMY6CM2OYT=hdy6Afrom70SfCBnm#XM; zO-GXPGr}gSiy8(Ou=Zx-im8<=gm}86RN@|+jk~-T`;}t9Lh~5Fa6iMnn#ZYF_%AEu zsM8Tmg|cD}Lw7xmKNsV7;yg3)uu+WjlzuEdet_Y@2z{h;ATs&Uu%gnU`cc=Vag4g( zKwRR=lvZ%4PBX<+f8?Fj%^<3irFcXb@Ju5G{HWxoh68hb;t~BS>jqv}bXhYd;)bPGm zvugYDIHfq4i&XZ`Wa1o~1QEa176@?gQu55+xg;(kk5XblCz?~JL2INp%34oxF8 z$Q)t4F+HToKTVHyt;K*BOZhbOibi|YQXTb3r2&D} zIx99fT5lm6HTCrxHrZA=68W5|+fQ0{fFlob%qU$3)t;PdFu6SL&d7 zOZ7J8&Ppm#6Gt4qNS27pckB&jeDEV84xrW;}Sj{h&WWEJJg8oAZ=V(H4=(^ z4lQGEhIC7rn;_k}Ok2`j%Csfj`Al2VEoW9E-Nj5pT`y$XlJ0Wm21s|d5#1Ty_45vp zwPaY4jrD>8TQs{&R+MqVOW&Y1Q%1BnPn*z<#m16;FPX_edc}dy#gxx7`8Xl2+eS>{`;UA$CQoeSPe@ zpj|a~o!2f=uR5n)qG5GbyF{JpjCMKfdfAN3Y{7LJbJ96i&QF+BO3zBC%~;74el3(t z&$$6B`JIO19klVzxq|w<4tUv&74^>RpbI+aOcHcK2VK-bXOp0dI%r7;olAn2bkHRo zbUq2Xq=S}q(1j#uSqEL#K^K#t%R1ky`3 zu8D$Ka7JuJI-EE$dX&ZpKFG;iwF1+ikbzWNHomc;`&&`s$fv(Hk>XNi55 zQ$EY=b0y_7mxa%KYN0XDJ_l1i2ifOv%I7fqEHti0&biy|Gt%{~xy*L^3iR6+v-QTs z#!2#MSZbUgkA{WDG4g0wW}M;NPNecb$37=hJ{Q<$G3B$wKBrSY@p5G$E2TU}r96#x z`;W4l#Ck1yYMSjhz-q3z`RYAhS7o1SUS076UDQ@OwkcY{w8X@c^C!Ek5wQ|+!AV(( z$gjv7LxPHu40& zAhr}S#D=EeHyR@!3)aC@1T8Dxi0k<=>&<=_K2Jaq3U&-?_`KCG;qx}gN5FDH4?a)g z${i*P`oz?MEyfMXV$Pr<1`MjwA>SNyAnu-M8Pliy=Y!5@8RPKMgO@NpYVGrZ6D?sX zyzsdyRt7&t{uF+j;M7I>Jafk7AJjf@L_b?`J9uckZMJM5V z(Fu7WOh z39pLMGnP4uz6GAUA?`-A&ywA6pb;4-pboVFdkE2q1D^u1S%G7=HYy-z1+2Z#0f&=- zT=Zr-2OLQPih5}x0Y{U7nqJRHzza#h5KWjlWX{G8PT2AJfX;kW0$xl4Mj+7E9}^a$+!p zO+)NdgJRA?b#vTqHpF1?s8i8)H#lwu7iIsg#FPcc?SQ2#uG?uVU;{CWc6_9BTARmsSqGg;f?mcb*(2wINNhKlY{246 zr+GOEIcr6RFgWDQiZthSnzKpBc`LG#!6D~Xq`9cmoKHe7V%W{cX)ZLTk!6>*=yB23 z%dbnYuCa!hKf_1=(8P06)=_$~a2;w|xYCfCn~s=`Tat!aH^u$jVl-@~59hdLXs;Nx zOk5S(zaz7PQQM^WfUQ@xHmSy?TF263h1N7fdy0F*>rf0 z555}>eMc#3Y)Hp&0xzAS#3%3wsKP|h7z>c5!Ygc;rqSd#QZ$(S4xK&IeBKND+C^A6 z*fSmQwW*l)ZZPN#quY*HDz}K|Agd-8z;kkt)NCibpzU>A=`0;>qZ@ZxVh0=*7dzlo z;Cwo+$HmKQ+ugVlqmtnkfF=W~N;Vxg$8odT=rM=e|u(N)Vt;Skx4;|*K`C_4us?zhW@OS?4>bGnd$sK-|Hc0yv+7zv2 zWA17j$q{N4-=zzU$MW8#4ctC8&4bqvm(<4G=%mm%X*6P4o%RR`A~%gl8(AkLRod?* zNZd3M&0bCliPKP;tfmt`i`%v=1u2V-=|7W-lxZw5Gk20xW<^dp$qBOQ36g9YNse!F zQb@8XB)Bk$8afX|MPi5qQ7(+!4RwoYHWb%0dJ@2b>;tOFP3fd!JL%ZWz`3ycF0}o0 zLV{INJ8UV!7{Be{#yIkWyG!s{<7{SR(ML1=DA)uRE^gM z^6bFNG2Y@TwRAYW7pE_B`ZJQg#DNa;RrJ~cZx%H2z8gYbkv`YQiO)-7H^Q8mZXWd9 zu=8DFott6}yi1I81EH(C{!qIp!WQj1T9lQ_3cWK4l1vJTOpWdPSbDf~5)@7fg&w8a z4?(%~VArM`o|J=GFPlWkHWc+bW0d3)4|KT%MJ|OR&!bbDVTa~Iz2>x4L6|9@pvkAu zl-NMrb%++T5A<7;Ncn~Wml77tU59#J!s$H7@s<{&NW<*l@s3#)js+^9|!bM($m8>}t9!l4CAuS4TQ;Mxrq5av$eO zM|vIGq)ZKW6f+->60-1;q3y6l%S2;@teLFvi1@qHP&dI*79L`Saeq84Lu`>UPVVWx zj`b%ICKXbMABCZid^#j503L^-JX0aLhA(_>GhxnnApH$37<;uNk`{CX0q6d2*wz2En3t35>VfMJ|>+@59zpiYS@Rt;M52E~m<|R=tD5Y-9TJ{YpkIFxY4oj6~qCdPWYse1lKO2w@#2S`3L%4_Il3AO5t(T+ORX zZrxgP`__^>x0c+!wd9#wOP;;8(-LjZY_EDttIcdwdB3Gmb~xQlK0y4i69*gp$=6+jDNJBg?S7@uyy|V@cyYJjupp=OkGs>?m0Am`^xQJ9^tP;fcUxZR6RLE!rAq$|P-Wm%P-U<+RfbwnWzDVg%5Xbg z8EHYUoS&!hs1IT!#Yak35mq|#JoeD`cK?@CcG=RVQh4C9-x*{kaeMR_te*KMb6)!!^7G*NpyoBRHL;%C76JA`3DFBNS zkML+rV-)HM*{IkujF~EOHe@Ld2hSN|>{bw>qWmeM$(zb_AslQs3CSaoxe>ftxN{0d z8}M?-*`?^QU|bHo7`t#HcPe%flE+FG8(fj%amiBUvg2}DD3{Fz3b#yo5J^=wQWWB7 zcpWuM8CE3ILvc3zy;#yN7#6Q9UM!6ljA%W_Vl1&2D6I@xjHUWS&dd%E(^#x=ED)&E9wShvIYFSr zMfQsxd0kBMUV=Rj`W`Hz;Kiii33xgI7h@2glSs2r5y4=4v+`6#^L2>$4V$U3e&!~*#S&clQ_Oet3 zm;pFfW)M;PkyAN&#sG6sFaZ5k^6ZQ~Df>YXfIPcmPX&2DsvmjQVilRw7!+99nuQ=C z<@!db%tlg?juIL~wU6rEt)j~I#0odPDymkWx_({y<5vO(R8;Cg6%}k$)w}0!CMh) zV5o@=IJa&%N0UZgb#$ zh8H)ex|Mpvs~dKBGUYSRJ||K>qO^J}@nPNd3SQu#!J~tpwkum>i8UV)T82=hojez} zB-$h*7%HNsBBm;0uvV}!^;V9&n{y|_TNvJ)sCX?{!5xvr=v}Etb#hv`)lzqGk~_4R z>0P3vl@po7=q;O#iRRZyc~J-H`uTOAq#$=l+Pu6rbVrn%!*?TUQ>2Mi5V6KPBey3H z5p9m#MUgz*n9?JIEc5M=+l7G^OKpkV8Q8V3`RU;QpXgWCl4|YgR}s0jS4F?7$g;)s z>)6IC)tG*rBL8-0O84#2H2rEK-MBIJn9+_j{d!=6Bt^g8ZPZU}5zvkZc*dGApA(8{ zU=ctg-D08Rcj{-BqPWK*V1X0e$%(dbqRnxlw`#d(jw@|&do23AN58Vfft#gK;=s3Q zWhJiR)3h~9&QWd)y{G9yM=!6h%65u2>w5vXmg=$j2p@{-xmtS8NQTxsSJRtQ_k zB-a|4WJtXsCK0DM8T)^%EJoNh_m_=>zz}#%6=jKd$ zZg$givy*;@>Wmq`j&;RMzmBEl_fxN9&0Ec{V;!`bU&lHe`&e25{TEBt?tLaE)?Ia; zS520+56vm*a=!G#qI6EV)AUQ&f8%%(ch-KH6~|~Cx7WeZU45$FRf(*&o1)wTxP66s5h;`rmPJ-CtyWhp;@7ZoYL2Sj`?`9i>fO-gG zqvU=sn<@m<$HoBw^%KO~av$1RY(Sg_H$!ZN)A(kH9c~)p3^BP)qnshuwP~O;#E>?P zb%xl?rg6>?^Vl@h8Da^WMms}{UekbQh-GLR^9-^6Ov9cbhMsBUGsLDd4St50Z}vA5 z#7j~Cc7oU_v%g8|j!(tEm!F#Qcgj0cufwOyzYm|9e?LCm zKEFZLd5pU+MvT2K@)|8S)>(XN|ubpJ5-?#C%vD7^%Yp^kqBK(>Mb$ zaf-G{y+J$H)Ya{3w{{HG)kgJ@b_~|l2KAtJ4Ag1TctAV)>*_Z3dhO_g(aQDO(OXyR z)P#2Q)M-iywWGVP)~a3FQLEDobH8?U)oG5oPdhs6YDB$GJ38t#iN$v|T%BXVR;-X-B?Jd#%@KM-GQt-P)0* z)xX-R9U0mfsC%@-r9FeXTRR-uPN=)I!>0X*+M*qNjCZGY&>&h+cZh?!^k#+}>cYMQ z36II3jMF-2S2Tu5PuF9JiCu%^Kg>giewS=Q#yWhe@>C*L=nunc2i~+X^)x}-I~poz zoWLt&K0g!W`%e7a*k)s`&#yR*`urTzI_U)KeSUN6HlH8R8uR%ztPOraUK``Lfo}Kt z1*T0tKc%$U=Qok=pn;@FLnp0?t{GFIvnMe1;N-$YuZbHYbgCLYHbxk9svdk?j4kL? zefVTCszA_S0G~X@6ZEYid_0UK=v%}1lrV;%Z_#3jIUg>r3rJrf&n~5=@puqkFCCf2 z`#~l(+3+-;5HhK~z*sn^_0-Tb9uk5g$lx^I5<*K2OyfBrlNh6a8ZQc&#EN~>cvOgI z>uJ0zWU7klnT9=AQ9KiO>Jq%g(I4(zx+BRtmFx zffw9y97oWzGl4&&@)KWq{y)EB&MI$aVh!8+Xv9*Os68hdXty5^N-D$na>1tKtT92* z=Ho$bc19-7JC6qyl_i(;8sbkIc_!|JPX@98T!p~fr!o{ib$+xp9w}) zVdD2KBGxlA#1$PB>Zsf-H8LvgB5AOWNcwYsd*ts-@+n9Y0MJzKYfWWu;y?VuA8-;{ zYyn@6QI{BNg|MzCtWlIgjNgm!drkPACj4%yNP>p&QAK7{fW%Rt8{u;!d`@e8D=VfW zW||^8l8cR6l~5C+GKe~$MrLXBR|;Wb?MS5w(aMqbO@P^HuFRl(oj??qL$HnWgd#Qpvn$ zs32UjY+SO0_jAqItBk!1Z9z1qL9m}t1=X2nXb$b+=0;vw!I*Hn;BgZ?HNs<43T$U6 zyaf6nWj^8>#J7|9eH7n83si^?n*)a^FoVFgEdmte3tVi&6|Giyju(J2tU;)%D8UQ5b06!|HQVymDS z1Bx=BO@gBAg;fc15LA+EIjGdO=FK^VV}fD`D2kFTqbN3F_fpus8^*qBeF~}i6dH5P zr*h1%PTX9IxVhD%XH(I$uZ~)o6tyy|=jf(#bZ?1*LOt!bsgbI?0xO)Oe^1k%=fS5+ z4*VXFOr7suv)QR;vsbUWm8!b+U9UR8t&!i3#BW#R_dw$JXyo@sUCfJyl=BIclcBdr zInDp7$|*(Ees4+q-WK`2UDxNTuFpGB9|O=Hu8+qX9v&+LQ-?Sj4<4+*YL%b)@cy!B zW%do?Oz4aeUAAnJyO#fl5A|MS?WF1T($_!!Q#LQCw*<71%ul@X#fu*^XT>gpbDWk) zU;XUgU&9OrgDZhc3+9OfKfC;GLwt4w8Con)Jo}~h{*labUm<*^%&M%8zbkOCCXTVN zGW7$rS)z6E#FxH!^hI8EInjJ4Eim3%4N2TR_QLijyUD4IF04eb# zU5?0u$pj4F>hnnOx3GTZ+~` zU9HPlO|4@DCE=C=19w!qN}NkTxkO1yaemb(ziLx{`4!9PcqLDWxKgDUU-dfMhFq&r6;Y`dnkY5aqJa3V{WY_B`Gu$Fx{cwEiTBA8j(JwdS`-;XH@q}j*ZGyjx(u5<*KYwuDHt;nBGyW?zS zkzNt}#T1tVYazk9m9a`H)q@g7xMTz=M$Fc^*Q~UPj=W7J;}btstb$^L0dh>6Mb5fGAZX51=Nd^wDow%Q zqr)s7z{)nYkFsfTi0ZqzxywNuQ|!d?H4^cJHhQyxwu#hayOj5Q;Dqny^)0_MEKA)I z)8`GoE9Ts?*Z^4JDWe{Chl^CVaG?5Gp{}fb@_OMDC3+1d^0=XuG_#^cc8Ty89VTmh zcI;C7YU9OJwCYOcvbo)}%&aSDW1}{FjpE=1L)I2hTrGX0xNA~#;+D|C`);^);TCt{ zd6&HQW^J&y_@1tfyhdNt_3KCQ9MIy9vgc-z`BiJ{Gg68ma zrGuvl-Rjqf6+%2v^fl&*4fd`eLT!0c!w02!cyf`u-m0~|xgrrWu-sG5r>zpT55?l= z;{siA-SWFj)&L7f$*a}geQc1MgY+|J+2cB;2b#$kMNDK1t%6MT$F<#3(f%M#D{@`$ zV+kDZJ{G*mY)fAtI4lbU2B0w)vf6Xi?U)S0GsF!%VoofOXJ$JKji6~U#`1LwH}Su- z!LQ+1oh==vnS9H3TZ#2XzPbDb>YIGs;m86$sTe={r=RM!L30D8;?Bb(Y{d(&P+`LD zj3`_Jd;*>PE4JZ%%`tga4JqU( z*TZ*zMgmQ^zeO=O7{+#!x_R~Uu71o4-_s((W@F&_kd5!X=3!_@cUBLXL=1bgahOKG z@H6HkJU+U(sOPsOe_yWQY>C3-)i?ndOkq!o(tL!QiX(i(!tV!dO7aa$yuN9L`%Q9x zleme>6f*Zo_WU>?XNmDim(_`L{_F2s&j026mh+|WTh3qpzUBPY?_195`<3xGzHe2& z>-&}Q9pA5vx3tVyvc0)XqYSY=;(X}89#${W$Qx!^2KXI{brYhH1)GO|eq}2>Mx!;W zYPtMJdwF}KKI~AXLEto`;4Uf~zO?f!U!~na7KWqAhgE}UCO1?8+wvfHA78#Z z{4$L8&e6mhhveFZ6x)OV#2OjL_IShxMP>z`ti0&DN32}8EQN1H$y4colIQmyqD8h7 zjy;6)RJ_5OzmJW>nY6lgJSLPJ7e-Vx8>m?ESh?plpp{<`f@YD6r3q?-peC!4rU_`@ zAOSNf(}sX;LW*rd+7i%YcKL1)5W2eA76hz#!kANXoEfttdaSH99qD)xGd9pJ8`EwA z5=$%S7x~7epZLqa?Zp+~3O3XMEg7*zSg}DJ+)hT!>@j3!8Tf7zx@jC`TSN!Ho@p}n=1?^{v z-$nR!!4G@;_n89~{o*|pDLnH3ep)t?1Zx+DpZ_~&t(`6HQ(C@oJ?(`d-N2j8+l~ii zEu=BV{#_ywvEg`76S0O`u#p40MSA1*)!?q46q=`oshh^gCka1BmmXRLo5SV-Wis=$SRLdwITjc;M;Of zbXX_84`MQTM1d zjJm|AZ)4OQj9QRpS$v_&sPE!X#dr8avv^dJkJc1l zq=<63T#jz`7I}bPbvw{763JhZS2?-jL->K%-71=ppXw>4CS3Z?p4+@ZvB1rF}* z3EdW{S6&Tp?P^-?1bBu11^OLfyd$Y+aj{bwf*eObS9^f#sF%e{t}TBq!7 zE!FKuQr&j+a<8F<1Nh}$@6Ym9=WI^PcGYMvS`(qBZis8~Skc2>wu48AYS61k4jvWy zjtALjAn4b^V7Xv`qm-i#nvHnINa(D*1<@D_D^Ap- zBv#ML?>S~!X2!b`m9g5<* z9Lr0^a?^rMH3+K$-K@Ttahv0eavZ{BrNVPs#Hp6P`+$g3EiK|y6A`EXl(UMWC%;^Z zUUj$R;dNS@Owtx$!F&gf!HYOh4Hqr!4Kv|f;mM#JIyigIVsl1|$A^NPvoAD=ZoFu8 zpo)&AN32rH4?EzU(vWQs&K2~#F$<Sto}6;K&Mu9` zqE+3G#E%!_IX)cm8Oig-avjwHx4Uu z1x2=K<$gT<9YHFF`eJC;WVruxpJodJRq-K|;Q{T{AzqYccu0G7iWe0sJfgk2#0z!M zI8ZsA7PZ!CpfD?Ok$aVVuAYgr#@pxgc`IIcH{;?hB;er$JQ#!c%$xj%weP813E=&8 zAG-rTXD6)TK)J`RzLhoDH1py1fc7Z`KSS(E?W9@s1e?O(Lk^?*Z%vJ&C@Api$&;Fo z^Qu_=6hy)E$$LlOSMV(rC&jjymM48v@l}Q8h1jUbUBxcm+DR5>x|C*u6DBZt8|7Ai z%~T%!(5BL6BkeAgRDv1chsIE9_l1 z*f|=ox@INhjD+;Ta>NF^N>gIjY*5vyEDo!p!4Rc{u(D1kVL6O9KwLpsQHL2&*>J>B zg{DhRVB$Bd)Wvau?N4cR3l_Bdb$afgQF-5WvOe5F=WF>(Y8JSK$#}1u-j!j_c^oxv4r>7y0kZA?h67QvtVIB;3YgJ-yyh;F|NLuMr1B8P4I&7 zvly9}LW`!9d5f;@J9TYOSh~8)7OF?2C(JZ=>%1&TWeNOt?EM710!@*M6yYQnVJuw) znx^lW-;WJXsvLb%jyc^@yL1E1S-OQ5qZXR8XIOuDL3el784InG6S&( z8wQ|hee#K%xfxrXejGWPIAg<5w+ADvfo6j~B$x)8MbvCiilkydBa+x1dPZmhC>nud zp=m@d1uaP;v0uig4~K5(B2Z>RJ)q4*Jp zm7N9V@5_8I-%r+mbyv4KU#e%OpJz-r!QL4S2|;rTqH z+pw9{Y<3kmgH_o7Fh5*f{NCsD{^GgSXIG^mdjgbK$$R##F5dEdo+HH4>f%S9&u>PN zEL)Y&ZwQ*j*7NycdFR2^#iP&XAA-^G7#kuG6k7Ni>)m~jZ{CqyI znfo9=T3sA}Ugnid+SSFz^Z6~9JFD{c{5!PJ7^0r8F2>L2A4LGV)x~|!=eM#Bx2*ON z#bk1I@ee)Et$TcRaq@XAYtllC2cDPBgc!zQ)U~>J+w(cRmNXUEm3Qx7UG$%)H=>pT zn-F3Vcd#lQDVskN@oFFbwQpKooC5j?J=Ms*bFurpurz!yhE@0K;zyrHLhk8cD`cmAAZFdNZ-ri=MyR)+wWxa*+=-M4@ry5@D&<@Nl)G*1Gk?YVltQh zmht_bd`Sb9~4@plNZ^KZrTH;DdwcF*ux)%`C_qfM{kx zmSHDrA>yGd8<@DlW-Q2TlIs-7H3y-#ABJOU(0xK$=$h*-U}=;!Z$ajzT!mJAR4!d8 znh3e33!>178_0|nuq`+sGarXUYQet`Qe|DNIj;Hbw9_wzaE%6QSyzp`)spn)0qtoG0+93?weaXMCP`U8zu=@>G4gMcG7;0gir6#z&w={esxuuE32n_$diyi50^T=yVT>mOC8-^>e1b$jx7G_H%3Z~aS|A^G>)GTtuxLd!cfNuQK$5=^vA$sT?EYuVpEnd z43&_ic!hht`i|0}Sp&Rh594p$ll`wJ1dxu=Z3n|W zLiQN4FMF$5`mE4ADh#3EMp_45kWZk%6)iBas&Wv@d89F$C@_u!8(Ls|Rb?k|mMYMP z@<|>2^7hG9bmK$X^fJcTDC1J=@HXeViH%*=e7qho<4@(&dkv(Cr}7yL4%x}^#yFdh zzcYK49D6DsXGy6c%SH^KIlfof-c$L+P}v59cuwp!LMNZf$A-!ZS!4$2m^DD<%h5EG ztN42IE9fMnQz>nv%FbZW&58l<2<)6P+%r2u6Y~Q$y6GjjiGd7f%cZ*Urcv;d1~z5L zQge-jd!D3%Ug3J@(@9Uef?npFpiCg|me6u3UWe%BLWpi}K_T;LSwe)?S-flQC9CJ^ zmJB)g(42cTGe>6GFETJWI48BeZ`e1H!B}@@KBe7>E*ihVYE!>QADPzCGWwRPSIIt) zyk<;WLPvu3u=T7dl(LPIjGxiYSha38ZCtFnMp)=$x!9rtzDL)3lF`Aoh)tw)TY9Cw z-KcLb@`3rfZ!Zv#)qphuW^2F-0ciyQDp|9H)8d-N&W*V>H6h?C#fFQn^lf5%zjBZT z^WKH3_oqJm`D4IDHp}mO=4C1R>eQa8L`tuQxz*-C7f2h$inAx7UC* z0`43b-Bwa%hZp>v22|h?5Ez=rM=0}!uijG-%{35d?~CO-cGOHxJ~n;BRiDVTL&(w} zf}U;wHDuHqV;BgmN4FaT5}dcVrZ(3I$ZEh<0%j{f7Tn^ZAE73WXzlJ&?!r()<;aX? zCY_T21Y{bGF`1Z~aH*CD@r*+zN)9X#h|hF#%f-tx5$PVvsyHXK!Ia0QLj09xSC zsV{C(&y)ab${8xow@Ot}K7`2p7FFsGisl{Oi)hM={~Tp6%I)G0LBA+i&?b(}SDQK5 z);SpWT@}4cEh&00`K=<>ulAv>B~L38=A&Y$(UtA8Mt)r*jgK1Wl==tMHM|@{H1+m= z_W-m4R>GycU2>NhZ8wAuT*~)l`(!!5XhFDY$r@)Cj`qikbI>w#v++V5{Is)uIJs=2 zCT(1x>^06-G!ZxL({4uz>Y8$uVCxKDlWX6M>>M-V0Lg9w$Q>BTG$T4ZlR4icPCvI1$^je76V%h zY&T^$8Eic~(gQZeSnnye7(smvwwvH|vz^5-7Hg{`ct$I40$UT<4rPZ7whkWY&{PN5 zI*P4{V8I64A$X2#!|v*nxBy!RUOC&vSDiusW=JO5OL>&bsyOm3Mov)JIY2~TR z#+}r-8{jQRaTnkCCtq=j?@7O3ZvQ%N z+xp%4VcDHNE%!eTU?&?h$=}m56DIj{|5TDwXatw(f28R|(^4;^U~F7{QwBj58R~9ldTgtKdsO&{3T{9I0DNb$Dsw-J!G{poK?^N`yi=4(3*_nb;%l=HWhD z;|=bf!W1>HAT>^TYUy@(TjZscx?1Iz6R;H>hn09>B?T=jO+t^_kPtR5#(91xuQy9R z%u4;>lOOqi-+B?A?|D1&qA;5c(F?6bpo7``dt3l2ZOxhUa8 z&#$H)y;U@Pwl>@QprPAKhP$sz$8FHh8(Ew>V{IHsP6lf-9yDXww~-n&W8tnw(Ubi& z4knqgL1x#>8Sg|W;|pJh72Nou$PpsJam{ASdd+Oh)C#|Z>;*ATv5sC^>Sy2*9TRmc z&k;VEo9G=zi|Rx!uwPJTJpIi68KBQkR3UNO*H9ypsqymsCj!lu|GxZ!nQ=d@&}}s( z38aRe;rmTJ^T8T1Z%98$yQ}}NGnOA;a)SB-_Zy%G|6PN`l}gpN9*4M&c;;xCvTVFP{o<2^v(kMTAh=bT{zihE@7K3w`$DL93KN z$tZTBmtLZZ>{%FA%ddgI{3Iq_kI3;D`pHj;=|0jFN|1rQol~7=N1uoxjc(87!t52L zh0hJpvgHJW7;^%t8h(8ZJS+)&>Yu>t*oJ0&hp7qfoH02B#Ry9k%9-o^8&X1ZYJOOL zSvWv|_+J$r?5@Hzo1n}YJ9z&*E}(!g>3fub7}`YLmUOA29!jMW48SX-ZIK-Y19ZrZ z`U7+*57NO`i4V%b^K4+%l;4{&?$$!d?_mP6(Dd)m_fnu=%fU4%50*cP!Me{Fxl)*Z z@G=Uhx$44A3lbX;_ziY8w+amzqiY(DjKgv=TzFz!j02vhmc0n@whdR@;^QhX4p4}f=|*^n*ZcMD^T<2H%U+G!wwa%`=|d>Z z%jUpJp|Ryd#<=K&wzgzr(+7)s3f*85il-q~%GTD_&BC{%A=V6scqi~tv4KYX3$}^Ew*gBJdDRuYoAXsTv{n|G z{KJOFJB39q6W3=I7o96DHk0aO@c)f@28blkm+ltpf5~OgOqh~k@^D?CDAC;zFp!F7 zvzAUKdrwHGf7f#GiTk>S8{S_emr?so{cP4!L5^r9mBJTBt;s^&*GhV7F{&yP0Bp5= z^dZI0m)sFL-@Wgz62d$>^3#yM#EYx41{&MKy&i*32yHAv})!AgJY%Macy|*__N6GE94sJ^WG^EC8 zx$eWkQqJFq;FO1Mhj_e1kBK5V4@Q`tatrbt@%gE&8cq=gzb!H!`{0G)I|=}AnF*(Y z5E6Rp0D|r)is(evo8}Z0a}W4BcLvVFxs((JbRWewR1^lvJV*$B)c#qxn+QL$f(cL^-uQHSc{R>BW-b9;NQjac%~l0$ziUZ&D=P# zCU7e(*UZIXT+g3tJ5@R^+AfUqbMoc!Ne}MI6vWfRevj8My{m=s;YSBq#_fWX0uRlZ zaeR+gn|~YCDT1Xbg1ITzbK}VWynbfOQq~`+o@x_27wybB9k{8y|5}UoB0peyZM;(u z_zA@@0{kkfx!W0mRU-ywy`fv>djPP|2kQ*Uc`)@7BhBD>Uu4uWp#Cl2ui!aKs0UBN zs~p7UYeY|#J~t7Tsz}m3#vpSzwemuIL1}aryDH}EfqLv&sy1$*5sJZE19!9;n3IUX zjR)pLo8QO&G{MJ{55jMOWq(lI`=|wjIPQ0MI(pxm40;OALRE=X)=02aciXU#V=2G3Pb ziN^7}?%Goq#-G7)Rt&ZFWh?EE5yV;8ZT}H@SE%qkMx0R)2KDRmpiHZi6~L(%1a@Ov z?kJ!vJy!3>@#onp${+y_X%0ABTa^DCJ-F``R3<7IP@&=FO|$zzgNI>aY27Msn)}w# zJF9L~cg?{S&;`nFMqz%0X7IGyk04Zh@rUsd+D+?gfXSx*sO>{kzv+j`QGf9Q{}EL% z-Aw`8Mu&cgjGAg(0xk!t}Az3X+B!}V%2ZEA0gnS0R2NLSg`nJnC8V0##d+eXN_U>ub{r1(j5h=52@gvFXgDd zXa?t0?U?O6;(Xdf!tE7VVARNgx;xhFQ6)GwV?vL`+UjC$lvdGs3TGHGI-Rl-u7 zv;I8JOQy0*;)%|6Q|)H;dQOhnDV?R7Q|4gY($!5HnpWkw@Cn}?F}hlDlDtDws4=>I zXDj4%vAQCp`Iu{wz1R;cgUf~~LpOCY3FH_8gGZVxe6ZR9;pgXdku}2%%(1#X8A0`i zSp!lIKsLljpTUaiPt&7kv22$i5sygB6ab)n2rvN!@M4-3j^CKz9J;-=c#wdIc<%^y zYG#$*W~jgc@8$q&6c^pI#+o31ylrSA8Vd};`w+V+$J6KW%bFdGa_zVS_DFg%?F07+ z_+LWhej!*xNq9cvDjD^)f0=#JQ>dwB9dnd9WCL?LEz>>@{;>cf8*5RhSwQnuMN2D@ zRK?vvk1L)iu`7>}LOI#XLxHn~-H;G(;>MZp!EtOe_9O-kZu|s6vEkTL7H#=H!$&Ya z-xu`n8OsgHy3mDpC#K%cWTXo#sBl1P_!1puFKf<%S^YWC=@fq+d7cuu7Rdl=)MOl@4 zZzihP)%Gx_ z)v3E%QT~X1%fZ$QkHl)n$%%Z~!1tzp4`;{q_-}n@Z|Flke)&FOevB(pq1=f|JhK<= zd4c^A9{=JeY<&yds|e`~e6WzjQ(+)(<{Ap+GBH&B>FYIfL8w~3sR%1~9;u;VN|65E zN#qA(%<^9FaN7?)X~a3ZBc_cw1QNZ+@c5%uS3 zH={$}!fszEXn8*&aDKw9P!V!tvj?ybu>;%LUBPsM zD8LEHyx_=0(w<*>0G~U%2_5^uXTESJMYNP74xf>+NRS`WYS~#+M>`W9#M`wx+^G)l zb_pY<+YOSWNF1rbpjQ8dn|??Hv-K+jnX=_;-#gwZ9yKd!Z4ejI0_DI5^jAGph;HGR zFplrboaT@wnksOpA5X^f@Y}M9k2#s3iCY*uEuxks&6X7zP!~9!(#|hl0r@o45Fowl z%(Pj}H*ny{>T-x&L8JCjx)tM=QFco@6X!=k-e=B-mVFY_m+;_jgqDY`JzlDLcW7>p z)$6Vny2y!Hk5e?6F0^c{QLwYq=-F5&@|ZmI1&K3p<@On7gWIO7d3Z~_TE+A4s&ka- z0&cI$mz=$+E|x?4eEwJAD69wnb?J(w?#We<-Ik6wxF66#Fy)DQ0Yj{Cg?}TaQ`5$> zw?H`yd>)N{VUi_G?rmNt`zuc$8tHM`-^ksinqAW&^Qnd*l`_P#D}n%6{1fE1!p>10 zkzYl{quHmi&6FxHjk|2LFw{iAI5dQgXC*kHRhm*!-3=nUIY!17xW8&L>n1_~yHJD- zr?so4d|UQUDxYORdzLTM(Rqh#x+e)+RIkT4%@nU+O`=B6_~8uj|Es(@=eA`xACkvE zUCGXNjWtNV)p?|Zw_nnBxS3|>%=>XZpblpT-{xPK4O$-8u1$ZBe6I&tN-<>IN*uP9 z|D0|b)E(4~_$r<2-VmH;J!hZe2Y7$B9A0(PyM8}1xaym?DwP4EQVR!HjWsue-Xi3k zPOLnktFI5b4B}$xdZc%HoZS>N{|RzUUH@$vPuV)-8f46TCk6GXOuD%U(kFi#%JMjE znkK9*DoU$D5n5!-3d;zX^)qZzdKqsMofKIYkA<+1B&NTDM?7v^-eVr6bCS94_Srv{IXoy&CRgMG(iSvEKA*h|uK)J6aZ17y zSk32H?sgP9H9Q{3vN0dcvj040wat{+pAcVQ1g^^>M{c>F;FXj(2xWSTew((pX}T4j zOsqKQtjO1Z!lzbfI`dRdEu~FCz;_fp$a}@oOz6mCt9P=*IC1LrPQca7Ih*)I#b!Vq zTSOJ*EQ?*jkoZ$5JKJ~>LDHfoeRh=-H(igu2or?I22LJqcoFh@)fnt$?U+FE{?rA9MP+vwox&p-$Xm-CIZ1%n$4E3hY zU!bq`js8bj>a5x-U8Ow07z}E^JRdOHuQeF_6o<2>Jv$=s)&`zh#LpXX_$e zka)G3HB_r-HGa}w{r-~r2j8R4tWt|n%>)kWu9_Ok*%a{CxfE-gK#@L~vHjvaQlDel zc^i(lw8Pc~;w_*v>&v`gZb?o-jb1Q>$PKSibaFbLcL5x)i}NCc*-2Er{kK&k?vO;s z|EM#YolB06-?AOQhdp98?KVMban;s3e&%XyuspAA%oXRS*+>s?lLVj-FM&tk8!+$Q?rw&0{ zaj?1-ivZAiOXnyHA(yHyT2D7!54VPb=M0B#>#L&S4|ce^=xTOcrwgYl=mNtM%Smco zp$@g@vliE?uSMHyEqtA&UnXVUTZ^99G+!pmbPFm^BK$Ut3#?Bfn+=#}qE8}OtFVt> zyUvx?7-CPGmc5=)1qj1R9R$DVJqqHkPc-PoMw~rekn34Ls@79=4>i(R3nU@QrfiIK zFNI)zVhW%`1qL(JjZFhV_&G*gZXYY0q^I3&g}$F?o@HZ1145Rs)AIIHMMXXK3#{|o zj~!1-Za`ELmq7r#lRWJgC4zWfw6?j@JX=h~t%zlRY`54a|CXKAc>LtGV>2FaWvUFZ zlff*rnksED%oEn%`*9-bl(s{>FsM;?UM4JB^XAl`nCjG@vhi@d6;&Lsz-}{u~TY~$a1J*fB%hbY4}HwmW;3&ih#eYJA6_l z!y0p5?YIbHx4c>otRs{DXbnl(v(GoOGp55Y8S9~uMmqu!sdf(G$aXesjvd#VVeu5I z*l^?F+;D5HmUrw;UAIO>9mh+@=ZKC!491;4$G2=bKd}j=MRKT15$`3vZ_10uZhk)GVoMb7w+!Tg2GNowPtvsy7veRJun2fo z_H~2fHFmkhYN_=nD*Gh@@~O3g0Zq@pI5x4${g;~ywM_FVywb}5HfA3@N*YltMQxn+ zS98~oo%nIr&_5TOPii=(UGzCuS|--@SeGqu8l6pXvLU2>0q`8a(O=>1y%ZKCPJbGE zDI{>M{zsiIg)6l?|KZ%!;#e8bgQs|e?J^J4d>9g2G(c4gl)JF0g`WSfcgd;kKFzi& zJIX$C)Rkj73`iYHa)Q7_FCwwfGOQw_lh!IQl+~(Pb-XR-$85PcZ84VF?RhI$OgT|T(B~n)LQY>Zcctl zlWvrQ;zHVy%_7e~M_8Zm8#fU*&&{)a%8vtk+9H#^8F!c4z|IM6*yPVi#ws14+_bwI z)6XGt|Dly>!sh@|Vx`NH>>?zsKT9`i{82Y5vYv=zKVP;dc#5jPZZ?35_4lj}d7@@L z(K!aJ2uy`GGYoE)lF6R5>EGQ}z9{#9q7Z+&uaYsWmwGUGRFsXwHcl(F2RrLds*R)X z9UdpxnU+^{R2(OlrpDn3?{4FK^{TVmAdYY{EG??Bs~O7-3w^X`r0`e%fkPRd8=Wfq zHoLWMKgMRfwlkiO34u|In*f(J7aE<8Ork-a_yx$DHjHbA_SR8E2wbGR6(0cqYk+Zr zRXC!J2|W;RlwT(s23gE!``k9L_$PP6(Ywy>M#{3FEMSN?Cpjz@QjAhx7o-~lcL;DN z7Qq~Km8Nvm42S$I>pP7-54X9l6@^t1ofzxW*%}1R=wYuSqhA;w`t2i-{aB>*z&qSv zZXP{b>{mkbN}bV%ZysUKHrQ$(4l+M~H~6c(!@UD0?O}#%E7k^^bF-j{Du!_tefHqW z=Cxi0AYtpe2mwe7Kq`*SG5@H2Eh(j3J-%l1g~!4<^8S*)U-mQZKF3xU3Gjqj*PV7l z`NKm{>p$+a)Nsvmk*2Z&<{4}qJ-U|sdJ0JJ$>>e+296Th@Ni(!-zhu$4>fmCnu9{`#c(sT0~(Xyi-@$gl? zVVnAX?%+!wFvvMM$f)hcfK+cIyad%|B)kN@T1%7yz1m2m4z*fOlo6!UK%^aHr5#sc z(IxPKj`<1hOU|KB_M9^D3258)%LqI7f*HaGy#KdKGqh$M5oX4R3#@~GoHOhX%u{4g zDzJR`Z&?wZV~k<5bN)q4(eN_ z=uqF`YP>ZaAM{q*P#>~Fk?ic9wX?FsFr(YVg0r&2w!*4x9%%H!IW4z4j^o&hrrHgDBTd-uOK(TZ zT`7rlrptGMs$fdys8E3B_LBwR$FgjHpT;(&+{Pf3vwr-s9t6?@_`TT{vm^P&9pg>i z8P;qwS$7|nUd+-9*hLNt%o%H>yMiYPpURyyyxEM4VvEs!wLaEe>ggrf92A`9+D`?| zYws6O_afVP&uDo9aQaCN7lqF?+-G=9JOKfY#ZVMd|pc@IqU}%AB%TYwN(_9j^M=~%7VIL zlYz5IwIG9d76a72nA&0qN>A?9d{TIm-OAi=q?&xJ*v`eyMM-siWbg?OsWW{ZZnII2 z$ttWs;M!#_aKo`!F4)hBouZBOuR4^d;hZl>8)j*lSE|rPJD+fw7t88Y!}IVwuqSF1 z_LHmYJ@nc3oWsD2Q3Ok#7$r8wC=N>zA86xi1sKs>q{kZ-h10_Y9Hxi)ILhW5u86t+ z5TD-7lcA4}{pdwm3uJ5?I(T7hwPOj8Ek2kHXhd&RsZX05_o;7UVJyT|BhD7N1<4#suaUo(RF(` zEgy+u@NYLeSS22o>hE%x%bUOaaS@@)nxf>_<5SArvhnsRb0^scs2tsKboPvi)b5+V z(bsqptsZif{k`eTg&bhq@x!X2ul|N5J&d3HvOMFWt}E<^F5<)V_U<>maS~CN>+IS| zf%nJEokVvPNE8S-a&G)BzsH4F#a0%RsMRPfEjv|MNds0rpMm0sI{3x`AH0yXDt4=q zE-QOi(n6miwYEO*Vq4;3tFZcy-{kozb8|g>bA7-6AFI;GKWi@10!mVshiq?)xM}#u z8wOQD?fi5lRo&jSG8M9!E8Q$Mzvd{FLbY4gozBS@tePX$OSCffv;S)cXk`FyaSQmL z7R~d&?Y}-eueimfL&U<`;m>;qXs0Bb%O44cy(b{V-3C8r#%qA!!&=TQW+r+>md(XH zmFT-ultKZ8)DDFPQiH)rzQT`f+9o}M4(pKh<8?7Al47O!?__8OZ<8ExhII&!OKJ_N zM6Fj7MH;zqXxy%vqL=ZdM|f+4 zS)R3^O``t|#tXm2N^HU{B7|FUiiS2FyxXy|y?1TGHHB`#@hi4rd(6179&{6OiiT;K zdR%ySV6R~tb&s-|QpO-#Nv_<}k(HWt%B7c2u-a;Ioelduwf zBP$aj*nm=aT)$*34+$J&1CU{k#>VXxmqaTUN`Ye{Ln!GQqQ~W1^#hu z|G5{D1slbj>Th_xlVURTPRpvazNVd55p|XqoCqx zA!1E#AHMhp&5Bs9dqCns^|M6!NT|H)qO2r5CjdQvtN#G55dbP?_N;1*Q>Dg^?PuHo zK6o6mHX)kfE@Q>i2uw!LtzEh;CAmE2vnchYcJLNe5@XMh<9d`Ty7-;nlKK8{6G+GT zoGPwsHOh13mcE-7RXYa7*3XHplr%dN)nmj~5v9Q@k{GXwO+RUt8YQ1JyA(BI^iUpE zZ8AV%SUD!iUSQ5bQ66PKX_gjMMq{YVijv5zVk~PZv2Jux!D7N*V90V*9`%_%%Z?3M z5e1q)%ZeRZ9+kmH%8va>LpmQ-r<2Ids(4^BiN&elRqC-&H43cgk*$lf!U#@8O zT_#gmv0(v2`04gNMqUa@_NuH1=~1!j*u!l56p6P#8{lQ%N7{Ij8Pa7NmKb`*IVY6r zXYaE8aDzVW?o`zRIdsCLxOXgo`uZS3WaC(T-V(jH(?VlSHvNPG&Fg#CIXWlx!DeWT z)n%8eX5)L_Alv`K;q(X_Sw+P5K~1KI@))koVv-kokRQ?jRMfXd36<4Ri;AsV0pckG zD}jX?5Guo0_yKgXT)b4IdN7uXkgHK+aAI#%pn5j9x3w{mt2C%i`}!pE=U8cGF+5Xd zIvCq~xQ$!|>Mn9@;|8 zY^$BoxZeyFSQ&jNLz+A&wy3c~qOl=A@%A@q6eeT=vaXk_ zjo4hs@{6WBQ7VliJRkbydy{H71VZS)7O`+cMxB{g9-kb*(uG6L9 z!y^S#7Pi&oFkfN~>CKb9L(K|OGVTuQDdN(i3L*o3JjKy7d{y1eBH3lA858b)DZxSo zma4}V-bEpCKQ-NSp&i9>9e=KNqm)N3LE^ZTQoZ$8DdDMqed-wjD>wlazgBx$vsc!c zXDmIV0dv-z%uevG%N+^8C5fjf3MV(i^HS+thHQI+42}rhetf7mBD4DCk!tL%k&jQV z6)!|HXTAaDYJd}Y%;n4rZdM|p+{yjmP8mF8#Y6^9Rg>u0HjPZuk2oQhPvSzDg}Doq z@5lQK+vI9v2P`vS176<^G4qTqg7FLeH&b_m+j&i@S=b;iBhrln_)9VQ(^sxy_bR*f zyU8MhZPH~xS17*@;;j-!Z`&^4zSV8v(pDnO^yrSSLs|w}_Z;j3-NJm0(>u}Ld^gdD z$=#u3zm*P)Ftj<&c3w(@kNV}I=Yusw3~cj*;e*){VM%}U7uaX&Bjsr^JnvekD_WxQ zR>lAa=k;dzr}b6_VE=u;@3{wAyIcI*=ribQImk9Zz5eU(+7n?hV?8jvd)*s?9h*q} z9#9DrSG5_!f}MW5VQ%v~3lM}wmtedcf?03uiVUc;&?4%VxVNHn{S{CYE&M%bQ-te0 zp=)%?+6)(cVShimL=()3WIRw9QOP(L&x;%(O}~XBWZ|)RPtT2Qn^S~CsOu)6=Nt@* z@jC`shdkFYv}KQa2Ogx|)$JI52M72cZznsbTcY0s!ZkSP3WdQ1!gT;}r+Ci`{+216 zL8xCiZ)YUL4F_ieyN6EQcE^XZ*84PT6uNE=_m>e%P!{X3F9=<&z!FJK)8 z;(%J695JBZ8(uMs+`Ni{PLK^55NBmJ47^N=`Y!MFpP-K}oQabN3xwG*XmK$-%0ez@ zlE9#;ei3q1A;M+XmeW^%I=l6bv>ly*4(*UMK~r z;hilTzH_lCLESR$X>FK&Y=;*X7Gzc}t=Nz6l&Gbkz6fKb=?yw5|4eLmqi&0Q-@G7*!T?Qsr=n@Zj)JF{56Us z;bmiAB-@47w#A*55N#p7#GG*JZB-rD%QLIep^`vGGVUOm|T-Ooh4T?3rCx z?Q1a3SI8!qogU0%r?J;vQbr(fQhXNTLp=$LG8 zAL#i7kduv-lg6mIqZ!|ySAkYI7)-h zS$6_SH;exfo6hPJEXY50VRkO&YNU%pVl-n>(VM|P*!;6GlGP!89yONL5o{W?pi7kW zdr76uu_To%5H*ECUPsk!bH63#o`ECajKHpBM&S%w*hx#wR26BnzXj$y6K2v|dT^Oq zj|HM%%Zv7a*zjWs`)D$gI^Wp;g-T#jwpRcF{-!xzE>>lzEyw*X@1L=dq8A}6vn*0K zTFx(fHooDUhb@F#H3l+=HpZ z_e+}a!iZ@m^1qK}`M4`?kBN6C40U1-CL7=c6wFPxhKvQSGZ*ciMG^ZLLTWW%@& zO~G;CvVmzUmHXtbmCm~2l_%-83KnkTm9r{8Rnf~@XuxA_^PtCZ;evAnm0v+Aj$c3} z9L_7wU4P^I_P8O?V*g?a7X;FZ>Qjv1&oP?cD(Q)22%r|-SpD;eN2*fv@}R_Vr37Bx z236!0`OT#L90sDUgB~U@aFq2+Mi5F*k7(zxh|SHtcY$yo(#Vkza>pJ<=P+#;y=#|5 z7T37Zba#G2>D62ysR*bT#7o0Jh1l~_X~7c%xD+3C$Bp6~WW_j^yWo;=yLC2W?S#3l zG_N|kGV~99QbIot4n?vKOJw6h<(&^Fjww7nIJNQW7X8wA@iSF3hgN0A1;*4d^J@X=CTaf_e)wa}v zBk|_Dq1%?i?HN7d3~e$YDhI!j)qw?c_)aPM-yVd-I^lOf1gq%*zF7en^h-z6)RLls(~)-vuO zx^iPt&OJ>HN~9t<3MJg@+0qb2%ae00Gu4;#L?x!VN@)49qgz0jzab~>Unpubrb(PT4Lr8oO|pJ! z3kht_aYd=F0~8^cIw8@tK1LYtXGfJQfm*F)Rez@xmNz2~^S`<4-pL~&Na*!+WoV29S)V<+>g z57kWVUFZ_aHGL;@0fLEd-fu{j#;iz@O$(tKGD)+BBbvB9OF+%5 zRxX&$A;DF@e`f?kRf9igx9tBxJB%HPYqOjY3^U^opZKL|O)_*4Y?vOl^$gf%%?Gw& zJ)gDp(vcXC&c#g@$BE}mf3D_aC#f+a>S__%vN^KHhEY%8l^a5hZisoqEsAli9K4qY z)UF62ZCp$L5R>I5be3ql!`lm#uvs~orBGR0%zxOg3MT|~OIU6A{#Hq0jKhIGe`HDj zoLF8cn_j^U`bP`%DZcZVpiLK_1rJ3Tuff;I4m(?4DJ#UBw^nn#tdmw-Hbk7SRW2kN2K`-Xt*#3{ALG>HP&Y6Xh0+vhIwoaOF85_3MB0$1p5wapHm=rx;0~hk7w~MkhZE#WwOrm(HqB{3( zfiksIX_oWX^mHHZaU=|TxygJ;u_NMqj0pxV98a5OBI z8u(cvw-2Ojza7Ot{2ZrSU1vE=Pm4sRiZehTtupF|lZ&A*!_O6P{F92vLYM*BVKU$c zy0I3nMsnB;utKVzt0c|{s$7htQ(oN5D&Ddk{R~dtx)%Cu4Q{z9bB3K}7h%whs|eC* zBwB`U`y;%AO;O*sBJuEsqM2ty8d4Wc$H<17I$i{^Z~GJ0+7cEFkh0<~z0Q+5@coJzPdcDr+iV+xJv_~tEQDcoj$>@i{?>}J5@ zO0;vHuamx9%ayU1=6o8y!TE;Vr{-K0{)|2s@rCMopC902_9RzgfTAn~K@wytZRp?6y>``t$%RCQ*-MCu)XbtN6v*meLJF7#ctH zf%VF|Y_Ls>D5{M9E?dj{c_{=qgM#aIsX+{r#O7P-O3Kss=Bh5+!#vX59jy?9Bz`zB zixB#M{n{FVw2L$cdI-;HDP~XLVd><1Hoxw)##)%7@$yc2$6kxX9`z3sew5k6MzJYZbeWl6uH!wt57H*MIJgXrap6l z2nG3|(;!73$&@opbn`JU#ZVOKb%@0k;pADmytX9$N|dUEUMnmyv~x=Vseu&aoJP0FVOdWxYFkw^u;&-ZipedwVN17Sna2#1Nh`9X;R-}m z*ZJL$QOOC;sC(QVs)Y#%oG$G7XKC8t96RJg3X0%{jnCUi`{6`o zuw$Zsi)9#bX@%^r)Jxk&*CNpO+x<9q#_THH*u}78&egDuxm-f@JLEzNjIm+}5zh9; z>^jevk&L;%vIK*6&d2OZweMTqM*C{TM`AVqqu@y}1?~O{05=7tgEgG$qZu{>#JTXw zU7(6oCZxipOPNK7wwJ2kd6Uq%l>wpvZn?K* z5{jZ-+7_fEYpyb$3SWgsMpi$GP}vQ3kbIRLS(@uiipfJ?64MjwqS>GK6fES2IF_QY zgKF89IxAR~_`dw3*#((==NMj5>q$lFB5LUb*`3HL?UxKg?hN9tNI}nL($UmN%lj;F zC}ZGt2!`wtNknR4KjC&|b^dJ+^pT}bX z^Bp-o+{lO)dy+vbA&NCT9p59RKstU~5u7MhgeG2srM%xgX%2+)RL`t-29Do$dSVdg z$I!4%4%>03$L35@J~S@&zdn&M{JJY^cx8*x?!Di*`TJ7`$|X4#w1bbCvRV|jxumaL)){t7e0$- zxkFNkK2K{KBJ0XGA zkFV*}U1G^FM3y%70%I77&C)6>&=088Li?T5BZq;@l)(Ktx+>G%RfSoi8~+ZIi&3y%BXf3G=5l3YUYY}?|#oE`DEirFo_%{i{Y`R-$erVKAbae{I6-n ziy>vvW!Cqq(@))J+tex2@bbu#Z`E ztm)-of#vaZ&UK5bkov~psq%(1Pe~e<=$P>?ug8h+gA;O=QH!BKk=ce!(KrQSrI@>C zUYBl#t@_#exv`%pV#+W$FN9uh+9y&98ZK+4 z6BaJ&5jWpIfjG{{Rmz?I{pZg^5}!S^shKGza@Ph^`KLFcko8uSchjV02* z5ogLu02-E}T#{v>G6~&sr6h|~W$Gl7LRF0vm zR{-_)-#ND_<*_Q6HURbVUy&c&y6@fOBt*k4Hq|)=GM7>Cz8rc50uy!cn0k{PINvm`+-G1l~-AITLThK-3W5s&=a8U9T1GcZK^?Bk`32sk0oWOXr|EIsC&Cp+&f#;e zo77b4 zEb2CChEwBgxU}TM*2DNqxKtRny!yH|CdJ6UTk4r{@VXoJ1-qBF2#G{PAln{)_dWzP zMay2~`?u!Mp?{1z1Uvx~iy5p1(`jmCT;|OYto4U>p*jy^p4Ro3!uX(ZTi+eqQ6Sz{ zJVdOO@kYyB4iwMEkfv{!gkiv0B!4;B*?ayT6keO^^*wtKGgSdhQVC3IDduOo8>d+G z?H>}c_^ALd#K!(|TNYsEtag&dvczLN@9J$N5r$Q$;Av~W zJq>C=j#N&ug7Jg-4HLlPbWx}^>QnW#1leykQ9V%gg)r9==#3i52M9caZlx5aSnFn1 z79L8ZK&xh`%1)B#;q&VZ+DO)7X#Z~DhBq$?AN%mDM+2x-807rrp9QWqdJce3A)OO) z5!R-t`xPY?hk2mrGeCHeKm>embw5h{MK7AqODrk(TRU;Hb(H3(7^tKtvzi0sdN(5C zQFg)UD)6V1>M7dkD$nH1fq7bSd)o|=FK9LDNiUFL7gREhp^GVytAq}J9kB?rV;U}! zj8TG|f*2DoBR&olBAS8s-F1?6l*wyMeXyQ!>onD%g~K&7Ch~9N1n*Hfx^MW0<3U%4 z)=t2??2QE^jDVDSStaBz=<1Ld`uKi4scpSQyHaKTqK04Rs{A3=?t=yJf|YSP)dRGG zblQSGaHNGDZj@9U)8{7FW_-pCZ%ls}+T{too)slnD@C8D>p(1W6;!;jF4bcogBX`0 zQkrN4i9icR6^K5C?UdA>+LK4?zLMZWByTigXg5S?HXJ~d;)}Xma`zQEmD6`215vYx zl;*twh6J}wirjuHfZ6s}kGYJ&#d-{IQI#BblIONS(3qtXM9{Lf4jn70U@+Vk7jP*B z6sQ)>LBNJRri^Mk5^cuH5Joj7Q`%gyu|n$wv?Sx3>S{Fmj_V?-Tiq%2L@OlETEHMT zo9Ug_3Hy}0f+3lMB_oOE4mHptVQK*i52$s272cECHX~#;oH2w56sPpIZQTS)8tRPC z2+8WV7d==G8EAW2T#m}%7^|Su*XUu4JqH=N!ikS~u`l^~i>l$8B8UQF2d~oR+j?g7 zw6FedJllhNA>V$td$>2(=E>tRr;1QwCg5VWWse8< zZ@km?ms!q?Gu}^GmWXVUd-=UOL67nQAO_4EQbela+!thL-cWAF3b4$oTh#ttg#*_> zCnMgTfZT~Bp5Qg?WxQ8}dBziB?><%qH;gU?r?CKBd1cq%BJBgdhh9s3-9o1!6|gAL zU@ze1d^NJ|vS!0@IJwSOpx-6lhufB=I9!)Zo+-pmZn4 zy|nU4}FYKTl7m5y2O3YD?hTvF0GZ?6Y+xAA! zpc~TmlWO3ay6k>-KqS2r#Vv8D9Yc@ERDaa79dJpzL8&+TucQrd_?~v>9Gv4x9-A#7 z1IhgA|7WjG-Jv}$ZK6c8yvRNDK5(LdT|RyLL7D(%)!!?`u01(za#Q{8Xx`4(7y(bm zq*(LZJk9!Df0PnjJ984nQS>U1&O?i1#^qI3_84!nq#;AYh%Up2{93XtP5tiHDyCK} z0aDL@pS6wqMOq-qUE!x*DcLy?E)wh{Rkt3;REkrM+QYBMg%fk?RYRB1$28(SXbkK0 ze2<<5H=L3(I-GhculCNqfIBJc+~qxN@9>e~7woROv?4lzq5Oa%fG=sGRoQ{jd*NX? z-_(r~{15-LpjU%_Rezk)EtSNWNY11e{k-Cf^z!Z-&qVZ4<=|*MmuCVL;E4eC~0yBl8jo} zzy+p}2Dre^F{aY+6X!G?J}PDo0C~L}L!NSYC496rxQyZ0JhhxV4|=oI4YFKV!jU;s zFlgj&@}bSMoEREroS*msYZ&P$Ilv#Qauh?zAx=50?Fp$sJ+pGc2nft}GJfbbT0|v- zu=!jcP)eIXW+xn+_B`fm-B>m!(6R9Vs<@T{J{m&`Ne9X?!$%B>zzhgbPBAUMYc=pl z&hI+rR`b6QoRzR5K}9*qo`!bwEK-KQQGd2jEfl4kv%v=OnGB5u^f__G0Gn~8*y9If zr2=%=71oS=`=`uGsUs-X43}A#f-dDob&5e0RLlulP@7^0WlLjRY$(>Vu$XYBAkt2& zPJe%GSkz~?B=ns)JlU134V&2QnmB#@h3Ygu9DLLf<66zfP zDaQ*6G_p_w0`zbO1Z0m6L{v>@MRKOa3?yV^GmyBfuIqdbyszym*4BnyJjVU6Od1-ZyF*Dc5;LRO+0vQEgF1-U}VMGLY) z$R!K1NyvH)5jxD-Y6#I5>HUt}Ux@YoLbTvth6C|!KDBA#xkku_1-VMd6$^5mkgFC1 zkqa7D(#6jzM8`dU$4E7uwG3n!+)TtUQGnc z8#YLJ&5G*v^IbQ#eO7trb_*yhQH9%`_gwSG4_!BK_xKazC*sNY8_qpAAMcvF6voeepCnJr!GydBPVrL1Gw-D4csI;Z zN6#N1#{vi`sM=FV8_GkY3R~Uv9)eKIKL@qE**#WWD9q8n0 zz{!%3R#2unbDQ(oAN@Y~yg@R6zZe6VASAXRabvbo+kWPbkGg=|FGd6QtXJAKfbhh!)JF|_bx+g zVdvMArDFL6ZdZ2X_O~9>`<3=m@!2PMzx5Mx{}&bfLr0g2fB!E&$;8gHM^7wE1%jk_ z@k?KEWY~Qc7hkm^5T2sxQ{Lal37Lm500=gLz-#ndE+dB`;^s*sQOjZ>wTc(LlRW$l zitR69Wb;%9%0C>DzPdcGeCx?;D6tCpygXc7`HJzy0CKP(O(l5lorCKLsGq>?KOr&| za6$)ZHr_#$5#+PCI_JOqeKMLTY>iZa92K9_>K3bC)_EWmM1#gpoT8g)Z=iue*75q! zgu@%mrY6_tI9+fw`SussX8-mJyV~rVx7ht1w;fb1_PSfP*w&Tz-(tSD z*z4|4i#Y`db>O)tZ`ExkPtuPEL!YP^G1LRo;08_jxu5?&eEd)oUiY;L|JR>4O&C^9 z81C7GK^DUGG6j@X6JGaq#o;*;PQz#I1!sDA!P&QK!8y2V!8x#N!I|5&;Ork>aHik? zf^*Z}3(j=C;2cWKaoWdR=i|Z*wc5VXS;IN7jFD$F;z_ksyo#lQZo~^OF_A6c8BG1w zC10MZB^SwiN-j!CLuJg_E{!=$Swo_di$o&Y9gcv7K(yU#IJpN&6!PuzWh%{)lWdsfl+i66DMqATm0!C>wWx|S#*dVLCuT1RJ zY;VJOdT5YkZb3BB0Q)|dwJae=cSy+bUc7IK&tL)*d*IuHN>3t)s+G;DMO{N9#@QB( zF)bM5Y)(Ze2gqa?fkwj!G#bNBN@Df+)KP)Rwb#`OuweuuS4{cOo98c^>&rf!;=JI4 z(}5LWCw&AApH^rDclU$UW>}!ps9mNsP)oE)vGQw`FsHO&{6KX#9j;%H$3x#>;ylXS zYZn)Ojq;a9Wv19J{#prIuR#CHuURfnbhviy;W}*(*BN`b&f3FupFLdn+rxEkcucg5 zzbS8&Dt<~@m1E-lkE>m%{#J>qQx2~<>y>tiO-gE7IxA>+i0ps!MT$bdx#-#&~;trMGEJR6pEVv`GO!?I3nauIG=)`?9DbQ+d7lO_c^4a=KJlk>A- zc{AZ_e^muKO&*ywEc3)BkIfpEd18|js$rQY5`!^MY+z;H!?-ZwYVTPFc7$BBAQuU_ zYC*0La@~S#5VB$$7ZS2&8y7~SMvB*>QA5VOyHi2niPfY`j*rTU3Xj@GKw_+%|4jKH_@}Jt^FL~ecpJdOl z?t969lF~Hro63I@$bU+Mzoe4?Bp+Pkd4IIp3aE3?EAM&!VIBKF zC>K{#uJKHJLnVN}@A70`U9fsKXveM901Rl`tMvd3NL2$u8+0|OH31B0E38!k3}~}a z>jM0JcSsrF;?SW!RzmAg-?b0*Vdy@3sQ;vVc4<+@%bE=A?(%#~a>OHVHgFP2DhIiHr4yw_XK_ao3yHg!4=q%u=b7L+16ve97fsPX=)N?)ADL*1SyqDBcWs9{{wB;JPjTeG_sp@i7rG7 zjZ2H4J`J83Yu)T}w*Ry=MK*RiCkO3NUA%{nI&IXdGGL-UhwsVtNvW5$WqjN3J(0R{r%bI>l7_LyS%8nVhi55LhRKkIwt#;v=L^ z2(iF%&ASsi`ryYyT5>!67~ZMeQgdJ)4m6$O%g#HAqY|LCfAfounUZw5zhbB3L2>=< zI*nC31ASh@LN51$sGs`B5%tuVNC;;@rOI3g3s{^XK7lk@3$j+6U}r7$@CiR2Esbo2 z<03y>bgB3P*#Io>Bv;sG>HOAGpP_Q2`nkx&{erbetdg?3miwSVHXN!n5}_m;XY$r7 z2CX23g&oY!7JtlYypf1QZY9V*Z@`fqXT}w`EpV@jS=(G#t@~`FqBS+M&Cv0+^U4mR|B_k zP6G^9=1LnlNpVW!ofX%ptkX0}NQ?B(s79w(nl5>?>s?03K+p>(0=312SrP+!;xh+% zP#GQtwngIlJV}<$; zsNgJgAWoSW_9KurIlf0$v2$EyXzWD!d&k*Nn<*&&p3nq>ITw$cL@-E%#A+b4vmI$C zF@Zg@a0!8Ue6@;#Mm7UMv)>@I4tE(%u;q3v>E#%Uy z9Ie+;E4`1o4ja^SY2MG5da`136w6bzDx^aF@BQdk5M7JGw%K|f4${2h_&^@ma88;} zgylhEiqjICI9O|s57E91?_phs3b-tQpiCcgy*~T_>iWeMfi*t2yXGzw!hx@RkO4fU z`e(~KygJqaiUtd6S=kH1KbTM{Dx=aRX(Rct&DPuP*KL6SByd_|i z??87%Xog`JgEluNO(s}y>(jaXJhoIEId#mTD!fa%df}v1i~0~x3} z)(^`te$)9h&QbWrdkqq!>8+I*YB?Pco(3(Ii34RhnXGxh!=d1AJ{f8}a4-3riPusC zwo88LsAZid0B#CDDxidmxBfkKuGO-9TL5p`0NIR+H*COF0laPlUMmw@E@bmg86+e~ zpOV~n_&S(zRiSP(Venu#)uV+~$1r|BS^}+gN^eS*ES#T9ZA+8&%qcuy>N+vfJM1@D@< zePqGAYHojU!Q1lmv4=<~z6J$~x1r&U9`gq23G^+s2RurqssTVh9v)>=C5)^-{1RBO z>vZlxe-af8DteLHzgMseu5qei!7kDnqem%X3A;oovIm)Q3B!k6_u!C*x9hHY^101< z+v_Ll7^GB5r@4GsC1wYeLk^mc`?e>JhoHJmhb0vcNna(kzYZMv#8u*Gt?SO`S6p@U zlLW@PpD|Kza}E{J88GpIiTVOc&xJ0%%Y{Zr)g@I)cXCFSj8B7sQu8XRx)a(y4L&X; z=L4$7IBCflgfeAjqkgEZ@W~3^rtghhz4Yb`|1itUsD5Zt;Rh=CB)k`(>olM;GBakz z^+N{~ez<}kkcTq#ZA@pZ$ed?p(>xTYE}FJH$48}hd}MQ!v&y4RmON@qe?Qe3b0_QU!sc1n zJPTWg%IjbzGhB>Q-UAlL+a-rLj4iOR1s1k0l-J4a-db|I5zd=KxbOdB2Mdg$9C%M&%M4P|K7JJ-`9L7)B! z?|5;|uLCK>S&G)XRJtM(Vl@5x@QT?gVJs2sE}?FGhf2kJl!8fARjPRl2*s>PKMz?C z)s`Y{nI>u_(3H9f%LrBEJ7me0tG|F4Ej_sHE5GYPs2ZNacuDEs3!D*eeC2=`=1Y&L zaDGVSUJgWC_fWa4d0m@poi!?#nX?yvYn*_vWSb?67eZ}$khyApCmcx4!a9(@ zqqoa2B_X1h9M-kW)~8c5(7}AOtQ`p43@>i^zi22k0kd5=Z_0xEJC)Os5&Vpf zv_MV>f|!KIETB%3zdGqnsq-uuVw18Vy=)dS_uin=+pU4%ygj&=6hPq#qf%T_e=~^0 z;uPy95egIaqPcI-!xt&C#dE8Ruy`Q&mQ z4vMA_x%d!Md13YCVYpA@2g7w3vx=Q-8)hRfK8N)6I(_k3W1El0Uis|}r}&2K=5nQ5 zoP_y;8Z0}Do}+J~vf(lrMhI29?@T`R%3}G2?$iC*vQAJl_376QTTs3)n_ZRGIkzew zSQUTj+2O`}@NPAVm#4Im44Pkze zVoy@E9uW2$2-C$T(ND}K(UsGxA>PFbR*jLS+MGARaF?Iog0~z50`k$1mEh`}& zoR|}y|CPn|)6#<3+DkG&XI>ISPoAW|iHM^DQZta-AfEjb&>evQ_vEP#`0N-A@9F#;R{!O57FPmS@ZLIX4fTiMm%=nclU zVvMQDD`?tF{W1E2?T=Se%>$H9N_S1QSqLz)CKNa+&Y9I|hfgz%Nsg)aLFU|S0vDy( ztPUulw#MlLGsVf6$WL*<7=}M3d1!#aLHNu{kVT4x;PQV2x1YE}OQWnZm zgS{@PmrqLRF~pN1S}vS>A!~E7p}4A}`}^-!`vG^fklZd8gvDsBUJ;&^&U^Rwzwsab z-PgbR3-3DT&+0ir{J|bTG;`IWHlAq$^H%b|?+-~r;<=x~61RvSpdBaz;Aq2Q)1!fI z3a~kF!KfaGd<#v159KHha0Z2!Phe+SaqsP*Lqqf#bg`uz8Bh-wsWV1mOJ+0VpV{uw zHCvBI5984*$72L0 z0%yln-U-(G)_rwXOD(A-wXC`qfmQ@BjbK zIaT*|w_h={o1Oexx^>Q}s#B*g`3Cq}K#Movc0jVa_#JAs-nUW8bqS^(6Tf{Dj1Zyd`-1x3|djB#7^cb zIdN-W9iyc4hMP*?c^ep*y%;u_vZu%P%Zx0(_`x}po|rc@%10uuqSKW%=n_J)#WNkx zIWfiP$D(lwW6PItC*(|0VT3Lx*vrDpWxuIjj%US9-a|DKqOumV@7NC&AR;_!{LS~= za`$oXtuy)1Ew(Zh;yNJ+7F7mz?rvmHj`f9Rj(IZX$zU)T zb2r&*+EUxw4Yt#JBbc5zu$|%L10n9V6Q?zp9+OnaR3@o_sZ>%#5kuV}V9Q@DCB$8u zUMHyrQ!6A@XR0kJg$<7-RpXtL2c~Oyz3}G!+Zl8oZ<Re15$g-HZ?|5&y{P(_`LO!TE)~VNv&jR zSW+vPs!3{;DgS1RfJHoS?-UX$jUUR63@6$Tx^0zhr6+JXgpnu4(4Cz zdGw?Ucc`!@=Pfj4R0xc?4QWB;S|M5{d(H+Wf(OOv?>c*u2sSAvtNE-~%vbWTL79-^ z6SfShdJ~YEd;!!Aoz#jm%;FJ4PfE<`WTsoEaR`K(b+St^bIt2Y+mLXwMkt8$1S6Ch zb}F#`^%+%g$K`#o-WSUbLuO0f`XX?Qu`xo?3MHHD>DKQx)k=jhLP^wDpoWW$5lW&U z*&u(fQP3%*RNB(@^Twq{sry2AB5GW*C3pyeURWM&3FeT@w*;Soz(zLx`;osN3ZX8< zuboDvyA$>;mw#v`bkjlj?w;cALP<>%AOzG!uh4BN<<^b;+}hp@^nSwLk73^f^EBBu zD1`CL`+U6*h+OJj=cD%t>s0N1AHAR2-j@o|`_$wol$+b$4{b9-m;iw;?$)%=2^V9G zeY4CZG;oZlI}41lPee1vh&r~=l^tdooPuIomPZ@C>lvA#E~jpV_kj=D>ivq( zi_OW`Yp{A2#(ZWBp*cKbTSJYR%}@p7h;||8f(upYJx>^?yJ0bdX&(29E}b63#*6G( zQ7*0H3{)Yli#n!tmcC|$c)fp)AXW;Z0 zVex1HyU^p{h;N|{@3@uohxEh&?7b`4&w`dKKu<+my|Y2TCLlDLfJb9m2|OB0D{e#T zwy>fJ2#e1|{i1(fAkD9e{zGYyX=bc-Wp4x*RG$Bg&jAhzeV;(w$cov!q&s>s&um?+VBE<;+@8Cq* z2Kc#LPA=SMI>!WNR_CRp8Qv1~xi3;iKrXedGeZB+Z(Uihxbkv2KfCbz>i zRL&VIN~X}0P5VvZ7~7-`s4N!0h9O{f(Amc8XnGXyfseAT35We|$WiDk=0UJK_aNjo z%zT;0q}cd6WehMvDV<1)i7SbIgTjz~vK*$zh=(hns2<6c^`SjunVl)H0BE_eib)I5!qfQSsx?y+Uur={!*_ zFw_GIFECNuc84que;aaDt>%(yuDC~1#X2qc5maVz^)xp|wY8vOotaslFfg zfw6Ggt>)amc4qU-HGh~U)=?!^LK&w<4HNqI5Y=7tYx?DCllyKj37~&$Su9zNRD&%; z0}9An#o6UBfdQ;%aST8)YqK}V-QW5OJ#rIzAkxAhfhRwgU4$Mn_?n4zv;A`%TG?A@ zDGei*xcC}eDnA%qY&CarHXA7xV(AG36PQK?&9d}=Ip9|uV6d}04;Yx-I2Rb$_}~bd6j;MtM+2y;!R@{4G0-$|6Cg);}-43mZo^&H%FvDK^-$nBm5jAMZunTs8o@{ zV4tWI5C{8sSpZ7rGTq0I1V-!pH}EpuP#pfUok>A)7oB@fx(JCu@jEOzT`Bn#OU_hE zJ{yp1nhiDkd0ucJEHC&|mK>^-d^s>tcx(wOm=CskcR&?!fM-{i;gAlopi>rnhy@dU zw~uTMX9Fy_8H|46^46#Mw$rCSu1|~3X2mJb*=fU^I9kFoyJ$0dTF@&VQ)-nVCp08V zsuK>8dlf-QHvLl`)g%u`{*c-8Y1NuDj>!xSiWpFY$uR~MVRDpFKA6lH>4V7@?O&Np zY3j+O8dGsa!NR`&U-r0>VzraBOho)9{H^gfRZX4NRmqQL~A}CSsciY@$_s=dLe*%iqau9wlI$*6o4r zv1liRipUNXzxM6hzK7Eh^TWme`J+E!K4v~E{y5l)zLHG0#^02`wpqrv#^p4UkIiYs z9-Gt1JT|8hcx+B1?bsY8H7-ZwPRFgCLIn1*as}Cr(c-}Eqd}!S6!Spu2Pc~I@fA_e0Jk5dEjR65BWH$Xn3G9VI>;-iUvnQRGh3`X-9(W)gbCP z60pU|5O|ARA%|;cy7lsnYuv6Im@e`;Nr@)N!plcqwNZIhpti^rZNSGi`rZe34i1Dy z-xoxuYV8~db((uu212c`ON)jZ2(`Xy5`DGUQoa}nm*Y+CK+xy(HO}uZz{~1Dh>AMM zQB|&mD)e#v5|<;P;YI=&kiLcS6rL;nrk_5Ym++pzvdT8^4Pnf#p79^3m3&ETue-{Hx#5CFW0E%?f z1nI*QmEU!b^cQ_3UBda$B_An|QbAR;^Wt`FTIeI`^En|yH*|eiDtqp}@a8y3j-AY`^1MdF39RhepaiBkY z>*vb_iyFX(BHuT3L$Ki)&<5Rywx&xXeh@}+QcLTNW~)6koQ+WUCa0;%l%6(fv1R*V z3Qi&dKixfyQ{ufWOkY*K z=g{CiU#Z?R)HJR|Cisd89XWWOWIu!K5V9$hbx-WgY`{OwY@gsCa|1tGtdBaVLrSy9OH_lp2o68bRF?;=zTKw!pWUd>%&%8>s7Whv~qYzlQ^2P#r$bj8|k{od(qHwcTGAGoUGwl)mA ztFyGMsziFDomX4>d`KwQZP%juY{od5VQB`3(u7ebXd|}iA79}AI(t?Y?TfNcLrnYIsm2RFvV>zo9r|K7Wk66k z$Ari_CPdC$zivDd)ZN|A9j`KX8i>`_=kD%Roae(n=lO>5NKjXI-@3Y2)B~m4#4|f4 zG>u0Bm>c7mP*cwbIoxAh2=0#6+u+WacI7bdEAEVYowo7ahyW}DY^rIak~vf+50uH- zGI_>#$q)Xy34?!02#uJEhCO<5Hap4tIko8}cE^-w-9Nbl@dN`z5A`)S- z;o*>0JRDNv;n3pnK%_|ZaA*meZF@tdRdWm79Qt%MrK3UBd0{cUXgf*zofk$IabB>~ zv)_3keJ;)m8!FBVN1oAn;hSMFc7rc#?fIT8!#LDBbsXw&DnB1_k#J}r;OF_?3YkE1 z811xiSP7l#`QBJ(2!~a&ugPIG*6H&-*vQIZO=kp$1ghHey|}Xshp4k0hvCjB4nv(4 zIJ7$}acCjp<@w(F&MF+v>5Sp9uCp44aYXilG2I%5o$<1+U&aRX@-?MzCZOMzA^7v@ z;hXZ+)4|PoZ8|xyKOdWJ+`NDPtKrC&uS9Xe;uR>)N97hdM*+z6N`{Uex=CtXv*+G? z`E(*zESnzU?I5wU>DJBp$aEyd(R3u0)TT#o-e2)dh3K?>b3QyB%O&A-cmNl!FqaG) znT%homfBm>!#C&c=^CO|htsPn)r>Jfee-4wdz}ZCL-hkzmMRd zq`OM-P}=PZxF4Rb6mUa4St&@ZU^s9vK*7~CLk$c}!zm&&gDNnsQA>EZfui}9h9g${ zW%`2IUpe5dM+O9?OGG}``(+IH>UBy#$+5m?fcj&T-G08w1aGwY3ruiFo8R8I-}^$$ z4G;v!ya9^gS%H30^8ivnrt~8!u>EGDU^jpheL;5rLAS)H-!1Vu?*4;ri8a#X4y<+| z6psnBlh`mjeJ+z56zV3Yj$LVqaozn7M!M@Ch>QcFZu4*;40Q9oo5GH^v7Z<@vw;#Bx-HqD8ijgu5BnB;;@ z^Hf-FnxCu(!^)W+2^U9|DkqwG%@S2Aw5U>Hb)pRt#$i8UTuwC0=^DG4$lA?B)rmGp z7}Jy{hTck7E`va%c0%EyknWiP?}D-`yI78QQ=Ywn_TsEH*yxRK4G)J(M`K7I2An!< zheE@h7h{Ewu1-kw3HfMjOIiRuMjWZ1m(1^SFk@y(+iRtnjy&cwnBoyi08J~&&E9Y^ zyKh%_Xv+IE3WP7b8*<^Jp=wVx9$iS1)m0?D_-IJ+F`#U-Ex~c*WK}p}j*sBn-GsXh z5lp5#lKqTx5T>Rv>}lm`rP@<6&eQCVa4)*Cm3H;XZ2em@_Yg-P~vu1f)9d2EpRsPu$JVVi)#&P1>Y4n>!?wbeqk z(kw7Ca9Vv_K)Fl}Z~+ewE@6CNu>t_i+P zmIm-`=h65;a>L-;WWIxM+boP;jKc~rWt+X_VBa=-%fP;ER&H#w@Oz^;tN|CdS=hdn zsLTWVCaWIUH(Bh2ee+PfPJvdk-Mf@QT3w9o?m}5Sd&b|Hugb@8N~2B-y|H39{8AC9 zXN8pKE9K%{yNV|4l)ySc!zpKzUB&S3e7Rg9Uw#>`DMt3}>QipZjNVnWcIP9w2r&w9 z(P-tOj1f4aT}6Gj&@yrnFwAk$s>($zwQSr~B)f%Z8bh?8HI>sT(I^|cie(D2M!2y$-ZKw&72$3f3F|87qvo$f!l_Y(VBu)@t6< zhk5rGgn9QEf`Ia(}6y<$fh-xq)C~k+jVQE%(cy<+P~RDT_l(?F3t9V%k9P-hx2z(6Sjz zINSEY7aa%$KWt*PdkbQ)EDTsm6fhyTu&kVj)yz$ElQ02G>?vYI z$?BK=92OF_9+&U@a|TK*c9k4gq%U*j87|0C5%U~?{C#4A;oQ+cgRnF*V`9boe4Z21 zi1&^197wa+-FK4bVsjsYX_WWfAL)HB=ehZ)`n&_NKJRglCy&HhDQ<*T9kP{aKX-@d6&j_(ESy)FY|Ek|zqhfxJKlR6vor9{9HL~J# z6D6$!WtR0SjU^r;Kxm{vo;!`=hR%4X8kuob(SSmiMvrVz)?C)`k)jPQl&Dq9W!+{& zyMUZ+SzRqnwdcG`7|VRQvhpji6^>E>fN;lfz(#0QjM@=;>O-m=3rFe9CoTf@FnTe= zw6B0&!V0~6r6DJhBI)HTOKS^-D7?g(MPLoY+#CUpYH|86=Dh4A-Sk@d5NSZfZFm(7 zq?{PNRh*CfWSQTH{6v}W^ysMS@~e>_EAu1BXJx+LBkZf@)x>>d`o=F1t9%3ksO)#6 zCKOP9liul&V?n~U**ig^z<%rE2I=TKgzrE7F208vdOHf13|pjFF98()A+6=)+kK#AAfT@3IJJZb z18P1}i1+%MkC<^`-r#k&Vq|+?@jESjRhZK;TEcvrC*kBC?V&U=cXe0 ze$q8T`Fb1Wg@C~eCd3;dY#WT(K{f1|@*efoF$E~;6L{&ig6CxXa84(?dIN|X=z73? zuTu~Ab=ZBWdfn~RtTL?;D(Fvwe6>?{uEvL7?X;7tRoS^tP0!cqFj;L>mK-FR3=({& z_7)EtvQW!FDrj9uYYFNxJ>dEc>nBh{)>Zm_G_$^!uW*@jd-;gVoM#a0nc1q}OfwhB z2Xnoa84cz*O#jDa#gdg`je=Q1luM(9Sf#uzBV>keu#nJv$His>2RuxE!8MI_&M{;O znW)k3dMlFNhx~YFwUKStbnVsuy27bYQqgn+U4ML|_Ew&TpwFABR={O}yR2OVeOLJM zYPcetvFAgcZ-dfZr{Rwo!1}OnohJ7gzc6k9(Ru#$`iX_H*lU-6Dg8IyF%3D#bv^1^ z{l|*9fAzOl>FOWlV`vP$$T}@q{a2aQe-$g#XI~1I{d#&@=!0b~ii$gg@tH5zqDJ`z z8al`#w-!aZ7R7cgf=W{+SF2o#pa+yG)+$#bXbNSX2^s7RE76R%VeN?WmRyC&yiL+w z%(v(~?_YODmFe0mUqI$wgt<3DU`@cq=rykrISrZVw{ zbm9#yG4XQDyUfkIjC0A&yG-ZZkj}dy?UKyQJ9fwl>5$628_{_;s`DdAF=O z@0Pp1Sz+eTD$F79LNbWPIENZina-hxs$7?tLkqrOQ+*5(Yi%O978v~#!8P673OxKZ zD7dbJSVtHnwawl&7$mqDRy#G_=C09^E!$kj@1Lh|F_H@xEe@JCyqcDl zi#fuj$@<9<;m&k+3?f5wI_ufB9x-Kt>u}oy(wn^*UX2UWymp@VOEOw&`mQUs2ysBS z)0Jjot~JzK>b#k`Oyns|crZWH^ZZF23h6{}0p};mUaqq<#k?EMQ_jvgZ)?!f={bI_ z45r9T&)8jt50J@W4Bs@B*Y0$5cIK-fyv0*H2Jm6nEL!`F%}bX;q+#uSFCUhkH)!9K zOt=*+uqzlAujRS0@!36oK8zZc;ox-}l}|m4@jTjhRa>u0>{Wre3N|#$r@S$>p+UgH zwgxPuxdtNzrW(u;W;Ts21cSp}JcDrPR^45e(tYPf?>A+IBc$?kI7 z&}fZx-~@K=j$CCFb14Q=TT0xbl;$0##&G*6Kp16qyS1XZ0V2dm%>%l_x>gJ?x>iKR zIM#}$TPvEF|4p}6G_}`;b*&iIw`rQSB84+VL&gc#ie<`jFIR>eOjY;^RbQ^_P7S7;-g-%`oARdQFkYm)^EJCJ^dT=@!A;~GNv+%>(;?1B zF7zu3$wZYedRnDp0;OMkL%+y= zzFzw7oP50!`qFW6eh%0Pg5E_&+Bp}|&J%2A@ovaF!Bu9T1m2)e0!YTFcUe0y&mi6` z!QW$pC72ruA|~uR6f`kh=~e3K>Adz}Dw%37GR;)PMK(+dqU^U|L1|x@9_4@(9p4H$ z8}-_CD6`Gj^`QB#qu9agUVwt_WquR#7nJ!8JqBlY`Eleolt90M3hR7r?`m!DIVvt$ zPnl8O8p!2#XZ%JOBsUE0!x-KG87U48dNOrrN|<-lK?%Z9brphZ6QrUz(2psFI24Cv zl#4+CiUZx9JV-uuqwy;4PzAy(g}r+#Zc!}qwaB%vR*#`9?sN zd)fc38d3`STiD^Xpw;n%9Yt5CgGb?_MN9D1(!@-u}RSLVVxaQeMDXBf;yUkn5H}zCKVx|^w&8N+7 zv17)jgtIkCAg&+rw@POQD4E1#@Tn;09M>ENYS!&jrDL3yB^7jA!bpm2vS*J!u&h?-yKDyue7VU{MuJ zSSzdGDnPW;cDiL&cN$tXT_)?PfXSLn*Ifp|6*8BDsA<^cAZQwLIf$9sE_cQ=mT3y> z4^eUKPBKok&1@?n?P>pQ!S2~|BF(esrjh(jQTg?jzMJ={2=ZuY7dy$~)gxUfDDZr1a^9KJX+pIE-b8B3w18-w|Pm4iJOUO&}TMpFh|hhw)K(>rXlHyggyI5BPZ=%IBZ3Vbb~j`kfW2(*A| z+M7@iY5`TW`%w^S0oAkbL_w?tRMg&#fM`a=pOLmmn?3$#O>xm5BvXUL)>e1RWMU1(yi1thoV~&wQqGCj{Z5m|O z_e^=}iS6&1Qh-hDxoI)9XNq8VX^}`O)f16$7t8ld5#G)(ntP^*t_NM|6w&o!zI31w ziuOzqQ!jxknhNbHZ#7>e*)5G;h5QP(-`@?yAmo>6V}U5L8u=l%OxByUSc!at4GN&z zUWN2)GQXI-qr+NkshC8?ufiU7k)F%W{00W|tCxpSG zRobMb1Z7;M5ag&-6<+7T^sV1{U>1{if<`52ui_n;lhi4G`1^Ajmj+x`OXWL6tAZt5 zFzN)_;B%EGleQ8?C%p>+&XPP<{GFPTYm?LofrZdGF-;3zPgiCt_kj&hYa0N_SKd&b zh&KeUM^`afr0Gzq99~p-md6W}sAXi10K92H8@P_S^%t75dacS<~b4o?6^3u?b3)12_c`lA;uvr1BAr)AxA+xb2^hNK{a1L6F zV$@1Y)fwiOL%(i5MXj`e)k%yYs!VZABXf>a6W4&Is`L$FlOviiON%*1i%2>2mXP+* zZs%;+_LcpX`5o<(YeM5yhhJ zhHc7vjKt34566G9IXG1uM5sL46P#poDXiJfm(H_B)n*DNCb2(Msx!A3O#3LSQ^|I4o^J$~Ceogb z&6micMox`7rJzsq6jzrMbAbxp0$tpE4c*A^oEG~q-;CkI4fGYsYw)QxWLu_NzpmpU zl^?}yDTM4>6(~kiMw9Cigsq-YJ^4fn)8#SDfpBGw2_OYmFt$9r#E2@hzckSWfk}`U zD%My$wg|Yv8EJxY!tz5EEuOCJ{fd@Y6)lT2w#ltR$dnHlT!SOg3uSGYs)1JItSvEO z;ne2AlY!=o&hV1-(xVl_OQpdphL@f*y!4Lw{hkbg@npD%q-Ajro^=Xe{#4bIAppQ) zpX&lIkj7VC7btPjW`dfG2fT4zL3Q#aYYwc9I6K(rs(heG65gAm%SqK@}Q&$JcWFPxcTuJ5a;j?Y-=e;x;Xe zw{^HQU7*&*lh`Aw=>VurWacQROa=HBgmYQAMWI=1k2SA0zc{l;D9H_8yL_beS4l>-A3dy*(=}vv-q9% zZS2W*R_bAu9>(;rS`TaVuvQP_dRV82bM&xY54j#Xdg$umMS9qvhZpPN zC3-kl4-){o8xIhoD)Wa4%Y}LayJ-kW} zQ+l{i58L(dlX`fy9xiI$A1aK^ytfFBjg@x~#i1AZabWOSQp(&7y2}_>k}=C(2Kym{ z3g}m*MaLWaAweqfTYgnBUnYs)5}P_@p=!B0N40EhD{BX2g^}xT408AE7UC-gR2x*D zef7d;U&W%ldevopjpkK^%odVj!F#lpdXGo%ue?X38&mPAM<4Kt^}N791Bd3!f54d+ zRnG+G%nxzq-0B&#%@v2g{s04Am#3N<6j#WwKMa%%%bYq0%ocXh&E7|De~nHSe@{31 z#bRuRf=<7<4S}-*lFh?HT@?YtqH6@{;v=_PSgavPJHY|gF46NIc)`9)+Hy%7mn80z zaNv@bl1O0@yGx>hOYk;LS`fNR;(<#Lakqg>LU&0ra0vj1>ttBnCAB@K6H-!K%|h1C z8Stms^;VGjp-}iN3TP%PkgnDJT%9_*@pFZB4Hv+=%Ic{U0Ih6%6GH`Czh@%LTheA! z_wTWC|Hh7f_{-S8^K$>*z@eG-RM9ow%N~x~BwS#~3E@qLQFlGU$5*!QP~$}n?AxEz z7$(%TN2RM+au;J3CJ0E@MSv02fj%{SwZ4RG=YlODSJ$s_u&6Vl?>%b3g0D317pq}z?db{jy9^-m2yvI9l%ENc6h#WXpTAIEykF-41 z@=VJ!SDtD4n3j*Z@-Z#XwLEv_xt338`GhN<(DF$wpLFGuTE0!ox4H6dTE0WecewH$ zT7H?9U*^g$)AFmd{3=&|m6l(vHxk~QZN-%%uxiVL`Wwb+Xl}@K_jkq*OfpOBdhISQ6ptN9; z6XAWK&j8*#diH}T${wd}euyd)V#);wL|wdfDHF>UNNWvw({$-3lhM6>xi^*pn7Lh5w8I z6FX*1r*9%FU7U~x$O;t}7xjvxNFVy1ksJ=G>(VcOMe<*bZT9T9HG5+y8!Pt{`Cftj zUKh(UyX#`NqZkx6UxT*$#!M*GC9(?2X86BNWj^l%Wi$NWc$v@oK-mHf$lDLf7HN-D z>Ou^oJbZdkwy-$nK-n}RFZEpBYo!m*(hEr;!N>tT>8aY$6`b-65VS3LoCSGV@TjLQ zqpsi)7G!0?F;C;vJ9}dNT#8tLt|us%!7O;ke?y;OKe(;W_ygbIK7ZgF+~W^?gFF3! zZ*ZGG@C|P92fo2U|2cev9|pQ;9SVuhXBi2i6*`)V$b81_K;aC#!5~GYAqZ3&q%OzK ze-Z1f`Y&LagRsQJ`0$J4Fc8TuSLHUqAN`)>`fPa|R!7B*2cIdMLsSvZL23AlL1|#k zJRWQ%dx|ZlI1!YlQsX_GFNbcQO&!8?Sz&N%Yuify)Pl#ec)GA zz&jAXM3HgcUGp1sp_`{l;)VUVc>PE_inHTaaCZED zoSi}Vk4T|+EtEsB3rhsMutcy6O9Z>HM6e4>1iP?A zunP@>9UTh0kp?8lF>;PE4nkx=bV4H7g{A9VNCdmE^t}s-U>BCocTf>7hF}*u1iKKg zO8C4=$elq1yKoT%JDO>=w0#c2&OlFXEBE=VY+wmIHBs*Rp+m5<5IYgUOqv4-b|C(mrFlndi1WcF0UtyNod z>PQ3H2NBd$ZMK!CRQhqWr?#8HS{I2HSka?BBhRI2^IFEpMeV+=*fSbbuW1o`} z^=&V1ptZ)o+UcC+sX~O|h%v|}MU5K9n%Xy9$XMB^Ry{V{lv*D}t&h4|@iwfrdDI9< z9J20WdMbUD1$wH$%ISk@s4f$HAyp7>vj=g)1=+(gUcHJ78@v*|O!v!e7G2eS5H17s zrjv3?$wJIKuQUWY1;87@vujhBb-OWzrYPd#-u;Y%Crih-5}I;20zDD_;9 zfB8#umMrBARe>of(^+Fc&xyj2MPYWerPe2ukv`5iMOW)ol`+8N3BpN6lC~HO6Qvgi zAsF&9zs*q9Ha}^IYUkxa;lPBZCSfS-@c|^~?M?G6kcGk)oMge#inqyW&zRJ^l3Pix zpQ)4_V#(=B$pMy}tdz{MWZvs*;niD%>lIT2mZyoXr?cvVOyoTEL8xJ$Q6`$0mW41>pM$O<`+8OQ!%TO~Y8)o70)AM$w9k7XDqh~_-Vha2ef|#-!n#hICcIf5 ztii@#3*bXf6A7MeIsz+H+k=C>nM8gTda>H?XB>-tqDtkj6O=BfZmq5T77EN_k zS2OZR<3Q3kP|*rPxLwG${-)CFg1+l-+DeD8Q3F}(tf3~2t3|BFuT15=irFvL&9G{X zRjB5hW-UrWs8vf-T?sa*m5F>r^^71Z_U0|Ywbm~pgwSBXF9PFWN54CUl)QFPcZ?d? zCHiC3;8Qtx)3zmU+UD*VUvN*p#67vYCtGmO=o0rB{}PUKIE&QG)cR(mhE0Z4Q2~Ym zdNvfo_BFc4Vtq>BalhGX7&m)D-9fDgQv79BS*7}`NEpuI4-ixx7}vlLi_k5x8hb^U ze~_%ks-v%|u~*$%Mb#+Ek5!LuapDRLNps4;c9RQ`{U^4dcHw4kqHC+UgpytO|+~*DGU_?C))Ixu26GMw)v+EhFR_+U+dV4 zsT-thIW|iv2))&POJ9r+S6Lckd^o>~A47Xk@(dW1eM;3auDr$mgL4|L*$m1|y*rt1 zaZn}$gEDc0GEf2pgEDbJs8yIy)5Rz;gEH;LYIf#H$wU!W2y4NP=Q>pS(Bj zBd5YLG z(Pu9%yh~*?@AnyvJ);eeW}=Mk)(qM$A3J+RCn`Rp9o9*T`){(ng%r19wG6+cZJ1Pj zPK=}y-4F0BcipPq^3j53K@SIn<)uMl=w^WN$F=KUR-bYt7r z5mn1PgCJOr_n9I25b}a3C<54Q-TAJE4CpvDmUnB`8H>x~ZbCRO`()da;vRFKHU}Ik zN?9)kJS)nZ@)7t1%eb30t$6&X2DiHN;Rki315eO41x}JO{cKY-vJKq|urfKB6Atd8 zB;28{5is3?_P<89iK#2s3X}Ac*(=>(iR@sh3>DcwW;FJ&FnZuu!JUEpq?LSivbbla zG^wlGt|)}(2>8_5KpvT7tuAR0tm|9cvx9}tE*NH8C=Y2sX(>}T%xIXUP{+t`P0f&7 z8j=@)L$yndt*$lmeey@La@=KX;^d~fF(c{wc5pHxH>(~Gff~@3DZ{7RRjaT z%Hjp51$8*m%~jsy0G)oM_wfM2-hto!X~k36sm7|86ZloWBy64ine5vTfbDzh<)9BE z%17mvw{h=ApNDGyk*dHW(wyCSEAACEZx4$*zi;dfi*KEl(fiWk78LvjE{N!D*iEPN z1Fx28EnL>CWgUx9A7~4z-I;3@4}BkDj*YMx>Equw48*sB0nd5IxYAcXeBpiNQ@Xq7 zKJC%|!Fav@y*=1JS5pg;(+WXECRjU~p=w%$Z&3*W;8$dbrQ~!?LEgbF(jPSz08faJ zDw{erQ)%7G!kieOA#czy{ocr1=1Vl37yuZ7#OJbS@C{q#Hze9rtNezI0Wm;hKn&0r z5Cb&G|4(BpgczV;YE6%LeG-TU#Q>#HN ztqw)9fJ~GXg;?S8@=45(l}%wD;;UM<;5Z8^cbs5BStUda+rWdt)Tyq^WnJmTx-$QD zefKbfq>w4B;h|bPL;O(3_^(&Q55Qom8}UOEL!(|1KQx{Aq3OgAO(%Y6s`#O);s*jW zMVj+W??j5|V#E$%RqSBx##MtvOTfy#L_V4|wlPOHwM!V6a0Dk|Da82Xc_D+hztfRwPIK|MY$r>8fn9PGBn!%7l zS1X}lD9=v}CYGP`?6t-TgcYWGHmexu)s(H%*ojI&wXW^TjcfK zspxg;Mbv3fSq!+SBHWD#+T0;Pyh_2&&JevWiVzf7onDvz&dx~Qz&=DJs!vG8Dj-Kx zitK$24L9DaLU}}`3INVJeDg_oz>ef?e1Nvv0uF&rYXD4hH?C>RE9GeqhH>t(R>lwd z1u*qE>E}b}$06-Ue71%xS97udiaNGfcBz7QVflcP z=VY|1`ib_$#_o8L06cc~^cw~!P*1Qgk8Q8P!48nD4P?_gtyuv}SP`&(CHh_ zcESrN?22#*mKR9K3q-q&e>VCvDtUp(@&XAaHF<#uyg)*aW$Ld9IR4WbR>3o_wRr?y zAfRrQ8c*;7f#n6T)bOsip<5j<5LGbOJT-ogOI{$daR(tQeB=vrh8Os-q=XlE2nFN? zV)$*Byg;nHK&;_99Jn0_lj4!D&w&>}bBc$Mp8vYBGCyHp=9jYhAN1jK7XRTwi~ps4 z_#)%O_Z%(xebw{GcK!w9i8rR6c%$lxmpyAwyiW!%h$r5&Guzh>_(h|#-qEvme`@uI z2JRyt4uqLNtv(G^3E-h_sCJ*Oh$>iGe!3#SV5upbD*_4@&E;GPFtBJ*=SqNpMWZ`g z0tyuf*;O;YUxy*J07vrq?0w;EbYQxwO zaZuTbZw&e#dDdNec43!3xv)!5E$q_A7j|j&^O!!Zejd}QmCu7-eeFM-Uj5Ru?p5J% z2YdBCe?hO_<1gsdJN*T{dYiwXS8wqb^y)#suUGf`|8TnX>m_VS^sG!)#?)j5Ya5MJ zVl`5!sgX+Z9E?G2t)_kUrK^!Vs1 z8>><%?{Lmjdd_r?By5y#p}=a z#nYu;JY4$4Ov1kM~@%nh9_H&iGaIhq*t0FaC|WPxT)E#8L1v+U%+|7{rh$)LMXm9hP@=b%enPvb(ffMvwd~J*qDV}*-U-# zMnPRM)VUCQudEuSKfmFTEHyl&x7*S~$?hJ8tb8cCBIIrO}c8-@FaKm$m{}x#dL$qvEb3Vl4)jnQU37U9KMES-{;hc z7yms!XKX)bY(HoG96#rRj~Oidn6>BoG5x3cmA+dt&aM!W64J`N*8$!GVAu2$ z!0iLyA=2-V62M+AcVA%~oxO0m!&j(Pz5)YrhmZkMW@&T%UjcExX)MgI5XLzH0d3FK z_!a7ga7vMn^7_KB5LLf|R;O~)fw};gQ!^BnsZB;@^k4TY$jTZpb~|>CkmhMv1kpZW zIm@<318t9*T3EJSMo_F+K%+Bi;***6`4hgZz#5faPeg+!WT_@uSpDpges(U}(uBVC zTH~9bja+Ob)gqUIZ#x8_YkI>Y&>YpUs^@DmW*aqhv?2gK=b$j<9Ptw z^UxX_hH7jWR1_{vXy+7*R2efV7|VVuR7=(Bf#QBr+PPg)*Yq+*xBw6X*4;fnwTjMk;0RquMPYT&3DuMp{UBThpb& z+r_|;LYKDG)S{(MUibppU&*3b@vC1vqHoK{cfIDH|G&ucocZnpPmh}-z5Uw%&v875 zzxROScn%?bLVo%=o-Y`a7Q};Fhz)Vl>jQ_dfmD0Nw>;w}eG>eB@uc^x5FY^a6P5Qu zF|`Ps!@p3^_UlVHhwB`i!>nK8IqX-XpVOXvguRmZ9ue!$dL^dAbsZjdE2hKs*$M~q z8(2(-XRuQ}6?e*s0e8xLz@4(+>?;^B`w9lkzMgTN zfD|zM>_T_T$ROShcw4?_Rq%>^Lk5_t*57>%?5c}*-;y0zgKw?-|ie zST_n1gY!MF`^u{>hAeR(2sU7auL0jz+`ym#$i1D>0+8CvFab!tjqw4H`Zo*=fYiTc zL;$3&M=C|?UlINvsXfH~N9tb^@E@t&NVSl9D^hKwb|E!{)K10$KrjB9!4B0x`wvHC-c-8c84zY^wefo4 zJ&qb)HT}60U;BuuYdLn*PpX-`}p)uENhsTkQ&4?I^3gaQdaJ_2Yl}w-5QK^*8?X{s*TTZ>>T>)$Tt%G0rebj&9^asBF?`H#jz*_vQu@6{nA27xTymC6>1LoiLiHF(j zxqtgt_h~oIKXUTj+U(g+{aSv)!NE+kLf7U$nQo!={V9-D#WNx>r7rNl)$VzEU1!awc)Z+wbb8 z#nfA5>6yB&J2d584Ako4&NXjAet61zE%SFj*c5NM(p?5H%TPGaDHuaYz00RO;;`BWk4||PF>fEd0=So< zJmT~BuD<~fxX@L9S2uPquoAGEP!O1URsn4jd0WpIP&h-FMDhhzPkBYopb5;b0UT$T zUzk_goR~JR1x6=GLHn$6;B%tDJc~j7khjk|2XLPBwqWJ!0py9cXni?gLBsr27!USY zvICjw<@(N)cR4#>ukTKI(-ief%`ckreyaMK8>YP1^}Xhcr@YIgU|Pms`690EQu#|@ z~ z*=oywV#@pP`dWV8l=n}h;MMs>OSF7)%6ns_<>ya%KT~b(%cs1n?ZaL%<^7L+Ex%yO z`yZrWd;XKQatt4^p04_I%KQ0B+v`)_8*Ft#-2G3IZrVpBQ{F#g-c~P!<3D8q@162~ zPWJU&cf@>5qhWxbSOp^=O|B#a0h4Pa8EJAY?vZS)*>fbBXmXt-YnmLFWU9&alB{cT znYp#0*%gv(YI0PPEln<$WLuM~B{`(YuDNwsv%;ztnI?xNIikrSNiNgmh$NS5@?3N4 zsAgX*$rYO1Ajy@Qe32wqX|f~9F->kVx31RgOC`BRlN%+uR+AHw9M|MaB)LwL=bKy4 z(d>DWT(8NWkYujO&64bB@@10jYO-!_eUWA_kmLqUzFd+o*5oTB`4UY|O7dJyzH<8g z@^#-J1ru5zw0N;mlZhl>s>xWAFJrRURBX=Ewa$QxLRMK;Hp5JFbB@8i`O3A$=9x|k z@o}C|hL);A=M}v?hD27D&Z#SDy;a}r9sldsKrWO5BRVCmNUaL645e0z=A~X@rpl<^ zjQd)2d3!2SZ*mpcNR`EH|5?cXzYXc%vbi{DbJVzQDvmyBygS;yLI6;XHQJ%bY5|{Z z3EV3ETr2tPSo!Qg`Rv&8*@5G;1M=B%h0l&Fe0Hsm&%XZ$WMFFGv+qXw^ba0%e75=; zTj7Pe4rMDfTn3;>lWe`PZVMcrgk-Ha=Go9Uit-a`Y@*0uKx)i`zyxu)JytnKHr5HB zsoJNhGE}Tgh8a*dMJdbHDcBYT7PrTJ{)UPUra;~5rsJElKFl!H-!1`8GyU4|@zqT( zR4Yxn)*%1rY2Ui7ncHvjuRtzQ*G8HWJRAgd4Pllq5kW#Rcb_qago;iW@5?XNm(ci` zB3+(qV{OxXf*J{b!douG-9OJ8=`b8v)}gORgfOWay;Yr-@|&n-buX`NVK9l7BJ4M} zdLtIZR8i3Kbc+W&>iUJi!^|5?L1wBE&2lxL;Ak`vo%~{LX>j8gFRB7+(iU((SWqP31=a%5OPdI?$#9ut%nK)*!S}u-P z^TO2~t>*JyF;~rx^@{te`K(tQspeCeQ`P)omyuO9rejyQqnl072Gp$X(2~pYEFXEp zy?dp}R%I&hfiZF1?*=on;^oxN$&e$QeL#z=D`Z04=p(WaJ>zEm;*dN|A?%@BrNT#D zW`L$(oW@;WP}+MDPCy!y!(A{|IlR<_e`RH?pvV=<42^d6VCWAWZfUwcG; zl7%1944Ssu;``oAF?>0rLYl5NPrK2_zM|gL_O2Xy@NGBC&+OlYH%(6n<08q~v$dOq zcVTk&%w-vJB^w-Og1eECRkD)={Hm!W}$5Q#ERzC4#seD2! z&wnhH=UVyLkEQZ4tvvg&RGw+&>5rxIR4ey>ER{3#>Rd=q?+-m;La0e@_3m%S}FC)Ys=((nLJr0XUp3Tl*vP7^6oNuq)guLl3bsCJzl1V>*e5Y z4X@MOVPCViLY6D9)4`T>f`MnG%21W^r(>nxkH&z^3W{43;HL&a0i%)5X<76WIJAVN z7xG;F|g6NB~V5}^dXF*mLoM1s(79gNL*0dFEvmO&)~BIVpY+~?2U7gMJux<_p{_grQ}FtkD9*#jZ z%14R-^oF>g2SS3pI}B2wm!a3YN%nKvzui>(y=%Thx6U*21-cD_$^0Ds?#_6o0@OQD zBd&qFD(-wi?+E~Ii}vdfkat4U4h22AwZZiL0o=#591()UJk=NTO7zxpob-*7i*=az zdUY9*Y%T#87&jR-l5ra6yw|DL%ts9IS}|9|oB{C`>PaZ_>_*>wfSOj=ZRf4* zI`avjs6Zo|rr~wdXoP4&gWDCDSjIPM5t$<|4m@TyTU+imy(L;U^sHMpoDaE{4MCH_ z7S!32mT4huF7R#S+JTmZ+Ok^*Tjn=`Y<$|m5g>GUs03Pehp&@X-SEr#=oy%Raze7? zNTo#K1Ml|x2K-^45pWDD;K|D6iV8SiDN$6w6O|H01w7tg9&HHiW{#)fSTQJ zg`|;44M88o>S*$cg|)x|v-P}w^VW$&qgb>j)AD$3q@qwIa$D0@#nA7$^XQ}&)3 zRQ5g<3@UqVZ_Y)F_2%JdVQ=0MnI1XJ7&7-n&!IQny-W1w9R^`vR(aQ(ha=aUN20Pf z?~B-*hvBVvPsFMoaeQqLv+p{Y84y zx4r4JH~r_*oBlKOrf+)Fuk@y0_GZPd<36?PI1HupJwEGZZ~B$q^i6O2rZ@fP)0@t= z!vw#q^rpX5Z_Wpc_2%3nGySu6wi2hjIQCp-`e&bErhnGV^rMxTK3C54&6p~Rc88}nduLinSS*7%yd~wOm7|=oav7(In!qs?alc`#^z&oe9d!go_a20 z^RZ_bn~#~Xd9pG#=gYBqx-vGO)Ui45YrI#~&2_UfHs{UQeB6x9lh0>t&br<_H8?h( zT5@d8ExHRG4i}l}p`Ga=XL|TtW_tJxGd(mjJ*>?1u$<`?lcW387kkF;q#g4ZWp>I9GvM3OpYG3V{_4UbKYBIY+8f1c^bo=@}A4sd&EUwnyf;TpoKa%jIXEp*KHkdh=*yxtuGP z%j1>h@)2Dw=dfHJ^L1mz=2KZN=ge~XkXbH|KA+`s-i^&;gUjV(3zo}2vSV}6-ke>e zH=nYTbe6q&@VWHnQ_nEL_nDzt>CD-(GY?fd^A_#QS#;(>U#A_0W~DP{O=s>moq6E- zbmn2#nFj|u^Nt0b`RB$!QxQdg{(;`4RUHno1`hDL32>%o4UQ)ivvY_b`ndc+bG);g zt|in+x|aSb8ltrA^HO4nEGR9$#SonN=h(DFb0Gy)wh_?|YCR@`tawnHE9p^vc&7$c zr_YGSa8`;8lu1rt0l#9DEgg^ePucChM*ol}-|j0=&1H;P*Xt^droWTRKgwRuD0YaZ zx2IP~p#j6pHua>oW$Fjg=-PY0Hw z3POnK(DA7M%1Zb==F<{ikNKAxVX4i(+(=Vxe#(ejZT?203VMox7ivHWn<6YEQaDV= z;kc*qN<)S-wGpyUdkQm=K~VWoLM~iaBJV-O(nZMaGY)YN0Yii9^cfq=00Wf2bjkn( z%&#s36fmFgnHq1v8*%WAaG)XOKwM1Ie-O`n0e;{F_SMk4VA0s|Alr!3WBMTE3t& zBZ75E&vA4s>|@!hzEK(kN@}{~375p-DuhGYq5)U8aF$69lQGbkcd>@M3p5@cHR*xD zp=#I%DI}urFcN)-o9H_%#Z)UyH6Tr@6?#e~wqooar#^^k!}Bx1yFcq!4VuiaZ-dv+nBBCR|ow@80Q8j--;5*Xx%?KurvWF;!LT`Oz%WqFjz%fDXZYIN!f z+>&q|*v@cODGWLYP)&rvE`!jux`glrXj&JrTAe1NSae!kt~+fFG&jVV+ZpDB?PP!o zVF0YIXAtS=UgjGtc;W)sfRK`DyJ(PffAdRhxM3FuQZktf0?EzEFCpdH4Luo{GBQ?EZr%>@HNY_^-|k*;|#Bih>a6y-C> zJ`8XhwGQ&s{AXKF`nv|?KFxIyuOs(nifwNp-Wk5aq6jQS_u6L!Vc9kS!jck+E|q~{ zVBiQz6JgtofT-CY_zE#81_NrUJH{r1(Fvcu!F%#0?#bOf*@AmUm$=6O>qd&3-~3W+ z!Y_o}$aEx|K#j2SfC5M3FI-9=KAD>rkcPRSKPo*2axwqjIqVY})guN%sqtxy0hpVX zK8=YDpkRC&6X(;I$TDDk8qs}qLiE)&;FCHz)-+5XbCL07RFS$vhK)50YF6g65=t=i zY#fO&Ed@si)vmfiz}Q(UEyi6)m&r57UbJkPt(XKJGtZuLSa+K-$iNgH72BnceW-uMy6x@G~-GzlF-JEh#)M2Cp*Kj zsPg$qhv!TL>r=pSvM7A8?Gb`pAFwbgM95mu;HZoU6e&bgc+zKF2o4qv43R_DglnT+ zrb@ZDNS`iNM5q>VT1)YG$u~ZW7!b5IBA=1UbGT5=CW@z34(mffC2W}++lj;e5a!o& zF}LaW^v@V7NHLZ|y2_q5Zi2oU`=>GXAql{jEq?HUITQR7!=K!}MzyISbJmwF0RRXx z>|Kb$11chrTPl<33>~0*#qYg$&V&s$^<`RJtZ~3AL2~LkooY5nPW|F`qCs-%iv-E3 zSAygug>OP6q?m+}36|4}2J4F#)CZ?Mzgy${tQj~bIQIDnhr%kK^t-7=WUb|mkyvqy z34cl);B*bums~d&X`PAKV$x z10Hvy#a$k~ipQSu3M4#Sz|Gslguy<)kpKYLERjk84u?Q~au|onw}NUChBQ%v4*;ZU ze3}A$N7l8i!Kk%feVXXT8bL-$izxW<(j(wj7No(Y)a)5_XH#r4^%e$ZDT z&gqbR7zkzG@inK*q>I$+X{25?!InFU$gyj=UxE*K#j$TZ;8iTW<h=3jBE2 z5KNf^RO&x%rAMAurLG5V#P$)E{t(K|M!9DRrr-wUY{Q~<1s4LYbRdvSQ1;^1FU~f=EIm#rt_)V;ayo6&87DS%!=(gL@9M*< zk4nv>Xml@o%ve*gZ=ziqN#uut#t;SUiBcDyhN%>$5G%4$)ausI{C5q1RUZ<*TYaC# z<9%@VbV&G(B|_H|2_L4SheKm}g%B-i_IqKcg`YNlhVV0tpA0`E_*sUZ<@g!J&kFpk z#Lp_V4Rde+p<5He*-*U`U^F-@>&nG)X4RDUF~lWaIpy7s zj?1RJ592s8<=u*7HsyT?$KfgO*Kiz~@_rS^_LO%Ej;$&0gCQfi&<6B_q1uY3iu*rr z70kt$VFA@pUvY=Vwvg4YIj$=uED;1Jh_Khppvyc$uL7RFJ0w@;E`e)Ywj{{`t7M?Swf#0>|PIBw9Dkex~oePOwRb!@kIT(xmWsNEr3B$g=lDj1A!E3es)~ z;hKP^WWCJlU{WX}soSm0q8WwQL^KwcY`rCT5##S9rC2F|m^RfzT@MXCH1*KZLt76+ zdKgxy8e-Ipck9L2r9^dm2aHk4RU2L!J0z`HSGkfrB=3x2i5DM+$T*zvnjjx1yjllb zh8K3max*%(4+x=hp4@UFZL!lW6x}tqcr`hUZSfdxdt;bym3Bp7>FefUkvuoA*$jsL zi{v1qzAFbA^c^|Km`CJZ8S?ApAS3=9Imm!tCkGkt2=*kyeXSg1w6B4~rq zXdhvs$=>}PSzA#egRQs~nYr&+Ib#48XF}cL0R1CFJ}-`)G69V8Uhx^E54h|5Xt2^1 zv82HmMc_f9!Jdhb7J8xOXs}obct?W)1+hwl#SkNU6>Mht0qyVEkN}I)((e!aWFM)7 zZqx~aeFY<=`9$Oe$1|HT85R*K<>+;5o83fr&S>UxfcfTRN)Af{xVWo)9A$-&wET=uT7ZSaTl^2JL0Gi zQ_h*Ub*+$-)T=0NmJo&=iqob>PIKM9NTHspzf3F=!=xP;VAB3RpjDxY*h0lz z3Keq+h;PM)KFq49ia`Y>gIV?i4KCEL#p*DaigbXc61~S8$?Gf+tjhT|=mQXViW(p8Fp(q;3@6#}sCejOLX~{WCyRzaQJh2_ z;t1+choMdzK`AzSt*%TiMh!H8`eE z$^v#OqW*1ov9QC+cWg=3m+uoiT+) zhF86Qsv4US7D*R+(+tr#h(aCP5RIX;9tl*z7Gn)I8i9cjjmbcW#$+HwBXpa2vzmw0 zs#(3^I19=e^9Z3C6O}wts-J2u$`cowG0B@uZIcS>pw1II5+$%{NcuuE)?r4)(2RBL z1W6?{W8Ik()SZbz-I*QK)efOvnBb5pgF~vNf%Zyh)VGz;j1Rfcj0XQSL36618I#3A zGuEK6?W5XjeZdwhq))y7k+&{L&{bPDRQFsUMX)SS2%iII-*?TeA ziJa1W!dIae2K%B4gGDx*CBz*IMa^kN)GYhm!^Q#2xBgKkQVm18RKnCyfA6Bt_;AGv zGs>rnJZn5l`Sfo_SRqb(<*xFH%G#je2kqJbi@r{sraQVeB)T>vSQ{c1U~M24_IRgZ zx+`9=Hq_YDx;E7Ex--i>E(xi!wdInKRxFGrT*@v9sV)i5_^4JfKGM$6 z=@>ull0dqqx+KJlEeXkjB_UaANk|r35|RZ=LbBA7kk}<5S+FD|ODzeBT@n(rBqU}@ zxRR=y;_k=iyyAZRd;mWO@blgOC_l&W^C*5kg`ZpSb0>aI|0UwF@hnoO!k>>Qi zpqcIW9mvcC_&JQ9BlvkQeomf|pELM*2tSYD=Lml01hZ>Gq-tqO8)>R1aMb!iFO?a+I3tNb?Ty<;W1(?p5J8#?sf z1>*NH4s-hWBLbUnHlHU;tXknic0qUU-NR2Z!pooR-ntX`=QlAc8ZpXKG9_+6|3y8q_^BYF0xBg-`PhSiPa76kt9C z-Hy4=9mX-Z257j79fj-gsgDnb={|oi<0c(HNT5O;{wsR-|bI&+YfiQMuO) z6mp!_uVV)p!?W<++7=jmDKz2ECuD%E5bg-5329Rc52A2P3fnbC6Wfc&!11G-YU{G? zpoD1PqmuU!^VKNMFuuH3ZS}AOH1Hih=aois%TVxerC<#TzE~;fqTnl)f|sJ;8C-@-K?bCK{V}dMOuA9_p_l_Z`$(*jXBPIUoIDmo zDssTrX-@=#?5muH+o1E_>}`jI;LK1E2U!03u{jLC9AK1b-x;Ke004BG_*FI;8?RYR zb5ncq{rArqkOSCw$(`G~g#6zjeIN6YocWRa0CDvL@MA@WWC}r%Rm3kLD7K1tCIm%S z5#NNcpN~q*ix3oCR9aqypx~ksqMRQfa`*?P*D-DoJEW$q(aB$HYKMF*ZU@DaP=Acd z`w-KNMwN^+&`SObdv60}*HxVf-gAH6-@UKitx}a#DwXB?9s)|XgoP|iiY$Vzz<L#cH-IJ-shZq?tAr0Rk9`M?va=4-gDl$=Xald_SwI2k--N*$m}pg zsON*#^#}+#$tHI66fqM;d@ro(rpF{SLMO_7#P#K931MKJ9Nr_|LY!9lln$9YBg?z4 zoBq2{@Ww{yI?$M|4z_d}Z}jxPf74-SU^?UU&u#hFO<(-H86DV}A!kW{YyZNQv@``i z6wgcE41K5!2YM<@4o`XLPI(v$+(}zIIW95>F!*W^>vAD1BeTW}?A2_UGoHJai7-xr zwCqvRi}Li#8Db|qk;oJXPUYi>r}YZ9uy>REIInkpfN+zbu$# z>bu$#>bvTO`d)?f>LR@k>FbL0W~5(Nq@QL7JRkA;gN4tjhgcP@@|F{V_2E#i+H(xfm9?>iCrVAo2El_(+>t6*0KS5NmOb`ZhrrRhC`ee6J7y?TNI&|Nf9=dO8 zR=O`^HHeN@zNkRCxR3D5L{p`o_8T>{-*`Xmm-W$pRZtTg)2J$2HZ90LzSGTd!XaxS=#K9t!zAfb8u%tv-ZZx#03_D+3w6ZC~P>I^kTLu8bm^#W;cnckw$#tYm_-CU(S9-D->ol&whAI`ORsdgl6ip9#YrUI|DcGDL?f7K@R)tyH(A<&p1?R)&=6rV2^%I{hNjN^PG~ zoK%^@3$vh?95*W7Xa$z2%NM@^#m~zfMa4(z<*)Hs7F`A?S3JbU4arv3EtVdG#_QB{ z>(Pa^hF%>-noYdHMX8c}*r5oDg~NjRIaLE$c8MnYQ-Vfr)SYRhbvV)N$m(!n8DTWj zi&}i-$JFA5y5XQjauK$^{3DPUM35MfB570N>*0^p!aY4~xylD}O#t^a#|L+6of3v+ zmB`*k0$6)yM!@|aQAbm*@jDn(21}*=nrrG7A8Pi_CWf5-hoZPOZxQSOknMULMf?bY zD)lMzc|aQt1grT4b1AIRYO9DS0US1p^)+FU#n^3x`TCraLL^ktslzc zht(Q%KFTd0%DZ=}BE1c1=lzl#?_J}o$1;~p5B;kcZwmNAd{_fBF)%`WXNG%X0VyxB z`g>wt(jR6B$b3vG@?*#d6yVw+cjfPo@I3>@@`=I6V~$+c8=^0#y|QG;LrP zZdtV8YNnz@Gj-E%Bf)Gj1-!S*w7ez`=wfOwd%vn+X{%ttmV+%5 z=(;!{m+OoSwqp5ai@(xOYf6OYXiuy1gp)i~0Kj|;t)ju{BSNe`M_Xx@I z;}#)lmBD7cz(*UE3;(5426UsqUmdVT#HerT&c9pXgWsqT-_&T| zs-WMh_Lc5?5sT%&Dk8qO=}qGAQBH!rUifeVzl8$6`*}a`;rhOFd%yMZzu+Nuzh`p# z<@djT1|hBE2b$BDl9Hr%ZN^8O%-7gIMZa7~HqWg$q zD0as6%aR4J`QpmXr-=ve;qq2*1`obsPIMa&9{lpQ=i)ZUCI%wlsYU2+1aDcPdT$yq z7|xn3>?DQKToisDJ-cL|0Fmgct6>JX6*)6#Y|Kbe(_J>?s?^EqogCumV;!7FWAHNt z=UQW4DPUsuDX|yf>>oarV4cc%cn8X zpY%y1@n`9T8n-dW=^pDQ9_Ywdu^t}9a~@b1R;wLd!{vCZ!4J9Uwq+9;zOpA#?bNi+ zI+_h7r6Nb;KLol%_T4QuPrzIr0@oK{CQl!C7hs+B=qszx?xyq@93H=nZUKy>j(-_- zbGdYLF%3q%pq4z+5|5`;*NheaQIy|#5)#Rj98)_Umuso3tSc$8t$XSR6?;CxCKbeh zH%!2)Kd{!F{ArvmK#|IstA)zi`!B|$VucQ)5B%4^wAihN>|4R>@(24agRQp0ZPKOuNROc4oQ0apLz*V)ESZ+2N_7qXIyq zog|&1qeMpSd)K}F8|f+5=bcBnQMe8-_~5R zXGh|3rc4=~fi7vM87!Ie3_YS@jvc1Q1fCoBFmVi|nlSSl`0ZD^QC5tVSQ9LucrT0iXt$N#QW(?I)p9%A6Mj1~r z!ZjGR2F%A6KvUk-jMEBDZh9a(Cvo54%otdse0`oatwS!kh^rck0RRlq0bHd9%7##5 z6V--hZ{V?{5QrYZKl^&83)K!hI+U4WgVMoQ0(5tQbUk)omov_{o*P0Jy75_fU#qGm zO=&=(!8rOS3K2GONKz-gEXg;|iWGuTYSxScmvJL4`u@;U5xbS~Vk4{6avwBjk^2-r zynfKN2}Q_?EH(9@Mqw+$#n8~3S+{54Ge^yNfSO~^eMiKAY-G-U{J!7&^vOj<&IRh`$E*v_VPds}{#&_)peDUT*A4V%;#asViHkFVMk>Nf zzEFyBQ=oFym=D$Mw8h1=s)x){#V}--e_R|tC!@0fZ^z^hA?v!R#=fs4ZUMbRf7o0?elLWycFo+S|LH+<9&N-5C#VBK#&DTq%=4;H%>F z%rMkB>7hrqe!wP_Rb=)%7ekuEbcY{o1Y>uM_Z{q7gPP-6DTI#qFJ%_>uw@ki89V`J z8diKJ)_TFplppS?SM!8YiPZfzX&QyDZZwQ#$@fMdS_Md|ft&V-P>8&BSp*Zu_1-2w zQPo%3Y!Ero`4o63IlQf|$ZW@9cpj}g!{GLhWm(1IB*8@$|kw+xr zG=vOoWo5L?bvN{gi2NCtb|Tu-uRDs7!;5UJ+Oz|bfhxB$C`aB;4wH;q&LSijbiX-^ z^uDk-AWgk2{n;63p<0tUn@@4!aHV}s%(OqyL!l+}iqbd-=U9c^Rp8IPQj(Q^<;M$W<+I~pb}J9wZ(Q9Owz zZF!EjHC}t>6bJZ{3D>LGcE%yviVfR|gxVlcjA3N1Ik$NvM z^lW+bi(v*)rZ|5HAlyx<ZWGt6%az71((I#AO}WtrJ@9LdXi!_ms&KLkz)!-O2QOQI zjD;DUCSnly;*Lf5eo`re|6MvkE{lv1}LhuYht0p5yZBMpV zP^kei4nkHy;ai9TysdNF(Uj*x0P@`mKugzlv=t>*Erc3J5!iJZcR>pLOFz053W z8j4pl>!CPhO&A%f*7pa`w@_*uk1 z#~^?tg+?3U_nn>~i`I%yOlZK)SXgh$Sz2Z}a+l(2+aA{N++B{Y2+~w3 z){Y|SR_cl5ikQtqnf%{HDUfvx{mH#+-FO)>vl4bI1rH&`zm=kqRP(yLJLx_{5i1Bkocu+ z-1hHFUw|p&eJ@gosb={dzgHhscm|V|t8#<6qMCb|ufhgS4=&?-EWVx*LMw^?jx3q* zW^XyW0miTRv@@IV=EgyjR%i!w%L5abTt3JIGKDIKG01Wf!F6e2qaVTbq?MdjNN?Lg z?x$w^r66q*^Ob-Lq1ffgKDoP*|D8iBP`mL(vdhL4lU`qfkmoxPIl|9^v z-VAe2Krb-(13LGQ&H=)Op?mlJZ5NI=V{QWk;_eUOxQ5M=GrwhwKNER|ITNYTp)njMt~tH6)C38oRvU5@2GsiS@2-?U2#gPPwEPl~rq zap~c1)zgD5rLGZ9inl7uQiIxabDDupUS+m_Z-iu_9XooW1kXfi`4+GUTSH10WO_vXvruKj`eouM>mpc*tBM}VE zN$-)arctoEF5E6&-yD`0w5|6NeZv|Pk6EIlveD}4bzElAn)68dts1n*ab#J}Mj?Hv zIoWYb95RGtgjS)uxLZTG35W9q;V;cmq*>I-4#<=+k`hqJP0>A6*%$ohu?@k z!IIkp{<#9*D4xyxpUm2ez>%ZpMcoQ}_En*U9DQKfXXuRd7Y^BYaZpVscRnY^Q(VI? zu&9HQ_?m6>EDj9)v6=g5cK|fu_m`Gv{t;GGTV#IfX;4FI5dT^vLcN2)+QeaC!+a;e z!JQCrudvGQP&s)z-pZDIL1jir+mZorD82G?w(1z?NMr8I=dAxX%RQOT$-HbfrL{Es zVBp6L-3yGLJUbBtHl-y?V>?QBf>x|8OH&C0~VS) z2kVwxGOeZ~hIT*bd-O1f4)Wv)T3(jmM7nFvv03I!G&-l1DNo@6zqh$L+?3w#QqI1s zu{-=~kZO%ZxX=;ORxz>bDr*QELzGh}gOT|Q-=2U^cY>tlgu)@*1Yfo2U;E51LT#7x zbVQdZml+Y>dMoRCE6@UO6^H~%y(pGcwm;UlQvU96i$~L%9~V%5=79lO4i&OIE3)qt zLA13w-WfUmyf1yec2|eAwc)iaQjBV{f*aGMs- zm!Q{Y>trr1*s<`u7b8U+V5V&usX(ybIix}OKmE3})lrObCRR)4_w&{EzUwUbhzw>n zvA6q~*{aOc&S}i{!J_REt>Vku6*gcK&yfyk6pWS{MTV@w*e955mFUno$^v`?8o%;! zTdwA4Sn6^goHdjZVFjY}AlE>Vm{^k4gc*@SPeIxz*U4RnklRjMnemtmMNM#u&~5F= z6(lUnxc6t!P2rKb_XSAaoT_BRHY6IF`?1RFO(nh~sa=LZtnlj!yQ|nB`k)^o9jpYB z^J(q=-HtQvBigiA3_c}u-}YKWLr$77jh(iiopKp696n`Q?_EInJ3ll8W=OoQisLIZ zsNo=LeUYK%hb{J4(Y&jwpTieASz9c<<+HUvLQscU+{0r{8o1S#X*9;| z*++q7&R0#t_k4dY&ip++^0@tC@!YNV<1|Q_;a=3jP1V>fZYN{3KC9pe88%w$F;p@d zOJh{}+rcJQRqh&-#*M?EQ0Ew%;&}PP`U@1vBa0dO2sEg&bIHz1YdKX+q-! zWviyJoXh6Om&XukMtlD4^w||@rq9w!rpWoWgTL2%08x_%+lV>ox&UCC%ZT}&{yfg1_iSsLivBgsEH zzQ1lTiG?+++u}(s=QAErNLChjzvvQ7Q=6f4PKcnW`#p zUUK$a7Yfaw_xm1?3D!D^_9gN%G7$O{wPT6vcN|6Dz&owcRByC*0%T;g$L2?Ew@;mzYsAJje-&}3S34-_*6Qrm=_>_P ziZAS240xFlDNsSuVc@?-(5msX_XKgW zRaGwwe{76Zqn!~lV%l^VVK#LOvEh5I>usw)?o-r(@ro)Otwr+}sIqMDLGcfj#F+`T z*rx|>)R|g~yU~@5bEBoQlq8PkSSQErT)9cI!5V0-s*j=2#UESIY{;SsjXL zZT*7jh;m)2;+CQ0>7v}L7sztI1-y$LbGg5XvS^ODV*M5vE;V>5-_N~#lRju3#tEb0 z!e{*$p#!dL%a^RD+SUS!Mut79@$V}=C!WpJUKOfn`9$DV_ePWCm^eG@*13f5cPFiA zzdDfP7*gY|J&=ai!!9~S4ZP^>Xz96N$6D*ym!9FU&padry~GOTw!+UN8qs^-lJ`-$Gj|MTXAC-6qF=E>>Pps=^ zILhaQor5hGuoQZWr?F^`_M}xt_uz0NbzJX&b z+39+uTLJJO)TMGtlX77eKy|?w&?8zL(7hZH^8MM5!P2SNtT#Cz3N&lxvt3L3@;ITc zdK4i6+irD`hc)2)w*EJ zy2Z8K`+D{7IBlWl@=SY;#onPobFl3yh(zN?`xRJ6s0el5%9U6%tqhf4eryiH!>`U+ zGVNb*s}7bSdRNXV6n8)hou%-g@57YHnL$aSq`h(pbmoz4wMh$(yy8aRkrp}G}Wn^>UpS)i>&KpWD}{^ zzF+yGEvI#~A1)T>y*^#qo~W7u)o0j&w9k^wHq|&BfvDC_)b7DEaZJ?|Z%^Tz!84Si zYpD*9R?UFRUZIhVE@O}o+d|FFL>?iGB&P9*F4}BENL3W#PJ<~z={D_j9PU74>+K|1 zoW4NKP2p(-(SnJ&JR7NFj6PS!xm(VVnt{u;xLzT(izlnw9>U1h#i&OZ{n!Ld+Bdd8 z!w6`o#M&&!2%;NRQ80LYHS5j0enR4#XLDJEG)YXAc{Y`t!3;`~j%HJYESpuV5b%U{ z?@2H?f)^_2&oKI0V=UoatVbAvofzg`Q-li}Rg2*8xo1z6e{3O9o7*JaAT{B=&x44+ zJ}*g?9Ltw=fEN?<(q}F6)u|eT2Xp$rW*Y{V7~riD-;k!X-ofW&MVt!Otk~7o+qE~} z?1*GdngD{letUi(~+?=F9b@INNu@!(@0$*;ffpWzgi zZkG7I_F8R;HkAhvG{L4&e9o?V_v zwNCPnr#$QXg7DtjLrjU>H5(qW=|9T$?#TJRG^@pKuf0z1@gECc{J!rN3F*EHx4%B& zNwqw$m$To98|q!p1Mqzc#_;jn_W(XqxSO8`SuR5#hsjxP-|Q$ptyf5h4 zrT59?+pk;OeZ~8l_*>7DfEJ9ax61d^@k97LnoVE}Eyw38o38dj5f}W=r;ynoQm*a{mk@-h@|s?nraOMdH#H5(1zk*HpvpvOMCKT_zxw@u|MtV4DN+?-r8l) z_^`$FzMi8+oA#gxaC_-|0{-3dmhh*FN8JPYRiRB!UZID#qIYg&Zspf>a|nVxlt871 zrk74bc3_d{61Wsm`PSGnmveYp_mk+-+DsSa?q533e^28R`^7T^D(TsVhS#SCF` zsYa5ee?bATRq&z?T3wnXHXVqq!pgN7?ZqIg={KM6y1iy@gDu24&BdVAwMmhR2rjU6 z?uQ~@j+CT|trp3%!a>*HdM#kv<@Jj78abyF)ee0B5-I?)@Y>W587Ifvk+Ob!PIR?t z4pAg3`NNX!=(qux(6a}a0wdSzgaPtTjgU$=N$8yj!eG6v7$X$>{t*OQM7IuEpwQ|$ z#tLK@fkr~g0BXxDmV}Z>Q9IEry60r-O%U_$xm59VvTVs4cfmoL2fqZ#_%CZ3JAISK zIQbOhopPaZ$pwW#PW|;;RtKV;u!ZGQ zStnfoE3$4v7>4;xIS3OjVIm(mp0NuVKr~~~=Ypbbi`J8QDesGnmq6p;f1Tf#<+|%O znRVk)#2Zf95-q$QYo$?p5f*MNr=-QXAn|iYc>hrRv@cmTJz_iEnq*pb!Jt(7$5*08 z^jAC=7!royjCMdCXdHXTvu7;V%s>sUQ4GqXzLBtn>z*(aIAEZ>37H$12u)CDQT}>* z2kQ;gzwkGx)Xb5zaC&{Or11=6i$_2R0jvNzFW|zn##4li%HVKSSB+^8u(X@td;5D8 zC3XMN&#wmgw;rC>6cXiA`3=6em*}3VMUy(!U9Lhe?LYBFjNS#|1O0|VwN1LYJ^Zkq z(H61lDuRek$$JvsW9UAncwVqa7y)B%!rc6Q@1WWY2q|*%Q?XbNPl(JVP-j z7E*&R@Ch!2G>^Q;-ryLzF+gV^t)^S(+*59&mmdyUgKvAyX4ifDWp#W;y+kz$g_{ou z3d@tH&!(HoLkWElMRjs<*`lgT#TquyyrO|s7#5Y#g6&%CI*<2xeG81QS+c2!$Py$E zVe4FTnF&(rW6Ony)`y`Y{4o$RR}C!uY72C+<6HZp9}}vBspIJVrb(_V;o6=rn3_IR z-`f7eOYFkx9}g+)z3c@1%F_%mIrFCT*T0XUmk2&A+#>?JU9zIh02%3)_jA%{Mrz=K zBVsb>`+&HA^o5M`c_(9I1P9^-?!TOOeR4k`Cre&m5e?2!0F*2??1ICQ*tr1#8Q`!t z883bUS;(foBzt@bHvode`+uF)LeTiKZ=r%IUB|UFt`}djQFIb6q2F{09^M7WkjbfI z8y5GCi;+kpV|iBcs^Z0%0d@amadZVA9xO3js4n{FLnFAO>wX`*+vy0En8N>o^NWNQ zz~B8VWsZVSeN(Zo#4gw{W-$9NB6l%sCV)|OVt`0ANqNqOfWeZs+!WS*5WT#UELYE+ zBy(r0srWIO|M%uVw5IyWrEC7N#244?_f^9rIoP*z6TLmFjBCX#s4}ik4hEDbWH5JQ z>(h5k>Am^z)|rVUg`OyZR<)Yr<%#XCX0nr#j?e~3o(q1-W*v;tb<}t`zS~&#?oDWJ zj(cF}VM$G!`)x?kr!-*sGZu38Ti$RhAb`j`OhUXHC{2}#->_zxY+{H%a(d!J!AZaS zcua$De0OR8;X`3oe+$U6e1-RP5dAfHWO3K5w?`u{(yG#GV3L!a{OY$ABRzD(TLW*3 zqcffBg3?&p7k-A2RNrD0#RfpT!DJxpxGC=`BzyhsFDo%`CEbaXrV{n>Lt!PZ8Fkx~ z+n8(X*NRK_!yRDks%Dz_IvmesiML0zH4B>BQPwo zBy9C2+G6P@8vY^3rJ^I@COR?ezk=G#8^%Q7+oHcH$ieL%^Zq^O?H*{4??Rwll?YSX#b0JaxM*rfSD8iC&y;(dJ?~3}HjWgcWE}LF5+%8j zJD^;cGZ3yf9VJl#`LywGpbVl(8Q$`z3A75N0F1mcWM~CT{Y_L(C3iCHNEW@6ry%K@ z2Hgt&M>VJrlI<4t&iX+7>~dZW!}xC+R|vEY5a=yGUzdLnYZRIfbpekW?92Sm4%RJh zY$)}+NAbKnPw&3#_@EnIK-S&xEuR8Cm)JW`thVo1Ey*aozWRz^6=Tn(4~`4T*QXzY zaXxSJa=pngxJRa+TYJn(8xT+%@jh5zTjqw(Dh~2cGBb)9b@(cOx)-Rzvz6-`%S>z@ z^_8t3>vacmW?sF%XezI6$1Cma%E%TP9~QnU*rmR#1Jf55&n;52vIUM!Pf2zK3n32C zwxjmmO|Z}Lm{poxzopYGx#Hmyxi_P+wi{1>Z8t78e&bvL*q_>~Y29WvIq;tw_b)o1 zaQ!SEM4Q=jigJ8tVcPC%RU;!}T(Dil#p(J6oRlVhj}Pqm6=kn^ z$~Qqd2+It=r)FUM;~}(;jH6Tc;}&fxueLDbw9E>xz9h9XUw3VBCjh zD<#&rE$nm)0fh46PcxM*bdgNsB_@8|5M$Ws*X_qziVC=cy9p|7kFZf6QZv?JR!!n+ zWyrs~&hZlkx|-v60%}ZdwAL<-io*t)MG9<2J2i;7k)nuI67w|`eURrf3_jzsDxRwt z80+e>rf7!smAf@%v2vthYN5{yv(-b6hqe?nJ5LBvo$Xe-8LyFrA&xy0PLnhW#i1Fm z#pe2A5>?2#wwY1%odH=jgVOHywsy3#t&FI`2G?e%X@ldY{}QMk&-Dv2k$d4V?i-$T z)AR2c9PCqz7)$s=_&gNh3Pbig%AO{LDf$3mVZe$cJ`X-z9ezZ95#7aRM}V}Md01{1 zLXvINe`OB1c98@QuU-&xtih9f!;om;5Q0za{+n{d6(h+f5wllv1t2}d5G^;)Xd(g@ zd{CQ!;OgO>x@-5~;O;iu{)*Uf&0CuMOwWpcn=|fln-rWFbJ9&>IowtJo1I_}VASzANHB zAU>pA9ok5b zJ`(NhBoB)Gr-Si9i4R2rFZxL#FYMk=zJY|F73L=5s(=FWH2t0;lEj$Cvv<#+TURx9;Dje*;paD z*cDUBdguS|`bqmc&Hv2T6%%6hiP4WTMNavks&UE=|H>e)*fygq+fJp2(V+a;n}EWg zog%TlYyEM(VW(RJH^}Yv=f6J%X2HemE8OItrpMUy_MFmzLzO0m`1i9h&eux&yH)!; zz@d=AecZzfMF~m<6*9<#2zq}#YP1=;3zp%|eqKPmrb5W3$ZojtVK9M_G*sU1j3BMl z;Jh#!B_dCA3>UnEiFXoit8&Lnu6yv3B`1LBlGS|@d`fgow4sW?C8iA zAD%P)RkNr=v9}=fvWWgl%QZ6&{dz}_+6gx>(xqEWcrt4~0`Ss+%^9@`aRv$0ovz8! zGUFMq)z4SagEUdp`xl}8;j=3#=IB`2QYjxr)36#X^E91=*i&YXQR%u@8O2TvP&bn? z6F#3ryie&>q?79k^Ie95ExZ6oaIDcj=k$7_ zZ!u51^GP8*S2SB`3|w+m-G1#gZ`*dVgZkM2bc)MUCu73Y0yW>5q$`lK7`C{k_j!la z5JC8M`@mlCJ#Ayp?Anx`Z68;B$Y;aq_|a6H=Xn}AYrr0cRirwGZq4NZN`L#Jq*@l?QVg-{4t1B;Ev9@q@e z7{7Y;ycHzd<2SLcrI~ZJ%2-g9iPy=k&LiuT)K!*o$DNZcn4c7{wj(Ya>Q;$#m=4bpWR za}a)UAM-9OI6Au?d))E=SY&cR3U^d z_C(23MAb;#Wuf+k4KUv~zxQfjstE5t#*G%8BtZ9KwVO3XH4mN3TtC*y3PpyioE}`m zu6JAT&|zB&pubj#`*O0i8y<0yq*0iUsj0@dD)g9(CaG`_LIjw-2`Tl`&P?97@^zhr zQ7TaG*R-x6H7GYE|8@06#Fd=YjNr2W2;WN!s|R$|zvdAUlNfpW0a5o8-bWq*!M~tO zHe^;9^-1bVB&)nstI_hnTNUV$M&%z&+!k}^zN~2b1-8!~41(UsepR{v(&+hIwd$c# z_vS&d0p3y#i71Cpl(VGb)1rki@R+nl8IS57J!l+7!d5*d8H;bgPZ46M5zSUW5_}cm zRH)_P4=SbZWsY4d$MtCZa)}-vd6Kd3&kF?o;t^O=Xq^e7ne+)GPZ4ZxWbPiVADuQtu6f_iN={bb%&Re6m=i&Kr$*9=eMI}e?EA@tY_9{Aqg^O*fq5AI z$oQSG1m(@6aJs*aogBPtkatgPp?FE_u7_bZ>RsHX9;bG$`X3s`Jbikgmovilzz#iJ zn5E$n3RfuVz}}7kImL^Ut`k0+8!6+tLh!~m3oWgVydW{P;r@axm)sDii0uN_KqDga zy(#DyoDbb>XUN`gA5=W&)O`JmJwyf)ZfAAf)xcJvhQcb{ci}Q__oK2+ZGFc zd4r52LuCfvr4ARy^)GB!DSTJy!j>x8fP-rmmqnd6tzwO= zJlSB@nVL($;}$FLwZ@FMVKO8cSkFaoY}QDL1#^`wU#gaN+xmF~56@O*l}>gh2UcSf z&MValjsJ=*N4WJp!LRloZKh1>b00?J4EcJT+pEHL(25~X5y(ydv=~GK$>CIT_xp3! zR{515IP?_eXl06)MQRmHg6lg^rmtS4{r2Vde5uvC?CZmq$1YFipTqOzlzS&awa!yH z>h-2`EU3Nn^^*BpwhY8|y`5UC_ovIZbdOx{2rAV`xicEoo7sMb0M8&WDvPteF zv<1zWBG5weOyL8JXIEg1I*X@2M_}@Q*jSvt-aJ1&?qXStUv#!zQAf%fLMD zU5y}~%1D2ikwntmvp!qWA{4OZI^&0w(?G__@F>&ngIvP7#cG~qsC%4IesVYdD&!-v zru5~Ur#4hz*l9R}LSQDH=U?TFEv1burT@c>Ez4_dP67clTyS(=9-?CO*!75!Q;~xw zB71j4&dwZ}P;aGHeC4ZB%rc&)g9 zC3d>fZ#~B1$<3c1VJ=L^UARYL2T|D-#Z%UyuV|$`>QIMSXT>rmiv>atQN>m^r^_2L zsquRy@nMbGYN~FxJbI8|don7GsO_3bf3%qe*~%K(0x3o+V7$=LPJf8X2wQvmXsI%} z5*p9~Tkx@W2Y+&s{@ke~*{P8~C#@)B&;T&-zwhF8x?n7=<**wkt%sfHu2?(Xx}k?! z8$I68ETE%i6~8j+0eFAv2?m83LciqzX4Gp6`#5*Ms2iB>2R(Rot6#lvnn869vcr7E z9PUL$s7rUg^Z9_BL}5M?&Fl+O?JwT;eG2>Dd*Kj5IIaWR;@n`buL*c#yII%QZ?8in z_&!Ci6W?8&PY!!CGkq6Lb~1J*V|sxPy%FGTyd%B$<2;;+YScQ$RofRn>(xzPm;Ojq z7QDwfAD`9I7|5p6=zaE)yuMB&;K>R+NctZ(7I5G9i-o zr5+zs)94si`Bd|cCZZ@eZS?c1sS#U=Cz^Y{C`es3U%iBA4rfEAKg0=tYa8@A-K0cs zx`lZ00?nl&ZGSIXg;{&!mP*0VL9Bv+e}{(4#OzZl3Ab^K{fvgonj&2?iP@eZhC47X z+&Zqs5P`2hHvu%}k#LB62heHWQ3p<_*8H(h6vs>`J&YnGOmb0dja@G|PgNzhBb7`L z4n|WFY)@riDX#m;#Szl&g3J?}1jSO5x8E1|=eb~1X4jcyuC-X^iokt};}Pj$U1toi4j+SSNE&R3EHx`9^6cZ30xu3zPT*eY$iYD9v78-cb5(?nG z$j40Ff~1G`W7t^HXzKG;TvN6aAF#Ys4qXIJ(gcZN#UbdETZ6(oUz2HiDTvVgwY*K+ z^i%-A;$dqJ8I-w##M4}hSmCtxK#5^*8XgE)G`OW~AVKb?y)Y|j&#DqjsO8X{1MACQ zp0$kB$sRfvZwl2hy-73ae|Q7c38_Qt#Onpbv7SEKb+FZ?=)hCAHqW2uOR8}`xQmZ2 zArL^$`NTW`;h#F_5Q1(@bDCykbY?iLjjm2|l1JdU*0vgg5Yl*5Fc};uTw6ln%#%Y{OC8or2K^Duz+aEDfZL)p{4*U7^_1Y^_%rz^9)B=S*o3fHT31 z{<@4rw)(?+_KvE$LDk<-t0)XKCd%A&fX{%14-v2BKwuW7Z`m+X>Xh1@kb*;o1xQU= z2Um|`T7}riXdvc>VFa=y_P#A4P8TO_3$wel(sq!rL@SpBOQgt`9CR$g|O_k0>hf=pkpH{^xa|UaoZ%c{|>S2%EUNa64=-1xy;$^5Lsn-9U|o>P@&&lz|FZ z0n#inQMJ#}zwnNzS_w&Xaf})y*1pJuuXYLqG_9Nm0p7%9fhPrG*2<2%m0~zPqHarL z!fEBjj?z2#olM&@m7|;dD|ty?xFG+FOaWumkez9uB~3sHKGkJdeDS-|C zBkI63aweL-&(SH=_hcDr`ek{7b)S(ht#|&hJB{s-)wJ+6y`AnK~um3x=ji0!|ruoSEUdfZ&!h<(!E6eR%ddLVa7 z;5>D;mSDQ51ka*`M zLsUVCu7jv>r;DnYl1Eay7nEyoSnwUC=6V zwUO0ulMBfk{xu>>D+lUhklTiug7oi03G8N!5Q#5BcA4cZKKuEY70?wn7BF)EC$b)V zKhwVcQ&0l#!4~E@j^n{RQ@}pQM{F&c>cB2>~mq@ zg2ko6+CJ^XoY4|hL$t=LA96}QYC>tT85Ka`$t*d_@RWA`sGk-`g?25{w+>YenF@ln zpt0x46I+eYbYCMC9aLzntR+hYs>uvJ`c9j!*MI4x7UhLC_Ry*}h+{!nh}b-vv$x2c zc4AwvqotO<_S;`M6GsxGK3}MB7z*9oYht`Pz&{aloY z?j7RA;>99Z_ZoUa(ZLdixt$9-yRraf{(7qUF-o3nR%AkVQ2^3nt{5zS-1-{pQVz#+ zVsTkB6LcLoi#CA15VO>L8o&v&Xn{nZLJpJN46tiDjeP^c|_mX52vLC7G;zwLW|Wa7XJlR z^i&BG&WKmcjJTn8KIWC--V)keK~Mke^Y{Mg;JAwXb@hY_gS`(a27dL3PATJOy`#-1 zrIK4RC)n1|6#w9*2ySnK=&dWY2Qw}zwava6>x?y1!@b;UwpyTU6k*9!EZHrtcZ2d4 zp>o$NQF%vY^O*7t^~aiJqBE7Wh%ERe6gL#S4k`PEc-3Y@+A7h=!?`@;O6=k)2*<%R zcjskorOvxXZ$!Um7N1=502-B<3GK!nF?ZjStA6M2k^cd8K#IS~#&HR1vCjv1wa_}6 zbO(o<+)jd+;6NAz#&mN(qyOg z68qdL^|{KO?X(WoEnanAW0Lm_?wDhJg`jLRmqIw$m^(N@6HA(ZY9WQkn8d zvKEg_=03vkOwGdS8$;FX3v~>bZ`k@mMXO^%HjW8z*<)?j;o{`T*9fLN_IW-zhT&r5 z3B2$5f;~C1307LDXIHV}2J>v9j2Szl&_e)>v1&qHPG)w(&WNZzM3|=uJq7x|0m!50 z74*E0o{QGND6KstofXUXJv4@u6c9KmGHNCq1r~GC?gKtY|(r_GUQfd`tp!!Uz5Hr>OTY zoMJN-2=CIoi5o;JF=W$Nk3;C2UFLs=uucTcd?H^=4_l=kMr^e0^sq{hBaX3ZZ^B0J z`^@j}0AV7qJlh+%!gN}ytMc~n@Kde5Q7XuW)0?u^YVT&8g@j&io2@!OHuREk!#eA6 zQE1_?Z)uiUXPsna$U5WU^3|!L3MQ-W5VERujdzP+vD=6?q*iZ5Q?!@7E2+g-ceC{% z3Q~gfY@NJq=w`Z>Kpx3@PYE`}mqc&ehj`oQr<$NgbiEp<$3}4c(`*A8O^tKv-eF-- z;t;PD%d+xhgftm)qYlx}-nrni&|fdj1#^eP(p+#z-LNzlV6mII2xTrpnTxQP3m;uh zF&92&U>tM7Z<(G88`+lUA}r5EmHX)hJQwtHDsIPz;3K0t>&ECC;gD>UL_g3fzAI}m?+`QDSna({X0kEmZv%KYKuIDjd!xs$cdrd^P}| zSc;~dcYNGr_`Ff}>Q>pSTV$_pl)bu!9ur(@F}=0cs}XvPU$3y0*^gD4jp4*hK~RL$ zB<}-87XTRzER0A1F`D_9=2vz_%|oYI#-YwJ5bNzzXH`jYgfQsPr`923w$1R|y zE}-tf2WtdSe{PdEC4gGP3jH4jQ11qyuEg6E1M1llzQ0=lbz2EgDPspDpLP^{d%+my z52&S)uJ0eI9z3WFGgJrC%)l^?NT8k}?dJ?pFhxzSu|&Z}OB7HO1(;00x!1- zyxc7C@w@WhLh74S7K@MhsFEyEk&tG2;7el>#=1>|b(4x)rX>rTLKdQBg5Kr=NaUuFg-t9Tk5kCP*4!krMko`4P{swJ z#IqC3**KPMB4dA{GzKA_t2iAKd{M#aSi7YeUhv?HP(13Tx|@*wgDw`Z3%X1eGp!5Q z@1?jm_EX%n8!W{glqv2hA+?(V$bki6y^k!x%@laf;TMYD(G8S)2vOLNN*Akuefc17 z#-f(ZUM;Po2sWB&DYZ?8=G z$6&Tu;VG&>>41jLno1S09Ny>#Padjz%2$C35yxz0a7TL`9yhnw(ub#gd=Ax&fTd3r zC^XRDGfvKN&N*G=;PX2-1V?=^7?NDw-fV&eK*g4@?R)z7u$4H)S|CZ6Q`uT!5~N=U z#qJCx4pIr&qIHt=zxa52ScxIpK}F{n7!$BSpkXE)DkaDgQMRjqb8|>#6~mD_2+N=Y z&wwTM1hO?xY6e;<+zczRFgHVY<6}{?l?~BA=vz4a9D<#C1*~E%DH>u`rF_P>87O>& znB6aSsSwS>9))N?(G4`!O%vmau7Gw0;$lrP@$Nz#bQc1YXL&7Z0!Kct zMPk?D82HQ;@SCv~LwG&z)AA(j+%+oJg203I-HSP(F8JlytjLUEml4!d%)FoQX--DF z0(Bhc1{0rXod%vwX7ur-u8`Tx=)rD7hgf?8w*#I7|Mq4>kHa1O304#u=fMw&AAYAv zzi6`JXzuU=Lvx3(5oVXrk}23)SPeAUEJ2}yCVM3)bkHh%2->Z3L$mH|6zL!h;#mij zPZgm2umj461e8w!ln)l5d{96ceLSYRJ&P~{`FRP3D+X|%R`Pzt$CA+A&~pMKTW1-9 zo@D^j7&j(?kMsipqC&RvJ)fBI@~hK#u)TM|Oq5=>M?kjv917L$)n1c%Xp_$njiWkjqC6y zEthd59|1xi5t3uV(Bor-v-yKg6I4@1f3q>B%0oK4#w=Cd%*KeY)YQrt4yUmaX+DO- zX{H0kLg^>0ky z8p>T;-`_ReTO2)OC0e@F6QQM1DP0Z5gqCg!E#0)Vbkow(O-oCU2`xQFwB_fO+k(k z>wB_faTvlF_hg&35nDV)7xg$}bo8e-dFNng9k2B79uKS(2t9H8K+Mwj54z6(+WcjiZ1alhtQ>Tz4u*(o}5$d zL|-_T+YOZQ2FgJ0Ijs8ShHlET$!4X9c-Re}=dwy*t$TrAM*z;_c4@}lm4R?d5+~cgcw)7mq;!i-2s<0ZqMPy}dLwL7rzVCqHmM?< z>^gaC>pO1MaXtkN9qrB}k~^2guiB$^OF;RvMv#f7TR3P=3@RyY5nd8LZzg&U#v@9O zLHA_Dxs%A2xJF?{?HP86!yo)^2^Bf4Ct>cH2!t^QBSVBUhwBzVd#u$Brm8;l|8N2e>p=m4(v zNs6~2ytVMwvLeCSEzN|_okRng;ns{;Zp{dbS#Z_k;*ARyXGuw-cOmuo8ugRdj0W#r zqY+|)8RpIVdb@ckvBBBazz0`jj;<#@~GHk^w!&+znB@FuGidTj~CJvXxE5q0q!;W}m*os$%t$1Y^ z3LsjHFpQ>HyfUndiFk#%mRh_LI?gtSjmTu!NCv|gMInC)t)ESc8^q71YG1+8*#$TF z0qc~|UU?hXq>mvOH`iA3vnl+{*eY=076KepLD-KgV)=sYm;O*mU&rw16ZYKA3{*3x zV4(7h4yb)Vw%-*!zH0jX|_dZGb}=zVG-Kkxbm*0R8ra8Y64`!mF=6gGDCgX+!&mYYarzjnj83q z*>rTgcJ(#$(kU+!0}3NKgH*RcgF@k z4C^R^srK}tFl;DVld;s0vnHe6)i+v`v9hc0vnFE=GG6q$1aIp(gXxW$+$_LO#-XxS z4wXm_l|T-ab#kb%jH9ZLL3P1nFx4UvP?gXnVV`Yte3B0{tzy_pBbKoQnr$T35|i0~ zH~Tcyd)LhiX36s}RFS$s0T3$teOFj8BH_s21Gbx24&*37#jw&aLo$ zr2=CNeU38UR+yeH!~dkeApqxbwfDCoc_8#($-n7$^UpH=>QOxmhAJMb@PhOF8Mst?G@8k(9_S;U52rQm+aztS9r6Py=uYTI$!qPP4 z56zPcJBvW!lwxPS{UU{7Os5YTw#13mT-V@`FD=dZMN3C~+tO*LrDvt3BXH<@io>Fs z`j4}MtH>f`{7PoYVe?wn@54?W7{rO&rH6cG{qpJ_@|h`o0XA^n5dJw`?;|TGnbd}c znr}{3ZeSfuE81ZB@KETbsYkgjOn;KKAirP{$Dc8@y~lySPbw`v(1&m({~YHWwzM7~ zo1pr7#r>!I?o)Us>%9--Nl5z7^|%fa#rsiZB?L`p;f;jgkRu_O3lNU^#qu2Y3wAsN z8hpVQZP`F%OS~SlgTWCvzHa2~GWDKLw5-#bRpgS|z1qT+H9zv#bPoS9{mG(bS<98a zRC`uhq%Vh^9NsmwG`^gZytORINI*jk60V2_K*1s!thZh4bsNeu6bDeMy<(e|$ifnl zg#|1N%j;SQ#)}f&-b`GvO;m_&qI|Pnl+$cjA88rZP+qfO$RlwTATQH3I+nq5%3MvoN?fXA{be9`PF$>~y8PB%J0PS?B`IbENC$OVEU{!5nA z!72iRG&9HbOEAZMLa9G038h#PRYi+wyMf1OJCG2Zi6fTUl}YR>H4QBw7_h=amFkKv z)q&5=Af!R(+O03DcWw=T0+zZ-b}dL2Hp~L2CjEbWFmtBz5Z2-Jwh~o<=u5KZCU40A zMg8Vb1R;GGfV>Ic#1TNlX|`OUPEZ%xO(K1axjd!{>rv~)DS=Uw> z(2~!;&DD~Wn6ssdX$fT`O|tpSt4B*- zbO63Dq>Iq(y$-3JV9s7kiP?IMpLEZ`g^-@>-mMHacGhn8U}~~3$6yQv#T4Gre1;Wh;BUp|)q#z_L!k@VwWLju#v z1TUcZaDn9mWGE$K!~dnk79^>JuBK9&^pi&ZGx{yn2$ITHNmzWkX1mrI*>$U46Ca;kVIqxNkkk-qNWrUE#&@-HA`6*4M<%7fdRl?&>d98oTL zMVE$v&TUHMtE6*PSnyS|mcA%ffk|8RN8b~xV$xzwT&rUBGG3(FFeWY1wJw|a>U44L z9rZ4tpR%P-IYq7@fe_R^#1xVL!icQo&kvyV{IfVWS9RrbW6#YME=4`r6$|GJov#Gu ze9)mncvt2#cB7=AzBGh&t74fBn{~s)w(@uVwOK|@KD5W=7>wi?gp6cHiT}3%mBL+K zWaS($^}j5jQ?<%2)2dpW64?0Iu#g0-dil}4{by?cbh%f2tgvA!V-#5C%IQjPOJi_( zic@u0&vQ<#k^$*m3m#$>(QZ1;p=Gc0-m3W0TdmdCK)2-TtA<+X@W`Uku^*4c6_ogZ z>NMmO3y7=;^`umVHW%Uj`6(od$tuleb%Y?W1O} z7Lkr`6~NK1G65YtrZBh~YM)7rK$92&vq2)FF;M4WOw<3&p8sPe4+2P44lCIikE`T= z(i4)%2&-l_t9CWD-VtjZ5kkJRZzYr2SMpz6V9c-4E1CR@IImJKe+DM?P3llyr^lVW z3q^F-6i<@3&5pTFXAEc12lGMfd?1DWxQU*9*) zzO?^rmN{5H*Bo4_KWI6dW1@d^EXC$XZkeUBtzCJ(E9m=3 z0CvDWMMQUUt5*1-kMg(QlhsL>0KiPau zOc$G}y^pl7;0w+p)WvHbp|fxaApx!g)MxLjHSvj#yd-6e9J6j9F{TONn>0$U#vDc0IQ{h)z;3plBEMG8KO!IM73Mm zF-~Um54LC}_n^a!jpBCKX*i@`Rg->IOZpx7R6pt06rPwC=GS;TH0>3yX|8zHxi4Ta zal*Z;MmOLF^En!t4vkn+RiZ;_FSUeM*w>+W8!NMJ!f*J38Q7V8?d@lB}-$`cmor+RQ-407<|`d5Dm{fp<@zXmhJ zFRFjlm(ah)eEU}ihxg+87rli3)#uy48Y}4#cvj72Oro{|Ud>&ssqbPf_U?qMnBE~S zXe@AW!AlriZN7u6#%#Evhl7K=sSobvNoB%OC)%+tf2}Tm zoh33a{LOm(%|=a>CE}d8sy(&Mj|10kfDr4un20ovC6iU5FBqq?COM>)v?XI+BC{7o zQcADCNR%=#67`LCC^q>cL^`j1q!XFhML)(jd3D*Wm|Z~+L;MEx(15CBz^-o{J|1%e z;eoMg7$) zvMbh$q!kM&mMeA%`LZ*?t>`7h2AL==AuhQSvO)9`Ms|ZldV|met<%VGokoW19${&G zGr1ymA$no}+6<`VvH`zAcs~)(XQMAEwY7L&-;B+x)M%;ZMWxipfPRlrzZcD`_H;lE z<5a`&fZvwVZ-c&@px;`t;Llc9#74a+)B&GCd?yv_yI;!A6s^!hZsBaKY52zmj%!u` zBK+e-_{U{9P6okoOW>G|qFMsV#$XDUpxlea!L#5Z#=@S)jMrux^-OHkGqDjfv6yBe zDXmuh0`s!botKRlTDj_g6&R&4%jbm=6si91|Zl@}A?ayr-If z`aLCi58|9uwY+CH?SUbCiN zv*tX7bh}kqO1HaMwFhX`8dx=Mwt?;r`H>ODmX~g?7RwR#_^l)6h?m8ilnWxw6k?Zq z)1Ae%-50ZMUTZ7sbT4KDl*A;q5GkbJ@z^Mss;Plvyuefwc_x^OUi2K`mLVSKn}u(W zgiTI#qRN*iomfn_9K3BT;k0Hp!8mRIi9VdR7&z@t>g0Hr{+#r9+7_?$$LUtVxNUL% zny!qFzucfOqE~fgjL-n#jOAS(r%A)Ud1GhY2DLaFr+2T7a2MmyB3YcTG}=GMx~W;9B!5z7pwrd+ z!Cd?TR5xjfujQ8bGL*n1&>08ETnkA0_o{2-8BD?`THoi8UJc99Ab&_1lNEi%>ol)d z6H?oIRp+`5-YZSNXk^|MS#X^P^7_ZRuk}2r(h}jkcI!q)p5s&#(d-j^Frh~qHmDz` z#}#moNh^81+Km19BBJcB_I^B1cih{)B9Hir=)InBUs$~xJh9WzngvoBf!Eja7?&0GD6y0X{*x2N4q{n)39Cu$oU&o4rppu~}W%c=5`7$<3VOx_4t(vU; zr-NZIJrsFLDPL*b;QH-QsmssyD3qNqDU|Ig>FY}*u@yS?kngHei)O!3B0s_@7{@tU z*C$L;l-5prC9SoyCb_1YjX#!67^Unj(^@BcjjNNrZh%g9Jf}`J^vC)%vUfYW`=YA9 z&&d&evja|!*w;K<*5f{_3Wc`wTA>Z^d;AT-Y5l(6XDu~r4{{z#Z~KB?`+);NkDhq` zaM0^+=y1@ZQUzPRZU{tUtu)5{J{-Ds8dnmB#cflc3hVmbW@@J?mEb{YWFUcy4 zdz5Ix?N*`}x|0fyXx;(M`dMC%Guq(kv|g4|SPQXEAt;pnRLjO`af}I`CT&DZ^9E>6 zYeh{4)2iq_?&(os7f?(}pg3Lv#T6w`TvLL?%_TrQS_VW5rW*$U;zkz`HxB^B`h@^- zU!M`lfj&TdxDOBy_W@#$K>+~nr~_~(9DqCR*qWRzOb%Q?bb;(ZACNsf8;}8*_Bg<_ z-vOqFO2Bm50j6yNOK%fUx{Hbpi&mv|g)f@Dg4F_xi6aIAQSVK(Zf^t|4V^b$cUbl!;>y^Hp)2C-GV6CRTpQRlZ7cmarYk4Nb2%Xh7P5cMG_q zYp4qT`IU-SiLKTztB%&%5mb)zI@41tJ>0-3g#ZtHqgYL(#TBe@7#5}=XB z1!*7GG);v>@U+vSKUxPl>d`@tdUTMZ9v$RpRvqM^2XM9RO&M?xIyn1?_K+vK$!t2c zrdv{Eo?U4;m`!QegPr`))(`B~|8{L)CE`ewh_7ZPVq?A26ziQttaot4V?oUl1_RBt zk{)v{W6jfgna#Bz3M+v5Y5``!qmjk22RUWnDRUu6Vq4G_r27;>5mPG}Ls3{BfCz&V;HDpnsscp~fud>wMe~MNh@oimdsbLZY)m|dDFwMb^9%=P;j=hDjKuk8 zOmr4)CBfe!7!|E^eab(e;6cWO>zl&ry()V(9(5)RuHhI$K1UFOopYT}%r$t@VOld0 znC2H`sr`y9YQHk8wXe*A_6iP9w5`J}-6cT)5rXNoL`KrFm%2Jo)n3KtQaux|L)&yn zqewy=armUD2%l7S!Y5S+hfg{l$iY#>Pg+UItFo2+K8nCu)of`#nS0sNZ1SdM2&{#G zZ=;=B)gO*2Sp^bug*M{J*54TV^@KO+@Kke(-Ub|^$Ji$El5Np!W z0m}j$6SgF1gc&@k$|sP2*6+5bB+y}dk&ZvsKyWE~uB7J+K^LK^@^kdeu=w?G*CcB1V3An_^!T zygBpp0Xk-bL;##5+*HWOhz$WNe8?gyG^fH@R)y+nAqOOf# zp7wJ>Cv>FE-=Kz|erS`Y*0B1R@E=4gh;15Bz+<#Ic{@FFp(&tp1yGS|)Vh&^-D zuFRgzs9}`m0G809zK&6P)Q4k%?#l4X zGOUp6N*6XPc;{TFTjGePd&A;frh_`Q&0dP(N8IJs%QE~5*EMw6AhOEsHDB)b+$L)5 z?7{5xH(t#8Mc+b%hKyP9ky`Rf$ndUE6`tOa}KL&igp9rGZ*+Do{PuuOY97UhyV1Uap zGCHsAZzK5aTqvGN`M2}-x2y2m?g+nKCBN;BifGC|wjtOb3N5fN)G>%dIa}a)@3!mJ z0k}nw7|q9o*H8yBOfyscZwWOFahEHX4aQpBUQ~vtlrux!3HE%vu$ddTaMPr>W5QJ% z6K_{|T`Z1mc@)h5)eAPv4F{K{;i`Dj!fPTl=sN*8oYWn^XEFXi_TB|P>f^c> z|GoAh?XI*!0wg5N><NvDWoKqrcOf=*^pefB?)Pr)=Ax#v~EgLnv%qA-4w_F^F3#Nk6o=mBzDq% zF4)@NJkQLWIdkUB%$YN=%qB%s=ei^3tlua3Hf@w|-6o{JLb@!bS|0A_?Lyiv z^Q!$`p>p-A6YEZo*Xblt8=*v92U)m$6$jZ7Av=j6U&yXuDU*e4BM`FdM99Vq>yV<2 zK+K*esYJ~F!8iR&-v$~Sg0TZBy@qdy9aBg%^>hU((kpiu%2My3aua@g<~ zEkNwZ@}x#DPwZgvVizoG{IoCYrObse42zK~T)?5f7j+03E1hBf2Yu*To@!17fD3ASBP#`_Tf#e><4 z`@7i59yh6+)w1m8gOxJxlvRN96R=f>CHXN+KXHA`@^>PRThT|Zf4V2V%YXoR(fdzg z8B3ny271#f2dwd$URQ|Y?!yDgIbf;`XN=LP+m~5w6vZ?8a|Kb0`qdWxYI1Ur!@EH(BgPVUDe*&UR(OeDGDlCt=z(Iw52Jj&1W zVdRMgdF)W`ZXljc*qcpN$<@hqu*58FkfjDKPB2km7acvC47bw7sCol^7^iHqr4B8w zlNNh?Sr5iYl9D?swMjr5q{jO*F^=R{i7mX;p&50$8I&VU&7e&S4-Y?L$qmaKf*6Cj}pMlx;TN z_uvQTWAgmGE&D^D4|f&~gzVortd4}*W9zXF7K-ppAEg6gsL^_$*QvTDt7e%EtcYPU z;#-8OI=RV_yOzab0FC2MK5-@3Vhp*)W#~dZ(P78nQS(GmvbhiUgX-ZTbUL!%97zRWQdET@m+}9)zPGc!fhHMP&|fl=9J)u8@f7E zgN8zncwz{xDTPoNWd5fUJgfzyw+lvZ8waB`6UHb`un2{GUL9cc7QyI>OJj7okI}#X zBE^*Z2tv-~0Y-0-?ew;uVq`Y@Y1@Ldiz%(FWM<4VB)yvuqsuX|)ty@?@wKy{sm6Ag zX5gw>5{iy3h6O~5f|RceRjX=6_wa0dFEoh>JJucnGHn(_j!L#VQ41(DbyrSZ`AjHo~K6l2TtrP&ZEIRm1sFDyjQ_Vyq z0mfW6&0pnsKq{s>v9w*S7XDH8de+H=J9{HPb&yomU=OvNi3x0maKITt!l*hMmiy-~ zMwvNapbKDN58V&7MFuoO)TterI;0DlrMr~hT|Z<{g#N{TcVWu7HN!(-mQUzB99$vy zY9{yUiIRJDDRL)S$$R+(GhHF~E+O}~k3;U&6DD_BcNcIFKz*A4zfYr3sQu^{{n<~x?j?lpxcjF^{Z3NHs}dSMhD80E7M1!T5U$m~Lp_#6_aqAX-ftKjS_MU+*H^QwvBys8w=4-?Km1e{lDoIkE{et0~bS4|k_2hFi$c}Rml zXciErpf!T=1LhbcmL$vrW`r^)F=akx7LsO`(UhGinzE(PbcWFMJ5e+}r`vI6JTzq| zjHYKxlICemn$KQ_G)DtO?R%P{Dx#!0Y6j$X$`pEg%IqmA03gj%Ve%6?`LQ7R=bqLA zMnIm&!sN$w@+X7jr=Hfm7O>bSxu-Ifa33*C(Q_qtROLiFstYjNc1U{8lo4 zUos0t+YIA3Gg16zO5yiO!tZlY{2tNxeR4efW+sf^!zJl@(&vM0hn|kE_{MPNC}pRGGZ#^IIpeo{qWCQ@h2Igo$9vZoKnfbadu_q* zh&>K|%O{NAmqnMA)_PB6uje%rKReBQRQKY`f~eAs0@^=$(qD$zdKtzDDVu1c%Stu+ z05$s8zrg(|jeblw`oMUNE}L+p_t|4-?fn}3KD)TJW!%~_zqO|zeA;7Lo0R!D)?(Za zwa7+mMJ_RZ`)Bx6lZ>`~hR@2V?f?4=kzJ7Ibmh)O+P*rIjQD{De+^EJ*%qqhq*OnEbfS*FIGuP)-dmZ%6l0s4r&l z!$>Q7-DL32)GFSuNcN~Cc4w1%Ke|#j7wCgsO7EQ}tql43%laHHWJfm~eq%JcK}vl; zgGF3Bvg0r#a)BF@yUiS!-A8m=4+m}i3m=n#NPIYK>*KcGexdvcY39trW@4A8iko>F zua)6W18X_XL>tL#V&i^O7Z-_rFJ@8|u_NUf3OsHV-#O2)^IEgVMYN%LV+r zS#)wqFo7l}$_El9nIF~b7{)?_&-@(C{G4(4Kw{#|ujGKZs0YN$g#+T_#RK9((2d7W z=vg8d5EsI3d`b8Exghx$PUsDTU_hJ;lb_eg&j!i=#7`a!h_hkx7j^RIFF{k!ODDy7 zezHqR0delA_(VG@UUJ)jI_fk!s@~r=&>eMnypD=beA~b&)lr8W>8OKFK}S9Fxgsgx zfaBxl45B7QJL-TlMhbY$(VEdgw!cHR?08bZJ|`jtBv=aAU$iwIWBkS@ir-i%{2n9x z{^J)IQG(y&8o$TJ!*6WD_J?vxSwAPvUurEnX7d17#Tu4o)A>5QjhkZa6-#8iFALU^mQqxPCip~YezjJcT zun&`;*U8TY$$xlKuXV#=A0~fMCx1RjK5~kZPbnDoVe%Jr@-sp551rC=U(u_Rp9zyc zr;|S$B!A+RUWq`pOVU3Zra!IIj|S=g2EurZ$=~@U%?krMdn!zR zLMJ~KB!54W*G1{O z$UdaAgJJqZI{ksz7&^WXq(2a*e@v&}7o`8QFKJ2OVvv4cjOo~7(v6j(V~gq7nkXGx zCHW-;ZJgI6e0~|%{4zcc9a|IUmnG@=qNd}Q3+Y(Ik0`&4_2gcXsf@)uf zz=aNhh_*8#N(8P}B5(sG0vBiFZm2}yDz`|9z!}a>qZFb;FcVp`xhi~;xdiJFkRUyW zYB2{=astSn!v~)PU=H+2wPr^pN}B`Ci8OtZP~DuPsGniHOn&+*bd zZl!k!vtm5Z>Zoopc#+|K>~mVj#e0|OJxsCnIy%GApFnhZQ8Zz%@>2R8uIP8Tif^LM z5$W8Onz>RlBC?qZr$Yy0l&%WbpsMivY&BFos&PQu>rP{RC09;?XJA3_t0#Sh9GTid zG%o8-G2!Aa6sQSuf32(#YDKNp6&({yiLo&P)=M&Mm_vblg)qV;94%FdoGOVTybphQ z6rl&>q7=$XT)_TmQxX7ExDKQ;cva;*zht-EL@+V=jFKH1NR93G#G zVX-qKa(Z0JO(_=o&cz}^pUpzw`BqO)RbZx5E1_rVx7cUPTs*DN&Y$TxZWv!J``N_SUAx+|mfbuV8fC@a0y zz}iZz%>|vXnNX=}%+=x3ObBjZiwx3l*9JDTXNa10BeKo#(tU0XbhDu@(0FUcls>Ia%YtdH?Ko?Z6 z*jGdOD07U9%D!x>Yk{H!K1piA3|wZV+OhRM)QHQg@f8JY{0fOlgGgc2BQyMar8DIv zshLnOHK-t^)f*hG-T(}xMY}5LtDc?srXJeN5rhxLW*NQ$`Eq87P_Sx4t%;C?;pSLp z#n*cPzPvAg(_f0#2Ql9d<7(;CJS{;7RB)f zdBd(Am5Je_^@!>beafV7y?4qteRa&-yUczTj~X6-|0q-lpB1B5P+xSDtgOgdilW7c z0i;n~j}u9*2J4x~G}Xf4GLGv*OB3~MX+pxp&_qfUBi9Csk!Xq}SQln`n+OD^ z*9;Zfde~gh>DwX-wB%jkhuQY)?20OtA~%2q%QLTCPmSMpBi@bnD1~h(`y630o%w5~Cq5qrpKF$odurSbiUa8+h+rT?XHnmWeRjM)n<*DevO`lZH3nJMx~B zM)t?hGd}Si4mj@zgx$;xNtzo|%z0xX0>#kxNf`GJdV8dfdz*rE@7Hoye+Bkz*}j95 z{U`x{qX4IFw$RPWKm!bK&yY9c0nY@ws97_%yXKHGd#M2=0hrkjnl7d7Az9k!%|1k- z+=HL7O=pjO(9fKOz25`mGG+n7h}k0+@(k$a_|6NV^IYgW8#rA|WO)z$1XlD6==&L=Aw2^c%SLERkN#tq;;vJe*1mt1aQ;EQln<&MA*uP{ zQwE!(!S=M_oqy*k1DfrCwxSoR?uK{D=2T_zt!-A!u zQZOxPzyNfDK4tAj989s@Aj*f?NsRb-yMf-1(WnGB;SsBBjAkK8uR*Y5vh3qEaB~R{ zj3+b1laKK<#nlw_g&|Wl@uQy9n=i?3OYm7k+ncm`tjvM|_H9LRD@V=L zbaN{+QWLjFO3@D}g_x-3p@hR4#^Gwq++*z)WN5wt>ydVc@k`7!2pt_aJ?c8|R?aT! zi!_+V2Q<^D@tFo=;66gC*X&n@yQx{a3FExDI$7`lcGU(h6}TFE20R{NEet3=s;LG^g_uZ3G za9{s1g`Inue!lTziFl)F?+Njb2`!kuXi8(ro^5(a*R0BzjABMM!e(I};~q7BR#52( zs5cc6u_;7s6ch1TD-agag~GzO_iH*Pu8SFDTcHIn=9Xq}MU3_NdAN;y=Ok7>uR4|R z9e{6=@B0{hb-wR&@KyW1uNI^{3*Qv-rEaG-a9i<{bZwfKu<+(F>0!j2VN~$y+Y;g@ zNvH={@J9{}Ba#qs#P;bstx0>zcI(+HOGwFjvwB>@S@t6)xpAik0`pV|}ef3K4H6AFRpafuBnD9W*7bf_*2v7dKAd7wMbO=1454v$&8_ zUZ8JT5PFP!<@9}yz9~OcSxweyYnlBdtPl{YDl&W{&e4s_PzBkxoVNYsmyuLH+;UY4 z7D1p||38sa6GhckOueo+#*mqG700h5j;~^OB6JA0Uj5$-Q|c;jx;k!tu{gRaM_lcf zUo_`t@%$v$Ji?{dQej;Bw4n6*p!5bGXv1ZIPKhF?fnYJn`XIC+06E16Ips1Sr$%w4 z2uG-Jy#Q_q08a^0P4xj!y(}G!*W*v{D+T7ZrK~nLg%MT9{_GX+M{G%BjUm+tXK z{_Pnf`+lgrx3S8w%4VO0HXLgrr*6B10$%n>d*aG>H?v|R^zaQ^R0my0nfSz3vZ|xm zlY@38eORl%*R?Wc+G0aTv0fBmQ)R3@$gH6DhNmVagYU8emmRnq?XtXBk863)ntWa9 z9<&N-mCE8fM!4~$a;CMyd+Om+tXgTZ5;zoySG5~#$jtCgNZeA3??9wP582=>te2X4 zvuQ;%?4d2lg=A-=;fy}0y~=Yl0u#Y$S1b48LYmg~_0^hF=W4B4yVHPr!RU2c2y6=s zt2TMdD&-HGlnfiY2ucowW}+EwN8MQ}!|;;syrXWVC^VPTp99sDwfJdhdQcmHx)e{@Z%AQ7L zCU>hD0AN6$zq_bAL19&D5^9i^8f3z532IR3*P!w;HOK~86vj|$m#X2W$GM;+3WBY8 z`b{t;)l$8va&=tKDVP^gMGTsZ)TSb+O=SQ&>(?fGnc6shLZ>)kIB7KF1~%1E%|=($ zFkN9ji*a2OT<<#7uv<-0wV?D}R1vOOHmI2s)XXl1-iC|afIf*qml2c(;#xa*5&Q&q zH_FNiL??ha2F_xFlK?%%7@gCAALMi-=a}@%DSZWcpuR-p4HQ|4$ZJbPuAs;)B4?C{ zyoDki?${ubC*s?2n>|c+n_PgO1BLRYU^bqk=8&-FmUq1O{a?6f?B=WSVB?97zx@8i zkD9yXiahbBSjRhm|4;uEc$k9+wTW4kb$tFOe{e*H)PNBuJAUIcXD%S5yyF9Z^pkHH z;Ox7IA_oK$(j`Umg67kJ#vL4NJv*@NPZ1 zzw^ycy^E;oCqh+KK2^nZYGPDXn!rlaVVwJF9!hLG=G6KL?P^rhObGf>tF1oRkN+Aa?I`?EU!Y|Das6G5V%xWYY)~ zN=fLnRCzypS%AP9)DEAN<9;jSmlaa= zZ!2PJQ~eG>T^U|=Q2E%EBR>&jF88aI465aH{M|qN_WPtVezh9>YE7eR3E5*Jm>Ljd zZCJr-sbH)`ZzcQ+CN5LKWRRswPYC5f{iXziacVFEYlDi^1*ALOA0Un%9S#1_P}g)^ z{EIKJLy+9`5Mg_<$jmW2JZX@)dmf!3mSBdU-<^9JZ6wd%nuSiJxy>P zDfj!UHYl)+zym7JD0M;U)eJv5p;@I|=fa#)7XXf3c6NzhYIaFnYIaHf%(F`it$|3= zjZ7`Ln!+nR6Dz$I+|8wx#x1gV!7_vIi(#4J$TGu@EHn5@xoaszz2D>uxlbZcfV9xU z3OB>D9j=LM*R%lZx|K|!8mzM-|{0acA@d3FZG^^K3 z+~Mp|yrPR-ylnwISE)ot!0$PNU=e-;9o&wU*hqkahAs zqjHfk`(D$(gLu=}l_V;Zwe>nu){W@Fr(=9oklM&L1@yA+HCTD0 zXKe4|r%oE4!;q>hgn4EqFF(EVl~^*{KoQ9lRi=@0;XK}j{KL_#iG=83_F$ItN}OOhL? zZFss(?*z2)J!<~0%)UZhyDi6;1F_s!Y%j#7V2?%vt>sh83NOK+EEQ8S9`5+rb{fXZ!8hdun!@J7qoYUZ5;^50iKC zK4L?au!-Q#?JytCHF{Pqa)DIMTk9q~%d=IYp2#qGMd#&L4FbHjUd@Yyyr~`+O&tR_ zO;etogSk1+$+2Y}%lkjc-khTv*XE24GuMhmo-h7BYP0Q@9#JbI8_Ga?UU1qa2H=I(Ht9&uY#(>}Ku zMil0$<~L_>+1^hr2`N*@O@!}9+-5azAF|&@Ve=@dcX$s`S<@4}uG9N8HK@-!_C&15 z`)YOz4Xm#lcV*&yBb(6g45Kw?K6dUAHBJ! z*Sl%kQMZ)}?l5=d+Ax-~9XCCiTf(ENCRWJ`<|f69r&stCOAg-z5&*mEpOzRzig!-V&7%(J@!v8*sDPa367Bf zB7k&x%8PpmBsuzbj!r>9*o*iwP}_@u&V*}u=Mp;Aiw3zRiC6An1eL9E6ZJ4hefY>p zm?s!L>RWO+LoRQ+cOeKE`6Q<}^hrP92m+RRF9rcGAz+zz5ajY&yo-K-LZ5hN zfA6H2De)ZUB8T4-*YzWuz(+Mqal>6?<@D#0#KfvrW-v{paVD!=ik54pd7Cnuy%m9(L#6 z2QE*ZT~zDlb;Q^jsf7!6?Iwz7+?i{oROHy@w!M{zp;;}yFT>A;Yk-bdz8XLMIfv%J zl(+vF;qYU8ot8zX&nX?mz%Fz5Z=5i*Fp`MtD32qs%;(c zisU5uJHDTfg` zZyk5uf?XIiI|*-1YTi1GE*e5^>stp2!;2`EioR~A+XQHf)RLX(R7$vWSBHh}rheZ^ z9j~t6rP_Bn*3`_9lp#Bcby5dP`sy}xz8t1ktt`KE;D{&~K z&oxubyj|3UChDYls*RgLyt<11J9JD_C%W1@68IW(O)wkPq*~sp9LR{=E<)vfaP0yc z*|iR~yZ9MZ1665Ki#wcM_YoObZ{;~Fj4D(1^=6VjCYuIwFh$JGHKK$@s;IJ1LMxC) z{PaG!fUnkq5-b=QqdIilw|nP(z)MHX?t*fxXgR!XU#8L&krMMYY{Eq*YdO?}!5TSc zVw*8+lmwO$Up#rzkYgCQJid{Cobd9i1j>8&M<~donbEl0HR^NMNWgE>k0S33inwXt z6FH^gjh2FWqd31d7AL_yIQ)$_S!$WR7WHKVM;1;lB5)YCS??ER)~l*|qDY3Uss>@t z#dB8C7>|22Z%|QqIJuENk5C32G-2Wc*5hb)Zj#J^X!_xDZhO(JXN0q!A+w%#V%mcf zv!0rZhxDie@G+W=X}Jnz%r|RsKBO9Nv_$@*aU-wkt|JL!sdd=orA1?hqMBQ5M~g8` zqN+*D4a(VcqxHC{vo=Mup0YS=Q;_vZBs*e8Gta#d5AsUpxzWt$Y|cD4$b1^f@CZtf z85YXPcS!q8e$<=4`)Lk8!c#j9;2paXHnQKc4W?@IFdr2MiA&e;~BRx*ELk8mzIVwij}=L0CH~t;@$uN z5h50l*?Zx?h=VLjjP+8`p(f0wV};mg9V%zB-C12vvu`8hA7*ny7epG;3Emp&TDU0Csc=`~JrWiIAWi2HviPXM7M$NNS<(hie@S1p? zN;z_Yum~(*IK##m*NeJ?tHS1cxR&rGR$|t(s3!PX-3y~pd(iLoDOJI=f|uglnAdby z#`52+H{@yH7@C}5_@4Cu)=FixM9*1FXlYc*Bw5-J6Ov`#MM(QtR_RdgCu50aVDf7u zMtx)0J7s<_QEw2F95*ICHfAnjFrH`zff$*?V%71D?^!I_5x(r=TFmupkqfd%^7(@{ z1Dj~nTN%hAJ;F}#n0PLRZi)#b;m5=+V6NJOF+8j|*@m1kjSF|nqqs{0cV!XWVO)jy zOGoe*#*B}{G%LQ8!r?eE>9H}F#$g#xWLJ(uD}u#oLi8EUManfQLGdYOsSdxmc3C>( zkzbP5!kGWg^u|ov0q-~`25Nn*fyMX)=zstdAV5h+n8+X~BZHWjn8VSqi0xX!5(uTj zk%4pK^toCJKORSXB*sF_REl{%5sfKYlG0*^(zz~kj2c)HBnBEVbJN=&gY8+63^fksN2aFouK3BnA202z5xR@e%5X>Ap*oCym*05b8`6 zp$-u02tuReIr(QI&)O>`PeLfMWI|{qQ)uO7C^U-6n2Jg=)P?4LB zpMpwFMrs*$Q{p7Mrh0fUg*QD!62Y#SaztRfD^pKNDNEXy8~0oi=QKMP;(QH$3gpFH zb&-&-5)rXJLEW768rNiEG*cu+iu5g5a}On@hmz=_$>YoPv$ag0)txja(n-EdKZUys zAz3whHT}#%4`s#v?G*G7vFI^9G`XOMlF~zkVtsj$SZ}LxU#!<%WEXc4>@w3_U88Z6 z48?lC$4q|yfe=6gBIyhC=%4XBCKv*-0%87Aonxp9RsBXb-dS;5#%7d@K$gM zV^JZ?E*3~b0n5GuVLqvn;|N#d#H7c@ygq`cQy_>sx|?Xch2m7oWm#UUoQl+57DZAy zkmQUjwU=L^)LyR2$3fOOG3l`}mqwN^Q2z{)sFf?{`O2qjNbY43$vsyNqArL0j>r9E ztS68q0sJ}tPfPMdMF}5qU?h%4T%u5TS5f)7X*EEkYjLhxaVKvPn7nCIsh8*AJeWtB zanx$Y!N=w}EXHGXpwUo9p*kk`*poR*&Jb3T2sZ@CbC;H(Aws9HhrNe7p$yYA;D~Kt zTQ>X+Og1p$nqy zPh&6N_Sz7sS2AUg9nu`NCS$8fDueCQN!T`Z=#yf5?%v^YY@Sx8Jm$XMq5pN#$R5Ih z2R4vTeA?eKCLrEv-{%?Zf8o=9T3+IZdDGccIuV?q9Qt(8Da-y(7oEdg{8Z6N&G{fe zpXIy|1ibp&6fjN7`mvPl6x6%X_o1dKHA7t^TdY+|VS6=>-P^VJS*PNy=6#eOTdLVn z6JZW5m*~U$&2i6`t=EHx{jFDQ$-;azo8;%6STmCD!v*O$9+OENV#nKXlDX8nk3KY` zQPB|a*2*q!b|1EqN1*->>-RVcCX#n^t!4$E3FEfTg=DXrl=I-G$a!!}^|?kq4<^Sv&ZEzR4L%PhT1zV9dh;AjY--*z`z(ENBK$o3jmzva_?qp; z_mccBfXT9aH~3jVS!x}ms_A|D$KX7W_FT05Hd!$oOz8Vl&DqKOs(gr-BBKV%U~~_7lY4Sy-pI&q8Xr}?s_JQAHm9w4+p`MoQYXDLG;NsSQA1<& z*xXcQw-ReQOfr0{S*sd%xFyfHO+Mph8|>i$Hx4EEc-wBWllZ|oHO(L1ipaUP8|Rbl zCTff6A6a|0N5grp81|7e0w?Xn18NJT#yf|%#@~0eK2my!8j(P=)t&oiGy)l4#v#u&^ z9XS{`OB{?_axiY{gK<;NsLk=tsDs{2C<~|4PrGRhDeH}_ZGkh4Tm>!7jNYel^hRk^ z8BL>cOl6aB@?i76TR%-amMW7|YDZ=IdeJA?t<2~ZmZc`G%wTzyz(XUlVL#?fc;u*m zCQQ;f&Hzy|4yi|QFx&KqnwLFh>az~yht+HlL9Uq?&|Enh-p8b`{J}D(Q_TaqcH$6;Fc1 zSyQN#;y`3@@;P8rcn;XOmftG~wO^V-?U#F~d-U;N9EW&moI*y=@bFU35zJZs86E<% zx11 z^8U$M+&dKO(J=JFyUa~^<#%!Z$6`H9#v}loh|`*m1jKSYu16GU?VSoeM+vbckEw!B{DiUUy z$xp;`ZT#=qjmn%H+$wVo~?*QQ9x`Lx|m0EO{I{~ScC+;#uyt15sgKNXcR=KrV&{Xgh)_x zH3Gs&9m*?(qJ{&GgtNSbrZb&O>l>x@1c+PCEhDCo@^{Y=a>R5Y>r>uKoT$e1i7Kzq zBB!cpKCxmnIl&`yy}m^yvriG@Z5c15OQ6NX2B zLe=r<=juT`5ry3s$KQ)d(+U8O2*@T(j5;YLJ1|@oY&<6P;L-aZj=urp$OcRdkR5Em zBnr+|%XOcYI9Fw{^#se%XDpf^uq&A+ocWZ(t3ACZ$;%g6*6Av-ny<2D0LlrgUjJBF zLM4eQW)l8M3|0{SjC`zUeQ^3%(F)>)V?}F>^T&!bxh@6)FJc8zAFd#jDLu^$4UA3B zeUU9Y~KNCZ=Xt(Uz`dLga*J~4KQjeZ?3COu9J zoIL2WJv=5H851e}oC$S@Gj1&?gU%kwr*%Bu%3@37%8XDn*1t_!5u_&v&WdHs5xpmA zVp~FwrdpLDIsA?8wM0!BRm;+XL0^^@5}>g-zkOi|6$FQB9!|~l!CD=~y=<2{SZfeU zipIpDIFhTzQi?e6Wct2DYxvn%x6y!{qmSBhSv&}N*vwsnSO4fcLuL7^G_{(b;4<#_ z93H*Y`=|i|>>iD?MpoTUDclC9Ri3|Df^6B^l*H|n5VtSe1-P9y7Ps}qxSc)* zx6^>i`Uq~PkB8eSSAyGyiQzUKBDVr(auq3c4Nq{__-AqzdTXv2x09iwITp8kzujcq znu1$Hj^!A)M)X)ta2q|Ai{SP-YdqW<6UD6o+!}&gBfzaO0o+;<+!`9U`n4xa|8eoe-2nW_X@%2j0#h3S(z#x$1M zdipLsZQGZew(TpMwh3$FOxxqcq{oSQy{7GTeBq0x?XpWw+o}@&N;Q>4#HnjYB&505 zz`7d)*~W2mnRnt-{z^5W%19vQoqCd z=}t>)Ex9_x7OofQ!H8<5zh`t+hEo6NjR|slN-ew=INMU zkwYP=<2vVfhY}u-(MW9ZnFb!V=gsFDH47WhwJJH^d^YLwK1Y&Y25z)QllVOaJ2q9a zgNrkaB;E-&@L`RCg1u^a`|=W-)#k)Ems2^sS55(^c|U%s^(?-478_s6L)FX4W)+S% zlHP?RA8)Y6eYEZTxMb)b|N7n;+*-_de~k~chEAL($KQ#MukVfGMq_w=FUym+ysnte z{xFtW89WFoclmO}3ku#aP3kvH<H@HxSGY#_`P6(7Cdlj6ho6k-~wnLc<-n@)~TUIPZ=;_X^Jl&ZFFS_1rkVk3# zS38$lHQ{X&+pEC_D^Zjqy@bwkmRU~ZGBV!@=lY=%wtmCg5ZhE*(ByvcPCa^3E-%aF zQDTZoaK^IiX>4CXpvv+4+@AS>P^BQmJA0{o;nnD%eU7w`x7{MoSSP)&e{fXhN&N`v zP5u?_oFSks)H=%zV5gF{5H>$y%Z29b*L=rU?JLRun4`0O!_WVmomwGkXM(C#awh}L zL?`M8O!*W?hoz&J$(`(b&D3(kl9EnA$X5C;FRoepcd*$^n88KDDx)bkv?Diwomo%; zJT-3N_2EkT zRQC8Mnoi*XN|4^{t*{*vb2dUei(f5n;irpX<<2u#I)0YN9u-4&d@{d{YPw$nGBgbz z^qt;eapeqld5^z}xyA4f>0pyxyywa*n~YYuw3+Pfkd4_P8>4WrF`V~ZBp%>>*YJ+* zqp9$t4v9J5Q-JrBfQOEWGI$Ya+!{Q2%zN581vMzg<^pkxkShMz!<75tPo$Cu;5nx~ z3>T~?m9f0j)C_MPjRaZ_oPhgf`pNz?@OGX?UG{N2aQ$g=c|S0`$6n>iQOI$?z$`1+ zh4_U&w*z7H9`5y=o(TUbymC5VV{;GLAALZpEaJQDwCAPp=w&E1N5wCPVXM!_`0 z4|O{Q968k_#T+(+XUWOUn~uywvv(1jJj_-b$D}l)DXmD#%>fWRZqnHOI5mbBnl`4J#NdRtOVI zX8SeLQ{{k6{DnZX^Slu_kJy28e=KmG4ilWV!UQ3N(`HcPh9K~zFxUA=uF!ct1aQO& z0JMbwB1ySkzguQal2_B)dfiHDW+hhhS@Itvje$!AuG+wr4O~gz z#UJXw1YgRI;eBYEXCHPGXBgx~4tPg$7;d(c;bqxvv%7Y9kkxCkI*ieBBfDC!Ie6m| zw^dzJtd5j>@nOXRL)@G8z+hlw#?Y@F$JktmoAT1bVxJ`K)f6Rro{yC*7+-X}Nt~?4 z&3F|>$#7MaZJa2#f+`4CgG(!o!ep|YQx>t8gRLEVn3g`%BPnmeUYJ)lOzW+wk>J}Y zIOA0gtCUw230_CRNpJEn(O@bP{5Go9K9k?dZnSQo%4Z&ss$Rf@*a&Q-3YuKiS%jY% zMJ;;S;CE^2rjTNHjk9|zPAs|qg` zNw=ATt2}3zTGJ2-9){YxR}Lgii3IQD;g=m&le}yscrSKN_nY#b_=;Zd1$i1BtcO^6ofnM(;P5;dC2T6pSAK(RH~G#P*|=4=ts9 zI2o})T@!%;Bh;IP7FMXqPf(qL%I`NN{1*K5QS+uh&=ZY6U}`fes^$ql)(m1F)46ZQ z&oFV&qWFV|hqgLzU5<@Er1P)C&(5*&hY^p1R+TQ9|8brFZTQ)1j!p0+67Xm*4*>+R zM@$732;b>yl*8N`%NwM?cjR$V|d>7p-7uECfX9z6i`~( zUHUHiC)s3Fwqx8pY2=wIMxBT*pUPg(1+f+scM7KbQ{Ndi^s<~}ufP+;KNpQZJvRQy zZ#@&n9}YZ0{IRo<_$SYfiGTdtk@!R39uxoMOHueQjfsEZl}P+^uZ)R5{c0rs)T?9j zN8_Ih&dGUu_W^wFO5_{-J96OciEj!gUH8pw0D)h4suNx

Z-`LbqRLfo|XXoF9(w&s1I7;l5f;XBp%ofb4BUomrWn~g@PI4f}U zG!r7fxaW2%J3*3}_OT@ot0xzSmLSP9aA7Z-gfdBiyFdxwiT!p5I;Xo<$%#oEM|A~D ze9sj9aT4m{sbJZ!;*`RRVfRHG}O0`dA(E{>Z7uw2gxvoIh4gxtk<-)!u) z+pvEJGxRYM9O`GK$l#B+oagd5`@5!Qth8?CQ4Dq#>M4D~mu~m6qN{+4cim{cJb~w>W zb2|ze@%u%MU>ipnSqb6JHC4m4MJLc|F--5KZG7rFV;diA-@k_Sa7nN>2C3_8RLu6o z^1sJ=os`LfH8;Hz0#iz zp6K|m&KT1?h>s&#cG?~eZbn9&)qL@cNdO&;rr<8Y7_8kk7HcaCy829r$Oa#gAwkp@ z62#tLE5v2-kmK0|+r8O%WWK8AO?w&TkJ0Rau&fbs1D-pp3Ik}Sjb?lKo6i`??!4z5?h6{S zFDMtV*mR>MC#(jfI6@)pHk!TJhp=sB$et64bY6XrvYzlNx3w6*{gIn_w~g;g(Zaj( z9{O?icEt1md0kNQfUw z@TJf2E|{F*ae`ytFT&`HKPn1%{*{6NUK$*iy|_Dg_jjhj&-L(>={@u4sNr1$N@wr+ zKZ5bf!28&r6nOW2t*4~?)w^Ap<~yz9YZ6xQ2(Kp0rHc$dZS zE`ASVS|Izg#9=_r78G`@xUjE$Fj82YL6cC=;=Ff_fPU$C?EiVC*;8!Ma+ap<1J4(d^IsKs&-~4(EH+ak3Deo*ldKUOyB6Gf2zKvH z%jRQ9L*o^Dd3-PYMH2fxEBjTRjo@~e-n?_<&i*47@J;PTwYPsnjP`ofJ>Er$@@hO& zHjr^qf~IHh`A1F~jfSz*(6as+@;4cJ#r_qQ~Rhgl$wMGHZBp# z|7GE_1zDK?^4fqos=VH0>$MWQlFKYP=C16~XW%3u6UZ2!aYu?n)v?{+o&1P@v{a*4 z6M_$iZ4{#a74Octv>r+N#+nU2dRBH$Yv4kr^p9#;ae!4L)mcz-dXRVj!JM@LwdBF7ujf+)s_SCjn#&S7{!zVID?e5QHj zCtHRR_aq57UM1pwWWhrD*!iWv8dBk4^_igI4>St{%_4^{^RJx+iA4+ ze&A+ZWKhI`;vzIB)J5=3S}sLDlO-#`v!bpGuV4$vGwbyMho*$UkLX01*eOj!0}?0VQ4CN z{(~nY6e1P+feEpOE$cyg=5+7JIdE;@ee(M!ql|y#-wM3X{$woB|I~38abjoz5FZ$^ zEdF$j)w(AG(bddVP>aqQTCIjwJ;D&p;PA%`4u8zx@W%`ee@yv+`$EqjBH{vCYc5y| zt03MUSw_MM)uP=e09@s8 zZHFrb*DzdZxQ5`$z%>Y01zg+Us)TDRTv@mV;HrYFAFfGoZGo#Au0FVG;Od2IGF&}y zO@XT$uBmWshN~8?O>ou0wGpmqaOL5uhpP*&2DmoBH65~Fi~p!$RN|+? zhmrANq#4HIj*nL`h=2Lq*XIGmC;sf4hb;#2R|j4MgvA|CKmS+1rD0X$XOa)A%7>L@ zSW7w%S`6!bU;W#^HvsI*&;Qu%p#AHk|M`b-E$R5@zx}}t0(L5Xrubkd z`(SGr?9z_84E1;Z?v+y}pnmLYPn{H~Pyfzu{hPs1A3Oi9M=gf>d;7onS-@Y~@&3R5 z%!nlg)Z=HGUqGE-KrI)rtRv0^oPG3n|Cp;i`l%ls7c`!I?%c0RwMYK&L*)$r@N>WO z34wq1!e5<)YgxzW#SeT!V`v6`uJKEn?w8bnl3;fH@IPIA${KMO?<90-_tKqI1?|3W zr`ztkuixq3;Je?j(_OBX`#$a1z3T~LTJ8O`qG{jiR<;|r@=p5W)B54hwi~yw|H+q9 z98lG6+>8Jk=vyZ$ zjW<9FK*4dqt!X#-*u^h+a=UR8`~8Bav>P{4z=DqddvwNbwQwiVxDWmb*8!Xal1*(l zmO}H)hf~{bEMdP7r>@;t%!fL0Za}=9CJ)@wPOvx8ZY)D7szjZqwHwR*Iwt|DzTLP! zTIYs#qrITc)7y>fxU3`tPqrI3a9so*t-ThJ_XhQbNLd2DjMHD!ZmePCOZpk@MhAJz z0J*H)cw@9^)o!dVC_2|}+(rTI>iS4GEAHrW2JW^SYdMDipV@A#V*6s0x4hlBD@p{j z+KoF4h~V0G0~(*p)OBNOo?_s$+l{wGYCfmkxShNytH>fY9Fye+I+yYb7c$j>vPs$-(D6R%-FqmYQ3Be?*(Aj4!PW8YKiG1Aq=oMy0d6nah;opxf{#vL#VPJtwiS-$o95McPOisdvY%_#Sh& zwL&!CMbVv4<1D#jyv(YB7WgY-nbPVwOo8!bRwG|Qtm#>5DamQiVy$+*D5apY`#1Yf z;*!Cu4y>-@Btq;5i4tnkjq~wLQi&mh$f=}Kav{0kPNB{B$qKf?W8T+(jqjOdd)#>T zy|@z;m%GTp>7*O0!d5JgOw&S1w=;&v@^6uyU_3w>$BcQh9<#+w&=YReCU;ff( z_q==WT4#^v#9;P9aX!wm|6||Z_uP{|`skndIezkiKl#J=|N6)OwCde^JB&Aro#-Am zKO*J{AVarurS zdMmq}FnAqn@8@Eo4-eZQU6g@<1yLjX1ghuDBVgxTPUQ zK_I*LYc+o5ES*xkw z`*}Eo zHsCC8+EH(&9k28>8VRdQ=j(&G==UTQjiO?@bBLph3eG)O!(XQI78+ zs%Mvf=_zq5bQ!%VfSus$?BWAMv*p+v&uUtDiZZOERai+rkxJqEMYNVwY?)TE5p(po z!Vl#?3nx=kxTnJVR*BSqT9zf(Zddg9CPfwG=UWFwojcjf_Z{TK)%KQy`fljaHxn@a z$iF!BH^Sc>`W5`MLVqp%4WT~^e@*CT>Q4K9vq^ZKr|-zdD3HaGJuCGy%i44dH!-|Ry^i_wlLr{2Q-EOr#L``0XOt;LjwQe9&SkB zZ|>oSXus{P=*6Y`>+CG7Txm)F{{8R-hKc?3CA;?+g zqH^!K(z8?+rbjBWkMgUJ(a4NfEs<$NCJG}{eq=c!<0%%_tBL1AttOf<=}nS^2_$ro zFz!u5LYtqI^2*@mSHK*iyI1*zi>!Y!+xFs;+oIeQE;rx)&Gd;;^-hEse?G+2T#A-( zXx~so2Q@`>kS?MF)iVwq{5NX%te=AZ$8Gn2{P$`1EdlSSE#@8BV%{;4rvHOzaz>S< z{23A^ocT!}C@RxP!kee$g%-W<5mUf!0#hR8$%#%$b}%Jbg;Nq{ zG{VUg(d;qgA;~F>lu91YcpW#!+oqyQ1NCS^+)+H6yNreH$`UiohfL;h$_~uq7WZ!= z=-)USXi&C1#lpP?$?nqKl^}tzpt}e{T*IL6c<4WDMr|?pG79U=%3Mx0Gj+}QolMzZ z-m{Xi$|g+>T@|sT!Rwr~uaLq|%?lJmRA7oyiym(FDR9Wb>S>e2uTu@1ue64LIDQR3 z`nuHchWmob+=ibrwl~(cdKlhHlVk|!M^RD9lE2hOS z|J<=?Txk`*_;VjFS6sytKlhHlVp@E9{3<@kHB?q$b4Bh{vSrAXdZPueA@ek9`j$E} z;mz5op%)T!9i5cEtfxw%hMsnLwuMSGiv!(qZBSc4;&rYQy(v=J1M?-@6x(Zv+!S$O zqws+oUJk5WQ|hir*1s#_w{U&1va&_HI+=5PWnNpX+kC~r&IjAY(+3g1557sICs>;GA>O2h}N~--L|2`N-zv!#MUok}QM&12 zI&b^%=7GWPcjUVy?ZRlNGUey{W&jMj@cJ1ZTyB;H(?$>>t{g9~=*oVH~uiZN)UbWneI`*6$e3Q<|43 z4Y6aRlZxuwo>$%dYIt*A5p1INUv6twOP4HJwB%Qeq@6WpAYET~=a984t492ndZgc-(-l(vS_ZW!nv?(Qd`XmDqrB3eYLEyJ4!^Z8CSoFClMjqosfU{I~k zZ}h7t2@PWh!J{Rp(UI1_YRmS%;qDe>R+3sb zpU1XscrQOnqdlfQ`}RdV2jRIxJchBc6Qf8C52%gZeSPY|%>#W@r|laF-^A;(Mm?pu zR-^L<^2h0$)+kPBbe9?41pxiy6@V&8zNLF;YhULM)xBk_bW0*K2tTs^_MvdIv zW78~JSeRzvYF*i_+t(8YIjxXPyYf*#Cesuk+sE3_aOdFgkm{s}4AI6gdPls5PEmmR zb{<$%1P}^*P$WVmDZ-4#piYAWn+7|#+~3`GzmD!l9|SCY)Tky(=^Pv+QlbL%z!)_q z$++d3`G|Atk*|LS%Bz>u@<=q3q4d9u4 zcb=w#zV3Gj#|XkJ-_qaPKk#6`y44RUzw7SMlL%Z@e$xmiTRXcsZ05><&voU8bOCua zjH#tl<{1p9Fx9weru)#>4-E7XKifJ;@HBfv{3Ji#pC%aFZwa_uFw+fpZYt=p+d79f z2gG1xgJL>|@=KN@Xw<@Q>szR5L#=(=yN5Om5Uj!N>uI8Doxg#)aG-UN7$}kIj@F^U z4XsSz^EV9AY(6x>FN4DO;%mROF@|t(ykBhqgzPcS1Dd^c%Mfj|-=(d&m77`vy9PU+eY~ z^>*ElqNvGB=P%|=14FN8DN8h7U;9!vY#)3ezi`Qt1=qE7b@t_ZTNck>FkdJ(-}PYU zVAtzk;-dKr=eLb1aggTT4Xq28EMC9lx}|N)x)v{9uq=OF*T#+OH!NyfwqVin&is-M z%a<-(-nKEnm?&FQz|e4)47VLatq=h_yY7b=-`CndaKHG6UZ>GEcE}UE8r-oJT&%T| z);#xz{$E5DwhnZas>Z~IVAo*hrc0z>Pg3~yEhVFAgtqFqUqp*H4GwJIn(w+l-?yoA zOK0CNq8h)zqJe=(@nZ)`KaHHuckI9z>HS%TUC5C|sw-96*3SO!4ZS+@wZz1OokLq% z)>AT?Z!inZU(mKxF!2zr6Z;4A8%t8=cB&3dN3C0_!o!{G`|>}Jc@ZVP*5z#MejvYG z8veSMvVdfXw%4(gE0iT(o2i0E!2qopU+cDP$q)8*_p|ub=8uhm^bTc|pXlWyGZd*chS%#+;Do#S=UMjaQP#lV&}JGq zOEo^b^2J>na!=~_`yZf*cf7ujPR@Q+LsIJM+rprP7f8GOuu>d3hNUl~0^EhJD<8H?sGU-Wtvq6c7PuZ9QV>sB6E-u)Z$ zeSJim3m43Pz1syoN2`lqDf-$Mv>sASi|n*gUtOoi+w0dPS;kW@Eq>jLV(f)H`SmNP zv#V<`KQu&TwY`32b>=acmg}|i(7?uF5-%R&J;Fr`QP^m++R)iQhj(9t4I%7t52;S| z#?A*i@7^%jy>(a-KU|+5G)BvUz1q>N-YxF#_qXvUZ^>^N7~G*ct?n*tv;tn!`x;+x^`FWt3OZ_F2MWX+hb z)@{zKjopK&Dt4>=O3S9FA$y5KK`^#>hdQ_9gU#j9v?4+Xwm(&Kxw_=PqV!gCafmtJ zNWO9C9&C{{j+#wI?Cyar;u=k<#(^PyqJV&m-@GAg;f=cO?9i3nh`s)P>YMEx+t`K; zKjbq0CYv?Z7>2PrWf&FojcnWLN>E>P_ix=kY#85}oHg>4=JyOX`(*I`Mp;q;T>D^1*e90f?a!E4|LK;A|xadySl%7Saw+N9`3|K%cEK30ZOU8x8yqu z191FDEBgn7c2Mfe4B>d-ATb<(szJ*)!;^F$}Kh>4`xO3pioDfD%2**Y*7sa63k z7j@O`GyqXRuD`1W9!?OcKuLel2BA-%W{ZN0>c!+ud}=tqW$UmU*8rAc+8^57y%k*g z&EWKM)c@dSnlo|0OLD%V1rDuW^IfK4dL1|4a_h=fx2=BTn%nQV^RBgTdh^}u-g3{q z_x;jaJJ)aM%5U7Xxx1&gZ%hBc)@?+E+aGxFp&jpNTd;7^;w4L$Ex&GF>#Gz0cO(7X zB>CE}zu^r!)bOvWl$EE_nTpD6)uig0$y27*)=B)d`iAM(%uqRZ=B#UH&uMI$JFmHA zek-c*>VJiQC3J9tsbMvwswmYP+h%2XPTfOaXbn6{Uq@>b_!P(lYN4JdhtGG3r6lF4)l7w_$sq$W-f>F80N-zpcs|n<(GCTC>6T zucbez`YgE2Kc?~p6Z)r_LdSMmh7MmkDNi`t7H`_-b$Iu!S%2NqZT+_`U$@)_r~>iu3xog?aKRZzIS`a0~@cq zduZvxMfbdE$t@lyeaD-+I__M5`?j@9?zweySFd;X(p%TAy#3|{Yj5lC*mm=Mw{Bhg z(Dqx`OWIXyA6VbD>Yj%N7pz~n`GL2tAL`zA?~;e^y=~!={Kj>64&DAnZ+UP3?RV4g zU9e{R@_Sd_H*n`IcigsiXmHit>+W8);FlIJ8+^y6{>2OKzWptCcJ^++Z3km(@ZMl% z(AsF5Nsh`7YHC`O-!U|p-#`S=fh82y8j)2fRK@;yw&Lw)JCWubT>^?|8qqB-!wt}^{+Mc|BO?0FsVf6 zlkt{MROU627DAOzNed7C1-0-uxrMpcx`mhMiEZ-=wdnSf|Jq0mXVc#tsp05fQVsvZ zLJb>V>l%(-nXU^JTX>n>KcF;%p*b^j%l1LwlV#iqEKNuh9Lh&wZo~qD7LEPex1f(Y zsmgg-G;~EEM_KnR)U887(g?eM4JX++Yaxz%7bOTP!8B0Nt^9p9oJ_&7@)&98M2 z_@Z>UPBVV9MP#9m(l92_=9<$Y7rUfS^XU^eQ~DnMNDM)#!8!fJa}e zZQaV{@0gr5dLc*B-z@ae&&FId`4-k~A^j0~=CQ$4LjQ2lLMUrdniYok^4}1}{3mmj zMdM>>;Yh1+-eL@i&O5FA9=dIr9>1JWh$wZB2iRQq(suFK{7-%iO5hXl%Cyn zeee6apL_k*`u+3#aW2c*XV{;;-|yo%UZ+itfU~q5?8vp<{~>|@?`_ajYFCs+*r`iz z#$ps;yn@in(9&Hwit>i(xn|238W zy+{0i9HaN2W9ATy{jX#GdCSPfe#`%L+JB!n^FQY;v3LHjV~qc^kI`_GKaqE9ACJHK z;^b&e-uma0u7B?@UPx-m)ZW+0{69Oz|LfYb$jj(&scrnf@2UU4YGn5RUyb~2m;ZIn z-{<|?L013Tcua)+Umf!wMKC0*|4?`xoxJ|_**iH^eeB+K28%hVHuF|KFdS|2xzC{kZ|b9amp+qknA-_jYk2r~PL;`2U*5 zx&Q0?dH=lEGUeaDJ!1NIKFDi6dHtOm^Zy}13;);m7XQ4bt}O@4e=zs&xr_ce*TH_1 zVf?PuA3o2d*!o zA;X?KbL$|7L2<`p%*HYJoitD7!(kdWs#AK&7pUK(>2Op15E2z>Cnu}D6Hz+vE*)=UK+)>FG4KJDhA zmX{(l&ZjVE$;sN!enJd4oGPF7M~n%f-y^^HNHBEMfU?y`#JEvma;9jv0G(~qJ~)o0 zNX;!7x;t8c)d&2NI=U%b&C+i?w?u%D-Q#w3)X<2Fn|(v6hv31C#4Cwi93n$5ORro= zBkywT$8=o=nw|<323IxKPS++X98}aT&$a=3 zMlI@0>i{a+)1nSY1h{qD;>gq0Vys)JlIyjMNBQk%qpn+t(BE)u)r{F9lmh zHB9UL(Fr^j{_r;5>P#UdD7)zrvC;cu^uAlP)6o3z{AFu}0Lhng1*IElXxJStKUWWI zmwxo*TActBYSk>#NMm-NEXnFk;}NJ|%dB4^i>dornMJ>3AoVCaQp%aex$++I$J2+{7EQ>Pxn=elj@%-4Oy2?sXfK4{qp|94HzMH(VBxH^>hI;>e zw9bx&@u4jH>+VvRq2|eID~O=$uf67mr3l)>!o(A2c$5s^=hy!#g;hG8n-=_Gaf|O- zd7y6hkKg*w*dnZ@!1ctX16&O49_mJ3IBsSW^K~T0AW# zOL)w5{B>Y}IuGAf3ADbC5bK@Ov)9~`M#a>*`9*7lxD!(wwL*V|eg7Qa0`UX)ECXmr28QR`&zGVsJKAAt}@79ST& zzVI0H!2EOXE*i%j^mT{s;jzZJNTb=8!|wi#=g>n#yJlAG#1R5S@{-2rWi*Cv+dANZ z35BP>KDjTg;c$TIdAnx30MV+OGe!qW@IGL;r^t%nn;F~?~UDj&5Q?|c{Y>jqVRdd;lr<| zb1;cyj%EC&@na=Zekqk;glfB7%P->j79)#~Kc`S&QaC6enuCt;f_8|85C*ep$7vx9 z()-p&ZSBv%ShdgWtPP9sM{Su?=P|g^x!2U_j{wFKWrpwSCSE^t;5n5;4BCIHL@c=` zfa0!c))8brnr6*tbQ}a6479n_D-z(@=xcj(2QfGnwLWl#xdcVB2{~58cf5y3AOB3& zK_%4DvsH#iT8T%!XQ~hd^NhTWw*x~`9aD04Q*a;Q^E0TGftA$UAqBl0YJSN_Z28O} zJUo9v!c_s*a^|T43wY#aKJM@%Iw;jqaf#ESVC&KeuP-zP`l#+P@fTyqr|K}T2@-r7 z6!#)y0D}&h$-!0wg$V1N;1*cU<66b`r1wiH+(>%qFf4+`TpNrV8cO4S=0kJU1`6{2 zV|^872vA?qeqg{;3cY(9BgZYK@x0sHj{QQRzfiMlh5?5p^A|Q{q>onmyg#~qGLQMc zWL;G~WuYLwYHIRsXfmV>s1!nlfE=o zsI!{X%%bMy=Tnpa&{(f?IAW*^g{g{%hp~HTEDqI}-{H;SkZD?2;!WbiO_QH4lw*+M zCaU2qL>O`DV|d~)5vr3z%hSnyhQ_Ro&NdL^ew*paRfG)HS6*G1eXv?zuFVfGF+!^GY~_o?};n221l8 zH7{!Wj+bPfKR6BBa+`)_z4DCfA6WcI4Q!$6XtYIt)}1IvVV2*0D$*{z;e>PwHvf*vx~rEYt(io|R?@;T@{JLB&mo z^0HO?0AezzZpP~zZ2dwOZN3lP6{zP*_)kF&R4ht6NiBF9lFu>2XR?@4Z&LgHI< zt?tjQxlBPyBXXCeg8<%dPkag&Q5e+H9I}6m6du0~a9YtO#OA#=uFodRVzOj3o82Ua zjfZT^bq!hUd^Az__f{TSX7ashM_9BgJP0~46mZpQnfYu059bF@pXrlezWA=i-l-F5 zjJ@6w$$S-H#4#nkSD+!;e)>beM-Ftb#uD$FEXMgaDhwkz_L|1^yz9#ujMh@#Z%cC4 zvU1gf7K#jZawD>~=drkBo~<79jKbH+8oBE)Fj$oFyQ-Ar!ZFiVt-f5yK|F&GI!E$s z!MX<}&fkd77ut>+QA~XIQvcgSmhyP4cd4J0E8(MqFVDU-=<*kq--(&1!(G3+*P}l!{fa0rj&;*Z4*hs7xCtNu2R^xNqlbv*}<5TDKe`unk} z0Ha#_4mRDP!RnYC9X5(ZgZ!fC1^qd+a#zM5A$j_3?d`e69>D2W#ltK6G08R$CFoVnSTErwPfC z2DeYVxk+-|uIy;whX9}VHNWoc z;(`GSHvAOexc;kLpLiOV&;6-t?V$mw9tJgh4XI^G&zXDsJrV+O_2qi(5y>mBnNbbA-WyT}ot2G{59C-msrM;Uwk|(?|dZNlZGvc#ZXLoMvFGS6btU#s}j2RJZ$y(m?{$lqx%VPa{mb*h;o>4TBv6VoKG_#IQ9#V&B4xpn6-W ze(@L{+nSPVuMHRB)bg4xWx@{;5~XW=AQ{XjYh(3>>;z2LFQY2V&LHg{ny&Oij>EI?nG^$3^8JnFw) za9R79#Ut-+zmD<}Ty~T=#gTqVut>a+zLUY@>}+eQO@f@By_KuZ2oPAfkvCn=A+_Im z1QDL~776dSoMLeMrbAdnFa-^(dGpII(U`dHduHx%AY)Y1RxX3Wwz;pI4MhxgyRF^# za0u~n&8-DJkcQQienr-gc|t3=Yy?awp7u#USVQjf~y7916^9YtuK; zP`;qGZp;}PxjT$&wiF7nj&?oS$Wvv+ncPvuCi+qvxaFDWQn>`sy*I?}VpW8VZL z3NC4>Gk*jya8@7f8%6x(iCmE7n@=q26q^H;NZ$H=_3GTCRRXjmjI?wf!J_}@funnV z0`U<{yw^b%P$;(?eS*f508wB1ds0wdy+i#fgR4y-05>HIl2s=6Ox@6rlF7=98b{G(H3><&G?; z@Yq0Gy2p#;_@r_vN{5V7IUVtnDJ1;fbhP$_7_-&Y(~gwz&|UEU%VUyTi&kgzS}R#Z zteCM-MM(+|ehJDmEC-79hg>e!_Vh z9>#y5gf3Elf(TO!R~{8#Oq+hc1a5k#SPm1iD59TQ=P8JBCv}2wB)TRnE?5jGj_BX^A%(_`o)Vc@@*KWa znTNaj5gvbVcz~6M9yol)c&bprpzlokn7Qgy3ZXtvB=k7drBI7V< zp0Rk9hZwPXw%HyVq{#Z8**P#@f}L9&Hog!tShx0U*Uui}XLYF)!}BP7e0#6GoIFqO z&jBmGYSECo6WXjmd^t5^WOdj^0p5&TKb(svdcIOQ|FeKaFV{4<(u%=s@65rmm84&9 zY>z0q$-&`D!?`Ojczn%xTeo135a%6Y$7DQY;Imlm?5P|YWgDMHjrm0Ud}i8%Ewdd1NyeRXo=Apun6*7S2)BY-e&fb*dy1{YHvKC4s~fLH5#())_X zkwbUB-nErNrvFv7#d9SH=TsdEJ%ms@CgX71U5tpw8y+m9&ST*d@M-FjI2JC`1Kj?8PN3yrK6zy@gSCc6Ycz=eW-hZ3)CLQ1 za<7rFmh@}TqqWWh_b{-ZV(qldh=(9|nuE(^AvBD-<}Dd64T-X8>dX}qC^4fqPMAaZ zJWt8=kUWL&OLFU!34d>|URz(DMtERIh0IN&ljn}^u{%1D#+>XGL-Q_hkaDm#Y3m}~ zF>&13c_eRDBu8q*dr`0+=^-|k5n;-!fYTSN$^FCiU%Q`>!iVaX*MIs1D2iTkX9^T)Dx5~Iih1m-wR}2NKT4;8C-jw9QWz-wiTrA3N#*9%)Li^!tc$}t$`Fy z?>s!kWvc*72O29bGGLLQ{64V(9<5plQ!@Okt#et<33>M z>EG%|{CuO`z{0EovaYgg4=rgGz$8{-_LvR|wbeqZ1(0UAGfEnP_R?{l;7c{3ldFfzQ`qDIy~CnRIb2htyU zS&PmoUFGm7D9htT8KCm**(m?%ERuz5mo2lPk<|CF>eoaH2kQ0YuB>2CJ8t6a1xHzY zK9EgV5_EEQ*qjHHOQNsddq;HJ znB5SS%|S2fhWME_jheDuS0B#>rXAE>TK|qk_8(Q|vV`d5AO0&{#Guuxd*1anxmS8nXj`=l?~`kKb+VrUMSd3OQP&pTClwlc-!daE-N zdrLV~Uu#&sn)Jh?t5)yp-}2D7B5-c?VKExXI~!gwu$~hU_A81<;XXd$23c2ye#cyU zRCp9w>6r|kNx^i;+ab=4G(Md&S=uw2M%BeNcNWS>BkbV4UQJ$zAvxAM$4I`q{%EH9 zx1}r^*DCiq*YYUuyLgH>5n%B6#7P5&0YL+Qnhv}Ngw7mMS+#(HhE3mr<)1iQHT2lH zieaFzL;Gt*F#}uWgYmy=88kSZ)>rCc5H>fnyLzq+bl255OeehE9VWKw-Y>!Zq1y|~ zT6m}i@8;DXkotR-wS7u1(Z`q>Z5#WsFxhdw`uAZ0;j2&6XWpmK6MR=)#fXM~<^F0j z;va(xw;7~fA^hC_IidF~hmsNRbFPvc^|H3(jg_hxw|p$Ld}r}EU>LK+G>nDagl}oT zr;%K~RJbgUaFA(6{~hu}d9-2Va`RxIOUN6E!1su3sr6-;zIsDugxA$2Q z@h9Kir41K(xMY;>>KsBid*qp$oEhPlj`O1jDbaXlvM;;xnlx@}Ck^;=hv?U@qwBu= z5?wRT%c96Old42PW^N|dK;>=5JN#0MoW1#VA zJA+2vDZ4IQganh+&%0Og z0W9`pJlb6A%faT*uh8T6_=tx$ zMDU0!Y>?YFjDzE?XF(TYcw8QTCCaQufGtJ|tJac!wK=-l^PMJ#gImhl%9==yeqySw z*hlhGR-o;~5Yqo2Ru{-hbHvZy&3k)_#i5sf*e@#5sM

F~1^)O6-va%V7dMY)aF~ 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�~$H9Qkl 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 !+`gB#3yS%{b8trh>zRGT%c6 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 J8yWzT765#^v)TXv literal 0 HcmV?d00001 diff --git a/packages/wasm-solana/js/index.ts b/packages/wasm-solana/js/index.ts index 217c524..66d8bc1 100644 --- a/packages/wasm-solana/js/index.ts +++ b/packages/wasm-solana/js/index.ts @@ -6,7 +6,37 @@ void wasm; // Namespace exports for explicit imports export * as keypair from "./keypair.js"; export * as pubkey from "./pubkey.js"; +export * as transaction from "./transaction.js"; +export * as parser from "./parser.js"; // Top-level class exports for convenience export { Keypair } from "./keypair.js"; export { Pubkey } from "./pubkey.js"; +export { Transaction } from "./transaction.js"; + +// Top-level function exports +export { parseTransaction } from "./parser.js"; + +// Type exports +export type { AccountMeta, Instruction } from "./transaction.js"; +export type { + ParsedTransaction, + DurableNonce, + InstructionParams, + TransferParams, + CreateAccountParams, + NonceAdvanceParams, + CreateNonceAccountParams, + StakingActivateParams, + StakingDeactivateParams, + StakingWithdrawParams, + StakingDelegateParams, + StakingAuthorizeParams, + SetComputeUnitLimitParams, + SetPriorityFeeParams, + TokenTransferParams, + CreateAtaParams, + CloseAtaParams, + MemoParams, + UnknownInstructionParams, +} from "./parser.js"; diff --git a/packages/wasm-solana/js/parser.ts b/packages/wasm-solana/js/parser.ts new file mode 100644 index 0000000..8079a98 --- /dev/null +++ b/packages/wasm-solana/js/parser.ts @@ -0,0 +1,330 @@ +/** + * High-level transaction parsing. + * + * Provides types and functions for parsing Solana transactions into semantic data + * matching BitGoJS's TxData format. + */ + +import { ParserNamespace } from "./wasm/wasm_solana.js"; + +// ============================================================================= +// Instruction Types - matching BitGoJS InstructionParams +// ============================================================================= + +/** SOL transfer parameters */ +export interface TransferParams { + type: "Transfer"; + fromAddress: string; + toAddress: string; + amount: string; +} + +/** Create account parameters */ +export interface CreateAccountParams { + type: "CreateAccount"; + fromAddress: string; + newAddress: string; + amount: string; + space: number; + owner: string; +} + +/** Nonce advance parameters */ +export interface NonceAdvanceParams { + type: "NonceAdvance"; + walletNonceAddress: string; + authWalletAddress: string; +} + +/** Create nonce account parameters (combined type) */ +export interface CreateNonceAccountParams { + type: "CreateNonceAccount"; + fromAddress: string; + nonceAddress: string; + authAddress: string; + amount: string; +} + +/** Nonce initialize parameters (intermediate - combined into CreateNonceAccount) */ +export interface NonceInitializeParams { + type: "NonceInitialize"; + nonceAddress: string; + authAddress: string; +} + +/** Stake initialize parameters (intermediate - combined into StakingActivate) */ +export interface StakeInitializeParams { + type: "StakeInitialize"; + stakingAddress: string; + staker: string; + withdrawer: string; +} + +/** Staking activate parameters (combined type) */ +export interface StakingActivateParams { + type: "StakingActivate"; + fromAddress: string; + stakingAddress: string; + amount: string; + validator: string; + stakingType: "NATIVE" | "JITO" | "MARINADE"; +} + +/** Staking deactivate parameters */ +export interface StakingDeactivateParams { + type: "StakingDeactivate"; + stakingAddress: string; + fromAddress: string; +} + +/** Staking withdraw parameters */ +export interface StakingWithdrawParams { + type: "StakingWithdraw"; + fromAddress: string; + stakingAddress: string; + amount: string; +} + +/** Staking delegate parameters */ +export interface StakingDelegateParams { + type: "StakingDelegate"; + stakingAddress: string; + fromAddress: string; + validator: string; +} + +/** Staking authorize parameters */ +export interface StakingAuthorizeParams { + type: "StakingAuthorize"; + stakingAddress: string; + oldAuthorizeAddress: string; + newAuthorizeAddress: string; + authorizeType: "Staker" | "Withdrawer"; + custodianAddress?: string; +} + +/** Set compute unit limit parameters */ +export interface SetComputeUnitLimitParams { + type: "SetComputeUnitLimit"; + units: number; +} + +/** Set priority fee parameters */ +export interface SetPriorityFeeParams { + type: "SetPriorityFee"; + fee: bigint; +} + +/** Token transfer parameters */ +export interface TokenTransferParams { + type: "TokenTransfer"; + fromAddress: string; + toAddress: string; + amount: string; + sourceAddress: string; + tokenAddress?: string; + programId: string; + decimalPlaces?: number; +} + +/** Create associated token account parameters */ +export interface CreateAtaParams { + type: "CreateAssociatedTokenAccount"; + mintAddress: string; + ataAddress: string; + ownerAddress: string; + payerAddress: string; + programId: string; +} + +/** Close associated token account parameters */ +export interface CloseAtaParams { + type: "CloseAssociatedTokenAccount"; + accountAddress: string; + destinationAddress: string; + authorityAddress: string; +} + +/** Memo parameters */ +export interface MemoParams { + type: "Memo"; + memo: string; +} + +/** Stake pool deposit SOL parameters (Jito liquid staking) */ +export interface StakePoolDepositSolParams { + type: "StakePoolDepositSol"; + stakePool: string; + withdrawAuthority: string; + reserveStake: string; + fundingAccount: string; + destinationPoolAccount: string; + managerFeeAccount: string; + referralPoolAccount: string; + poolMint: string; + lamports: string; +} + +/** Stake pool withdraw stake parameters (Jito liquid staking) */ +export interface StakePoolWithdrawStakeParams { + type: "StakePoolWithdrawStake"; + stakePool: string; + validatorList: string; + withdrawAuthority: string; + validatorStake: string; + destinationStake: string; + destinationStakeAuthority: string; + sourceTransferAuthority: string; + sourcePoolAccount: string; + managerFeeAccount: string; + poolMint: string; + poolTokens: string; +} + +/** Account metadata for unknown instructions */ +export interface AccountMeta { + pubkey: string; + isSigner: boolean; + isWritable: boolean; +} + +/** Unknown instruction parameters */ +export interface UnknownInstructionParams { + type: "Unknown"; + programId: string; + accounts: AccountMeta[]; + data: string; // base64 encoded +} + +/** Union of all instruction parameter types */ +export type InstructionParams = + | TransferParams + | CreateAccountParams + | NonceAdvanceParams + | CreateNonceAccountParams + | NonceInitializeParams + | StakingActivateParams + | StakingDeactivateParams + | StakingWithdrawParams + | StakingDelegateParams + | StakingAuthorizeParams + | StakeInitializeParams + | SetComputeUnitLimitParams + | SetPriorityFeeParams + | TokenTransferParams + | CreateAtaParams + | CloseAtaParams + | MemoParams + | StakePoolDepositSolParams + | StakePoolWithdrawStakeParams + | UnknownInstructionParams; + +// ============================================================================= +// ParsedTransaction - matching BitGoJS TxData +// ============================================================================= + +/** Durable nonce information */ +export interface DurableNonce { + walletNonceAddress: string; + authWalletAddress: string; +} + +/** + * A fully parsed Solana transaction with decoded instructions. + * + * This structure matches BitGoJS's TxData interface for seamless integration. + */ +export interface ParsedTransaction { + /** The fee payer address (base58) */ + feePayer: string; + + /** Number of required signatures */ + numSignatures: number; + + /** The blockhash or nonce value (base58) */ + nonce: string; + + /** If this is a durable nonce transaction, contains the nonce info */ + durableNonce?: DurableNonce; + + /** All decoded instructions with semantic types */ + instructionsData: InstructionParams[]; + + /** All signatures (base64 encoded) */ + signatures: string[]; + + /** All account keys (base58 strings) */ + accountKeys: string[]; +} + +// ============================================================================= +// parseTransaction function +// ============================================================================= + +/** Raw instruction from WASM before post-processing */ +interface RawInstruction { + type: string; + fee?: string; // Fee comes as string from WASM + [key: string]: unknown; +} + +/** Raw parsed transaction from WASM before post-processing */ +interface RawParsedTransaction { + feePayer: string; + numSignatures: number; + nonce: string; + durableNonce?: DurableNonce; + instructionsData: RawInstruction[]; + signatures: string[]; + accountKeys: string[]; +} + +/** + * Parse a serialized Solana transaction into structured data. + * + * This is the main entry point for transaction parsing. It deserializes the + * transaction bytes and decodes all instructions into semantic types. + * + * Note: This returns the raw parsed data including NonceAdvance instructions. + * Consumers (like BitGoJS) may choose to filter NonceAdvance from instructionsData + * since that info is also available in durableNonce. + * + * @param bytes - The raw transaction bytes (wire format) + * @returns A ParsedTransaction with all instructions decoded + * @throws Error if the transaction cannot be parsed + * + * @example + * ```typescript + * import { parseTransaction } from '@bitgo/wasm-solana'; + * + * const txBytes = Buffer.from(base64EncodedTx, 'base64'); + * const parsed = parseTransaction(txBytes); + * + * console.log(parsed.feePayer); + * for (const instr of parsed.instructionsData) { + * if (instr.type === 'Transfer') { + * console.log(`Transfer ${instr.amount} from ${instr.fromAddress} to ${instr.toAddress}`); + * } + * } + * ``` + */ +export function parseTransaction(bytes: Uint8Array): ParsedTransaction { + const raw = ParserNamespace.parse_transaction(bytes) as RawParsedTransaction; + + // Post-process instructions: + // Convert SetPriorityFee.fee from string to BigInt + const instructionsData = raw.instructionsData.map((instr): InstructionParams => { + if (instr.type === "SetPriorityFee" && typeof instr.fee === "string") { + return { + type: "SetPriorityFee", + fee: BigInt(instr.fee), + }; + } + return instr as unknown as InstructionParams; + }); + + return { + ...raw, + instructionsData, + }; +} diff --git a/packages/wasm-solana/js/transaction.ts b/packages/wasm-solana/js/transaction.ts new file mode 100644 index 0000000..a29baf8 --- /dev/null +++ b/packages/wasm-solana/js/transaction.ts @@ -0,0 +1,132 @@ +import { WasmTransaction } from "./wasm/wasm_solana.js"; +import { Pubkey } from "./pubkey.js"; + +/** + * Account metadata for an instruction + */ +export interface AccountMeta { + /** The account public key as a base58 string */ + pubkey: string; + /** Whether this account is a signer */ + isSigner: boolean; + /** Whether this account is writable */ + isWritable: boolean; +} + +/** + * A decoded Solana instruction + */ +export interface Instruction { + /** The program ID (base58 string) that will execute this instruction */ + programId: string; + /** The accounts required by this instruction */ + accounts: AccountMeta[]; + /** The instruction data */ + data: Uint8Array; +} + +/** + * Solana Transaction wrapper for low-level deserialization and inspection. + * + * This class provides low-level access to transaction structure. + * For high-level semantic parsing with decoded instructions, use `parseTransaction()` instead. + * + * @example + * ```typescript + * import { Transaction, parseTransaction } from '@bitgo/wasm-solana'; + * + * // Low-level access: + * const tx = Transaction.fromBytes(txBytes); + * console.log(tx.feePayer); + * + * // High-level parsing (preferred): + * const parsed = parseTransaction(txBytes); + * console.log(parsed.instructionsData); // Decoded instruction types + * ``` + */ +export class Transaction { + private constructor(private _wasm: WasmTransaction) {} + + /** + * Deserialize a transaction from raw bytes + * @param bytes - The raw transaction bytes + * @returns A Transaction instance + */ + static fromBytes(bytes: Uint8Array): Transaction { + const wasm = WasmTransaction.from_bytes(bytes); + return new Transaction(wasm); + } + + /** + * Get the fee payer address as a base58 string + * Returns null if there are no account keys (shouldn't happen for valid transactions) + */ + get feePayer(): string | null { + return this._wasm.fee_payer ?? null; + } + + /** + * Get the recent blockhash as a base58 string + */ + get recentBlockhash(): string { + return this._wasm.recent_blockhash; + } + + /** + * Get the number of signatures in the transaction + */ + get numSignatures(): number { + return this._wasm.num_signatures; + } + + /** + * Get the signable message payload (what gets signed) + * This is the serialized message that signers sign + * @returns The message bytes + */ + signablePayload(): Uint8Array { + return this._wasm.signable_payload(); + } + + /** + * Serialize the transaction to bytes + * @returns The serialized transaction bytes + */ + toBytes(): Uint8Array { + return this._wasm.to_bytes(); + } + + /** + * Get all account keys as Pubkey instances + * @returns Array of account public keys + */ + accountKeys(): Pubkey[] { + const keys = Array.from(this._wasm.account_keys()) as string[]; + return keys.map((k) => Pubkey.fromBase58(k)); + } + + /** + * Get all signatures as byte arrays + * @returns Array of signature byte arrays + */ + signatures(): Uint8Array[] { + return Array.from(this._wasm.signatures()) as Uint8Array[]; + } + + /** + * Get all instructions in the transaction + * @returns Array of instructions with programId, accounts, and data + */ + instructions(): Instruction[] { + const rawInstructions = this._wasm.instructions(); + return Array.from(rawInstructions) as Instruction[]; + } + + /** + * Get the underlying WASM instance (internal use only) + * @internal + */ + get wasm(): WasmTransaction { + return this._wasm; + } +} diff --git a/packages/wasm-solana/src/instructions/decode.rs b/packages/wasm-solana/src/instructions/decode.rs new file mode 100644 index 0000000..dfb3d72 --- /dev/null +++ b/packages/wasm-solana/src/instructions/decode.rs @@ -0,0 +1,452 @@ +//! Instruction decoding using official Solana interface crates. + +use super::types::*; +use solana_compute_budget_interface::ComputeBudgetInstruction; +use solana_stake_interface::instruction::StakeInstruction; +use solana_system_interface::instruction::SystemInstruction; +use spl_stake_pool::instruction::StakePoolInstruction; + +/// Context for decoding an instruction - provides account addresses. +pub struct InstructionContext<'a> { + pub program_id: &'a str, + pub accounts: &'a [String], + pub data: &'a [u8], +} + +/// Decode a single instruction into a ParsedInstruction. +pub fn decode_instruction(ctx: InstructionContext) -> ParsedInstruction { + match ctx.program_id { + SYSTEM_PROGRAM_ID => decode_system_instruction(ctx), + STAKE_PROGRAM_ID => decode_stake_instruction(ctx), + COMPUTE_BUDGET_PROGRAM_ID => decode_compute_budget_instruction(ctx), + MEMO_PROGRAM_ID => decode_memo_instruction(ctx), + TOKEN_PROGRAM_ID | TOKEN_2022_PROGRAM_ID => decode_token_instruction(ctx), + ATA_PROGRAM_ID => decode_ata_instruction(ctx), + STAKE_POOL_PROGRAM_ID => decode_stake_pool_instruction(ctx), + _ => make_unknown(ctx), + } +} + +// ============================================================================= +// System Program Decoding +// ============================================================================= + +fn decode_system_instruction(ctx: InstructionContext) -> ParsedInstruction { + let Ok(instr) = bincode::deserialize::(ctx.data) else { + return make_unknown(ctx); + }; + + match instr { + SystemInstruction::Transfer { lamports } => { + if ctx.accounts.len() >= 2 { + ParsedInstruction::Transfer(TransferParams { + from_address: ctx.accounts[0].clone(), + to_address: ctx.accounts[1].clone(), + amount: lamports.to_string(), + }) + } else { + make_unknown(ctx) + } + } + SystemInstruction::CreateAccount { + lamports, + space, + owner, + } => { + if ctx.accounts.len() >= 2 { + ParsedInstruction::CreateAccount(CreateAccountParams { + from_address: ctx.accounts[0].clone(), + new_address: ctx.accounts[1].clone(), + amount: lamports.to_string(), + space, + owner: owner.to_string(), + }) + } else { + make_unknown(ctx) + } + } + SystemInstruction::AdvanceNonceAccount => { + if ctx.accounts.len() >= 3 { + ParsedInstruction::NonceAdvance(NonceAdvanceParams { + wallet_nonce_address: ctx.accounts[0].clone(), + auth_wallet_address: ctx.accounts[2].clone(), // authority is at index 2 + }) + } else { + make_unknown(ctx) + } + } + SystemInstruction::InitializeNonceAccount(authority) => { + // This is part of CreateNonceAccount flow - parsed as intermediate NonceInitialize + // Will be combined with CreateAccount in post-processing + // Accounts: [0] nonce, [1] recent_blockhashes_sysvar, [2] rent_sysvar + if ctx.accounts.len() >= 1 { + ParsedInstruction::NonceInitialize(NonceInitializeParams { + nonce_address: ctx.accounts[0].clone(), + auth_address: authority.to_string(), + }) + } else { + make_unknown(ctx) + } + } + _ => make_unknown(ctx), + } +} + +// ============================================================================= +// Stake Program Decoding +// ============================================================================= + +fn decode_stake_instruction(ctx: InstructionContext) -> ParsedInstruction { + let Ok(instr) = bincode::deserialize::(ctx.data) else { + return make_unknown(ctx); + }; + + match instr { + StakeInstruction::DelegateStake => { + // Accounts: [0] stake, [1] vote, [2] clock, [3] stake_history, [4] config, [5] authority + if ctx.accounts.len() >= 6 { + ParsedInstruction::StakingDelegate(StakingDelegateParams { + staking_address: ctx.accounts[0].clone(), + from_address: ctx.accounts[5].clone(), // authority + validator: ctx.accounts[1].clone(), // vote account + }) + } else { + make_unknown(ctx) + } + } + StakeInstruction::Deactivate => { + // Accounts: [0] stake, [1] clock, [2] authority + if ctx.accounts.len() >= 3 { + ParsedInstruction::StakingDeactivate(StakingDeactivateParams { + staking_address: ctx.accounts[0].clone(), + from_address: ctx.accounts[2].clone(), + }) + } else { + make_unknown(ctx) + } + } + StakeInstruction::Withdraw(lamports) => { + // Accounts: [0] stake, [1] recipient, [2] clock, [3] stake_history, [4] authority + if ctx.accounts.len() >= 5 { + ParsedInstruction::StakingWithdraw(StakingWithdrawParams { + staking_address: ctx.accounts[0].clone(), + from_address: ctx.accounts[4].clone(), + amount: lamports.to_string(), + }) + } else { + make_unknown(ctx) + } + } + StakeInstruction::Initialize(authorized, _lockup) => { + // This is part of StakingActivate flow - parsed as intermediate StakeInitialize + // Will be combined with CreateAccount + DelegateStake in post-processing + // Accounts: [0] stake, [1] rent_sysvar + if ctx.accounts.len() >= 1 { + ParsedInstruction::StakeInitialize(StakeInitializeParams { + staking_address: ctx.accounts[0].clone(), + staker: authorized.staker.to_string(), + withdrawer: authorized.withdrawer.to_string(), + }) + } else { + make_unknown(ctx) + } + } + StakeInstruction::Authorize(new_authority, stake_authorize) => { + // Accounts: [0] stake, [1] clock, [2] authority, [3] optional custodian + if ctx.accounts.len() >= 3 { + let auth_type = match stake_authorize { + solana_stake_interface::state::StakeAuthorize::Staker => "Staker", + solana_stake_interface::state::StakeAuthorize::Withdrawer => "Withdrawer", + }; + let custodian = if ctx.accounts.len() >= 4 { + Some(ctx.accounts[3].clone()) + } else { + None + }; + ParsedInstruction::StakingAuthorize(StakingAuthorizeParams { + staking_address: ctx.accounts[0].clone(), + old_authorize_address: ctx.accounts[2].clone(), + new_authorize_address: new_authority.to_string(), + authorize_type: auth_type.to_string(), + custodian_address: custodian, + }) + } else { + make_unknown(ctx) + } + } + StakeInstruction::AuthorizeChecked(stake_authorize) => { + // Accounts: [0] stake, [1] clock, [2] authority, [3] new_authority (signer), [4] optional custodian + if ctx.accounts.len() >= 4 { + let auth_type = match stake_authorize { + solana_stake_interface::state::StakeAuthorize::Staker => "Staker", + solana_stake_interface::state::StakeAuthorize::Withdrawer => "Withdrawer", + }; + let custodian = if ctx.accounts.len() >= 5 { + Some(ctx.accounts[4].clone()) + } else { + None + }; + ParsedInstruction::StakingAuthorize(StakingAuthorizeParams { + staking_address: ctx.accounts[0].clone(), + old_authorize_address: ctx.accounts[2].clone(), + new_authorize_address: ctx.accounts[3].clone(), + authorize_type: auth_type.to_string(), + custodian_address: custodian, + }) + } else { + make_unknown(ctx) + } + } + StakeInstruction::Split(_lamports) => { + // Accounts: [0] source stake, [1] dest stake, [2] authority + if ctx.accounts.len() >= 3 { + ParsedInstruction::StakingDeactivate(StakingDeactivateParams { + staking_address: ctx.accounts[0].clone(), + from_address: ctx.accounts[2].clone(), + }) + } else { + make_unknown(ctx) + } + } + _ => make_unknown(ctx), + } +} + +// ============================================================================= +// ComputeBudget Program Decoding +// ============================================================================= + +fn decode_compute_budget_instruction(ctx: InstructionContext) -> ParsedInstruction { + use borsh::BorshDeserialize; + + let Ok(instr) = ComputeBudgetInstruction::try_from_slice(ctx.data) else { + return make_unknown(ctx); + }; + + match instr { + ComputeBudgetInstruction::SetComputeUnitLimit(units) => { + ParsedInstruction::SetComputeUnitLimit(SetComputeUnitLimitParams { units }) + } + ComputeBudgetInstruction::SetComputeUnitPrice(micro_lamports) => { + ParsedInstruction::SetPriorityFee(SetPriorityFeeParams { + fee: micro_lamports.to_string(), + }) + } + _ => make_unknown(ctx), + } +} + +// ============================================================================= +// Memo Program Decoding +// ============================================================================= + +fn decode_memo_instruction(ctx: InstructionContext) -> ParsedInstruction { + // Memo data is just UTF-8 text + if let Ok(memo) = std::str::from_utf8(ctx.data) { + ParsedInstruction::Memo(MemoParams { + memo: memo.to_string(), + }) + } else { + make_unknown(ctx) + } +} + +// ============================================================================= +// Token Program Decoding (basic) +// ============================================================================= + +fn decode_token_instruction(ctx: InstructionContext) -> ParsedInstruction { + // SPL Token instruction format: first byte is discriminator + if ctx.data.is_empty() { + return make_unknown(ctx); + } + + let discriminator = ctx.data[0]; + + match discriminator { + // TransferChecked = 12 + 12 => { + // Accounts: [0] source, [1] mint, [2] destination, [3] owner/delegate + if ctx.accounts.len() >= 4 { + // Amount is a u64 at bytes 1-8, decimals at byte 9 + let amount = if ctx.data.len() >= 9 { + u64::from_le_bytes(ctx.data[1..9].try_into().unwrap_or([0; 8])) + } else { + 0 + }; + let decimals = if ctx.data.len() >= 10 { + Some(ctx.data[9]) + } else { + None + }; + ParsedInstruction::TokenTransfer(TokenTransferParams { + from_address: ctx.accounts[3].clone(), // owner + to_address: ctx.accounts[2].clone(), // destination + amount: amount.to_string(), + source_address: ctx.accounts[0].clone(), + token_address: Some(ctx.accounts[1].clone()), // mint + program_id: ctx.program_id.to_string(), + decimal_places: decimals, + }) + } else { + make_unknown(ctx) + } + } + // Transfer = 3 + 3 => { + // Accounts: [0] source, [1] destination, [2] owner/delegate + if ctx.accounts.len() >= 3 { + let amount = if ctx.data.len() >= 9 { + u64::from_le_bytes(ctx.data[1..9].try_into().unwrap_or([0; 8])) + } else { + 0 + }; + ParsedInstruction::TokenTransfer(TokenTransferParams { + from_address: ctx.accounts[2].clone(), + to_address: ctx.accounts[1].clone(), + amount: amount.to_string(), + source_address: ctx.accounts[0].clone(), + token_address: None, + program_id: ctx.program_id.to_string(), + decimal_places: None, // Not available in basic Transfer + }) + } else { + make_unknown(ctx) + } + } + // CloseAccount = 9 + 9 => { + // Accounts: [0] account, [1] destination, [2] owner + if ctx.accounts.len() >= 3 { + ParsedInstruction::CloseAssociatedTokenAccount(CloseAtaParams { + account_address: ctx.accounts[0].clone(), + destination_address: ctx.accounts[1].clone(), + authority_address: ctx.accounts[2].clone(), + }) + } else { + make_unknown(ctx) + } + } + _ => make_unknown(ctx), + } +} + +// ============================================================================= +// ATA Program Decoding +// ============================================================================= + +fn decode_ata_instruction(ctx: InstructionContext) -> ParsedInstruction { + // ATA program: Create instruction has no data (discriminator 0 or empty) + // Accounts: [0] payer, [1] ata, [2] owner, [3] mint, [4] system, [5] token + if ctx.accounts.len() >= 4 { + ParsedInstruction::CreateAssociatedTokenAccount(CreateAtaParams { + payer_address: ctx.accounts[0].clone(), + ata_address: ctx.accounts[1].clone(), + owner_address: ctx.accounts[2].clone(), + mint_address: ctx.accounts[3].clone(), + program_id: ctx.program_id.to_string(), + }) + } else { + make_unknown(ctx) + } +} + +// ============================================================================= +// Stake Pool Program Decoding (Jito liquid staking) +// ============================================================================= + +fn decode_stake_pool_instruction(ctx: InstructionContext) -> ParsedInstruction { + use borsh::BorshDeserialize; + + let Ok(instr) = StakePoolInstruction::try_from_slice(ctx.data) else { + return make_unknown(ctx); + }; + + match instr { + StakePoolInstruction::DepositSol(lamports) => { + // DepositSol: deposit SOL into stake pool, receive pool tokens + // Accounts: + // [0] stakePool + // [1] withdrawAuthority + // [2] reserveStake + // [3] fundingAccount (signer) + // [4] destinationPoolAccount + // [5] managerFeeAccount + // [6] referralPoolAccount + // [7] poolMint + // [8] systemProgram + // [9] tokenProgram + // [10] depositAuthority (optional) + if ctx.accounts.len() >= 8 { + ParsedInstruction::StakePoolDepositSol(StakePoolDepositSolParams { + stake_pool: ctx.accounts[0].clone(), + withdraw_authority: ctx.accounts[1].clone(), + reserve_stake: ctx.accounts[2].clone(), + funding_account: ctx.accounts[3].clone(), + destination_pool_account: ctx.accounts[4].clone(), + manager_fee_account: ctx.accounts[5].clone(), + referral_pool_account: ctx.accounts[6].clone(), + pool_mint: ctx.accounts[7].clone(), + lamports: lamports.to_string(), + }) + } else { + make_unknown(ctx) + } + } + StakePoolInstruction::WithdrawStake(pool_tokens) => { + // WithdrawStake: withdraw stake from pool by burning pool tokens + // Accounts: + // [0] stakePool + // [1] validatorList + // [2] withdrawAuthority + // [3] validatorStake + // [4] destinationStake + // [5] destinationStakeAuthority + // [6] sourceTransferAuthority (signer) + // [7] sourcePoolAccount + // [8] managerFeeAccount + // [9] poolMint + // [10] clockSysvar + // [11] tokenProgram + // [12] stakeProgram + if ctx.accounts.len() >= 10 { + ParsedInstruction::StakePoolWithdrawStake(StakePoolWithdrawStakeParams { + stake_pool: ctx.accounts[0].clone(), + validator_list: ctx.accounts[1].clone(), + withdraw_authority: ctx.accounts[2].clone(), + validator_stake: ctx.accounts[3].clone(), + destination_stake: ctx.accounts[4].clone(), + destination_stake_authority: ctx.accounts[5].clone(), + source_transfer_authority: ctx.accounts[6].clone(), + source_pool_account: ctx.accounts[7].clone(), + manager_fee_account: ctx.accounts[8].clone(), + pool_mint: ctx.accounts[9].clone(), + pool_tokens: pool_tokens.to_string(), + }) + } else { + make_unknown(ctx) + } + } + _ => make_unknown(ctx), + } +} + +// ============================================================================= +// Fallback +// ============================================================================= + +fn make_unknown(ctx: InstructionContext) -> ParsedInstruction { + ParsedInstruction::Unknown(UnknownInstructionParams { + program_id: ctx.program_id.to_string(), + accounts: ctx + .accounts + .iter() + .map(|a| AccountMeta { + pubkey: a.clone(), + is_signer: false, // We don't have this info at decode time + is_writable: false, // We don't have this info at decode time + }) + .collect(), + data: ctx.data.to_vec(), + }) +} diff --git a/packages/wasm-solana/src/instructions/mod.rs b/packages/wasm-solana/src/instructions/mod.rs new file mode 100644 index 0000000..e6832ab --- /dev/null +++ b/packages/wasm-solana/src/instructions/mod.rs @@ -0,0 +1,9 @@ +//! Internal instruction decoders using official Solana interface crates. +//! +//! This module is NOT publicly exposed. It's used internally by `parseTransaction`. + +mod decode; +mod types; + +pub(crate) use decode::{decode_instruction, InstructionContext}; +pub(crate) use types::*; diff --git a/packages/wasm-solana/src/instructions/types.rs b/packages/wasm-solana/src/instructions/types.rs new file mode 100644 index 0000000..5dbf325 --- /dev/null +++ b/packages/wasm-solana/src/instructions/types.rs @@ -0,0 +1,334 @@ +//! Parsed instruction types matching BitGoJS InstructionParams. +//! +//! These types are designed to serialize to JSON that matches the TypeScript +//! interfaces in sdk-coin-sol/src/lib/iface.ts. + +use serde::Serialize; + +/// Program IDs as base58 strings. +pub const SYSTEM_PROGRAM_ID: &str = "11111111111111111111111111111111"; +pub const STAKE_PROGRAM_ID: &str = "Stake11111111111111111111111111111111111111"; +pub const COMPUTE_BUDGET_PROGRAM_ID: &str = "ComputeBudget111111111111111111111111111111"; +pub const MEMO_PROGRAM_ID: &str = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"; +pub const TOKEN_PROGRAM_ID: &str = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; +pub const TOKEN_2022_PROGRAM_ID: &str = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; +pub const ATA_PROGRAM_ID: &str = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"; +pub const STAKE_POOL_PROGRAM_ID: &str = "SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy"; + +/// A parsed instruction with type discriminant and params. +#[derive(Debug, Clone, Serialize)] +#[serde(tag = "type")] +pub enum ParsedInstruction { + // System Program instructions + Transfer(TransferParams), + CreateAccount(CreateAccountParams), + NonceAdvance(NonceAdvanceParams), + CreateNonceAccount(CreateNonceAccountParams), + /// Intermediate type for SystemInstruction::InitializeNonceAccount + /// Will be combined with CreateAccount to form CreateNonceAccount + #[serde(rename = "NonceInitialize")] + NonceInitialize(NonceInitializeParams), + + // Stake Program instructions + StakingActivate(StakingActivateParams), + StakingDeactivate(StakingDeactivateParams), + StakingWithdraw(StakingWithdrawParams), + StakingDelegate(StakingDelegateParams), + StakingAuthorize(StakingAuthorizeParams), + /// Intermediate type for stake initialize - will be combined with CreateAccount + DelegateStake + #[serde(rename = "StakeInitialize")] + StakeInitialize(StakeInitializeParams), + + // ComputeBudget instructions + SetComputeUnitLimit(SetComputeUnitLimitParams), + SetPriorityFee(SetPriorityFeeParams), + + // Token instructions (basic support) + TokenTransfer(TokenTransferParams), + CreateAssociatedTokenAccount(CreateAtaParams), + CloseAssociatedTokenAccount(CloseAtaParams), + + // Memo + Memo(MemoParams), + + // Stake Pool (Jito liquid staking) instructions + StakePoolDepositSol(StakePoolDepositSolParams), + StakePoolWithdrawStake(StakePoolWithdrawStakeParams), + + // Fallback for unknown/custom instructions + Unknown(UnknownInstructionParams), +} + +// ============================================================================= +// System Program Params +// ============================================================================= + +#[derive(Debug, Clone, Serialize)] +pub struct TransferParams { + #[serde(rename = "fromAddress")] + pub from_address: String, + #[serde(rename = "toAddress")] + pub to_address: String, + pub amount: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct CreateAccountParams { + #[serde(rename = "fromAddress")] + pub from_address: String, + #[serde(rename = "newAddress")] + pub new_address: String, + pub amount: String, + pub space: u64, + pub owner: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct NonceAdvanceParams { + #[serde(rename = "walletNonceAddress")] + pub wallet_nonce_address: String, + #[serde(rename = "authWalletAddress")] + pub auth_wallet_address: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct CreateNonceAccountParams { + #[serde(rename = "fromAddress")] + pub from_address: String, + #[serde(rename = "nonceAddress")] + pub nonce_address: String, + #[serde(rename = "authAddress")] + pub auth_address: String, + pub amount: String, +} + +/// Intermediate type for SystemInstruction::InitializeNonceAccount +/// Will be combined with CreateAccount to form CreateNonceAccount +#[derive(Debug, Clone, Serialize)] +pub struct NonceInitializeParams { + #[serde(rename = "nonceAddress")] + pub nonce_address: String, + #[serde(rename = "authAddress")] + pub auth_address: String, +} + +// ============================================================================= +// Stake Program Params +// ============================================================================= + +#[derive(Debug, Clone, Serialize)] +pub struct StakingActivateParams { + #[serde(rename = "fromAddress")] + pub from_address: String, + #[serde(rename = "stakingAddress")] + pub staking_address: String, + pub amount: String, + pub validator: String, + #[serde(rename = "stakingType")] + pub staking_type: String, // "NATIVE", "JITO", "MARINADE" +} + +#[derive(Debug, Clone, Serialize)] +pub struct StakingDeactivateParams { + #[serde(rename = "stakingAddress")] + pub staking_address: String, + #[serde(rename = "fromAddress")] + pub from_address: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct StakingWithdrawParams { + #[serde(rename = "fromAddress")] + pub from_address: String, + #[serde(rename = "stakingAddress")] + pub staking_address: String, + pub amount: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct StakingDelegateParams { + #[serde(rename = "stakingAddress")] + pub staking_address: String, + #[serde(rename = "fromAddress")] + pub from_address: String, + pub validator: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct StakingAuthorizeParams { + #[serde(rename = "stakingAddress")] + pub staking_address: String, + #[serde(rename = "oldAuthorizeAddress")] + pub old_authorize_address: String, + #[serde(rename = "newAuthorizeAddress")] + pub new_authorize_address: String, + #[serde(rename = "authorizeType")] + pub authorize_type: String, // "Staker" or "Withdrawer" + #[serde(rename = "custodianAddress", skip_serializing_if = "Option::is_none")] + pub custodian_address: Option, +} + +/// Intermediate type for StakeInstruction::Initialize +/// Will be combined with CreateAccount + DelegateStake to form StakingActivate +#[derive(Debug, Clone, Serialize)] +pub struct StakeInitializeParams { + #[serde(rename = "stakingAddress")] + pub staking_address: String, + pub staker: String, + pub withdrawer: String, +} + +// ============================================================================= +// ComputeBudget Params +// ============================================================================= + +#[derive(Debug, Clone, Serialize)] +pub struct SetComputeUnitLimitParams { + pub units: u32, +} + +#[derive(Debug, Clone, Serialize)] +pub struct SetPriorityFeeParams { + /// Fee as string for BigInt compatibility in JavaScript + pub fee: String, +} + +// ============================================================================= +// Token Params +// ============================================================================= + +#[derive(Debug, Clone, Serialize)] +pub struct TokenTransferParams { + #[serde(rename = "fromAddress")] + pub from_address: String, + #[serde(rename = "toAddress")] + pub to_address: String, + pub amount: String, + #[serde(rename = "sourceAddress")] + pub source_address: String, + #[serde(rename = "tokenAddress", skip_serializing_if = "Option::is_none")] + pub token_address: Option, + #[serde(rename = "programId")] + pub program_id: String, + #[serde(rename = "decimalPlaces", skip_serializing_if = "Option::is_none")] + pub decimal_places: Option, +} + +#[derive(Debug, Clone, Serialize)] +pub struct CreateAtaParams { + #[serde(rename = "mintAddress")] + pub mint_address: String, + #[serde(rename = "ataAddress")] + pub ata_address: String, + #[serde(rename = "ownerAddress")] + pub owner_address: String, + #[serde(rename = "payerAddress")] + pub payer_address: String, + #[serde(rename = "programId")] + pub program_id: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct CloseAtaParams { + #[serde(rename = "accountAddress")] + pub account_address: String, + #[serde(rename = "destinationAddress")] + pub destination_address: String, + #[serde(rename = "authorityAddress")] + pub authority_address: String, +} + +// ============================================================================= +// Stake Pool (Jito) Params +// ============================================================================= + +/// Parameters for DepositSol instruction in stake pool (Jito liquid staking). +/// Discriminator: 14 +#[derive(Debug, Clone, Serialize)] +pub struct StakePoolDepositSolParams { + #[serde(rename = "stakePool")] + pub stake_pool: String, + #[serde(rename = "withdrawAuthority")] + pub withdraw_authority: String, + #[serde(rename = "reserveStake")] + pub reserve_stake: String, + #[serde(rename = "fundingAccount")] + pub funding_account: String, + #[serde(rename = "destinationPoolAccount")] + pub destination_pool_account: String, + #[serde(rename = "managerFeeAccount")] + pub manager_fee_account: String, + #[serde(rename = "referralPoolAccount")] + pub referral_pool_account: String, + #[serde(rename = "poolMint")] + pub pool_mint: String, + pub lamports: String, +} + +/// Parameters for WithdrawStake instruction in stake pool (Jito liquid staking). +/// Discriminator: 10 +#[derive(Debug, Clone, Serialize)] +pub struct StakePoolWithdrawStakeParams { + #[serde(rename = "stakePool")] + pub stake_pool: String, + #[serde(rename = "validatorList")] + pub validator_list: String, + #[serde(rename = "withdrawAuthority")] + pub withdraw_authority: String, + #[serde(rename = "validatorStake")] + pub validator_stake: String, + #[serde(rename = "destinationStake")] + pub destination_stake: String, + #[serde(rename = "destinationStakeAuthority")] + pub destination_stake_authority: String, + #[serde(rename = "sourceTransferAuthority")] + pub source_transfer_authority: String, + #[serde(rename = "sourcePoolAccount")] + pub source_pool_account: String, + #[serde(rename = "managerFeeAccount")] + pub manager_fee_account: String, + #[serde(rename = "poolMint")] + pub pool_mint: String, + #[serde(rename = "poolTokens")] + pub pool_tokens: String, +} + +// ============================================================================= +// Memo & Unknown +// ============================================================================= + +#[derive(Debug, Clone, Serialize)] +pub struct MemoParams { + pub memo: String, +} + +#[derive(Debug, Clone, Serialize)] +pub struct UnknownInstructionParams { + #[serde(rename = "programId")] + pub program_id: String, + pub accounts: Vec, + #[serde(with = "base64_bytes")] + pub data: Vec, +} + +#[derive(Debug, Clone, Serialize)] +pub struct AccountMeta { + pub pubkey: String, + #[serde(rename = "isSigner")] + pub is_signer: bool, + #[serde(rename = "isWritable")] + pub is_writable: bool, +} + +/// Custom serializer for bytes as base64. +mod base64_bytes { + use base64::prelude::*; + use serde::{Serialize, Serializer}; + + pub fn serialize(bytes: &[u8], serializer: S) -> Result + where + S: Serializer, + { + BASE64_STANDARD.encode(bytes).serialize(serializer) + } +} diff --git a/packages/wasm-solana/src/keypair.rs b/packages/wasm-solana/src/keypair.rs index a8c5f80..b4c4034 100644 --- a/packages/wasm-solana/src/keypair.rs +++ b/packages/wasm-solana/src/keypair.rs @@ -20,27 +20,15 @@ pub trait KeypairExt { impl KeypairExt for Keypair { /// Create a keypair from a 32-byte secret key (Ed25519 seed). fn from_secret_key_bytes(secret_key: &[u8]) -> Result { - if secret_key.len() != 32 { - return Err(WasmSolanaError::new(&format!( + let bytes: [u8; 32] = secret_key.try_into().map_err(|_| { + WasmSolanaError::new(&format!( "Secret key must be 32 bytes, got {}", secret_key.len() - ))); - } + )) + })?; - // Generate public key from secret to create full 64-byte format - use ed25519_dalek::SigningKey; - let bytes: [u8; 32] = secret_key - .try_into() - .map_err(|_| WasmSolanaError::new("Failed to convert secret key to array"))?; - let signing_key = SigningKey::from_bytes(&bytes); - let pubkey_bytes = signing_key.verifying_key().to_bytes(); - - let mut full_secret = [0u8; 64]; - full_secret[..32].copy_from_slice(secret_key); - full_secret[32..].copy_from_slice(&pubkey_bytes); - - Keypair::try_from(full_secret.as_slice()) - .map_err(|e| WasmSolanaError::new(&format!("Invalid keypair: {}", e))) + // Use official solana-keypair method that handles 32-byte seeds + Ok(Keypair::new_from_array(bytes)) } /// Create a keypair from a 64-byte Solana secret key (secret + public concatenated). diff --git a/packages/wasm-solana/src/lib.rs b/packages/wasm-solana/src/lib.rs index fa67d30..d88c037 100644 --- a/packages/wasm-solana/src/lib.rs +++ b/packages/wasm-solana/src/lib.rs @@ -24,14 +24,18 @@ //! ``` mod error; +mod instructions; pub mod keypair; +mod parser; pub mod pubkey; +pub mod transaction; pub mod wasm; // Re-export core types at crate root pub use error::WasmSolanaError; pub use keypair::{Keypair, KeypairExt}; pub use pubkey::{Pubkey, PubkeyExt}; +pub use transaction::{Transaction, TransactionExt}; // Re-export WASM types -pub use wasm::{WasmKeypair, WasmPubkey}; +pub use wasm::{ParserNamespace, WasmKeypair, WasmPubkey, WasmTransaction}; diff --git a/packages/wasm-solana/src/parser.rs b/packages/wasm-solana/src/parser.rs new file mode 100644 index 0000000..4d26135 --- /dev/null +++ b/packages/wasm-solana/src/parser.rs @@ -0,0 +1,266 @@ +//! High-level transaction parser. +//! +//! Provides a single `parse_transaction` function that deserializes transaction bytes +//! and decodes all instructions into semantic types matching BitGoJS's TxData format. +//! +//! This parser returns raw decoded instructions. Instruction combining (e.g., +//! CreateAccount + NonceInitialize → CreateNonceAccount) is handled by the +//! TypeScript consumer (mapWasmInstructionsToBitGoJS in BitGoJS). + +use crate::instructions::{decode_instruction, InstructionContext, ParsedInstruction}; +use crate::transaction::{Transaction, TransactionExt}; +use serde::Serialize; + +/// A fully parsed Solana transaction with decoded instructions. +/// +/// This structure matches BitGoJS's `TxData` interface for seamless integration. +#[derive(Debug, Clone, Serialize)] +pub struct ParsedTransaction { + /// The fee payer address (base58). + #[serde(rename = "feePayer")] + pub fee_payer: String, + + /// Number of required signatures. + #[serde(rename = "numSignatures")] + pub num_signatures: u8, + + /// The blockhash or nonce (base58). + pub nonce: String, + + /// If this is a durable nonce transaction, contains the nonce info. + #[serde(rename = "durableNonce", skip_serializing_if = "Option::is_none")] + pub durable_nonce: Option, + + /// All decoded instructions. + #[serde(rename = "instructionsData")] + pub instructions_data: Vec, + + /// All signatures (as bytes, base64-encoded for JSON). + #[serde(with = "signatures_serde")] + pub signatures: Vec>, + + /// All account keys (base58 strings). + #[serde(rename = "accountKeys")] + pub account_keys: Vec, +} + +/// Durable nonce information for nonce-based transactions. +#[derive(Debug, Clone, Serialize)] +pub struct DurableNonce { + /// The nonce account address (base58). + #[serde(rename = "walletNonceAddress")] + pub wallet_nonce_address: String, + + /// The nonce authority address (base58). + #[serde(rename = "authWalletAddress")] + pub auth_wallet_address: String, +} + +/// Parse a serialized Solana transaction into structured data. +/// +/// # Arguments +/// * `bytes` - The raw transaction bytes (wire format) +/// +/// # Returns +/// A `ParsedTransaction` with all instructions decoded to semantic types. +pub fn parse_transaction(bytes: &[u8]) -> Result { + // Deserialize the transaction + let tx = Transaction::from_bytes(bytes).map_err(|e| e.to_string())?; + + let message = &tx.message; + + // Extract fee payer (first account key) + let fee_payer = message + .account_keys + .first() + .map(|k| k.to_string()) + .ok_or("Transaction has no account keys")?; + + // Extract all account keys as base58 strings + let account_keys: Vec = message.account_keys.iter().map(|k| k.to_string()).collect(); + + // Extract signatures as byte arrays + let signatures: Vec> = tx.signatures.iter().map(|s| s.as_ref().to_vec()).collect(); + + // Decode all instructions + let mut instructions_data = Vec::with_capacity(message.instructions.len()); + let mut durable_nonce = None; + + for (idx, instruction) in message.instructions.iter().enumerate() { + // Get program ID + let program_id = message + .account_keys + .get(instruction.program_id_index as usize) + .map(|k| k.to_string()) + .ok_or_else(|| format!("Invalid program_id_index in instruction {}", idx))?; + + // Resolve account indices to addresses + let accounts: Vec = instruction + .accounts + .iter() + .filter_map(|&i| message.account_keys.get(i as usize).map(|k| k.to_string())) + .collect(); + + // Decode the instruction + let ctx = InstructionContext { + program_id: &program_id, + accounts: &accounts, + data: &instruction.data, + }; + let parsed = decode_instruction(ctx); + + // Check if this is a NonceAdvance instruction (first instruction = durable nonce tx) + if idx == 0 { + if let ParsedInstruction::NonceAdvance(ref params) = parsed { + durable_nonce = Some(DurableNonce { + wallet_nonce_address: params.wallet_nonce_address.clone(), + auth_wallet_address: params.auth_wallet_address.clone(), + }); + } + } + + instructions_data.push(parsed); + } + + // Note: Instruction combining (e.g., CreateAccount + StakeInitialize → StakingActivate) + // is handled by TypeScript in mapWasmInstructionsToBitGoJS for flexibility + + // The nonce is either the blockhash or, for durable nonce txs, still the blockhash + // (which is the nonce value from the nonce account) + let nonce = message.recent_blockhash.to_string(); + + Ok(ParsedTransaction { + fee_payer, + num_signatures: message.header.num_required_signatures, + nonce, + durable_nonce, + instructions_data, + signatures, + account_keys, + }) +} + +/// Serialize signatures as base64 strings for JSON output. +mod signatures_serde { + use base64::prelude::*; + use serde::{Serialize, Serializer}; + + pub fn serialize(signatures: &[Vec], serializer: S) -> Result + where + S: Serializer, + { + let encoded: Vec = signatures + .iter() + .map(|s| BASE64_STANDARD.encode(s)) + .collect(); + encoded.serialize(serializer) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use base64::prelude::*; + + // Test transaction from @solana/web3.js - a simple SOL transfer + const TEST_TX_BASE64: &str = "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDFVMqpim7tqEi2XL8R6KKkP0DYJvY3eiRXLlL1P9EjYgXKQC+k0FKnqyC4AZGJR7OhJXfpPP3NHOhS8t/6G7bLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1c7Oaj3RbyLIjU0/ZPpsmVfVUWAzc8g36fK5g6A0JoBAgIAAQwCAAAAoIYBAAAAAAA="; + + #[test] + fn test_parse_transfer_transaction() { + let bytes = BASE64_STANDARD.decode(TEST_TX_BASE64).unwrap(); + let parsed = parse_transaction(&bytes).unwrap(); + + // Check basic structure + assert_eq!(parsed.num_signatures, 1); + assert!(!parsed.fee_payer.is_empty()); + assert!(!parsed.nonce.is_empty()); + assert_eq!(parsed.instructions_data.len(), 1); + + // Check the instruction is a Transfer + match &parsed.instructions_data[0] { + ParsedInstruction::Transfer(params) => { + // Amount should be 100000 lamports (from the test tx) + assert_eq!(params.amount, "100000"); + } + other => panic!("Expected Transfer instruction, got {:?}", other), + } + } + + #[test] + fn test_parse_invalid_bytes() { + let result = parse_transaction(&[0, 1, 2, 3]); + assert!(result.is_err()); + } + + #[test] + fn test_parsed_transaction_serializes_to_json() { + let bytes = BASE64_STANDARD.decode(TEST_TX_BASE64).unwrap(); + let parsed = parse_transaction(&bytes).unwrap(); + + // Should serialize to valid JSON + let json = serde_json::to_string(&parsed).unwrap(); + assert!(json.contains("feePayer")); + assert!(json.contains("instructionsData")); + assert!(json.contains("Transfer")); + } + + // Marinade staking activate transaction (CreateAccount + StakeInitialize without Delegate) + // Note: Combining is now done in TypeScript, so we expect raw instructions here + const MARINADE_STAKING_ACTIVATE: &str = "AuRFS0r7hJ+/+WuDQbbwdjSgxfnKOWi94EnWEha9uaBPt8VZOXiOoSiSoES34VkyBNLlLqlfK0fP3d5eJR+srQvN04gqzpOZPTVzqiomyMXqwQ6FYoQg5nEkdiDVny8SsyhRnAeDMzexkKD+3rwSGP0E+XN/2crTL6PZRnip42YFAgADBUXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBYnsvugEnYfm5Gbz5TLtMncgFHZ8JMpkxTTlJIzJovekAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAah2BeRN1QqmDQ3vf4qerJVf1NcinhyK2ikncAAAAAABqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAADjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQICAgABNAAAAADgkwQAAAAAAMgAAAAAAAAABqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAADAgEEdAAAAACx+Xl4mhxH0TxI2HovJxcQ63+TJglRFzFikL1sKdr12UXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBAAAAAAAAAAAAAAAAAAAAAEXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItB"; + + #[test] + fn test_parse_marinade_staking_activate() { + let bytes = BASE64_STANDARD.decode(MARINADE_STAKING_ACTIVATE).unwrap(); + let parsed = parse_transaction(&bytes).unwrap(); + + println!("Parsed instructions: {:?}", parsed.instructions_data); + println!( + "Parsed JSON: {}", + serde_json::to_string_pretty(&parsed).unwrap() + ); + + // WASM returns raw instructions; combining is done in TypeScript + // Expect: CreateAccount + StakeInitialize (2 instructions) + assert_eq!( + parsed.instructions_data.len(), + 2, + "Expected 2 raw instructions" + ); + + // First instruction: CreateAccount + match &parsed.instructions_data[0] { + ParsedInstruction::CreateAccount(params) => { + assert_eq!( + params.from_address, + "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe" + ); + assert_eq!( + params.new_address, + "7dRuGFbU2y2kijP6o1LYNzVyz4yf13MooqoionCzv5Za" + ); + assert_eq!(params.amount, "300000"); + } + other => panic!("Expected CreateAccount instruction, got {:?}", other), + } + + // Second instruction: StakeInitialize + match &parsed.instructions_data[1] { + ParsedInstruction::StakeInitialize(params) => { + assert_eq!( + params.staking_address, + "7dRuGFbU2y2kijP6o1LYNzVyz4yf13MooqoionCzv5Za" + ); + // The staker is the authorized staker for Marinade + assert_eq!( + params.staker, + "CyjoLt3kjqB57K7ewCBHmnHq3UgEj3ak6A7m6EsBsuhA" + ); + assert_eq!( + params.withdrawer, + "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe" + ); + } + other => panic!("Expected StakeInitialize instruction, got {:?}", other), + } + } +} diff --git a/packages/wasm-solana/src/transaction.rs b/packages/wasm-solana/src/transaction.rs new file mode 100644 index 0000000..339a93f --- /dev/null +++ b/packages/wasm-solana/src/transaction.rs @@ -0,0 +1,163 @@ +//! Solana transaction deserialization. +//! +//! Wraps `solana_transaction::Transaction` for WASM compatibility. +//! +//! # Wire Format +//! +//! Solana transactions use a compact binary format: +//! - Signatures (variable length array) +//! - Message (contains instructions, accounts, blockhash) +//! +//! This module deserializes base64-encoded transactions as used by +//! `@solana/web3.js` `Transaction.from()`. + +use crate::error::WasmSolanaError; + +/// Re-export the underlying Solana Transaction type. +pub use solana_transaction::Transaction; + +/// Extension trait for Transaction to add WASM-friendly methods. +pub trait TransactionExt { + /// Deserialize a transaction from base64-encoded wire format. + fn from_base64(base64_str: &str) -> Result; + + /// Deserialize a transaction from raw bytes (wire format). + fn from_bytes(bytes: &[u8]) -> Result; + + /// Get the fee payer address as base58 string. + fn fee_payer_string(&self) -> Option; + + /// Get the recent blockhash as base58 string. + fn blockhash_string(&self) -> String; + + /// Get the number of instructions. + fn num_instructions(&self) -> usize; + + /// Get the number of signatures. + fn num_signatures(&self) -> usize; + + /// Get the signable message bytes (what gets signed). + fn signable_payload(&self) -> Vec; + + /// Serialize transaction to bytes (wire format). + fn to_bytes(&self) -> Result, WasmSolanaError>; + + /// Serialize transaction to base64. + fn to_base64(&self) -> Result; +} + +impl TransactionExt for Transaction { + fn from_base64(base64_str: &str) -> Result { + // Decode base64 + use base64::prelude::*; + let bytes = BASE64_STANDARD + .decode(base64_str) + .map_err(|e| WasmSolanaError::new(&format!("Invalid base64: {}", e)))?; + + Self::from_bytes(&bytes) + } + + fn from_bytes(bytes: &[u8]) -> Result { + bincode::deserialize(bytes) + .map_err(|e| WasmSolanaError::new(&format!("Failed to deserialize transaction: {}", e))) + } + + fn fee_payer_string(&self) -> Option { + self.message.account_keys.first().map(|p| p.to_string()) + } + + fn blockhash_string(&self) -> String { + self.message.recent_blockhash.to_string() + } + + fn num_instructions(&self) -> usize { + self.message.instructions.len() + } + + fn num_signatures(&self) -> usize { + self.signatures.len() + } + + fn signable_payload(&self) -> Vec { + self.message.serialize() + } + + fn to_bytes(&self) -> Result, WasmSolanaError> { + bincode::serialize(self) + .map_err(|e| WasmSolanaError::new(&format!("Failed to serialize transaction: {}", e))) + } + + fn to_base64(&self) -> Result { + use base64::prelude::*; + let bytes = self.to_bytes()?; + Ok(BASE64_STANDARD.encode(&bytes)) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + // Test transaction from @solana/web3.js - a simple SOL transfer + // This is a real transaction serialized with Transaction.serialize() + const TEST_TX_BASE64: &str = "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDFVMqpim7tqEi2XL8R6KKkP0DYJvY3eiRXLlL1P9EjYgXKQC+k0FKnqyC4AZGJR7OhJXfpPP3NHOhS8t/6G7bLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1c7Oaj3RbyLIjU0/ZPpsmVfVUWAzc8g36fK5g6A0JoBAgIAAQwCAAAAoIYBAAAAAAA="; + + #[test] + fn test_deserialize_transaction() { + let tx = Transaction::from_base64(TEST_TX_BASE64).unwrap(); + + // Check we got valid data + assert!(tx.num_signatures() > 0); + assert!(tx.num_instructions() > 0); + } + + #[test] + fn test_fee_payer() { + let tx = Transaction::from_base64(TEST_TX_BASE64).unwrap(); + let fee_payer = tx.fee_payer_string(); + assert!(fee_payer.is_some()); + // Fee payer should be a valid base58 Solana address + let payer = fee_payer.unwrap(); + assert!(payer.len() >= 32 && payer.len() <= 44); + } + + #[test] + fn test_blockhash() { + let tx = Transaction::from_base64(TEST_TX_BASE64).unwrap(); + let blockhash = tx.blockhash_string(); + // Blockhash should be a valid base58 string + assert!(blockhash.len() >= 32 && blockhash.len() <= 44); + } + + #[test] + fn test_roundtrip() { + let tx = Transaction::from_base64(TEST_TX_BASE64).unwrap(); + let serialized = tx.to_base64().unwrap(); + + // Deserialize again + let tx2 = Transaction::from_base64(&serialized).unwrap(); + assert_eq!(tx.num_signatures(), tx2.num_signatures()); + assert_eq!(tx.num_instructions(), tx2.num_instructions()); + assert_eq!(tx.blockhash_string(), tx2.blockhash_string()); + } + + #[test] + fn test_signable_payload() { + let tx = Transaction::from_base64(TEST_TX_BASE64).unwrap(); + let payload = tx.signable_payload(); + // Message should have some content + assert!(!payload.is_empty()); + } + + #[test] + fn test_invalid_base64() { + let result = Transaction::from_base64("not valid base64!!!"); + assert!(result.is_err()); + } + + #[test] + fn test_invalid_transaction() { + let result = Transaction::from_bytes(&[0, 1, 2, 3]); + assert!(result.is_err()); + } +} diff --git a/packages/wasm-solana/src/wasm/mod.rs b/packages/wasm-solana/src/wasm/mod.rs index 45092cd..a149e9c 100644 --- a/packages/wasm-solana/src/wasm/mod.rs +++ b/packages/wasm-solana/src/wasm/mod.rs @@ -1,5 +1,9 @@ mod keypair; +mod parser; mod pubkey; +mod transaction; pub use keypair::WasmKeypair; +pub use parser::ParserNamespace; pub use pubkey::WasmPubkey; +pub use transaction::WasmTransaction; diff --git a/packages/wasm-solana/src/wasm/parser.rs b/packages/wasm-solana/src/wasm/parser.rs new file mode 100644 index 0000000..cb4bdde --- /dev/null +++ b/packages/wasm-solana/src/wasm/parser.rs @@ -0,0 +1,38 @@ +//! WASM binding for high-level transaction parsing. +//! +//! Exposes a single `parseTransaction` function that returns fully decoded +//! transaction data matching BitGoJS's TxData format. + +use crate::parser; +use wasm_bindgen::prelude::*; + +/// Namespace for transaction parsing operations. +#[wasm_bindgen] +pub struct ParserNamespace; + +#[wasm_bindgen] +impl ParserNamespace { + /// Parse a serialized Solana transaction into structured data. + /// + /// Takes raw transaction bytes and returns a JSON object with: + /// - `feePayer`: The fee payer address (base58) + /// - `numSignatures`: Number of required signatures + /// - `nonce`: The blockhash/nonce value (base58) + /// - `durableNonce`: Optional durable nonce info (if tx uses nonce) + /// - `instructionsData`: Array of decoded instructions with semantic types + /// - `signatures`: Array of signatures (base64 encoded) + /// - `accountKeys`: Array of all account addresses (base58) + /// + /// Each instruction in `instructionsData` has a `type` field identifying the + /// instruction type (e.g., "Transfer", "StakingActivate", "TokenTransfer"). + /// + /// @param bytes - The raw transaction bytes (wire format) + /// @returns A ParsedTransaction object as JSON + #[wasm_bindgen] + pub fn parse_transaction(bytes: &[u8]) -> Result { + let parsed = parser::parse_transaction(bytes).map_err(|e| JsValue::from_str(&e))?; + + serde_wasm_bindgen::to_value(&parsed) + .map_err(|e| JsValue::from_str(&format!("Serialization error: {}", e))) + } +} diff --git a/packages/wasm-solana/src/wasm/transaction.rs b/packages/wasm-solana/src/wasm/transaction.rs new file mode 100644 index 0000000..4d6c295 --- /dev/null +++ b/packages/wasm-solana/src/wasm/transaction.rs @@ -0,0 +1,154 @@ +//! WASM bindings for Solana transaction deserialization. +//! +//! Wraps `solana_transaction::Transaction` for JavaScript. +//! +//! Note: For semantic transaction parsing with decoded instructions, +//! use `ParserNamespace.parse_transaction()` instead. + +use crate::error::WasmSolanaError; +use crate::transaction::{Transaction, TransactionExt}; +use wasm_bindgen::prelude::*; + +/// WASM wrapper for Solana transactions. +/// +/// This type provides low-level access to transaction structure. +/// For high-level semantic parsing, use `ParserNamespace.parse_transaction()`. +#[wasm_bindgen] +pub struct WasmTransaction { + inner: Transaction, +} + +#[wasm_bindgen] +impl WasmTransaction { + /// Deserialize a transaction from raw bytes. + #[wasm_bindgen] + pub fn from_bytes(bytes: &[u8]) -> Result { + Transaction::from_bytes(bytes).map(|inner| WasmTransaction { inner }) + } + + /// Get the fee payer address as a base58 string. + /// + /// Returns `null` if there are no account keys (shouldn't happen for valid transactions). + #[wasm_bindgen(getter)] + pub fn fee_payer(&self) -> Option { + self.inner.fee_payer_string() + } + + /// Get the recent blockhash as a base58 string. + #[wasm_bindgen(getter)] + pub fn recent_blockhash(&self) -> String { + self.inner.blockhash_string() + } + + /// Get the number of instructions in the transaction. + #[wasm_bindgen(getter)] + pub fn num_instructions(&self) -> usize { + self.inner.num_instructions() + } + + /// Get the number of signatures in the transaction. + #[wasm_bindgen(getter)] + pub fn num_signatures(&self) -> usize { + self.inner.num_signatures() + } + + /// Get the signable message payload (what gets signed). + /// + /// This is the serialized message that signers sign. + #[wasm_bindgen] + pub fn signable_payload(&self) -> js_sys::Uint8Array { + let bytes = self.inner.signable_payload(); + js_sys::Uint8Array::from(&bytes[..]) + } + + /// Serialize the transaction to bytes. + #[wasm_bindgen] + pub fn to_bytes(&self) -> Result { + let bytes = self.inner.to_bytes()?; + Ok(js_sys::Uint8Array::from(&bytes[..])) + } + + /// Get all account keys as an array of base58 strings. + #[wasm_bindgen] + pub fn account_keys(&self) -> js_sys::Array { + let arr = js_sys::Array::new(); + for key in &self.inner.message.account_keys { + arr.push(&JsValue::from_str(&key.to_string())); + } + arr + } + + /// Get all signatures as an array of byte arrays. + /// + /// Each signature is returned as a Uint8Array. + #[wasm_bindgen] + pub fn signatures(&self) -> js_sys::Array { + let arr = js_sys::Array::new(); + for sig in &self.inner.signatures { + let bytes: &[u8] = sig.as_ref(); + arr.push(&js_sys::Uint8Array::from(bytes)); + } + arr + } + + /// Get all instructions as an array. + /// + /// Each instruction is a JS object with programId, accounts, and data. + #[wasm_bindgen] + pub fn instructions(&self) -> js_sys::Array { + let arr = js_sys::Array::new(); + let msg = &self.inner.message; + + for instruction in &msg.instructions { + let obj = js_sys::Object::new(); + + // Get the program ID + if let Some(program_id) = msg.account_keys.get(instruction.program_id_index as usize) { + let _ = + js_sys::Reflect::set(&obj, &"programId".into(), &program_id.to_string().into()); + } + + // Build accounts array with signer/writable flags + let accounts = js_sys::Array::new(); + for &account_index in &instruction.accounts { + if let Some(pubkey) = msg.account_keys.get(account_index as usize) { + let account_obj = js_sys::Object::new(); + + let _ = js_sys::Reflect::set( + &account_obj, + &"pubkey".into(), + &pubkey.to_string().into(), + ); + + // Use official Solana methods for signer/writable flags + let is_signer = msg.is_signer(account_index as usize); + let is_writable = msg.is_maybe_writable(account_index as usize, None); + let _ = + js_sys::Reflect::set(&account_obj, &"isSigner".into(), &is_signer.into()); + let _ = js_sys::Reflect::set( + &account_obj, + &"isWritable".into(), + &is_writable.into(), + ); + + accounts.push(&account_obj); + } + } + let _ = js_sys::Reflect::set(&obj, &"accounts".into(), &accounts); + + // Set instruction data + let data = js_sys::Uint8Array::from(&instruction.data[..]); + let _ = js_sys::Reflect::set(&obj, &"data".into(), &data); + + arr.push(&obj); + } + arr + } +} + +impl WasmTransaction { + /// Get the inner Transaction for internal Rust use. + pub fn inner(&self) -> &Transaction { + &self.inner + } +} diff --git a/packages/wasm-solana/test/bitgojs-compat.ts b/packages/wasm-solana/test/bitgojs-compat.ts new file mode 100644 index 0000000..cd00a43 --- /dev/null +++ b/packages/wasm-solana/test/bitgojs-compat.ts @@ -0,0 +1,303 @@ +/** + * Compatibility tests using BitGoJS test fixtures. + * + * These tests verify that our parseTransaction output matches + * what BitGoJS's Transaction.toJson() produces. + */ +import * as assert from "assert"; +import { parseTransaction } from "../js/parser.js"; + +// Helper to decode base64 in tests +function base64ToBytes(base64: string): Uint8Array { + const binary = Buffer.from(base64, "base64"); + return new Uint8Array(binary); +} + +describe("BitGoJS Compatibility", () => { + describe("Transfer with memo and durable nonce", () => { + // From BitGoJS: test/resources/sol.ts - TRANSFER_UNSIGNED_TX_WITH_MEMO_AND_DURABLE_NONCE + const TX_BASE64 = + "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAMGReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Fv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbqkYG1L37ZDq6w2tS3G+tFODYWdhMXF+kwlYEF+3o4nVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSlNamSkhBk0k6HFg2jh8fDW13bySu4HkH6hAQQVEjQan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAA4zLa+S+r7Oi2P/ekQAXl/f2a+hWHVrYcWpX5BLO40IEDAwMBBQAEBAAAAAMCAAIMAgAAAOCTBAAAAAAABAAJdGVzdCBtZW1v"; + + // Expected values from BitGoJS test/unit/transaction.ts lines 33-60 + // Note: WASM returns all instructions including NonceAdvance; BitGoJS may filter it for its own use + const EXPECTED = { + feePayer: "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe", + nonce: "GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi", + numSignatures: 1, // header.num_required_signatures + durableNonce: { + walletNonceAddress: "8Y7RM6JfcX4ASSNBkrkrmSbRu431YVi9Y3oLFnzC2dCh", + authWalletAddress: "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe", + }, + // instructionsData includes all instructions including NonceAdvance + instructionsData: [ + { + type: "NonceAdvance", + walletNonceAddress: "8Y7RM6JfcX4ASSNBkrkrmSbRu431YVi9Y3oLFnzC2dCh", + authWalletAddress: "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe", + }, + { + type: "Transfer", + fromAddress: "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe", + toAddress: "CP5Dpaa42RtJmMuKqCQsLwma5Yh3knuvKsYDFX85F41S", + amount: "300000", + }, + { + type: "Memo", + memo: "test memo", + }, + ], + }; + + it("should parse feePayer correctly", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + assert.strictEqual(parsed.feePayer, EXPECTED.feePayer); + }); + + it("should parse nonce correctly", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + assert.strictEqual(parsed.nonce, EXPECTED.nonce); + }); + + it("should parse numSignatures correctly", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + assert.strictEqual(parsed.numSignatures, EXPECTED.numSignatures); + }); + + it("should detect durable nonce transaction", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + assert.ok(parsed.durableNonce, "Should detect durable nonce"); + assert.strictEqual( + parsed.durableNonce.walletNonceAddress, + EXPECTED.durableNonce.walletNonceAddress, + ); + assert.strictEqual( + parsed.durableNonce.authWalletAddress, + EXPECTED.durableNonce.authWalletAddress, + ); + }); + + it("should have NonceAdvance in both instructionsData and durableNonce", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + // WASM returns all instructions including NonceAdvance + const nonceAdvance = parsed.instructionsData.find((i) => i.type === "NonceAdvance"); + assert.ok(nonceAdvance, "NonceAdvance should be in instructionsData"); + assert.ok(parsed.durableNonce, "durableNonce should also be populated"); + // Verify the data matches + if (nonceAdvance && nonceAdvance.type === "NonceAdvance" && parsed.durableNonce) { + assert.strictEqual(nonceAdvance.walletNonceAddress, parsed.durableNonce.walletNonceAddress); + assert.strictEqual(nonceAdvance.authWalletAddress, parsed.durableNonce.authWalletAddress); + } + }); + + it("should parse Transfer instruction correctly", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + // Transfer is at index 1 (after NonceAdvance) + const instr = parsed.instructionsData[1]; + + assert.strictEqual(instr.type, "Transfer"); + if (instr.type === "Transfer") { + const expectedTransfer = EXPECTED.instructionsData[1]; + if (expectedTransfer.type === "Transfer") { + assert.strictEqual(instr.fromAddress, expectedTransfer.fromAddress); + assert.strictEqual(instr.toAddress, expectedTransfer.toAddress); + assert.strictEqual(instr.amount, expectedTransfer.amount); + } + } + }); + + it("should parse Memo instruction correctly", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + // Memo is at index 2 (after NonceAdvance and Transfer) + const instr = parsed.instructionsData[2]; + + assert.strictEqual(instr.type, "Memo"); + if (instr.type === "Memo") { + const expectedMemo = EXPECTED.instructionsData[2]; + if (expectedMemo.type === "Memo") { + assert.strictEqual(instr.memo, expectedMemo.memo); + } + } + }); + + it("should have correct number of instructions", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + // 3 instructions: NonceAdvance + Transfer + Memo + assert.strictEqual(parsed.instructionsData.length, 3); + }); + }); + + describe("Multi transfer transaction", () => { + // From BitGoJS: test/resources/sol.ts - MULTI_TRANSFER_SIGNED + const TX_BASE64 = + "ARbBf3TOkZIuuO2ziM3aACNNdYKDcumvwrylryRXRabSipz6t4VY0ccLsH7v9v8o/k9TVaToi9eAKBR0C0NRzgYBAAMLReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0FLR9EoOL6wqR8uLpnq0nwpNHchcLqBetRGhm70JDF+8kze2o1mtPDaZbuLoBDbpF4Ym6uNOoiXV4Z/XzIP2qDiVfSSHY6HxxiRep+SggDoFZcJjEpbyDbmNXstOeVFqelv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbqOP64stlmOImTCUdTdWfXmX4VEgLlAxGjAYzAqkGvGpqRgbUvftkOrrDa1Lcb60U4NhZ2ExcX6TCVgQX7ejidWvmf90gv+iLyF+MaUVKbB3PxFvBm0rWUtT2LJWOlSvUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI0Gp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAOMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBCAgDBAoABAQAAAAIAgAGDAIAAADgkwQAAAAAAAgCAAIMAgAAAOCTBAAAAAAACAIABQwCAAAA4JMEAAAAAAAIAgAHDAIAAADgkwQAAAAAAAgCAAEMAgAAAOCTBAAAAAAACAIAAwwCAAAA4JMEAAAAAAAJAAl0ZXN0IG1lbW8="; + + // Expected values from BitGoJS test/unit/transaction.ts lines 63-141 + const EXPECTED_FEE_PAYER = "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe"; + const EXPECTED_NONCE = "GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi"; + const EXPECTED_TRANSFER_RECIPIENTS = [ + "CP5Dpaa42RtJmMuKqCQsLwma5Yh3knuvKsYDFX85F41S", + "6B55XMiaS6tUZw5Tt3G1RaXAqdrvN38yXVDJmWvKLkiM", + "C1UjpxcXNBpp1UyvYsuNBNZ5Da1G1i49g3yTvC23Ny7e", + "CpUYXh9xXoWfkBVaBQRZ8nAgDbT16GZeQdqveeBS1hmk", + "64s6NjmEokdhicHEd432X5Ut2EDfDmVqdvGh4rASn1gd", + "6nXxL2jMSdkgfHm13Twvn1gzRAPdrWnWLfu89PJL3Aqe", + ]; + + it("should parse multi-transfer with correct structure", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + + assert.strictEqual(parsed.feePayer, EXPECTED_FEE_PAYER); + assert.strictEqual(parsed.nonce, EXPECTED_NONCE); + // NonceAdvance + 6 Transfers + 1 Memo = 8 instructions + assert.strictEqual(parsed.instructionsData.length, 8); + assert.ok(parsed.durableNonce, "Should have durableNonce"); + assert.strictEqual(parsed.instructionsData[0].type, "NonceAdvance"); + }); + + it("should parse all transfer recipients correctly", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + + // Transfers are at indices 1-6 (index 0 is NonceAdvance) + const transfers = parsed.instructionsData.slice(1, 7); + assert.strictEqual(transfers.length, 6); + + for (let i = 0; i < transfers.length; i++) { + const transfer = transfers[i]; + assert.strictEqual(transfer.type, "Transfer", `Instruction ${i + 1} should be Transfer`); + if (transfer.type === "Transfer") { + assert.strictEqual(transfer.toAddress, EXPECTED_TRANSFER_RECIPIENTS[i]); + assert.strictEqual(transfer.amount, "300000"); + assert.strictEqual(transfer.fromAddress, EXPECTED_FEE_PAYER); + } + } + }); + + it("should have memo as last instruction", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + const lastInstr = parsed.instructionsData[parsed.instructionsData.length - 1]; + + assert.strictEqual(lastInstr.type, "Memo"); + if (lastInstr.type === "Memo") { + assert.strictEqual(lastInstr.memo, "test memo"); + } + }); + }); + + describe("Staking activate transaction", () => { + // From BitGoJS: test/resources/sol.ts - STAKING_ACTIVATE_SIGNED_TX + const TX_BASE64 = + "AgqGWxEJnQ6oPZd9ysQx+RoWZiNC5caG1vZfCKihyobmUMA/mj7tUVV3j02GUl25Cm7letLefgUz9WB+kXAe4ABUzgW/NnG7GeZGxTVAsEWxGK93sc/cNVFODjkf97ap2bugoN48UG3jBA0JvcNa35xPVrJVdB8VW8dWe/jfxSgMAgAHCUXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBYnsvugEnYfm5Gbz5TLtMncgFHZ8JMpkxTTlJIzJovekAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALH5eXiaHEfRPEjYei8nFxDrf5MmCVEXMWKQvWwp2vXZBqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAAGodgXpQIFC2gHkebObbiOHltxUPYfxnkKTrTRAAAAAAan1RcYx3TJKFZjmGkdXraLXrijm0ttXHNVWyEAAAAABqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGTWE0P7tm7NDHRMga+VEKBtXuFZsxTdf9AAAAOMy2vkvq+zotj/3pEAF5f39mvoVh1a2HFqV+QSzuNCBAwICAAE0AAAAAOCTBAAAAAAAyAAAAAAAAAAGodgXkTdUKpg0N73+KnqyVX9TXIp4citopJ3AAAAAAAQCAQd0AAAAAEXlebz5JTz2i0ff8fs6OlwsIbrFsjwJrhKm4FVr8ItBReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0EAAAAAAAAAAAAAAAAAAAAAReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0EEBgEDBggFAAQCAAAA"; + + it("should parse staking transaction structure", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + + assert.strictEqual(parsed.feePayer, "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe"); + assert.ok(parsed.instructionsData.length >= 1, "Should have instructions"); + + // Check that we can identify system and stake program instructions + const types = parsed.instructionsData.map((i) => i.type); + assert.ok( + types.includes("CreateAccount") || + types.includes("StakingActivate") || + types.includes("StakingDelegate"), + `Should have staking-related instructions, got: ${types.join(", ")}`, + ); + }); + }); + + describe("Token transfer transaction", () => { + // From BitGoJS: test/resources/sol.ts - TOKEN_TRANSFER_SIGNED_TX_WITH_MEMO_AND_DURABLE_NONCE + const TX_BASE64 = + "AV6dvFclQvoTuCoia6uKVEUuUnV6Vzuzoyrbn9r/hvlDupmR6Y+zRtKCyIoAu7Yn4SDswSP5ihpsRl+sla53rQABAAYKAGymKVqOJEQemBHH67uu8ISJV4rtwTejLrjw7VSeW6dv+hKJ+pxZaLwHGEyk2Svp5PfAC5ZEi/wYI1tPTHHhbpXS8VwMObd6fTnfCKrnxvwQ5LFhipVbiG+aiTNM1eFsqRgbUvftkOrrDa1Lcb60U4NhZ2ExcX6TCVgQX7ejidUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAA0QOJ+87lKPIIYR3MxzSzEJJUDLK41Y0QDy6qLO202l4FSlNamSkhBk0k6HFg2jh8fDW13bySu4HkH6hAQQVEjQan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKnjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQQEAwEIAAQEAAAABQAJA4CWmAAAAAAACQQCBgMACgzgkwQAAAAAAAkHAAl0ZXN0IG1lbW8="; + + it("should parse token transfer transaction", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + + // Should have 4 instructions: NonceAdvance, SetPriorityFee, TokenTransfer, Memo + assert.strictEqual(parsed.instructionsData.length, 4); + assert.ok(parsed.durableNonce, "Should have durableNonce"); + + const types = parsed.instructionsData.map((i) => i.type); + assert.strictEqual(types[0], "NonceAdvance", "First should be NonceAdvance"); + assert.strictEqual(types[1], "SetPriorityFee", "Second should be SetPriorityFee"); + assert.strictEqual(types[2], "TokenTransfer", "Third should be TokenTransfer"); + assert.strictEqual(types[3], "Memo", "Fourth should be Memo"); + + // Check token transfer details + const tokenTransfer = parsed.instructionsData[2]; + if (tokenTransfer.type === "TokenTransfer") { + assert.strictEqual(tokenTransfer.amount, "300000"); + } + }); + }); + + describe("Simple unsigned transfer", () => { + // From BitGoJS: test/resources/sol.ts - RAW_TX_UNSIGNED + const TX_BASE64 = + "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIF1NAQCUWYPPTiKY7R/E6KZUKc6Cfr4EUtPm/5/SxQojC7/8v6bBS5ivQMOPXcf/+IbTe8TTN0fjWV33cOwFlm7v5/ZxIQXcf05+tDimmyGgnt1z0tG4opHSR2L2GlM6FGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAOghhIq8A3U5dDmSv3/3VTX6V+0obalzpFvB2Pemp8/uAgMDAgQABAQAAAADAgABDAIAAACghgEAAAAAAA=="; + + it("should parse basic unsigned transfer", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + + // This is a durable nonce transaction: NonceAdvance + Transfer + assert.strictEqual(parsed.instructionsData.length, 2); + assert.strictEqual(parsed.instructionsData[0].type, "NonceAdvance"); + assert.strictEqual(parsed.instructionsData[1].type, "Transfer"); + assert.ok(parsed.durableNonce, "Should have durableNonce"); + + if (parsed.instructionsData[1].type === "Transfer") { + // 100000 lamports = 0x186a0 + assert.strictEqual(parsed.instructionsData[1].amount, "100000"); + } + }); + }); + + describe("Jito liquid staking transaction", () => { + // From BitGoJS: test/resources/sol.ts - JITO_STAKING_ACTIVATE_SIGNED_TX + // This is a Jito DepositSol instruction (discriminator 14) - deposits SOL into the Jito stake pool + const TX_BASE64 = + "AdOUrFCk9yyhi1iB1EfOOXHOeiaZGQnLRwnypt+be8r9lrYMx8w7/QTnithrqcuBApg1ctJAlJMxNZ925vMP2Q0BAAQKReV5vPklPPaLR9/x+zo6XCwhusWyPAmuEqbgVWvwi0Ecg6pe+BOG2OETfAVS9ftz6va1oE4onLBolJ2N+ZOOhJ6naP7fZEyKrpuOIYit0GvFUPv3Fsgiuc5jx3g9lS4fCeaj/uz5kDLhwd9rlyLcs2NOe440QJNrw0sMwcjrUh/80UHpgyyvEK2RdJXKDycbWyk81HAn6nNwB+1A6zmgvQSKPgjDtJW+F/RUJ9ib7FuAx+JpXBhk12dD2zm+00bWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU5Z4kwFGooUp7HpeX8OEs36dJAhZlMZWmpRKm8WZgKwaBTtTK9ooXRnL9rIYDGmPoTqFe+h1EtyKT9tvbABZQBt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKnjMtr5L6vs6LY/96RABeX9/Zr6FYdWthxalfkEs7jQgQEICgUHAgABAwEEBgkJDuCTBAAAAAAA"; + + it("should parse Jito DepositSol instruction", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + + // Find the StakePoolDepositSol instruction + const depositSolInstr = parsed.instructionsData.find((i) => i.type === "StakePoolDepositSol"); + assert.ok(depositSolInstr, "Should have StakePoolDepositSol instruction"); + + if (depositSolInstr && depositSolInstr.type === "StakePoolDepositSol") { + // Amount should be 300000 lamports (0x493e0 in little endian: e0 93 04 00 00 00 00 00) + assert.strictEqual(depositSolInstr.lamports, "300000"); + // Stake pool should be the Jito stake pool program + assert.ok(depositSolInstr.stakePool, "Should have stakePool"); + assert.ok(depositSolInstr.fundingAccount, "Should have fundingAccount"); + assert.ok(depositSolInstr.destinationPoolAccount, "Should have destinationPoolAccount"); + assert.ok(depositSolInstr.poolMint, "Should have poolMint"); + } + }); + + it("should have correct fee payer for Jito transaction", () => { + const bytes = base64ToBytes(TX_BASE64); + const parsed = parseTransaction(bytes); + + // Fee payer from BitGoJS tests + assert.strictEqual(parsed.feePayer, "5hr5fisPi6DXNuuRpm5XUbzpiEnmdyxXuBDTwzwZj5Pe"); + }); + }); +}); diff --git a/packages/wasm-solana/test/parser.ts b/packages/wasm-solana/test/parser.ts new file mode 100644 index 0000000..6a3be12 --- /dev/null +++ b/packages/wasm-solana/test/parser.ts @@ -0,0 +1,136 @@ +import * as assert from "assert"; +import { parseTransaction, type ParsedTransaction } from "../js/parser.js"; + +// Helper to decode base64 in tests +function base64ToBytes(base64: string): Uint8Array { + const binary = Buffer.from(base64, "base64"); + return new Uint8Array(binary); +} + +describe("parseTransaction", () => { + // Test transaction from @solana/web3.js - a simple SOL transfer (100000 lamports) + const TEST_TX_BASE64 = + "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDFVMqpim7tqEi2XL8R6KKkP0DYJvY3eiRXLlL1P9EjYgXKQC+k0FKnqyC4AZGJR7OhJXfpPP3NHOhS8t/6G7bLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1c7Oaj3RbyLIjU0/ZPpsmVfVUWAzc8g36fK5g6A0JoBAgIAAQwCAAAAoIYBAAAAAAA="; + + const TEST_TX_BYTES = base64ToBytes(TEST_TX_BASE64); + + it("should parse a SOL transfer transaction", () => { + const parsed = parseTransaction(TEST_TX_BYTES); + + // Check basic structure + assert.ok(parsed.feePayer); + assert.ok(parsed.nonce); + assert.strictEqual(parsed.numSignatures, 1); + assert.ok(parsed.instructionsData.length > 0); + assert.ok(parsed.signatures.length > 0); + assert.ok(parsed.accountKeys.length > 0); + }); + + it("should decode SOL transfer instruction correctly", () => { + const parsed = parseTransaction(TEST_TX_BYTES); + + assert.strictEqual(parsed.instructionsData.length, 1); + const instr = parsed.instructionsData[0]; + + // Should be a Transfer instruction + assert.strictEqual(instr.type, "Transfer"); + + // Type guard to access Transfer-specific fields + if (instr.type === "Transfer") { + assert.ok(instr.fromAddress); + assert.ok(instr.toAddress); + // Amount should be 100000 lamports (from test tx) + assert.strictEqual(instr.amount, "100000"); + } + }); + + it("should include fee payer as first account key", () => { + const parsed = parseTransaction(TEST_TX_BYTES); + + assert.strictEqual(parsed.feePayer, parsed.accountKeys[0]); + }); + + it("should have signatures as base64 strings", () => { + const parsed = parseTransaction(TEST_TX_BYTES); + + assert.ok(parsed.signatures.length > 0); + // Signatures should be base64 encoded (string) + for (const sig of parsed.signatures) { + assert.strictEqual(typeof sig, "string"); + // Base64 of 64 bytes is 88 characters + assert.ok(sig.length > 0); + } + }); + + it("should reject invalid bytes", () => { + const invalidBytes = new Uint8Array([0, 1, 2, 3]); + assert.throws(() => parseTransaction(invalidBytes)); + }); + + it("should set durableNonce for nonce transactions", () => { + // This is a regular (non-nonce) transaction, so durableNonce should be undefined + const parsed = parseTransaction(TEST_TX_BYTES); + assert.strictEqual(parsed.durableNonce, undefined); + }); + + it("should serialize to valid JSON", () => { + const parsed = parseTransaction(TEST_TX_BYTES); + const json = JSON.stringify(parsed); + + // Should be valid JSON + const reparsed = JSON.parse(json) as ParsedTransaction; + assert.strictEqual(reparsed.feePayer, parsed.feePayer); + assert.strictEqual(reparsed.instructionsData.length, parsed.instructionsData.length); + }); + + describe("instruction type discrimination", () => { + it("should have type field on all instructions", () => { + const parsed = parseTransaction(TEST_TX_BYTES); + + for (const instr of parsed.instructionsData) { + assert.ok("type" in instr, "Instruction should have type field"); + assert.strictEqual(typeof instr.type, "string"); + } + }); + + it("Transfer instruction should have correct fields", () => { + const parsed = parseTransaction(TEST_TX_BYTES); + const transfer = parsed.instructionsData[0]; + + if (transfer.type === "Transfer") { + assert.ok("fromAddress" in transfer); + assert.ok("toAddress" in transfer); + assert.ok("amount" in transfer); + } + }); + }); +}); + +describe("StakingAuthorize parsing", () => { + it("should parse CLI-generated StakingAuthorize transaction that web3.js cannot decode", () => { + // This is a raw CLI-generated Stake Authorize transaction that web3.js fails to decode + // but WASM can parse correctly + const STAKING_AUTHORIZE_RAW_MSG_TXN = + "BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAwQJSN/yAiroYbrh33Xw+MKSGtu8m4Hx4sqwncAXz/he+b84neq4+YPEcZolDyLtQRwrgvHDZaDkTO1AFV+8JECpZViONvuJhgX6ijN1ogXXktMlrW9LsGh17WRMFiwbX9DjtnKIrK5VJ/5vhQidfy2H5id17M7MCqU8z9fuL/G26kb+iZNTXfchXIJtP9yKrACRJunT7w9bkgs7KLnfQO4e/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqHYF5E3VCqYNDe9/ip6slV/U1yKeHIraKSdwAAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAAan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAAHv54hjZyXUu92IV/PX26I8zpgfXc5S/zZXMURlOUSjQCBQMECAAEBAAAAAYFBAcCAQMICgAAAAEAAAA="; + + const bytes = Buffer.from(STAKING_AUTHORIZE_RAW_MSG_TXN, "base64"); + const parsed = parseTransaction(bytes); + + // Should have NonceAdvance + StakingAuthorize + assert.strictEqual(parsed.instructionsData.length, 2); + assert.strictEqual(parsed.instructionsData[0].type, "NonceAdvance"); + assert.strictEqual(parsed.instructionsData[1].type, "StakingAuthorize"); + + // Verify the StakingAuthorize has correct fields + const authorizeInstr = parsed.instructionsData[1] as { + type: string; + stakingAddress: string; + authorizeType: string; + }; + assert.strictEqual( + authorizeInstr.stakingAddress, + "J8cECxcT6Q6H4fcQCvd4LbhmmSjsHL63kpJtrUcrF74Q", + ); + assert.strictEqual(authorizeInstr.authorizeType, "Withdrawer"); + }); +}); diff --git a/packages/wasm-solana/test/transaction.ts b/packages/wasm-solana/test/transaction.ts new file mode 100644 index 0000000..528d3a2 --- /dev/null +++ b/packages/wasm-solana/test/transaction.ts @@ -0,0 +1,127 @@ +import * as assert from "assert"; +import { Transaction } from "../js/transaction.js"; + +// Helper to decode base64 in tests +function base64ToBytes(base64: string): Uint8Array { + const binary = Buffer.from(base64, "base64"); + return new Uint8Array(binary); +} + +describe("Transaction", () => { + // Test transaction from @solana/web3.js - a simple SOL transfer + // This is a real transaction serialized with Transaction.serialize() + const TEST_TX_BASE64 = + "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDFVMqpim7tqEi2XL8R6KKkP0DYJvY3eiRXLlL1P9EjYgXKQC+k0FKnqyC4AZGJR7OhJXfpPP3NHOhS8t/6G7bLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1c7Oaj3RbyLIjU0/ZPpsmVfVUWAzc8g36fK5g6A0JoBAgIAAQwCAAAAoIYBAAAAAAA="; + + const TEST_TX_BYTES = base64ToBytes(TEST_TX_BASE64); + + it("should deserialize transaction from bytes", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + + assert.ok(tx.numSignatures > 0); + assert.ok(tx.instructions().length > 0); + }); + + it("should get fee payer", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const feePayer = tx.feePayer; + + assert.ok(feePayer); + // Fee payer should be a valid base58 Solana address + assert.ok(feePayer.length >= 32 && feePayer.length <= 44); + }); + + it("should get recent blockhash", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const blockhash = tx.recentBlockhash; + + // Blockhash should be a valid base58 string + assert.ok(blockhash.length >= 32 && blockhash.length <= 44); + }); + + it("should get account keys", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const keys = tx.accountKeys(); + + assert.ok(Array.isArray(keys)); + assert.ok(keys.length >= 1); + // First key should be the fee payer + assert.strictEqual(keys[0].toBase58(), tx.feePayer); + }); + + it("should roundtrip bytes", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const serialized = tx.toBytes(); + + const tx2 = Transaction.fromBytes(serialized); + assert.strictEqual(tx.numSignatures, tx2.numSignatures); + assert.strictEqual(tx.instructions().length, tx2.instructions().length); + assert.strictEqual(tx.recentBlockhash, tx2.recentBlockhash); + }); + + it("should get signable payload", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const payload = tx.signablePayload(); + + assert.ok(payload instanceof Uint8Array); + assert.ok(payload.length > 0); + }); + + it("should get signatures as bytes", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const sigs = tx.signatures(); + + assert.ok(Array.isArray(sigs)); + assert.strictEqual(sigs.length, tx.numSignatures); + + // Each signature should be 64 bytes + for (const sig of sigs) { + assert.ok(sig instanceof Uint8Array); + assert.strictEqual(sig.length, 64); + } + }); + + it("should reject invalid transaction bytes", () => { + const invalidBytes = new Uint8Array([0, 1, 2, 3]); + assert.throws(() => Transaction.fromBytes(invalidBytes), /deserialize/); + }); + + it("should get instructions", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const instructions = tx.instructions(); + + assert.ok(Array.isArray(instructions)); + assert.ok(instructions.length > 0); + + // Check first instruction structure + const instr = instructions[0]; + assert.ok(typeof instr.programId === "string"); + assert.ok(Array.isArray(instr.accounts)); + assert.ok(instr.data instanceof Uint8Array); + }); + + it("should get instruction accounts with signer/writable flags", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const instructions = tx.instructions(); + + assert.ok(instructions.length > 0); + const instr = instructions[0]; + assert.ok(instr.accounts.length > 0); + + // Check account structure + const account = instr.accounts[0]; + assert.ok(typeof account.pubkey === "string"); + assert.ok(typeof account.isSigner === "boolean"); + assert.ok(typeof account.isWritable === "boolean"); + }); + + it("should have System Program as program ID for SOL transfer", () => { + const tx = Transaction.fromBytes(TEST_TX_BYTES); + const instructions = tx.instructions(); + + assert.ok(instructions.length > 0); + const instr = instructions[0]; + // System program ID is 11111111111111111111111111111111 + assert.strictEqual(instr.programId, "11111111111111111111111111111111"); + }); +});