From 0b3b5c68962fefa4138c29f8e45a0c4b199bed37 Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Wed, 28 Aug 2024 12:16:46 -0600 Subject: [PATCH] feat: switch to Pert, add calendar scheduling --- Cargo.lock | 383 ++++++++++++++++++++++++++-- Cargo.toml | 5 +- README.md | 78 ++++-- TODO.md | 40 +++ assets/output.png | Bin 116102 -> 156913 bytes example.json => assets/project.json | 93 +++++-- example.yaml => assets/project.yaml | 218 ++++++++++------ assets/schedule.json | 10 + assets/schedule.yaml | 6 + src/main.rs | 131 +++++----- src/schedule.rs | 79 +++--- src/schedule_loader.rs | 90 ++++--- src/simulation.rs | 96 ++++--- src/task.rs | 7 + tests/effort_is_correct.rs | 7 +- tests/invalid_schedules.rs | 10 +- tests/no_dependencies_schedule.rs | 8 +- tests/simulation_tests.rs | 20 +- 18 files changed, 958 insertions(+), 323 deletions(-) create mode 100644 TODO.md rename example.json => assets/project.json (54%) rename example.yaml => assets/project.yaml (59%) create mode 100644 assets/schedule.json create mode 100644 assets/schedule.yaml diff --git a/Cargo.lock b/Cargo.lock index be513b4..14bbbfd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" version = "0.6.15" @@ -51,6 +66,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + [[package]] name = "autocfg" version = "1.3.0" @@ -63,12 +87,33 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2" + [[package]] name = "byteorder" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "cc" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +dependencies = [ + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -76,10 +121,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] -name = "clap" -version = "4.5.15" +name = "chrono" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "clap" +version = "4.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" dependencies = [ "clap_builder", ] @@ -108,6 +168,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "crossbeam-deque" version = "0.8.5" @@ -133,6 +199,17 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "distimate" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e266cc5215f2a854deadfe97b5fb1047ab35121fd4fafa958e3760945790bf" +dependencies = [ + "rand", + "statrs", + "thiserror", +] + [[package]] name = "either" version = "1.13.0" @@ -178,6 +255,29 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "indexmap" version = "2.4.0" @@ -201,10 +301,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] -name = "libc" -version = "0.2.155" +name = "js-sys" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libm" @@ -219,10 +328,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] -name = "mcps" -version = "0.1.1" +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "matrixmultiply" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "mcps" +version = "0.2.0" +dependencies = [ + "chrono", "clap", + "distimate", "rand", "rand_distr", "rayon", @@ -230,6 +357,7 @@ dependencies = [ "serde_json", "serde_yaml", "tempfile", + "workdays", ] [[package]] @@ -238,6 +366,63 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "nalgebra" +version = "0.32.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "rand", + "rand_distr", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[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-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -254,6 +439,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -321,6 +512,12 @@ dependencies = [ "rand", ] +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + [[package]] name = "rayon" version = "1.10.0" @@ -361,19 +558,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] -name = "serde" -version = "1.0.207" +name = "safe_arch" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5665e14a49a4ea1b91029ba7d3bca9f299e1f7cfa194388ccc20f14743e784f2" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "serde" +version = "1.0.208" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.207" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aea2634c86b0e8ef2cfdc0c340baede54ec27b1e46febd7f80dffb2aa44a00e" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", @@ -382,9 +588,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.124" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ "itoa", "memchr", @@ -405,6 +611,37 @@ dependencies = [ "unsafe-libyaml", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "statrs" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f697a07e4606a0a25c044de247e583a330dbb1731d11bc7350b81f48ad567255" +dependencies = [ + "approx", + "nalgebra", + "num-traits", + "rand", +] + [[package]] name = "strsim" version = "0.11.1" @@ -413,9 +650,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.74" +version = "2.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" dependencies = [ "proc-macro2", "quote", @@ -435,6 +672,32 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + [[package]] name = "unicode-ident" version = "1.0.12" @@ -459,6 +722,80 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" + +[[package]] +name = "wide" +version = "0.7.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -541,6 +878,18 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "workdays" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e3bc4b29b64419a2983662ca6902adf5313df2a061e8f6104b2dd603765b5aa" +dependencies = [ + "chrono", + "serde", + "serde_json", + "serde_yaml", +] + [[package]] name = "zerocopy" version = "0.7.35" diff --git a/Cargo.toml b/Cargo.toml index 6608b70..d1a4e39 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mcps" -version = "0.1.1" +version = "0.2.0" authors = ["Stephen Waits "] edition = "2021" description = "A command-line tool for running Monte Carlo simulations on project schedules." @@ -22,13 +22,16 @@ name = "mcps" path = "src/main.rs" [dependencies] +chrono = "0.4.38" clap = "4.5.15" +distimate = "0.2.0" rand = "0.8.5" rand_distr = "0.4.3" rayon = "1.10.0" serde = { version = "1.0.207", features = ["derive"] } serde_json = "1.0.124" serde_yaml = "0.9.34" +workdays = "0.1.0" [dev-dependencies] tempfile = "3.12.0" diff --git a/README.md b/README.md index f3fdb5d..6ac9f62 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ Monte Carlo Project Scheduler (mcps) is a command-line tool that runs Monte Carlo simulations on project schedules to estimate completion times and effort required. It helps project managers and engineers gain a better understanding of potential project risks and timelines by providing a probabilistic analysis of -schedule durations and total work effort. +project durations and total work effort. ## Features - **Simulate Project Schedules**: Run multiple simulations to estimate the probability distribution of project completion times and total work effort. -- **Customizable Inputs**: Accepts project schedules in YAML or JSON formats, +- **Customizable Inputs**: Accepts project definitions in YAML or JSON formats, with options to override certain parameters like the number of workers or the number of iterations. - **Visual Output**: Generates an ASCII-based cumulative distribution function @@ -34,6 +34,9 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh cargo install mcps ``` +Note, if you're upgrading, use `cargo install --force mcps` to force +installation of the latest version.. + ### Option 2: Clone and build the repository locally ```bash @@ -46,45 +49,79 @@ The binary will be available at `target/release/mcps`. ## Usage -Once you have built the tool, you can use it by providing a project schedule +Once you have built the tool, you can use it by providing a project definition file in YAML or JSON format. ### Basic Usage ```bash -mcps example.yaml -i 100000 -w 10 +mcps project.yaml -i 100000 -w 10 ``` -This command runs the Monte Carlo simulation on the [`example.yaml`](./example.yaml) schedule file -with 100,000 iterations and overrides the number of workers to 10. +This command runs the Monte Carlo simulation on the +[`project.yaml`](./assets/project.yaml) project file with 100,000 iterations +and overrides the number of workers to 10. ### Command-Line Options -- `-i, --iterations `: Specify the number of iterations to run. Must be at least 100. Default is 50,000. -- `-w, --workers `: Override the number of workers specified in the schedule file. -- `-v, --version`: Print version information. -- `-h, --help`: Print help information. +- `-i, --iterations `: Specify the number of iterations to run. Must + be at least 100. Default is 50,000. +- `-n, --workers `: Override `num_workers` specified in project file +- `-b, --begin `: Override `start_date` specified in project file +- `-s, --schedule `: Work schedule config file (.yaml or .json) +- `-h, --help`: Print help +- `-V, --version`: Print version -### Schedule File Format +### Project Definition File Format -The tool accepts schedule files in YAML or JSON format. Below is an example of the YAML format: +`mcps` accepts projects in YAML or JSON format. Below is an example of the +YAML format: ```yaml num_workers: 5 # for the purpose of scheduling simulation -estimate_confidence: 0.80 # confidence actuals will fall inside estimate bounds +start_date: 2024-08-01 # [optional] project start date tasks: - id: DesignPhase - min_time: 1.5 # 1.5 days - max_time: 3.5 # 3.5 days + estimate: + min: 1.5 # 1.5 days + likely: 2.2 # 2.2 days (best guess at actual time) + max: 3.5 # 3.5 days dependencies: [] - id: ImplementationPhase - min_time: 2.25 # 2.25 days - max_time: 4.75 # 4.75 days + estimate: + min: 2.25 # 2.25 days + likely: 3.9 # 3.9 days (best guess at actual time) + max: 4.75 # 4.75 days dependencies: [DesignPhase] ``` -This repo includes examples in [JSON](./example.json) and -[YAML](./example.yaml). +This repo includes examples in [JSON](./assets/project.json) and +[YAML](./assets/project.yaml). + +### Work Schedule Configuration File Format + +This file is optional. It allows you to configure the days of the week you work +along with any specific work holidays. + +If you don't provide a schedule file, the tool will default to a 5-day work week +with no scheduled holidays. + +`mcps` accepts schedules in YAML or JSON format. Below is an example of the +YAML format: + +work_days: + +```yaml +work_days: + - Monday + - Tuesday + - Wednesday +holidays: + - 2023-12-25 +``` + +This repo includes examples in [JSON](./assets/schedule.json) and +[YAML](./assets/schedule.yaml). ### Example Output @@ -111,4 +148,5 @@ always welcome! ### License -This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details. +This project is licensed under the MIT License. See the [LICENSE](./LICENSE) +file for details. diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..7049eb0 --- /dev/null +++ b/TODO.md @@ -0,0 +1,40 @@ +# TODO + +- update output with workdays results +- add CSV output of distributions +- add CLI parameter to specify which workdays, holidays, calendar config file to use +- switch to BetaPERT distribution: + +```rust +use rand::Rng; + +fn beta_pert_sample(min: f64, likely: f64, max: f64) -> f64 { + let alpha1 = 1.0 + 4.0 * (likely - min) / (max - min); + let alpha2 = 1.0 + 4.0 * (max - likely) / (max - min); + + let mut rng = rand::thread_rng(); + let u: f64 = rng.gen(); // Generate a uniform random number between 0 and 1 + + // Inverse transform sampling + let x = inverse_beta_cdf(u, alpha1, alpha2); + + // Scale and shift to the desired range + min + (max - min) * x +} + +fn inverse_beta_cdf(p: f64, alpha1: f64, alpha2: f64) -> f64 { + // This is a simple approximation of the inverse beta CDF + // For more accurate results, consider using a numerical method or a statistics library + let x = p.powf(1.0 / alpha1) / (p.powf(1.0 / alpha1) + (1.0 - p).powf(1.0 / alpha2)); + x +} + +fn main() { + let min = 10.0; + let likely = 20.0; + let max = 40.0; + + let sample = beta_pert_sample(min, likely, max); + println!("Random sample from BetaPERT({}, {}, {}): {}", min, likely, max, sample); +} +``` diff --git a/assets/output.png b/assets/output.png index 68ddc3f2d044c0532f6097650a5c4b1fa5967253..0c870256b1eed329e12eba6076f44f92a92873ad 100644 GIT binary patch literal 156913 zcmZr&1ymeM7DdD05S#=L?(R;2;O-iNySuxG;O_1o+=9EiyF+joU?+dS?taec(>-1K zZdX^mTlY1gax!9waJX<_U|@)!#6=Xqz#zRr2QA$&LohIk7{{;t;zIK1ef+~HL)qfl*`39oglA|&MucdBgDIaEGi2TA67}#NIq(GQ=U!>{9PhJw%9&JbASe=OGQwo< z_pmTME5xolg^z>;?eW)$RWftda4Zx+DF*A4PB}aLOv2oAywKpUkwbbs>xFMc$ zVG}wM>*A*tCfSk3$2ws$$u;PqaG1M zdjmUD8wXQsE5cv(>VLL&bl@c>{?*W*fB)^Lp^NEXEm_(BZWhQu`d=yZjC2h2f7T5u z%Jb_kmz=4Kp@q7LsU-*=P#b(4jLba0<^R8wzgqlTNwvR~ zOHh*ze1AQe-wXde@%Mr}^uH|s8xsG8`M0|uocZ8*=>L3Xd~h$usw-e%0$`s+1eILC zPqblN(3R);1PEa%zoNVq3I@vt1n7JWD?*2cnnZq=6EakIPsHyR0vF~7je&uZUldZL zmtA^I+;*oUOzw+92z$zZj#!(#YLPsO^o5->m|UvGe%RgEXuPR#7l+AUWfay^EcPoQ zApij3=kt$~z}QDZ>oL5P2q_d4C@642fq$Na1p@dHVHe^4x0ny%SASHLO?nvF3IyqY z7WwTLA~?ULSVuaWvIp3W%Ru`-n*47E)}jOw`*rM=KDKmcmZql7xxml~aopVUt$}0b z!T!~a0VAjY^1(gW308XhY)Fz+XG6LgSBNwgdZSF4&KSx6vF2CRJLpg%_rsLTl-vJe zP$w(|F_05nj1Kl+EK)=PSyVWZ7a{yF7Lfx&F7~0`H+}dQ3}plb0y@%|VwsTs>iD0H zrx6l%XQJ8ceESy=IHAE&U+jjYhB*EodK4Q!AAt97MheJ?WcB!$A7Z~gCbRf3BPC-Ayu0=J z2z-nAuovz6uDHjV+HXtsCGw$Ly*0J)Qw@j^?e`f=2!cqf0vkVfsp|~-b&lrmTwSqN zJ84_OjBZjFiv($@a8Wa~S8tn~a>G9=_&?e<=C7+Kho5XLS`Ba1R!^k`WoPoz2n+cg z>?URuDCCDtkEp|&jJ19&Sy+`ml5cBfJ(!k9JJ=gdP0+mB8x;np0eb_3QJ2;ulRbfA zX76q9Sn)Zqh6UKe828mi2XEN>j0go^B_zY66|J|gPfkIBX*7v7^F_O9txZCTYV~og zrC7ihs8l1un9^YbjmP0KlbdpGy&6H)pHMj7k+xHn0r7C9sF%h63e7=d-$EZptN2al z>Rg22n# zhVxGSN82F+2jGuGsonSK*eqG>&$s=$b@ub^QXiXnR)VIcDoXa*rh92J4sK0gH0r*P z_7dF7p^Yt zjh~ANub)X0cmY{SGdlDfD_fqcn-}*w%c|)$s}qjqOFxa@xWomu-Ze>6+Z`Z)>pmFW zdYtjIcy*6E^o^Yd)m}bq)$iT0d}+VI?>^t%B=@lWh5kZH|otV%&nrx${ zRlBc@-v|z)*KQUX@3?>Cc|SO>a_U3rZg3%XbbeHCt}?&V$pJw`)OFqE{#-1VE%)e) zlQgR7G*wE^FYIWh%B~X{O1kcP$IM#Ta`*jC&|xMpB!q#LO>ExQYj{rkdWYH5bS^D$ zENpeo95!@c`RM=>yEo~lAx%GupXFhtcR~rD^-62ctwO_l=Mx(Oyl{Sf=Si>#y^hzL zyi@MGsYW1)E(62YHQZ~sUE}O!ip__Js3@i0%aNnZ@i2^`m`q*1T;)%k{s4h19Fz^~ zsygG|h`L?Gb4t+%@%@IGnB+?6@E7Iv5e3p5Q@z*3GB65trj$3x9_q9@(m*fVkD{2_ zjStD=vEP<%eJ|4`LV1s)-Z*I1V*fpyxSL*!xB40x&{+CRovaV#YNZdJ7aa~b%tMBXt6?=7yt2f0SO;aNb zKPWaUpA@x~2r!v?oOTXu>j^ZATaSXdHeM61sIJuK2Ws6D*Y%f%_I3my(%q=fZxz@bpRY&BPkp> zXwV>L%UV*S=c2$k^gZgCp3gnF{&mt}qZ8G=@e5bt0DoK{d|=TPLyQmEMw1TY0Wk1G zzO#+CfEcRIS}G#vD4ni(+B#7H6vUbOY`24AXkC8yPHCz}>ZQYkFdEOTkt z-iI$xnJ6#y3OO7n#W6UhA)>XA!M}Y3KJZ5k#vb1J8Ugc5!ORSc zq<6Jqg$1RVr?q0fZ%-p^c#Qo%t&`;O*OU|q1GSzuyBkqu_O(#(Jqd$$9~Y;x|9W-j@cK)mObMU!>+#k4*-QXy z{MdkrciOD4xlt6}jXqs9VUY7|#vXxT029eZ`TEF_b1#(+aZJZzR2iI>r{=|K=Vz3A z@yIM?f9Q}kv%%R$nU*^li+5~g`7F1J-pR!&nvGtiTlL-DLd@z(KKvyZs*zRSKe*sJ{s(uD57AZmQryQUO)AX|gQT1a~)@Ld@7<9IGIB_Ha#hcm!&lbtT4{C=){ zUC2BsdW3GM__ujb&#Ps>yJ8QyBg}#BP7|z*@Odi*tegt(qk{p%t_-vGO8P)EZtn%~$PSVRlNp@^ban!v8 ztPC;ZPTp}cnS7G*NiqFl_(^QFpWb1O@c9}Z(E5s-!|?e4zS*2EIr?SYUxo;pS?SZg z3DT8iNIZEsF`&6fR}p%)nFBMRIa6Sq6ZL6w{=jo;?2GFMC8aIk!lsbq%ja|wuvyTl zgk^L}P~>)_)@|=HuN^>V^U&zeq#! zcqWy6*5I^+_XVGy4AQyixlwJ3azbV)^bd}rRNO`8$1XaWK4YE2^!l;xUP!;%Y8xAc z&s~fuexb91q+sN|f;kdVJu&$eT0^rOqfX?2T_>%z`Mm0ER{nhGLcg+<;O8??yRF64 z)2(eCKDl|N?vwV>%NJumn}j~U1!f>`=VyOW(Iuvz8FNOWhqjmpn)N2#dp`<`FyQms zGL8#aa~tv{na6;Z-Sz=@fGcFdk7!oqaNL~t27UaPUC6y~mQM3$JehI3y|Odl&S7FN)2WZhK(Jt^K@;zjwK8tgy@h(S z#*1zn<(D8>9I?)K9m)4d$X?rqL;dU69^pFf_2j$z)^!=3NzIQ9ot_(Ax8*dAo7@nM z{>Q+U!k8HAbd_5fi)s`M9Gq+~^ZHw_WVTeS&|8yWv+#4nas22>SFioeTc{Vv6l-4S zt1Y0tmgqM7n%flywO0=y`pXx(oO|ada5lwRG)&OCNL|9eYe$eEb>8vhZKnUYGdO*; z91+-cl9M)chx@?WhGwt-EV`buJ8RBPc`7{ktv3#K0mZAT!=MXUgM?TAqc`w}?o6?& zoAbP`ojHM*uNN=|=VekYU%R_xVxck!Rcg}d((JPp8G}F!O&RC(ZPp00EPwY>Yts?3 z%jrr}^kbFj!MFTU+LRA*Pmjx)ao%`RkB@D9QpwB+@0MiSF5DsoB_!ZHS@&R|d9gnL z@FsBaKEGK4;3O+vBYID;Z0XNuka|8Rd7t7G={6R;d|P7YazgKmo`fNYlus#>wg}_= znadtexO;Y_Rv@#G=3|8EjiN?awM4Q}R8BW%c(qEYXnY|gS@N@Zc1XDP#ikJE;7T41 z_WT1t$_9(g^y&KQQiD-glXl^o4rFnMEp6q`(JzR*2lQ)(rwi)&wzy0daT@uviS`ZA z%AWxRNwH=$8{Iq&T;}pBz?KZw79z}S1mCP?-dmJNygL$F?FLb0So;}cwX5(z^0uId zi%pkDr>*f41eM5Y;?VP`jGX&^w~5ZRYpkcXE-V$<32{~>p1# zm&&@!v4Jx5NL+PFc}z@$R$HNlwu_hU@oPrS zk&p7Afi}SuT`?{2OBUyp79b0@v@cvP0|jcZFiHLCDbr9zL$(zSwk#$XWwmkKzHD^0 z%kLSMN+GXmb?^Nwq`mw-7Lv=AaLe81m*gqZxP;Dz&XXp1b;VS^!tZY^j}dkB7=)r8 z4f1Gf`zp@K%jE0MBVJlhxJ7@x5+Src=dfO}0uy`feRSY%Og}BV8u2{dc)?s&2>S>2 zs;GT6{j#H37~h7bsdnfyj?Mn)S?^NkTV8lk*eK+`0lzE$${wV7pUryArWr4&iwe2j zLQp_mN(EXIQ1J%`w2}hhy<#t0ZchV>ONN+@-yXQ$-UQ6T*3~lEHmYM&oCKTJ=8 zZ|No=!zpnCcKJR-!FYD|M9w+_Im{43)R7_mJkyN(P&JSut03O>kon?nSEi3!E?+DA zc|^GOnI+S{xfl#^P3jZh=Gr^%8-0h4rkKL7bLb0GQ6&Hajy&=P8{yt;E59#1XqKAS zbT5*l(R!VT%k>Dse0WHm&*`z|_V#=x4Hu95F~nGcSwBFX1i&w~D41eOzDII6mm{H} zq0!8?uM#|zNH6ULG*FKsDM_GI6iV;4O;$L3I=g;%=UbuM`1)ROdn(TsPw3)}$x~L0 z#W=r>ZcV4&bq{j+y8zy#pF&ST#sDE4D1M%P23v@(6%3V+9ak|eqA6D(i$YeA!H zLFVfet5ZGz8pA&1Hf*ezrr!hY9-c2hOY;vhpMzXlPILIES5l77N%(PonN)T0g|2Yw z;OHOAD*8j0$+e*p;$2&a41NsP$mWl$q)9R)0+1@vU0-@vYesw$hE?vTqw)B98^arF za6njX;sq?mW?YQUKiza+51{!aldG&$Kfd(PUdhY^TjOI-9$O5pmF{m_z@-fM;_XpH z@&s6D+9@Fq2||L|YZ${jTqH+_QW|KMyU{bHv)FX2du!Dj?k(JCxAm=Kx-T3K545vF ztlf?V?849pVAARs9v+ynJ=g9&M0jX+@)PT!N?l^n>J&?*R8y4bo-iD18XuMgbKjHQ zxLN{OjT!?}W=pFGfLAAeZ)L5KpQT`{ity(YDGGG~!LCKLlwR8#sE$kc9h+fdOk7wE zr$#p%2@e;D?;0rK8E1UgVNJ-x#l&J3;dd$?la?RWxEZmMy>}gI{TN=#7ghIiW3~^5 z$Ac*PE`fpJEC=P$WjcDRwCYQ}kWQhhLDvzK#1Y+6)QxBiz71r4_1;kc>IcHMPiQJ% z71d(Vl^C8=a^3OL=jQ{NiiYt74`oJ+xefY{a_LbS0&v1~NWzN@mO1O1TcG+KQR*@$ z^cJUbwU?&n%3Ekt%A34tjWRokhSC;_23c(%cFat@stTl!P2+?Hs$@YSm$zk@{)DyEw5;$erQaJ+pHOwXgjUTSQS_Zq4)xE z(ojfrzs9V=T;o`Y0x~j6(^F+fVo3);M=3ZECC6Ll)ia}nGemmeGIcAg)0*SSsc9=F zVl1%DOMv+pNuLNICgsM1Y7yG#nYR#g53_9k>F*8(I-*@1x=dk3Y|N$Q;C zd=rdilv66Fm%<2<;SF1PtHuuD%~_X_n3m1=`;)C^!dr+<^wuh z%V5DRw~euy_*gg5_Ae|plKmF*3U>V;h`lJ%O=WE=X$2vJ(ceY$P08%yoIZJU>Ff~_wvQlBO6J7FCvAv#;RhEas5D>pV>=;$Vb$Nbv zarVjQJ-XOvE9uDPynq!C{}E#Ct}>vmsa`z3#tX25^cFr<51{9~a7w&b1FLn(@Yd{- zEj8z_93p``Ft$)Ze1pZ`th}J*8b}uyRq9qz?Rv6D+k(A}pv!JjpIt0g*W7C{hqO6P zV>e5Xdz!@PwA?^-+1RVYK(}mXm*(r!=*cXb$ywSSJE716g#uOUW^!-?&n((OE16Kf z7YB1E504}cF-+p#5j)ai#ozn?_)0>T9?Y2ltRy=5j1|+gBMOYnnZry zK#f0mptZ3KJ&b=ZyXE{YT-c_(>TcEHN9`tXP|-M^4b3QHO`ys5y#8+4vv9AQ2+Kzg z-t~UHj1zvQgwx9b#SIrZi5X2q3>lHQnAND32>}x!=cOwk0lWZQ@9kv|Y?sm0ee~&@ zI~yf$8NOE-G5>%=0tL&?P%Lm69nU71z!f<1C}b3&6#h{!S^xoj2Rz`6p~WXtR;36M zMy&XU1_T2`$Pz%Y36agUG;1-mR6S77Ep%V_m9T}m@ba=SZk%8wESs_>^7B#IYoo!* z*iuXEd{k92QJu#CEkKbD2u8#J2jpHQ^#JXFLfT`xLrv@56Dk$Ssf?1cya3oM*2CZ;k`%wy6P3m8;)F5*J%0Nc$!w>>$%!_Vz30Q> zzOJ$Thr!`%n)%$qS@Q)ffA9C1UOBb6SUIrXd_QTU$XpxSlZKxY?>!-I@8x@)QPvqE z=JD(G)j|$>5{ME0VEHQRl@X3awm6(DNoE*wAvC~ z*t-IJf$(4ACWmkrxy*+Lo<)a%m;3AQKTst2OY!u-_#oS%ufRmCBovQ8-mz{QQ>S_D z=^=*bAQDIbH{A;+TU{k*?$DderxkH{h31o7HR`!mJ1}>(W^02zc;XA1r5XUw9;}MgZV~ZV|uy@vj$O^nY(_~+qTnG z*iG=R-A>84J!=?Z+pXn@4c*5qdeBf*8-Yarc^!*fD!$r~!r6W1toC;(QDUvHTw;Z1c^Hg!j=dx}>ESL&8PHzMhF5(< zmU*7331&nX;Ta7(5yt+nw#H6v-3yo85bS02`~;tO!#-=SpYn_$dQ|4FpMjPy(B709 zrvP8J^V+jkIfP)9iLETjqZN?+O<7L-D`}|R&qfYAPGEeZ zPsDm)N)DpY$ex9+u*w)#9BccnzHf5NT`)(1-LEHRuX}#Pl(>0}W709b zcx;l1cpSfK(5Kvw2Af6fFDCA8%XSRTXafPxuHVbyQnqFClsrF*yZe5`XdQN`MA1jL z&t~tP8hX9m=gHp`@_|U2Bd#oIFpK09eq!}n0Z14r7BH553JAjRir0f!AvLya(oD?# zsfWIf|C4fcd~;G?BYc0SR(8!!X=U>vDXAvRS1^l;w<{B69UcXnYo|`+hr9_})m#2J z|M#2fQv>3>8tSr*^gQdMRP1EL0KcylTd|tsDeBLR?k6Zyvi7*~^^G}&Zebs-n$|%M zdu)=b@KTH{2OMhv4-h{%7%K;&Igr%39W-B7=!5@6jmPbG(pi0&TU>MJj_Qxhlz8>L zq{J9R_oKp;_TGo4^sI4G``Y@tY2x;ff5!51j4E-_eLi}&GW|*D@m? zGl-b`R?{Y&>xK^@6d?)TxR;L8S+^^LId-C7LOdZZRe+f~>cyiGh!~S;Ocz8I&_%c9 zt$r(Qm$){q|k$Djs_9bwGLXEQDgM&mQKcM`3E+2@I z&LF=*(AX_YQE=gMGBy}FGgk`~Q4$)prYn7Ry-luAB5i;`bbB&r;n-g6Vh%!?bN0)M zk+`E|9A_Dm@5rwAXGogehrj8DflA>AZse>tK%q(J4IHv>cy>p(kO#PSwm@gHs0uox zJY0URc|Iqr*lamHNIkY9NUz_u(r(zTM@Q2DgU(yFpAyHDYWQ)g;D(a)Z+=rxn;uIK%KxM>98JiVfzj(kb4**JO6lUX5Ocj z6`3}2$MwX^YENgeKUA?d-hdKyDd$RjZ|eB{GnKY><9y?a!x)DDx3Lcz+{W&H(bQeY zjxBC<5o5)Levyj?cTnuL=d4?LR(aAUyjjq~3J;WuuOkldDqN9css*XFHr>+%(#|PT zGPh|>!N?)Ze(Lyja~W`6CXnaNrFYuL;mnzG#`ASgtBWbxneCSMjQm#)SdYGFnB*U{ zr$g`J&X5gp744Y z=%Ze%7r9SnBX?sZw#S4zmO#228aP zrRTMat?TJK?&)p9jrMd1@ZLr;c{96hfDL_NfPretn{zzh>k%9XwO+hKqbLF6n?Y7{ zsIPQjFQY>0!eHPI5DTpcpTZ#_Avtvqbx73H3pL3PFnOi2VOWRxpq_ zE1LoNF9NF_I7rjo_4|}S^e-|sNPFdh{5O>t;+IMc9ZMsO{{ON!;rLgaZ7Z1r?j^WT zQ^oS=a=Ibke^GD!eCCNJcB>Q9ZU?P0_*L0C%P*0%0&I>>JzF6e#L@n0_3J1AAp30; zEz4YIPY6bo?R-e<%M}!dsm=&rx(`X>zi7V$l)s=*G*ajz`hO^V&_I2+hltX8`!8KD z1j)_1GRdECg8!w*G9VDgVL9wR{lCENoAyg?<}@TTeE(O+{|p%504d!3M>*Dv?pxjkv^45tRWIYngON{1_o3-W7>+jRxUI!_MTQ({_FZNm}d-e7yu zm*F#2C3C|TacmEO%Ld!MMd9p{Oq@Pp~rRq?mY(I%Lw&`3ewXE)}^AS>lklYGSDk!;^*x@qp2|~)DSvscrHI$Y#RyCsD3D;vdD{YEVuhxoJA9?@0;1~c%R%z*VPIUOZIu|-0o+L zHxo44;tdUDQ=N?6wWfyJmhV)f^B>@IWQrhe=71u>-^Us8~Mp~?1& zY*Y=?dNy|aMO8A=c(YkC;mYV|TRR(8qGIKAC!?mx+R!y8UuK$U>>Kv1&mSRZmiS5T zv5Wf$-1U>u$++F$Oj~UJ+XJp)Pfz+^cPE{4s6W1(y(>+HU?%|CaCg&CyZ^)9Jd+(3=~ zxZaeeU>S&RIOCT^Ue!+PYu8cL4Iu7;DC+m$rQOfE#J*6%Xzp8Lj+8r>JyB80w*Xi! zI%k|&%SE(TPrfxZY_oNjEzg;z=73G4(Jmh~q4~?W+A_ zPV=D%t0!ZBSofn(jU{N=Kt~#s)qQS`7JaVihr?IpNmT}o-sj9Rq3tAJ0#3t5Dqk=X zhW=Sa9n77z_bu^yKLJa&4597rrM_<^>XVSa2iaddL2R#w)Q5V}$kDCYEGZ~|WP=rH z4XN-~p)jvI43C2#oLK-#sT$ zS<-U8v{j4ty(4arq7W2s%>Pu2tgtkDZ9G!;f^7=_Y;%**yiBlMtxi9?pcR-^kc=$Q znR<0@n-5+`xp#r$<>>{I1eMeD+e)Y%&k{S%l>LX!6VI+eb6U@v9lyWN`c3bBr$Z^t zY} zvM5$Ml#5jIX?(&!)`Mq=oI95wOp08aC)7wcTmO)0~oXl%Xqic8ryZ zB(13OEoNCoZV)mC%W5e+i4I{~$`1WKsO#%8iU0yMZ4^Ww(rXQ^`*`U+Tu6%^W|s(Z zTp9DEzugAhlkH)#%r3*Dn*guI_ZRf?#S8&7PJl%D0)r9t3C)l z)&y(|_fH41mBPy)HJo+`fWNpFpBul6ccoBzyx}08Wpi4Z9T3MUFSGck2gQUUkcEDq za7g);#79S_8guA+zP2Vh(Bpnbx$G6 z0_n-67lT2@{PdF%!8h4@YAwvQS$-@#Y%SA`JFp&Ihc~CzORDZ6 z)S~ctzT}#afdVwXRWko(G~peQkKDrmbiuRs9>tE(A;9PS@nDz3Oo3VGVM0(+rQPK# z=?1<8&gP=lCTy$}zydO}LW03uX`sToQ%YqiZD`F)Sy9w>}Xx4GK0 z*>Z9f9H0H%|E>6GVpipLNpxu8uqEv;H_%thPvAVdOd7&|unG|ot?8N2!ecmw0rg@R z9cJm6*^cDYAVZP_wD_ycE#5wV;*LXJ8<9=1%}OY}rh@?&0Sgn*_H(@mpExVSUr#|9 zdPPJ!Med+tc!1#mh2{}T3HhYiQgcMSEYV;B^!Yg5zc3qWxW!toy@_0uXt4V9=-z6` zpB9MYX~pl^F|y_EX-j8zVefPB8uF%;d`Ikk-#F&L?@PhK(}u}<*$YRBuJ_u2yICIp zBbVjf6+$xO*+D+wYTj{Eh z)v6B;zB_>n4LFey!=#bv^q|qCj%*BSM(&=wZ`09!E8GZk<9E0E z4+mag4n^P*<{r$8#T5(W0P>i}4`>$<658v-Mer$x3U6BfxWnOO_t0lSJcGLnw2~nB zeM+%Ig}Csv`{-U+Z?7y;0T026;7oOuzX!6*VCw6qDk@}tM2d7 z!=1~&c*e4k$Ro+$?L{W?anK_TD=2*anQgT{P%)&nGhoW)0$nEL3Zv|u{Km{?-J^b9wX79He z8% zuDNtpFU5U=Y>*>ZDO0}Wl#mc%T0A71?tWzr7@W(jyp(mNh z()g~iGt*aPrJB<~ttr@v4h2-}VYz-dy6$r3KDZ$-{ZfK9ICY2DGJxRhCeZPm2KJIk zpQ8BDsJ)Rf_7sV=0zaFDy%0_DP;Bq%L_U9tXy#^ZN(n@#PI=-)_(ym}5-YT7(F0ZX z*J+JS+s?EPe!2g4I*0#t|97B%t}e$b8s#rHW%9o`E|mOo|CcC-DQUibe`yO{#xqmV z9!;FwykF8HWZ(Hezuy9{$n-U1??I>jG;In15&V2Pczsv27jR8T&6cS=0pbHR58WW| zE?JSpG8H!CWpZD4+g& z&(@LMkRv7_HeJ=i9s^SwO^q7Tz7L{|^?mP>1&9Tl_WsTSCeDPNu?njz=V!692dco1 zF7;f8Ig>6C^` z#YQd2|7subZ9%2cYnE84UW?-S`cB^w@AYFfp-b#5?R^dB!^3WVH_^jksqWomk?yV9 z&_L85@7Qmk2^c{U&U8hWT>0!K)30&W`m9=$jqr$vi#6uu7Sbu&B2E0f{yH1iox>(aZ>;X3$BQ1K|`c`A0IR}=)ge>Dr zq*^M#vTqBqkXBicS{=0eaKvQ-3Q9m@e3Nj~q#iseX9W5<&l|3h^4(5v^uwpR2a)&P4Q)mf`Q*r#I#~O9<(hkx=(X z0xaoBGOcuq=hvx<0)7J!?JR5H@$}-sd|@C;Dc-wz$F8pIou)BQZ`6f?4E&%&q;and zzYB<%%`%_2DhZu|OP7(7??10$-Vd!+EizoCz`b(A)2Q7}Q+P7l{hw7!FS3)Hx0JG0 z!njNG^CCj6cC1NC6OE4P)0r_5Tm>h0hZGYHn2@;|6Vq2O10tzhZ=* z7g#0*gq^JAIN4z&#Vwe12G12xev1d5h&iT@Ik__#Pi%?O;H*LK*t3w5!n~#m6T;wq zI|&rklQ%|Zl0Bc_s!QH<$g)$}FVWFTOt!R@)E*u~FV*e09yP~2*s+T0X2Pq1b?;we z!w;rVGW8*REY@vrm4M`lu=S@r_(hel_wI(vJ~}EPA2AW@qQlY(%o@ODf5#9+Lj?Kb zM)kXgSKHMWiDk9xZ^T_b`MY9>5|lL!rEhY*qrP%RJp4 zCMD|Zj@8}FSJ;&I+;6*5$N9YP=A!LPs7m0DUi?GxDIV;C&har{Ymm>|aIvI} zr|tDKA|`tDq)#O%Lg}i&pX#Lj8V$ZEH8~pkdE}mdshNef5-&f1Klf_aObSF^CbXU} zWQ1>nr3w=Hw5&-lwwrt=-gGDff+{^~1O-vMtiA-xs)-disvui|Py`O2L%qC@Nq%O` zrDe__FekATBXPESsrWfJ#T13S7=RdLhF{7mHw$CK6+Ah8r#=gSS;u6H8HeD6ps<(> z{O9K92?>}v6+_d_LU1JxjAIu8u}fb9to#%7g2-E_#MInEW(7up9;Yy@gVLI+&vBg* zJ>->cfe34r=wg_NhW0XT=I>U#H)>~J!$$-3yo|>ROUPI(!{*iqB%|beTEgUvkq801 zT}$c7SU_h2nH=BT#);=jn(Y0ca(P32xTEp_+Z6>|^=3dM2E?LI#8~345e#=b7gk8; z!)cb=`yac+Z495&wac#>p0Ox8`RQ+-ElBij!S^~{+HZVABW4T|JoHt(-%I7snyOkR zUjn}r9h9Z8d7<iAr;K1b7~z>GMT^yDSePE6u zsUs;N#XSCv3!(qwLePjG03O5uqf9ryWGW!IJV8#c@NiCH)LmSbSF~z@@tSrnalEJ) z6cySu6#W=DZz@SVapD$S)R*S?z@%3O*>{S>NiXdfoj(pd4sEL%&r9tuK^7KqjFVu# zx$YvM*J&1=xb`EfRdFLu4QMFA%3tYtteWGB#Q5Z0E`bc;&-914anML@H=BSn9^K!) zejXlud89zWUEiQWzk}6rqHL7@*o8r<m_2x#@1LM#3|0Rz?Qb9g7Btasg1kNv*dap<6u&tx&0IInbD^aXN7w=mmo^&DHE;^= z{x2!I7Z!*RsL&+2@cSQ9WO9OJv*5)mm=plUxvgS@{md#t_c1JNktCIJdMcF$FK4`g zPVCXW#+|@)gwP>^KuH(&huXDkvNTqVMvukM-ln3iad2W6V%)L}vTD-{2CoJIYFFRS z1C7h^nFMu1ofW?rUVHu@fIMDuEwN7}f!TWBgt9_Osa}{iMu?#l-O=H9HnT% zutC}Sn2|+hw69QWQ&V>I1V7SF zXErR+k30tw6J?C5q<xe5?OF-)PvgQ8k3}8A&gjTT9ieg%-Gx`Z zNd$ZMd+ zNH)*0gEv?W6e4^G4gY+ne$y80-au5=5MX(L@o&ZH)v7MYN@X&O9zExNZMt~jWU39u zhxI0DUpF<<-4{+=N$jS(t2JdH70RBY3>1SS{p6X)M$jX(P1djk68vg4#jM+5WEjeT&z z&VAJHrGoNQBl63EH3ZA6oa11*4{UrbACF2+XtfjwOQ~>fMW;}SSJ5mq&3^k@|x&h=dS42Oi3W7 z=&f%;+k#Q{vd>Yj>Ck<~noG{jry6P`wII1aUVz<3sv38EVL>`HjI-|jN@h>j+lL&N z=SG`L$uJO&blxOj@6DqJ=e5R%)tS2}oL^+LO#w%d6peJ+E^y^?g7vnHyNJv-K=qgQ_}ljQMg!qQvpMI{ zZHHMx$54IPN`h0Kg5ZV>kz9p@ewg{&j~`u#c)tqom^=8B$W|oTj~rP~*C;CGXfbHp z#lp@V#g*Gb9W{g$ERE)vJe=ev!_Bo9V%K}-@RaL%_!-sIuE_BcZtDN}WY@qiLE8}2AHT^z|x=$Jvji<1QTXl7rLkU(FC zft-$*y-Fnh*1=Dzl)FD!OB|ii^YgU|94`#Nn+{x2z1GN2rt(Tz+KlB;@ucb8_rV-lsn=ri~2>ch|=P&fK3R> zbU!mT46>yGL%mAy2BRD5j*?zTPsS_)l;Z0;yE6BN0a z^N+qjG?rCn@-s)JADgaf4mU2jK}^Qi!Q~)G+Y&*Gb`O8yLTh^OMLjk^PKy&qD8L{&RZ1CQYd)K-Z3S!(F1v;Q$udk4bxZE zLpzudGWgs^7Vp%LOJKbYoRcN89UiunC2ANw9azb9)8HxmS-Oz7ujmg7_jqlmwRW&1d76ZaR3XDbxE z{o{WDfcDF7Q4S_@zk!0gmLsUCRJg=xfAmQAYs2ZIjaB7<*ZGbfuq;*IT965z%uGsB z%|Ws#-qpAoABznYZ&jU50roN`l!Q`YN)|c3HB@jJ=zq68gMj(!D|c})tPJ3DfL@G7 z6^d(w^E$9k-YL#k#;q`+4Z3jHCc;idC&M`(GC74@Of$H3v|PnM$prEUtKj*~^t+?V+Uj zz+bNJ;#W~%bYX^J9x$!GSNT?^W!%6Ns2w)uj2wP<(J`f%ydX5hW554c>tM4Ft--fX z;aK{m91rRhhF=7#$QMkhUMJx5*v*XqGw1DTBose|TD;>KhUCPH^t)O~-I3DU+{I?Z zYPzU1Nrh*PVcfaL@-Ri3)J6QoR4ETZP57t?Rl# zAZUU^a0>({xNCyDySux)6Wrb1-Ccsa2X}XO*hOTHk-64>&OVoQ0rga`R=u_N|D?|+ zjNHzbjh`u!PjopIeKZ!L{%>#B<$*SnbWcZu~yEGpI97!lCHQ{F&4G0Ys_Qqxs=J%sH0UPaMK z0p(N<&PMrZfjFADZ<}x>5OYv@Y7q98q69Hm4W@!WCK(#bK%dU1M?})gl2OHZnP{Y@ z8{vhX=3AY4YoN+aZJppgEHrNZM@aeA4TV7~c}VP#4`81prU0U8vo& z8J^#9Zok5z++Tsx%HF=I)om*iB@-igA%C*{8i~Wy2+vyq5Rp#c-XVG+;14^K;dvQ( z&veH~1XU2^zw>E4GM>y*&Rhv_9WT%)%-Q8ia4N}+;cD556^;fBgZ5SEbQIG+Kde(| zw6VsU@Pzl`R8OI!{k&S~QL4`J8G*%n-nmFY2)seyq)|F06a>nE-B9lJs-ayc@Hy$^ z4ZW3X>+*ybE16~XU-2^ZH$+Xc-G^j;YHU_WKzXu^KaHr&c}ji;?&pq(M=0VK0OEA} zp;uPBSBvG1`TG=civseQ5di_z3IhZzq5t}0-O3@(^<>sdNoN7%egPK+?WZGIVCu_f zmsPNcy5nI>Q5huRO-Dc75AiO_ZQnzL#YuoC7?8oX!S3eLTMjQI*^!yHh{#6WFzWnO zgK6-;I4wNlg`oMoH>gYZ>|UP;OFNcmE}5A{3r1U4xpaYMF1a9H={3~0F9^t0LL*QH zY<&hHXT{BzYNkba_^?~#BUkTe@KHY$=+6~rkveQnvZ0ofex;ixNxM)fFUw)ok#i5O zHq53FPfKI_q8Hr6oN;16@YFB!w%;;JF^1Fo3)lnreTC2i3tr3@IY=rljq1;nYp7O8_4YY{vc|;oWWY*X>7!{Fd8c*5=i4cZXtO7Y2ZT3v;4Lhg0?PVYVsG^F6m?IXU)4FC6e{!|TA zV}1|78VeAO@bIeP(lXI@XzgIl8D(ewaDh>Zr?z~bmu&nZs+_N80q+q{h)OK22@7Vj zYAWY`X}x2xBA~1Y7#kuy!zIqls`2sT4m$q5ud{jsO>nk@!;y5Lz^R~q?f;pb+$b0j>sLS6SDyt*-9=IT-yWR!Es>l%sfEk%Z68wjY*b1M^x&{m> zb^=`Mh$iee2j#*I#)mXYf4$i+hoIHFS9@P#L9FM$?R^>?AOcsiO!)1OfjNA2@Zk*> z7?mpa-mgS7UMSZ_ymTQ!5(E2oZdY@~Gzp@0mbFF(#KARX<=x8ugrc0f+V#KH^S)t- zYFB)}0ZaUwyEe@1r6hzyp7FIgA=0(`la<3-=cT16fob1pRRH|dI~#{mp1|zt?Bze*s zbKW*p&$TY>l9?=I=GV~ZQro8bq>y59r~krwf!_T?`$jUt`sxVu#m-mvpzlLS)H8OGih4d{d`FUvPHzcRHmj`{pI7)rKc$DEZ=UMV5dlvSQn)!TV=iPQlk`J>2`%C@4U1tH= z6qIq2K^lBbKB1_9v~?#Z6xT+^b_{0eo=);4fxyKpeNBlRc-LZvP&SG*Z8WL`f|Bv$Tkx!~2QH?ios+kQ1s5j*orPQiVLkSJ-mB_(Pg5 zz1Qm5r$^2lmAgz=Wdty1YJK;)M^q`KB@IY$z->hBg; zfK(`zM>rSH(TE;JHPStS#!v2r)3Y-wcuc)RB2QENq*drU9%`#UeR}b*lQly1eS%Pq zA!g?S9qqStX5eaHOFsc9=y_F$Y+7ZyCGP7-jdCiKnVvphxwXBgcP@{X(%!fqxzabB zJJg#_T%x?$;I1fDs?r|59|E-#;u;=O9o&5b5jRQ z3_KSDxfFCf&a=>;ayKp^D=gPQLzo;YI#%c;p^r~#C#%KzDvY~8<`MK(Us9bUmb`!n zEKbG|H-&Byy#&FqIHQY)u0a$(Og+|Gyvua~9(p7YWTsPaRCF%5k@kU8^l@$NdB2>m z#Z|0s6@M$(P+A7B9}8g=%< zUfnW?ut#!YQ;LAYEm#+TZSwgx1Zog$18ZDw1?UW=BgHW1b>V@i&V_oHhau^-C)DWY zWcQIWK0Pe)g4?C$y(zv%{(G}2599L3j)_(z9NNH?1ki-d-nwiei;@3%PT^$p2U{mf zxda`+nRs)Tq3EJ~9ZK7{^xa`@)_7=*KEP;}7pkUp(JkYpM;ZvmR1f5t-aYQa8Sl&^ z4QYzK=w?JyR&P6v2Hh2Mj>_Z#Bf^H`+5ly`T@UB~!(~BL6ZvXU&R8`kLX}7YY+Rt?ez!RvKGn7o+SIWqF3h(`NWNs&Kn~+jQvEprR)%OZS zOz?D5ArGiPAC>KM#+Zu0!9w~_ALwOJ9Y%<7pg<@@d2XwFP-cfzTWNW?a@M{z!oX090-mN z$L&CexY*IkL~M4YcuWbP>PG#G2XYpu-eb>Il8jUy3HL`p%f~C1SiE@hoz9Lo$;j{< z+;W{BOd^VK0@zc;RuLL96&CNwbZ;|4C-M2p41Lc2ohW*%FPsTnZu+tipM}|cX>?#z zMhGxbu^^6x4=*$<|5^B( zKj%+6KlE7+zC{^hC_KFf=VO9ZZ?lW~bn*FUJ{+&QBNUa&xeTu+dNUMu!hGX;%o7W( zh;>j8OI9pd{6YvQ+xaVN;`!bCqJVU9GlzWx&AHtD|}F4&0k1&ekf3$lVButO|af{dHHu zi}jb$2)LRcM#6nBFh{y+VfzI@^o)vvkk|$4;!%aO2xxEbMNw9*>WxxB zKCOK7b&C8$v^wwTWwvqo6wf|oyeA7FJEbZlH2Bl`W&&a0!1qoekJGdU_L(}Kp6j!1 zwLVck@^x;*XD?bGi`Cu0lj)uv1Are5#LE(ZN=jT7ban(g@K`eeE^CF90GoFq*1v&8 zrKFRK*oNpf13PEH9`DxhsQ*8U{pX;*ogEann6Qd#o1~+95}6s%2yTiBzY#YtpZJKz zV^Ei2qbH3j0zO%@aSw(dYh$>;+A=DuB%b=@r-P)ouNmEt3~)E%?_6TS=?Xm$almA%l8qhpz#lK556#5!IQ-K@SQRdNn z-n$Z`IIrrjxmh|b!3Ou>7I5>~=5%KuWc-q5c!-r+l8vzN@;rPjGHZsqa&TlF!Dx>C z{#-iHh#_=cAn$H>>=>Hvr1y=D=VbF!trDb$1Ek z{pyE12LZl=U_-Oop-6I^I*&_SXEDknNg33QnKFeJtx4jAKYyN+GTZ*6(&X9(i4kWI z6@G9b}b}86@gsnDo$brngZa2v#s~;Pp-zo(=%Se;x#0hHQZ7^BZUoOSPi7_WM_#UD;>4x6_L>X)g6`=kZ_Q~vnm9Ls>`cUM(U6cHUA&sX#u zIy!|S<}q3{Iv=E=7a)!)CikehA9D~}**Dr8=Gfd-d^Zjed{R@5AvezXrR%Xka3Rt} zZeP3?mT0ojeVw`AnU8(G1z_SQM#)E*9ZjyLl9qD5oD^xDo!!Q#xOyv!(UeqM!jYAG z2*nx1uCV64BR%>2)9kFre!+J?dDSMXkc75(rtJU_b~>%AoSrRZ<^Q21g=+WI+8FwZ z%b77PW7LeEn>Yzrrt@g7iKAa4&E;>v5kl{2sB9+n%}&n?Q=JHu5UKe*UvXT_GIEj@ z#?l5iD9BwV<;X$xudEQ@ce{$|sRtV?cNfiAR-VRy7oA|d3D%Tomy$UMN)|=4LqFf9 z)S@Z5f5!JtcLbuU%B)NdkQ1i>rz2bif8+Hy^*=!;2i|}dAk}19aTtG!QCwiPTwK8g z;Z!Vf`$|L+Avcp$o01wPOH>DE5nj9y`^)znJHn&||L76K`Kf^)yEU2&4c*{pET~w2 zS-?Fvbe`M%Q6JKk+M?yirpfj zs@ABl|5j_FSRi1Q1zwp7`t516cbj3RkLj(6VIt<`964ZR?cmo-02|%tz?3}i)Wn%}gSgVRJLsi*29>beiXi4G?Q<*$RI@LypnDi8G z@*tMsAj!NPt(d)oh!#Q8R9`fgva(Sy5t=mDs$7J~ombvjd{wo)?}OPcerYfPGtIh5 z{`BLx_7BljoB%S(1{CHxX8JTYx;Cm6SSB(E~QLJ4sy0QR!Kv7Qp@H zJeTXtxnT1`?H0xYme%fecmWO!4}vF`0T6B=i%`GmOHHjx!2Mqp8n0%VV)$JA9BoUi z&C!l4(rK8y^zg@Oy*0?jfn$b%jP$Uq@_)!lPvH;mpq#9^=j72;_(nSt6}Q2in%^a7 zO_fB}*ug!n{NkO@4gcYtuOY6^S?3YnvWh!u6`)5e)znSJ1CEp2Hgg(EUC&DVH-rUd zC8`!)`*oyZ6`0LXooR|LWmKbJbkpqMy(I2^{b?pu2)9cey^8EWD}A(W?#lRUqwo!r zIIp>M)ta1`E|fX=)4JPH0&>Rbot;lA6rsC=I<_kWX`FOQ0PK-nARO>l$gvEd#NdG> zpE3k>wq~;FTvo|)uv;A-&G4@f@(P2H`+7><75MGHL}gddQuQ|OhuV))4FkS0?cf=( ztyZT|(hqgT`EVjRG`&V+(!ev{@f6Y|JMo`F4j2ov#iYF;jy~@UWo;1S<#Q9<9_*@; z7G|NGW4pOJdF|=n8Tl4a8uyODX5UxlMDa%&-p@7}>a5Vy8Q!Aslyk>>Ig#a5o+Q3f z)hIB?oPo~Um4hN{Pl)7EnEZ|oTq-h6^^>>T?_cwJ8wvbrL-ACmCZ)Ba3o%mEGSya} z&BcTSvNF4&jq=!*_tmD0r;+>dl;A6o#ace^1skIa8au>%$y&k~ElB?i@z(oW=RSV{ z6kaudoU`6mvjb^oL`30C2yXt@1^cpmIpEq7F<6kSX~N&iv1f7!&`{3mn^#SyBYxXN zN5{s?!xc32P%!fwInv$>9G!W8aMpgZo*r5!itHcFV+I05X?)!i)8ZugDex${8|2w9 z=Tl4?%Ayn8w~LNr+=3uKEVE`nN~2p zyKVQTXl1P(B5&qk*6dsdJ69EhhT~)TM)%;du>eKRco+Cyou%_`duZ@<%F_a(td+#a z-0%DFa&LO9B|ezjZrdW_lTiLT`f0!c#{)sWhT!fX$dhbkz$Tm%YbeXhc`n;Y(oV_) zTg|ek=Qt1Z_?e5J$OwKaHgo=Pz$`xrsN?ue;bhWAV!nXy*kT6_%usoW`g%`JUNjIS zqJ%P!7>@zfgNuwfm{>#q0PSh`Sg9i!UK!4Bv4&>`fLJ3#3r0F9D+m7oP)SEdE!j3^ zmSXY&h7KqW!Bza#5XRnU7v`F5nIeCt{g_q)%=Hu zxHc!exL+-ACGNGafuJMT+FoW`%Aw9)z^#Q-Y}5KhC_L;4s9`l_2Uwe48Qv`N)QM{CE%CTTt<$9HAHwrjs z{c?32@~#G{UpF4MFB=}I#6|%A4I}R9JH;edr!Q$P6|maNR>|SZsJ$D5uCWcLTXWWJ zCo`IHi*4%1e^bxzSEs;$9)k-{!AQz~D?6(t5Nu<_i9$$M%Ztv-feS~waYNllT=e?W zdl7SaWW?vzUklRw>1&lu2Gsox=R31vjX7Hu0sxIlK9D`WsV8L_)2VW(o$tPFc>#LSwvKq`z`Rlcy*4N}|s>WV0p5 zF@M@IR(MyZd$mY%zlQ4qO`_stbsrFpd4s{t!Gp4WO;?+?aN0da*c^p1$j~_0oai)m zgedJ;2w7e918a+LT{qaAVy}(@YvVtm;01)1L|`u!lQ&|pUtF{CZO!FFIUXEgQ`pml z0EXtVde5uf47WjY2zg>O5k&CWynbugf;N2|Qt{XH5NuoPVkEl&Nb0R+qi{Q!g zGx`Y4h&9%L^l+eW0T5YxB~MCXTsCmC#|1p}cLkA-AFpxJ`72c;w5Et>CgTNwWpfRM zaQaK4%N?n$fm|eIj!IVl#e2!eJ)6DDw|Qpq739l>Pk?NG(DtLV7fR`%z&2WUKR5Rn zsG7h?__A+uUnVJ` zS#Dz=UdY-yksgDSW<@`YH0HhJd{CzEli^OrM?lm3op9sk;n@CT(-wKjtSfl?ZLZab z0U#v9>jzG(2@FUO!K$R=%vp)3hslj7*Ya5$kD#{|T!f7=x@Uunsni^iQ=m;solPL> zVOtmzzZMBF|1W`}V&Lg&ckwEVdZPvA9C*+V|J9Mu`I;)-?u7WkcYi?*eQ}h8#3+?A zNyBKim~F2(csIG?FWW$nM>#nZc9Ode?};+p_E~JdZ0*z=hA3szX*GeriwE|>TxMG}fF)itMb6fTav%iIUg8V(=JXOl4~Z)%rE8dv zt?jprTBi8baY2ka@m})e$eAv!jqjB*$cJ;OSomP+$oT?DfIT}f0JGZDjr||RpihsZ z@IqRgwfC|?64O>0aw2X2Z+W7%A8rzO{#PHusk8=t5Td1P=?t&Ag*Lt(;ATB}c5m3u zEHdL0m>S;LHRgS6`O)BI^zhAIPI20}no~)&RyoXx-3?PssrpbYR-o<` zr^&ebi;;D%F(8^Z^_^$f(F+S*c_t*2x@ebVF%Ed~YYr$$bnjNB5%=Kr7h!DJLwi<-PQvKvX6Z;R_vrj4kQb%>POg znb4q$TF)U#XxCf5+4uOi^U2j{{1CZUb~UVk{Ier1S_c}i7*WNw&6+$#Gzkt}&TQ$D zOmq48YxIh1kolYMi*_EBHCI$htmaPtmu84?c|#BXtHM$`HTCDlxaF;m&oKLBWH z@oi^9JnYGak?2U1!PC8BR#XB05~RH8Uf@KlHfqd)3M&KQ(S-r8)7{298(&eq;axzk zLA`Rs4I`yT7=5USsn*6`MUus49RW*sK~~x8sZ_5k$oLd|vGS(5^2m3%>~CxUgxAW; zm#g(8QGyX5Te)6Fmu=hmB~72cKtlR}^5Ek6An-s^T#^b%!|}qCYd8m-%#~-b;bi{c zIzyC@k&uYa4Dj;8hd{|DO&LRkAgl(3@BtO@@W5TUTlt(cHyqnE$7R>W{K!DdYP~bm z^1@n`Y%Tr;BU&g1Y@rW%ARLp3tRH{l%H zvpu?)s26(e8+zJ`h_8@!_T|FF=U;5J<3>EQ)`vu+^Ay_T<*kR*qlL21M%sIdiHRm9 zSp7hYprOx#-jDSDD74*qd6xRdJvP0TOkqp%sf|W!*{1Pi&>C3y>XLC`qP0u$a%z`} z%ok@AESlka2@kc)@lyy?Xy75Kv&R(#E%S!A9gB5^kuv()MgZX97zEfomhv|=^O{Yj zCnQ&QhrKP;1}^&hLm74om?Qzu4oDaNBlLl_GqGo`Z7DH%GlzLi9C%o9n|PqN_$Xr{ zIm~Z%=S&W85HB3(Q2%AhUv=UKLLq=?C}A>o;#V{11)t;4HUcehB{p_~&5~$LLWJmaD0kyu z27CGbCU0*GQh6_SCw4N6V78!E;N_$wJBW5sPO=lotQc5j-=s5{-RxaIpn?I7DWb*7 zT!@IB+31a~wHJ=^{79gE;~LS{F@(Ja+sXp-S{OHri_K2w>YhOnfNN(PoiQ!T zLyY638e)F~Kb2}H@%Ty9-&ykKd|Xy&B8c6+eVlLj+DxL{qF zNE?ls0iQncB~I;mvSkc=T+4Q z7qdtfy?R9ypJK2$5n>Z6&P6WY3tYrck0mC;~3HpS)JD4Trx9Sy}WW6wm&u@J|w_=I7zxkubyxGf@TPt({Nv(ipJ83KF7X(3i+ZT<*T$%6zAKFGC`rrNwcu_K$TIU+=MkQ%Oe8ru0ZD!h)$;?cSaBPMVg zIe>ngUXk=;W%@!ZZu{ZSW3jl_@J=s37{`@%9(-F=gsXpsBPLcnNHK&YeQW;wfW<61 zxRM;pp+=ZPJUm0@jSJn`SY>C$$V2)f&s4*?UWkkN$#UL}mOH`6g7ZYk>ca)I4kho8 zF|P`&7~?(NnfLypi+r_s{M*J*&g!T;V^%o^Q?#PHlQ`FKNVkvSR3p6FZtuf85a%?8 zeHvE@?&d&Bw!_QTRM3Dd-9A$u>AGsP2h_+_q z*-l(ubh8Va~cnHiRu?B;?C_QTek2aqnLZT3+EB>GW{Ate-)zP8CoEw3$Q`XgxEm2}SgE9{;4ai8tR*F$#uKFL zUzx3)pzY~Q;7)iOsTqu#gauasY3@;e(|(l_@SLzBW4uaX&0{omfW|BzeYdyvdWu7J|Sk3 zngGh$ z-RdKO)S1eqp8v1mbUQT&)m53eDZ1YTKP{r+UGCz%M*aFi-F!q_!N)hD?AIeKENhxe z&G2FLnQO^+?7r6A5PNGdghvqz#!_DmJPK`@^m@c(C)%YSn_Ve|kf?eD-HgVMunP0% zmo3RJ!nW(hr`+kI$XdAK#JSloO7FEVu@qU_(8fdGhAwmU(k9DOeJ-t7x^ANgyti^~ z(-_HbqNeud6JJTllWR0{H*wr}kga*dd!pL6i|6FD#ESD9?~tPh9CR{n3(9J8eX^x5 zN2WjvQRMt`TgLq)#{PJ*+aKT^o?Acg+~I6YHt@#Z*ef{^Lm*LuD$(b2wU`BG@2~0R ztIREC&VA5J@Q9qMbOVb~0lOLv9!;>03;Y1(%ZiDWY_8jV;>|6(7j{*k^2Rc$P@VDO z2t$TBsPpJ)y6u7XW+vm4!rg=08D7rRR4K~WsQQt*1e;3`EDjcH&DOFk*Azfe4KMf2 z3kTd6(f#N=DHEVU*sDF27{7Cnkz_*uUDKIw`1J;CMtX_1_$kj!O?CXSZB30bvPHa# zDw`K0p|X1-*Sz=lvrmQZq0Iu3vM-)RDjHw>spztNi$cdD-xb7ez}^%K8rP>2(7BJP zQ3BmR)Q|YkwUgClE6(@-8L8XjkL7BD5h|d!ER@r_^9F?+=)RVt9OFp<9?XV*=0N_m z5(jxX(YC+Sz|`#3#=?-~J0Pv-zQcSn;)$U}Mmji5U28I=(J+cVU4ormj0zWEf5<61 z={_f}KcZSq=UX>hSYn8ze_!IU>YQrK_eG43xR?j%odz?!S0Q;?>7#K?xcmwEDk5wg6~(*dCQ)f@W?!O3P_9_Ihz-_Mblf7?2P2THJ%!s22ib+ zh}8wX%i)~ClI<0Gh)cImGs`6RHk~u&{34H*j(8z+ff&P8&fv8^>tqB2t=d{8$ewNzh1$zc6!#dQUF6aGk1Stb=@inG?HB zgoJ{?_0mc(Zv_*JsK7><7}(=|Qg_HB&q*3kd(13YS6v{IwxIBh9Hv=^A6%dKyZ@xs z5+?Pwj9hjGP{Ws2CR7QBciphs@78&?^Sks*W%IL8cTdL?ps|{5?=L#RlZdyMeW#rJ z)LF=}YCZk4Gj1~^FXG{3 zi&Y5ELQG0;rotwF78JHF#fti&7Zmr!1ffb{r8`{C`^^V-y5lC*&>!>c96lw1Q3@V7 z52BeYVL#~Wos$Zf$gIlT8bfgVyb!Kaa;enKvyj9H(%y`$DZus8bDx^`&U{s%iZf-? z)0FjB1&M&pJSmSEm^2xg(AgiarNPSsMS5%g5i1$Kce+XYgmwr?Tkd-$)26fEW2JHaAfX_5k5K!`=Ag*}Fkl3!tzR zXSCVtJ(-xd%c{yt4;hTJ3TM+tVI6~Z#(;2=v)l$N5`C8|&>OY-{qjnnc{TK|ZTH*E zu0wO8+wxd)NtKezU>AJ31Q*U{w>m4dD>4#pcfDdA^*`pL*IT|a=(0<3Mr7GF7KgU; z!1h{!D>E})BW=NRBc3SoNNx9dm*}9qMHWcP&%)1*tX<%JFKDX zZp_iQgHzV72MB=y-XK4k2Gi?P_CV{#k4^EXG8Pv2$EXgW3?LSn9O4oC+Pg2FxQBO_ zlL{pv$ckwdHP7X`VO?iB&@{!u-Q!#)eBIEkvj&_k&(?M6Iaf2j0P6J0t=!l%DF|^` z2P@ngY`d1Gp)t>Z{aCEw(NzMqjAI5bJPFY^&D^JW-#^zk#@$u2_a~6r99zsYqfeE+ z@1RAHfqOdpaUQ38zQUJx8X3DKi>cgLVMsXdz6pb+wIWMf5m`(G{=DY^ll|@Gl+7{J;&UwZ|L<=VZ7i zUhg}2VWYcaS-i_nVW0Jk08i55z?ct={hl+?cx#h5(EpNH@sOB+`+`UH9qSMw(3H_` z&xgl|$RY5`*_OWdk+(u#k*d2ye=gpIyT&j}w zhdUp|AbhVT`jh&0fDG25}PN+g%#Pm+2dLY7U&A~zhD1)+evv2lX>jZPkLBipI@8t(ldEd#uowZlN9ldkyfQGiLV5S0Vy4Ko@hId==+8z+ zix&J>K(a46Kn6#v!vzQg>7_U*>uswh39nE!Gi^DBkB zwbH#qOmt>-fdiWkw}SnQ*m17ZU0Y|t6TCdw8q>Ey#{|fMk4Sxv@{wKfqj=UNoqj06 zNBJtkR8@9N!3XPeewYbmB!{l5$zKLzG9^dpGQ{0~e34kac-`ef?wGkA(JMO=A?Z8# z&#S;D#-VL)cSn31aIUXy?`hBbd*ouT&@e|Kc=RUq%Y3TmHcXviP7tHp%KYnc)|=OX zinv-Py>0Hbt83~g7+jXK2c_SNm)nnQQR~?AqS`*iESH_4l0=&d*)ot3{)bF_&}|`1sc?v znAm>j!SXlRH9ptmUOPmJC;Jq%uYwem*rPgbjeIQEHKlKT}B15IvAjB^oKRHRG zL+HVGuWWhAw+an70h$(_*L{Ux%X~_{!Il{cqmUtl6v+;C^ZA$E4+bQl-;%dU|Hfwe z>rX_&4W|OVf3F-y>xe$0r zsRO18Qj0rD-&7QE0g!|Q5zL$Tjo&Qo7@zjBf=|W^y1wmxua+&&?Lm(9oG}NI&%1Y7 zk^fV3eXMXQci*oM_WM1c;63B+XY&}|ec8)O_*U&AZD#t}I?iT3exYd|r{jFdV&pNk zvjNv9z(z-j*f4BSEefCKjZ8@wHLYEtlz!^^&XKibrUSLuxpa`(i3IO-Qt$@PO&0Sp z;+5v>BoEA~)*MR~Tjxz38Z)71aAJ%>-XOm|<^%g({wQ-%MmEeSFe>yC9}?0Vhj+`-r~kacQy!{pwgIM#8!)b^tUwJNAk! z-$Ol_kppm0uQVlH`AwTpaGpCSL3q(e)Ep_wKFGNCnuGuzm__iEdq*l!hCxu^t+!e51r^ZI0#S z71MTtiX$Z?dSt{+_sv*5vA}M+lJ2TzCOX_Ea5*87Yr1n_teSBiPTr>~{5?)eL-}W$ z%B)Eo;w<9b=M`|Re8H4+nLy#fP5*nFQlT%7!1^PRUoIKK*u8>!vh;Et4_Tfp?aaf- z-R*4)3dybi2P6gEus-$s5jbFF z9ZZ2it8iQeC>8`KIRFD)$9fQ-yi~uQOt40!5Y?Pktf3EC7inXLa~ZWB-UU#a!o066 zL^?3LF=^d|gWOxaN4xgGu$+vz!`;5>H$T=HFT%Vp?-pAMXN_y~#?Qa0#*nk?x~UO- ztID{WS4n5s97L=uT;KUH`xg(LXr`XfFNhNd;m#k5_Ghm2+7d;BD>e|m^Op$`ly|Y& z=ApJe^OlK0ny_4Ev|O zScaHAYYegoU(cTxP$B>}Z>y16Yp9@D;0v&ozl$Yh`ss5ci+lqtfQrgp5{;2-e^Z@A zG$5dI!m;EtA+DZYdpKee9uDR}_@@itbuE6rWnS37-0_8FkQ{1(F1QJAORlhTJkCQV zLFtAKN$T~clu`{AaVspi3U3If#2IIuZIM;)Z=4ZVr1s{_H2f^>gKdqc(SgssNv2FgB zYrqw>uu>UwJ^vVcU*UAhP&=*ZY8=l*Hu*cq;}3I$X~^%T9j1#S-HH)k+`u6!(|ug? z_6BDc^1EFL%%FEH$OASKac}Fijq%B&1{tuc$_u+FJ*UayGFrRjNX4s|g`*1i7X~(a zEAf8Wq_R=oZmVaZwU_N1Z@HO8i`r{! z(NQ^Q7@T)zV(w-fV$Sb%E38a73&Ou}px^U~glKq`Y6(xG91|^UhLLY>mM0 zEe_V#!uk)qYi_D-y!m2YTCrZVfa4u^G^4!*i>Os^q}2{BkCkgyLZ*Cd&DeXdTVDG< z#DO*G;ABrKWZ4NnRuxEWd|UOCY?C(HoROC1Hd~}!Xk#r*-Z!e6bX&+z(Q~t%B6ff8 z6UA^27ZrX3B@=1}A>$HxA>%XSwNe3`vhT=5Im;3B#xiU8FNn38-s??hiamo2A|chk z7bPv+Cf+wAcDH1mgfz=qTKGDaoa6sPm(t5kGbkL-VguyVqiFZRJF%b{PT-L`3Yo~9 z2rB`FFWk_CUG-cLb!z}zc&|GsE{43AmEpA`k2$a6JZ-2aV|>#3z^{wDT<6>R00>*; z6_`RZ2Y?ADupWiBudr>tgEQ?9@fui=1eVBB!XB1?^&_kdzXuz*R3HMY69B}TFDLMZg9e2nSB+$;q$ltJTR2fT zHu~OKQp5m9t_rVm$)#vgKnnr=Qaf9lkIIww&XiYpUCL0^g+=tq5$A6y%4gB+aDv%F zCby2Dk`>pY_H(6nuQvX)xLm_gc5 zvyS^Dy}*}Y!}tl#r@8)rSEMY!uH+_S4A*L*gozdv-qcUc`7k>#qDKNUR5TX&&RfgT zB2HFQZwDCm-n<1`P&|V?r4sYzT+Cj?T6-V7gMsbycJFjN1=>3=t3=ElQ}y83@_PqE zsp_&7S}Gzr%2)o_8qAAoPHZywnjbPxe=`?1G?Vt^(~@z190r+W*mYp85}U_L8K_kz z7KnN;+d}kwl`@b^TSX(HD&ZKyq2X!d@1_;54tx(>r~2s+X;sNJimwaJ1>94#iDs9x z7%73%p^P&vDLb@dSSl}MBw#HP()Vb~A4390|Kcl=n2vR?Rtxiyv1|g?3ugW zmPu$|Zrq$*Z7H!2CBNvFVlo=n30b`1#ZC)PU!3@;{!*D{B=bHyNy%3ltX6FUt*QOu zc_A_R<7Wpxo7;L?)a{)SJM}zHi>_{_@EAlSMG}3LU2j&*Bfr^&9$EGAp(-d|dyn4q?Mc;oK>_`b8Jf%Ur(DHY1foqI47jzW z3*euQRD&XWGrl~9Cg*RNiwWbDMM_2M9mH^lgJ~`)vNj|MZM{I{UGu9T`)qs^TQDag zj)FVhQ5Afz&EY?k!&pgg-SH!Ipyras*uSfuGS##%;x4gsnZLvcD}kX}g#`Ud1o8gT zpIwM~RJ;vPDvo|(?E#b8_trSq@DQCXGL2%)==~k~GjDU?g|{pkOP2?{afz0&?SJu@ zS}-kNwQOUJIizX{J$n)-tE9!WV(o%RHI>G}tHqi!46g}M zuHkhxUl+-QWq1Lk?~-jn5qyd1simC3l_pFqSZrc9c2NQX68Wpp&zEbm>g zgHjuo08_Jx;gYU`*&z2sSmmQQ{UW&NoM`Qx!$wH-5P)W7qpOs4l4=4#Bd$A0y`{B} zy>3oCVDzY9(>N&=?Z0TuCi6Fq0m&DAzO`gp>lA^NZmr@*zxnffcug?@q#S_!s8Kq& zosT-A!}9T}2o1iEkTjFob5M?-e998yC6yFN%-jN5Oiefez$?}!W6kOV;` z2&R$oQrnSBLhOfokztvsep+4GU#U#@q#TnB6jX;23iy(zIj47y1G?hG%J?tx`h!iP zpkMDML4^|k{e%cyh)rIgoK}3Yt?c?yXSq-nVZi??C7f?{qzYT)Si(9#?L~*LbZh-d zWwrV8p5YaUh8~iaR-4hFJf`S>zT*FU(`x(bY4db|J}o_>iF470nvNm)gKFwJ`x;KK zt)@RB6};^#7??;krYxxvRru zd<;9=Tf`@K58fmNeBx6`P>BzXvmp^O?9DJSWJ$_&3yY2^4BOY0C)gmmAVN}u_sB8` z7*h$fKPm6C7yj8<5QTv$4@=8kx1F5Vqrv=vXzqB1{8%L*08*Q~sg?D=Ug z1BBT-hNz!YxnIy(24FGMeB*yuY;bnV-=@cwjLZ!O#z@G$SUg9*{+O^bVZ`O(t?YZ= zom6ba=i_}T*%B=s%ZO1{R=FJ7In=!a^_wCV^6eykOHy^DQx|8W<|Ww>f9IKOdX+Kw zL{0-LRG=qU6@4D`)fnZ8p?~J#h=2#xk`d#5H)z$=_pA6B#Uj>%h}Ib`gb(YTcyUeO zqIxQ7T^ir3u5iv6?)V?#)K^#Y($fE8vbCccBV+XL1h=?Xrrc@JyX=(ZCqL>W1swy5 zMO>3ZALa8xYr`sE*EZZGWChTo?EhixFT<+Z!u@|3kOt|L7Lf+&ZV{zB7hRIl9a19Q zC?zG`-7VeS-Q8XP3FtoV{X6G+p6gm~c*9~1=9+VS#y4&$1A30P8O1x!g~=ATKUTyQ z-K@~an{`S6CrfsV|9~A~D%XmMwZ~K_z0`~-g&PuQjIBp{-PjkZ5~%LNyUh(KK)?rv zkC`Og)wXv{?C$1l6k1QcGX(vGd;a6GyGErhI!b8)5;2J@k$jSCQnYo=``v=4R7`E)%^F~+UvoDfiaWC;LklH=FBIP~ZxyoNRGgg@{GayhaH;4X5 zp}H&*BLIl&rv+9c{c%Gpk$rmjO#hL9+ezoS^T!$c8k$-4o;@eIwf$6m^y;DHkrH{I zyjWypO|ePS)5neqs_0`S_KttLl~e|71{P1aYJXY@wZahTj|4xbi7?a~ zPWtuL6r=Y!&x@JY2t<~rzJC|^19;5qB1W^skuOFN%ZKuMTuje-6z`HUaShB69Tu}& zM)GX+yIuFzlp7Gsmjp<^P+tF_8{Nnw*D-3plPh%`|A0BJRQ%SmY=|j5q-Ev$@VrI= zuOZwq&l{`l--}7i|A}`@x=Mjl3@2r{4KuP({{I(vf$z-f|F7hw#4oha2DJdLG9o=W<8>MFd=bx;w4T8T*q=a%xHO6x(g}Kr$(ZI@eKZ$-#IF!c^f-C|Ak6nn zL2ptdbhod=rK&Sui4~S=);g&0*c%WAp8+dZEPgj#38yhsT}bkBX2)9K;PN%(nvZa#BLK`&y>gY<_X591ZdzuFxAU;L)9N1;pN zUqTm+J&Vrbm_nTOPRy$RgCmeL4zI@7$9>vFZ3H2?|4VranPpZf9dAPVU2RBgtG9BI z?+sf>R3g^|8OHQ)4pWE=>_HgWA05R%#%|TnA3XVO3LKCsS1vnFr|(eE?o%q#6QVNH z$Hj4^L0sLRbh9-&EoXLe9kLreEnp`+LJq#H0S>P@fbOJ_;cx2@iW{4s%2&CGe;Wno z3F;bgiL}y~uyY&;4=msAowTDOFIVO`v!%u!6Ks3k*|Ft7P)@J@^m z{*ikg_gCZ3Ae0Y%LlLU7NXgNfU{pvSJ%V}!BSxuSm{^;rni!8J!L}G-ugQer_#yB` zzK+#54@kBY@qZ&(uznAFh}n|I@X3*Po=vxP_vT>Ow!B&;knbWflE9AZ=>lAf6gpRk zo&j^ox>foNTD#)<9`)dO;xx0i87n5KaYn`33q^8Z&k~Pe8-||dR z#~KSqr_C3X)+dYbFH1IFBSz zafd7$>?*>ECUq>MqeZI4zWr?iIV&vVNgpPvT-3qG!J{aa?W-Jsv43v}g68{0#XCXj zuYq3?GcRy^KW}}@^jy;1+#M9%lOxs?-;);SMAGhFp%z22i1Uz54hSB5^ z=WfoqtWu&IHfbdfe7$kfB!qiOej5j)y6!P0cS9xggPn zQUnxgnTo8cI>nT=XoJRkSXVk+B((Qa^EKbLf?au*guh%wpmFkQGcWF1@w>7s9P4qa zNdSze1k0*;iQ`9`rrf{9F#~r!FP33uyXS`_%Yme+N09nu?2I;K!T^ zk`l@jLiHhBYzLocYT?u$MuLfVg(9?j8%H8FIxXuG)!h0AkoNgSrNVaP-;YEdG_l%Z zFB;)BjJoJAwO)~ptKC;wrV?w*Yp#(VuxqU3lkL;Ey+1fS_Nw+Nb6$7Ykp9kw^HUXl zrpB)){BcYakz;420nmRgs>4PQiz3XUh0uQkTe(a+VkbO{*=tuiEbrjg=CLD<)0$oX zX>7(`bBA%T2Y*55^v? z8W=?YJ$Qri9Tr>!PDR!=luClyqxn*;^A)uZmMxlnVhAZ^)hXTDZvRtjD$Nf29T3L0 zJeXQx;G}=+Vv-BRqo@eB_{GTuoxWc?tytX<5uwqgF!>HBvjGF4lSdy2Ohidu`qt7m zF~@a|bd^3v?%-;w+o22`^GVwJ$FkRl>hOa}<0Z5OVn&{3;gF@a(>iFyQ~($XC4)k7 zg@pVFW4i~jVdX~hO(s__2~Z#8y9HyC&&n_U$A0+$jz0eU^V&J^r*~GzAOM`KiYf`u zxckl=c|O0={a9v!(5C@Mems7nHn-I=wL}+62z1{$90{&-B9_zmwzwr3$QFRwvekWcSpue-Z)!eh zN<5fht?;7Dp9C$J|HHLZ!AFIFg7pPVNihbHJB1Ug4sayw|Erz8Jc+*Ywbo3ZjnhSW zEc5Ou>&We-zRlgfJNNeIZ<@C~b+#Y*`(sZQbJZi;R+oNk$OXK%lz3~M6*8sJJv1_| ziteAY>}6;>g=e;r|Lv}rJLick=m1}#Q4R{opRkT8Hg<$kDy?!v#0|IwRunI>*-6X2 z;IhWvov@F+ngsg@wFKm**%-43^ z&HH-sq;Gc$e8>MqSFhva;IY3x}^3#VPlLOgP5Eavq_`v3IhdHKC2nI z3{l1&PJ>hPMt{*LP9+^qd8D)Q+O=1b-mM0}*{*zsDvH@UL$wf)^~!vHdGssKducr> zLIwNdl!;j;qgo*%>0k@@yh(YYG?qZ=WL&s#L&&x`1#+>K*bAhr7ZLdv8$CWcYfB-L z?sK~OJ7;GKAPXy3RhUF@)5EySc7ZFGJ&jh2-ZN%Z-lCkL*7P1JE60eNtTd$wJ0rq( zx1WMi#_wiBqZ*G#B3WjM=5~`_4^&#e{b=MCb}y6YB-50=kY?F8u~o`2)%Bl7o);eN zd%0;dJ#Kg1Zj;`Lia(Vx_&}4~uir*(GeVl1m~XB%fr5$tY33|d%u)>RdL=7njSi0hm*hT=YQ_QG4M!7^>1v2_;r@hfktQp&J5-k( zYCz-*(5tm%S#l8-;5!*Y8-?~v&&U*EOJ-ig()U4OU)=X$Vr5=J>z)ttMI~VF2U@`%Q6E9oAFCi-sY@u4>(MRYi}P7J zvHQQjroYe9K0|?1pnXlPcFr_uDv`>_Wv47l!Nfw@H6D+%8b|y5~8-{+<%^dg$OF+)|Zg(OUc6+rrsA_M!&|9GZ z^aVKk%Hr-_qmf7_G^36n>W+}csSN|9@YZcPqplm*Qd2=C&Rg9~dX>ubxU>(W@%Y-bVh94o2GUcW|Q(*bN< z^>Cf?bhTOZN60sKmxi31y#8rTZ!Ll!gm75>54E)ml$)c7J~xI|quu*{IkD%Qd!sFg zXfOE}wFT?z<$UnUX+lM!+M8mGe_cP~IYt&Q{aT$F5D>K~9`0s;br)eh8V{{0H|J)Y~icbx6{4xEr;3ZsQXC(o$0p=ni}nL}QdZ)?3KSgRCNPETsI z{U|HLA|hi?Y6PP*yTCeCCjr^3;`CL0?d1lx9TYR9IS7o<0@Kx9nn?kc(2vicxN*Dp zC+Toop_r)@;l9fc80BkoZ6BGhisBHW*$huZo>0Dd#>X(mT;R zB5wLhMsx!(A;RmI;?>w7;bR(_3*yFLXU^y3aIDdbk_|Z+YUwIsL>O(5tL08P4r3F< zoc*6zW;I<#kP1|8(2Nexn|4o1lx$=TS}MZx{Xn2F`>N)nb1`#`H#$IFoU`mfIyNbt zaM&aa1i1Xy!HGmx0D0)}O>j;1x52*A%HSe}lSe(Sdm(l)-prno+-2By@r+^(navc# zERS~i+D$H76>{Is2=z-k)`PupaoRLg@_&=c8vXgaXB6?-#=_A37Q9Rof%A%y`Y>CR zL)(X7R3mi72iUO3U=(PVA4kMR=Fyp`>VO-(dn|{Aw(RsL%jNCu-p-Lj+EJK}v%5wo zm0lhsxM?m)47=QPMZob6e3`r44@Pph8@+spwx2dbL?mC%Y!MhW1zdE^!utb7GsQTC zcIihT=7kxYYM@uo12J9`(WLbQ=+U9Lqsm!vy!7@@p6ealL!N6*kNxS9`xmV>T_cFG z&m=vojGqI9IGc$a)<^AZR3C)$%j)=A_x``+WlgF@EfXUA!V z==KLGh%s-16?m7eqf2NJfYb8EQ{TpPb=(soMgJb6SM3+SV_ai~txJIG4=!3z8T#6? zu0dH5TFK%fm`>n>NAuZH%X8TLfR0~&Ki!oFM69s97&#DJ)PvKSUH=!^OrPOz*=+wM zI}@e%+=(1^Pj9WUrbxPapJmYd@38v#&3CSVY^*C8Tj?S9AJ?zdHqgBu}~^6FYs0cAq3V4?Td>^GdLX2?|1mA z-mM*>9#T1q8d9!A1;qg|* z8%mdpYJ8|WmjEfQGRRaYxMv*WtUg$r%jrr|KQHFgj*ARWNTt1UtZlu_g%dC2@01sF zkh<4{Wl^;5G5NK?g@N3q^35Pcs zYpec{nr(;TAOB*_`qh|1k@?!o`L*K-`hGlaEb-ce2^DWtn#Pc|&FmKj-;9GKYhIk@ivB`tvYcP>1F2$E8Po z#{Ok^j9%HO;Z2?WY30TlkT%}v%c~1>{CN{}W$erI!^g^W)T-S`6(LQ?O78Kxn|Vu2 zH(EA-_j8XHWTnnY$wo1!uWR(A_K`fKzOn@?b7qDJAsDgGq$#W0t>l<6XBoOW{%urw z{Hbyez_$HrcSuOEzaKqEA&tE(%@i-+5Z@!NbU^?u@F|T+G{u43R@WoK`c@&)E1J!! z{VwK*2BQ6a&*#iuDE|2I5luqDOLRDWB;sW5O5NtFdA_GXP9w@1TBEpbl0CL$OEj6Q^G845AJ zv(BwGV0c7LZEAP*+^_Rwn6Q6|sLquxl);)m^~DHjHe=N4y2Wr&1aoj=%Sg%CC>UrH zs@f&K*Jt*Fg~fn^dtkR{QT_2HE$v2wScU8q$2J45S-hET`)HXH&N7a0RM&-^%M|5{ z21{fDcGodnlWq=^pdPEr1-q_D8i8KrqH8lvDpySR#v_hndvk{74J!}k#WjOcz(G*g zFRJ;9`ZIbB3u*p3<>Q$|qpfeFoP^2XhGY8rgot3-I(UJ| zF!hrl!VtEs4>eGGw@o*2@`gw9m0g$9;t_U3*{c^KIwx z7{Y>wc)(L>x9Fq6fPn_?Q>SzzE(Dp%giD$P&x;yuw&yxz{n66FpL(j*nVpr2Iiuno zgAL{e0WAw{BfmADrQ5J@rm>iT`Y?1iZ{&PxwOclkGfb3tE-LH;lRaTd2@UxR$WH}j zG|MsW^GQhtnpeJ9yHYH%l-+I5XvmxMYz&=VcgKvm&^)ixYmb@_{j2DJI_@!F2MQ*5m7UW-~GTrAVY=id!xS?`!>Sw;McM-T`AbwJ0K0~s7qQ+ zMg{to)?&xGT%9aRL6*>y5~Az~E$}I}+ewbrZQU-OeK)kiQcy~mS#{c!>%jQL^)!1h zbd15qQ=MIxIx2OuqD&V3BXeulkfU2z3B5*2HHiQQsLP2Aepgk*d!Sf|1K9;k4SwEq zK2(X1u5elq$}8wU-XDD8fd*}iZk_eban~__pFtPxA=H2+UtNjjt}J0kAz&+9HD#BB zDw$YVp$MnQdOI-$Mh~S%4MRgV>|Cyhq9bU z@E3rlhA`gWaDVB`C_(7)D684819QMQZyg<5S&cbd8F&tkRYgoogSP{zf6Qlf6sN)M zqre8Vt}FL@3T6rc60XHF3YR)JP?j72Ys_g8&ExK1q9lfG^wHboPOr67BPr!5s&;eO z#80y#iDn;U+YiZe#lcLjC*?ggZ)9q(iegX?Zs_~gmmHc;=)IO4&2f<7gWwXFcCD`W_!t|xNVkPKuxw*}ITTsCO?+X)XD1Ri1 zVJlt2v+J#EY@-e}cR!$u8KX1J2(a1HukRSFj4o-~+4lB2Iac4L^r@rO#&owDe5Y^9 zq`CibUU&7==^{E7Kw&S^ulh!*Rrc)TpRp?yF|x%*HOV7E?kSg{1?`3}XHSVS}Q)ERnPG~QPU+^I82H6;O45j##C zdY7#FEEYXH=ZG}V6_f|#8`wm$T4KmxLe^z|ofSesO zRbshV1?-Kf-O*}X=6>y?fKt(im&-8tL!$V8UB|##x(m2fnWB~$22XqOF^QjlUH3Zj zJxyP}Icnh}DDu1jx(+`cNvCU!y|DGT`TG)D;1mMu5>ivlPr?xZgM_kzm2l?8TGI4) zn@C6z{Di2y@WroRzI?8C*ZP^QRt`)g9f4;QlFb)dTWIY?zU!1SOe8o;-km9LMSM}Y z50nOlQ7M)g%FAeFJ~!tG2n7~!!iXSjEG-!NS)Ebnu|oIzYJs2}KD7=FWV%$V_qA0+ zuKJz+hYB}KqI)d!FN)M)ID|+si0wN8=_`7xznV>Hl9FNli_deM%2aIj)|ow|9_7mKf?{cHH{7lXTlFMgFPUTx9oM5#dzEgS6f zVo?_V1@&oh+q6p&xcV&UMG@E{w}P80^(vx9o>E5#MRZ5cdN0!B{B<#_lZGnSH0CuvhQ zjowZ|+2X1}YHH#Zh+^YV?)RDv>=~95r_cx&Orh?a*@v-Ooe8QD{k znuZ{Tc-*mCEwI%~oQ7_Oo4)N(pb10bto=&^BhZAQJ>R9mSJb5^O;H0|JDN;VrY}aM zNO|BT?dAUQAXRH1H=$ELNOMJUlnPZm<=zBS2uL1fw<ASyy z=G~LXq4?=dyHV3A;v|M|Vb2$+TiJAJf?o%V+YRj)jQXG{W7V-%0o3c;*5ie;d#$# zzs*=zXVoRXO8{6K*)3-lqC}$Eq=@_L^*Q{q+t5n=8Hrx`W?=re&}11pZ#HzE;qYo^ zncoRj`=x;2FXKjjB+$v2mPYFQ6NxSu6CW%U=P7yR9RO;A$2N|~;I?v~&gv($n&~D8 z`=uEuOp`Ct`1TvO&uc#F`MzV`4lbvXLAVfvd&`|DkZ8I0<&fr_c5nK_st-;Pr$DQM zcCvfJhdZHbs9bTKL3a{r_wtkJyHqNTgBp$9$ZaZ+c-Z?k5cSkqZ1Y_{>G=y+@8$^0 zJ5iLMmIFa~06z)kd-w`}E-*JSW04)u$T^kDR%2oX9%>NBOa2cm*-Wh&dF@D&vuk|9Xt?meU$?&- zBFn+3TSEw~CHs!a73pp9_JYClXg!lK$#V90G!4&g zs^>rWyXg5BG}bNv6R9KyDjObXX~yJade}@R0YSa45!3C-S*Ub7%JWHHrcp4MYo%zl zzcMCA0Y~`|bUUCW+#a=LI3x8?srJ`F-W~~>k}< zNCZw^y3Z0&^@KDdkZo5q40Y|+K{5#eo~UE3 zZ4mdXmE_+MWr2k)(l>=hv`2>2E0sYtoAz|*ujL&cqE&=vK9+`nl7+l%hy5;bcMg3r z#ryH;f1n77GPCE;de$(hfd1qq~swx)?NGjjwMq> zUSHwf`H6UhM#@;^h6|6V&}ocU%|v-V>|5f(rW%kC<5-mq|t?>*hD zs1XRYNqvYwX?#nYN(HSe_g6+j$|2r4%9g>_0E^t6wEPJx9T>8-r-Tpw;0Fu})3%74 zCTMZDJ!Ib;#1zhFk*trGg9AE*lx4VArjIjY_Y(#zyoTu0%i}T@M!{&Y zqXNGqzFl%5bHcq3++e9ft$UOP9VDRoBl zNj8FT1!5JQjhu3I1GVq$N_#wAF^xCn^1cI(jg1sTDY5K0)Jc)t&g303t+Jt`qU}Xx zEW)hiBlx`kOvE$u#$Tr@I$85jr+O!EYBLbQf8%>!5S%R{TglN482y&`&RD!tzq)Y8 z+O|Kp?48qSb_$U0a@YL%BX=TU(TRTkFdM4)b1a-Kg@%z_NL#TL+gEo7Q#e)XkAw&U z;XET)1eXuRtio^}Sn=`j0qW3;zG_eL1}RhvG86SB9cSIK-IU3i@X@?*rvAYmt|@7K zyK$Rwo$=Ui=0>Y$-EFzQgzRcGYFt#d zD3&;%apClx#86ZsEq!qFG_GMLmA=w7UC=hI8nA#}P&eUv>H~MP!9}HC13U`e^X{F! zaWSKl#`LMgZ6w#UDZ2#wxXzxxK8z$a#uYHfggme<|TXKz|^X5rg>LhnCf2ANrbi+jFX{y(%WBARP884 zP?5Cu8`-AW^l~b3n#gT7n$JUI`>$m>k&L|hK z5trs|=fuDeBsl6g^2Os{+&*0vJ$=TQHNkrot7&%w7NnAxxfjy+Tx;CZoffoS$Tx5% zaC}uto~nAgu678*wzWT5Fym4>{&f;kBmR(czYbjF+c-_hE!}(>{XbSs}(g9P< zX4h_4dczvFxM+d=;LPY4RTYZ+#1!#KZ_6i|XrBjMznj78Tg35p$Ds68$av(L4<&`3 zXnx=6BVWEZTqGjYsU%ujOM2r#T17qFynEQLPH7WPtF;#n1hPKzQ#vKETCFPp^YbKFkIu>{y6Y#p?dUG-YIO&hewK`lPA6?_ig#7(dr z9kyn=UBXf=X$@O1{$IFx|2NzyN&EvhY^4%`R&W+r-VX6z+)9VPf(?8aqP%>#6!YHd z)-b16jv!7o8fgB9X0Bm3I#k=DK9KiQRJ82vq@2B~(LhqEmr!{gc-&WBIHs^De0%9^ z9m!d$Zgt>5C~S(XM!X;j-z{%*$#2|lZk+TvyjA5=uBK}i-8{8$t#|nqxkZec4e{tp zi&V_;LE`&ope;AueTG*sF)jY#Y!O_HW@d`qC>fW~H3HRQK!b&JPtr|B;dRmC92_DF zrBZlQy;!br-B>;^!7_+AqWtyX8%Zk2wE1ZKLjkUYDp+l(Qh|?!v}#e(&@i+Alfufb zrPy8cVs$V-xNA;j^i${kv}6yPKj^o4s0yFd-bJ)@+v8o?K-_>|?vONngb?x#GXVms z__CabNXTLvxkfHBhy2F=Igv)GM?X`~wK5diD)Lv@zg_a7*x>3a-IZwO-!H`Vw`XT~ z*`#60o%lD0NR&7E4JTv`QLyex=vCDgLqnHZ@+CgDCNr0X@_FT91aY;#_?Ah#6Vy<6 z0RK(;SEH>qxZS}Jt)iLM^Xu~hyhy~!L|VN9m~S#;4Qxu)1vDxQ_5PYOVMeGmwxLYS zg5Xx)Tpa1NvhH%7t)mjqtj(1tK7;=VSgxh`j8D=*;@Jv^q9cN=uWDFg(*`rX(bLK~ zCh%WtA3^}@c5wPImx&d~2UY4Cz5Qm9zzRdh@Su&g0N#u@r|8oYKd^qMO!i<#Q*K=c0@fc7~**XN@89i}xczD1n3{;O;d z?secUzRw$^0P$z&iSO;Y5p~i~@_#^|u3IGPo1(h7>eo`KYyGTcs}Pt@ob;RskI*{J zCTKEu$2KB$c9|U73#5r6UZLyLyVzNh@YeHs$XQv5q?-I)ugK^N zmwe-i%Dr3ReqGfat=p|e2Zk1|Ev|CJd`M5rLL#zXYi^$C1MWaOfOT1jbJ;%&MX&4+ zBa5V_r-I9E_29FwjbY{O%C}+A>Mo(Ss)_4 zv3R;lq$5%I2RPAaaEM^JpLV4y4;Ksq#B$EgI~Xx-+y*ooY{Mnfjy>}nb{COv#Cmr< zMNVEEk_h>R9qH^p6#`Xr>GiETg%FAQmU%C@(eTpD!9C{0Vc`V1i7%SqKjOJgFmZai z)vdql)4|D{*$-`eCTjAo{QA&x?OLPP)m~3kPqp_`f-qpvbJoqyMl9*r_NbHtYX2hH zqCABBe2ral<;p}syvZ21A&Er|9O}C|aw#~#{kg}d#8B`lO!X#%xKd=9iza$6w6F4R zsdD0aA{8xwLmF#8yL+E;zkoX)kA8dS2VsqC$~#O5oNp)FKN*=_%k>kdS#qQ^AOzx< z&5hI1>iL}sx(qZfir^o=Kfua3SWb?mFyrF}0Gr1PScuedGOB;`%NxA^lV1YI9HKX| z&Ub$v2?i=BBmq5t1N#+WyI6$}O3=UQMgBX=BfZ3J^Vg6L3odrDyOY5V*&V!?e+Wxi zJ?Ex@aIsZ0$w5syTf7E!5S0E8d7EsH!Wf67l7D|+-&e`&KP?1KCOQyFm=`(cEv#RQU7c+8Ppuzo%gD7qz%mo` z_WxoTCy)>xra^Qn_7B}|N zy<9MOx-!mfol#rR$MGfTZx$CQjxl67Timy!DSzxk&7 z{AS1D8nnUdn|}hK&fB-vOyHt^+P>gpT1|0$FrTJI8AScEQmlG;OO;2QOiVB)>Y`MR z*=?Cna8{h4+8~+_1G6p&p;4#`ffdv0EqQ8{^o@61++ZJiOm>^dtBRP3ycnttAW3ZW zv}8cNJqGz3emMMP-F%?D_cnqT`1kP-zH5xhJ#~nPJ%KeGi|_7&vSQ^wyDBspPI>;G zBoIlsBCbeaxxzKeo71|jy~96b2q)9X@Qy~DQ}mPy($V(t%F|PJonz#oGv)zF7&ZYd z1`ocPZ#b8=)rwZAVX4(-Qmt%Q;AhX+pDqAgY>YvM1U&Sk=URhMt8e}-%#2XI8=J?@ zBB!=9teoq%uQm3dNiq;5@K>4|NiD*&8zwHln;g0YrMcY>B3^xE;`Na3IRu0mlp(MJ zj&Sp7Q2pb8?}aGX(oFo6yJ0rYiWsG_rzWRLEZE9$z!>}K0TgUr+;a4;qQ5R|#OaHE zW}oMtr^4$6g&G~C;^(`ARA6^mJdz>#6YZ->1=`2KEi4{Oi^gwN$@2MCa)NBdpVwOosU&&2@~-t0qN^XT%<@K%{i=-azsR`Uao<+= zUum;Vl?KBm>-$;}UVv#ZIF`5yY1~#e(xqSqzWy(ad3vl~-uWICW(P`d3K-Wl=>sM($3T0=C_G+Cbit z%J>^Dq*xmOBC@lg#XD1Wu?t(QecgFci@85jP+ZSi#b)-2;ptWl5!?6vfC(19eJA$% zKMTW!9ee=ztGlVoWx6*5Ha!x@IdxKPL585i8%g14S_ubV{zB%&<@M+A$w-cRmo3ke z4o1i%UyG5 z{K@YQzaH|RE;L=Bi-q=hG#NZ?!zbF-$WF&UiluL+ZSXD$tITNX?DnKHy)GN>FX%|} z`5-c~_=Fw)p-(!BD20Dy%WoOw2|FxE9o5JB^$1`|BGH{}nr8D{~ z_EP)HUrp}Pfh^r;q6En&(YEP;Ha&JHq{m9Q!I%Kf+QI?eVjaQ_fHh_ia({W*TtCan zH`;xPES2CKLvO{LziRsCnsbr()da%&=}REC!Gdx3rFe$i3I)d5_93ZB=O zta|HH(dg^vfCvJDz=tAfCM|z;{~n}Ms$rs(7+i$LZe)V?e0f2;cIIg#^v{hx_yPB0 z3cUFd)2PXg9{N<(F2rTJY%J3J zolChlS?a5Ma1}Dj$7`1OFF|Wq1no#TX$^k@rr#%;2b52&=h z3mi0s{IGgwpR4NEX4mQ0U!1q98i$Ge%c#C-ukwM@d{Wm3fO9=mqJ=CbY?4}(A!25B zEj}ld)bqgJq&#;zCLqWK7#m9iIOW8tq@!s}kuvaP*_m%JmuA#+FAuFF1ie$ap95{y z7wfG#vz&+JG{+Y}Sh`rK_~;KSUJC7u3G@xX3eTt?tyWo_;V(Uy_JMZ19}il|I>LXQ zXFpaPCT&HAHxpPm@|(YA-1_O>9UyVQ7cn{LZWkH#Dyo^IywLl=;uI!vWP+R_cU*|l z{45yxreeDgxpb;QXVQz0UFTNg(wZwyjGmgw@%Z2fzx2D&Ue13;1$;*th$;)cw78Lw zP>`*|R_+u8#nyNWJ2@D$WPUfH6!>DNhsR7qwlJC4;u>8fd~h0dm~G<`b~HBwz3XNG z=o^xeqd9hvHHjKOgW~H3qU{Xzvfi@T_o@r`)6Kno&kCy~{fX>VUQzD}D7HvMJesyl zi?s6{-KS`xBOtZli1cU?c-R|r3~Yv!Y|nCJFy-U)A)08s`Ru&KP|n_7=$0k~Sj$)@ ziSX{a0Bf1AE4AURw=i<)=>?_J7ftzNaxW#z^wxc)cEpB#6|RV^7Y!W=*$OYezr7!) z`f^uq6N4285n&5W`qbG)Ar2Xu39oV-i0qB~MCkdifh%IHjzJ-du^pP^j3!W>FPVQ) zZZ7>Mx};vP<0eM;6xzC$7}OssVF}x9Ds3tnBWR1#;(M%rBbxajh4|BAUG;j0690PU zNtFA!Doevk^)xUzNprs{tON&|>YVG<0Wg01AB4D-whMC25fU=)j^cLhnHU5^>!gQ_&ys6%yypU8(Efp*4G=^=#cpq%YbT5fazKUd zT2i+q%_8}m8T!^2)F9u`ZH|A?|9EBE&3nb9vcLAOeXL~DYGmrI6R-SN-FDO~Z>{D4z#HGm=aq+mdE3FmZuiaquo8EWGm@Uu|f`(ad`5_DpJ96LA_0z8Bf^LJI<2z@mopR z6;fRTs5K}h5yQRgIcDtlsyID32@8jsW>neM$vN1S%@t3iklj$d9%Ncf-dA-V=xBP$ z#Hoyu^G12lGVKEQ{NE8jphAHdY+O=lMf^|zBJxFiqdu4~Qe9J#M<48CV&_1^n$^v4 z+4lV38b@D2>e-XVq4AH#f%@4B^w;JYNZw2lKWZH7uRbrc?xoLHiGP<~1SU1fI80!- zCGg1J@di$-Hp!wU)E)@>ED{`B z|yRz?Q(sjv=@Vj+0#kMHxn$xNuyGG=jGe8VMdzf zav`D?AHG&_D7XuRR`mPqSx+$M)^eW$0l`lPOR*XR%AkNdVXuCV#*$WlJfUj000JJRjX{FPc9=d3;A8Y9%4Tr?_z}l;7qvM3vcVlny+YnJe`Px;pNrT_zUmMYH@tx8Gt(d(l~1eq-3S8{ARv+>*9h!OQO118;+uNn^YNvcp*EubeYI;vXzX zjd3U+n?9r!zSjrbTrAj+mtdnB3V&~b(u6;AH1-h8VM+~c^6U8n1-R@D=DvirBRF)R zNW~($X{PM1Y>n}GA#wA6y<8Zo)fl^79Y14eekHE*;yg(m5tkJh&|W)Y_X98G&ZIiN zA{P$9R}3X=#?Tn59y44xb}K5S=k@8+0V0DoE=L$rJa63o-t`n<{PjIQb}8VC6(F*F ztvvACm4?#gmAhyN{qv#v6+?*J-3DmwY~Sm=>$X* zbK99g>=2zhPWim|=c764gc>7^etGi2>GNZvx1l&}pzk)nQZ5#iBMPlVo0#qgypIur zQW7Sy>1Ad^iRt_|4MBAO%2h*xW5b>p2DJF?9G`6Snluem?sQ)~1A5)srE&02`xza< z=LxnHN#l8ek~$FP?L;$swcIkdB9gLb`nhRdvn!fpe7c&6Vmfj)b6K@S>(JeawAWU& zZee_*9O8qj0cCweORK_4BX($%k!5oF=0*FM=%?4}F=q;PQ9f#WL@*(g*ljm~PXu8~ zfGXIHv`WDUzC&TYp5%+P0ST(|kovW61bqCuW8|u*;0C+*zs7#P(P(nKIcN7=Ge%KN;Qw31@VE8y z{g<1qk`VPPjan?Ug>r8LR{rn{x4)Hzpy4Wqzm$wo{C})j_$|=Sz$n6K?a+Y${_n~; z#7CycmJ45wQB41-qAcL|wg+1j^=HWeGBU#qvZa(Xs1C@^sKV}0$V4~)uoAnr(=k~m z1El+qsG_%qrocgc@Q;>4MsO;`Tu45V)QRk}*r=5!1mdy!1=M109W)DGclbL_xV7X* zVNbk)8rns+!5f|uCj7y9&ZxQa5wyl?F@I;N1fQTMR!`@cdy~iO(!7-IC(t54U*(j> zeJ;i6_%4RBrsTuP2i8+$mHME*qBLZic(0)U|Fw+Y&a4?25)`3L(Zx6TEqQ&s8h-aTWaOY_e}{^s>Fd%&(yVlDHp3XJb&UTBL1!I+ z^ivhmyj0MNf5rW?*z70M!MEYD95fqFOq(60b?jrv%~t?r4kMKZzC8P+TyquKu~#(B z&X9ui#9pZX=oxL_@&Cvf<&lD$6=Xn6MiPk0IFS5&lrsWY#%AwUwDmX_wlvbyy8?zr zodH@=`gIA=%FG^cME#F~QERGw)^12ufc505qQ#@Ke`y})K zK7Hy40P}7r&jkrE2%6$kgsQJj9W%W0ywJAyhtFxUREFi-o&&Xhf38v8DmvKgs02w( zuz{$yh1lHeekN=}jn7ExHcbgCdXeuCj6=5M*NzKWN#Co6ooxeC{8J zw1i3D(~p_J=V1BvEhH)wKL438KLpS%k3y&ICwSui!?WVpF5}yl4f*D){>5RN^J~R% zwbMK|F59hm&h`9D6Y++3IX=rDX31f;=ZCwS<94dIX?Dh0t*0<%mrjz~nkQUtQc`>w zURbJxpNv)&#;bc|QnI5t&z)2`fh)rinDv zd-w;xEql9=dN(C@wx(p2hEvG?=xvH}2b{=J&cLFJYWJ0K_b!^TlNrc|&;HuU@dZoI z$-pnQk^HqPG}enV1$TuC`B5UecE%0fzVTQ55dXZe;Xnh9qg`I)Kdp6YwHUv`oOPAS zK(*A?>(L6V2)$JkISBMs=oHNLv4D!ORMwlSTC@GI6|Eu{C0Oai$*8I>jh!QW(5bH` zzTrr|Qdfi6)u({)a)!v4j7|1@7@=5_r`|ZdIi!mOg4uYbDZY-qVe};Tdj0LMz!U3Vcfh;ah z@vuVDGmxxVaSN{57*#|n#thER-R9Okle+fSqUh*G1cw+X?%?nkgtjiSf{@$DXZ*dR zbxyjr4aA^66bZ|jC`yB(`tWWtWakSD!ed_UJ#iE5>{jnNS_`>WH~tYAYAp@suK{Ua zN{wF~i=0J`ZE?aYz=3mXy)Arhv|q0%Q&%1{-0WkkCmJr}(gbs?fg@Z$v_M}jE8E_@ z=KK`{S>m*2vcSkyB2oIo-Ou@=<5*s;uy>_4ztRcgiY&Ge&P<010VZ-2WPJuZlX^&q z)ot-BT~pGvGWye;%{r)X{pKzPXkq5?1u0E5UaaQbihHML;n_Q`);q}vO$c7brJF-5 zA9iw|ryff9sAZ7u8$(i=F2!>vMZjHH$&)LGWXG@xDP=sa6VL&9SLq-}!|Y{7430+Z z0fG8{bVgUYevV+Kcl)>l_bmMNKzY=+G1G7B*QMWLgq*+g(|%tUfcxdfE0VrNn5Seb zS@GU0hS+Dkgu48N6odGN{dLbSuYx{W#I<8K%4L`5tZ%Pd6Y`f+=KLHB24UhD<-TWT zOc}0Hvs%eCHx-PYQCI=~7N5KoSn(RugFvea*k@Qe?eH29{Mg$)*jlK&jx{ zO+=6&bo$rW>I`>=}-!YHFByv+65*6Tf{J0}PV;^Gb4nZ7gGogp3;| z$<(xdzQFjd0*NQh`I#5o>-#V&u%<2gKxlalbx48vO;Z*L zeAY$9Tb7p3>zGbZlUG`?{h!bA=L7l2gGDvG6zM|<2ZIZJdhu_Pe3sV?qVuVw=c%KL z;aOCU?6IWoQWRM^GnyWdF^lUuSb2qBWSF{^>QR&VNy9(b&sO{w`N}Wl0yu>GY;E6! z8RqhF?Z-dl>7!9}LlSNcwXK9WyS7NG*b&ob6t_SQj-!6L3oBsti*Wh>SbM9mD%*DZ z8<7wY0TGbyE=9TXsBqE^T|)p4TQ2!0TxeFIn~(hZ%F1lcej_ z2KS9f`%e)Y{aU$=?vYB3w-NPR6;WI)Z98U4@;Z;bp1jEO5G&cA*@R_1^Ld4-g?#9w zKay-T2mUWTD(mXsa_{S9r;D8^qJGP<;ik6#(_A>FS+@u`K`D4-gRu+swu~d=Qj1r% z2wjdJzk6(z0bRvB_U#NPLFoGHV0UoZ9PHbzB#d<6x7xk^?d@@(sH+!I+=>|6*;Ahf zck4e8Y=eJB03Qo}U9`>N7xOn|AGQ}#X(J%tO)7C1ntUcUt)kbAB~!#G+v)Ws+zZu> z8WZWB2TRb62iYgDR4sHk662Z%E%CeUO}Y+Q#YLB9lcVWhRqcKL%K63)=JHl~8*lK| z1<6|=G#gHRGw?0|=D2!?8+e=1jLf?o?vZ+eoF-K#Q5Ry{(M>cu68Bfqwl9m-0|z2T z32hN3Hvca<h9LpV<#{B3tmA!Z;2H0K%?skTosMx0j40e_p6G{w0CB*8XDUo;m zPYue$qPr9Xf*U^i;XWPO(C8ZbFcGB|y?j%(Yi$p`hmtuK*31kG}PDgk`XnDbdz%jk0#~RTFyw-qCk^t4tas*8+1h%%``S4 z(X*ay5@+kP@6?^|e;;(<6VDP_oF%{K%jmjIXM@r_rR%)z{@QSn>%erQTd8DuL!(o5 zLzR2ZB@{FOblD+A#Q^{)?qjHMyUNMN;&FT`K^boN#BVR9?jkbr=Cv^F`9{hgcJe3z zK8Ws7CJ8^2o$81c&#sGC8)^_V66U*s!};kH8+r9P%b!igu~KtimW&xFb~VRVRzEuT zxYR#L1;(MO42fv!BCTmU(K;7-FQekg#lRo9$Z5y7Q zX!5PBV(Vw)Wir4wt0?@eAz$d>(8Op}6BD_O=o-_`pmeT^&d7(6nTaCy7{@@HorQeM zeqRnPFa&$adb5nA)`X8WT;{P=cW?^QFS`eVB=84ZYeA~KBD>e0bNa^#RI}B_@)&q< zDZfbME7FzpEVN%O{u;Gx-Z9o>GR)e3f3+k^4FmsOi=$?gUN(rr%iA>A(`l=G zl&PRf5W^%yf()=`;inbbe*SZvr9MM%SuOFSQIQQUWqTs8S^eX5T>mJVwwuoZ?*)VZ z5I+k4QCZ z#aE07A&19v+bYzrE=GYtu{qJE@swbp;94Y&-;We6VcfNH?E?Z!BWrP6O1)bncLm}ey&hA|a0ptJTN``)9gcVTZ(khHC({w!w zxrxeOA6wgI*zW2xzs|~=@4Ag2#{yDKe%1Y5Ui>qQTf>loQmc?W2>$$_N<({SG*HKnl`()%ZhsDF|ANJ;*Th3yFcDaQ>i>!CYTW<9 zsp*YN97ly8!l;)MK@|V)hV8rj4hu(ne#*C*ty1Cpi&Gft{Y^A zNPHX(TaS`(>qYo@$5=yUNiUF}>CR^T(!Hu?p0tDz8dGNc?%U_RTn0MceD!!Hja&C$ zRwc$W8WSmO^4#arl3o63CyA1+lpfmRTO zZ^e#CQT4s$)0h_C!K-j&0QDsr^EGpP2oxE*5kZ}!Rsiit|F7o6=Fu9Xs@5~t597hq zOvhC&jrpEip9R4Qz!GW;+>I=g`Hyx4`CJ?BH-O<~eMF>JtA5ijKD!~gW2#yi{`s+Z z&O?NB3=)a=i%&_qKn|78?jeYgUVwVtG10WLKi#0%)ZmNhfVN1ijFKyLVoaaSu+(`L z5H(&_I))@z_7yuw)_&2oVp`v}sErOCsHhlgp6Q>`6k&zgE%}apLvQX(sFZh-geDLz0?I;!TN!;Tv{La@*NJ zV2@m_+cfjD28h{yn0q4oR-k|0FnB(Jexn z(_e0^ODrd;d!MYXDSo&L+T3}4a@eJk@LjxVKaqCx#8GZQ=pnys#J4`WyWWL4e6@J8!>`SJMop7N%+xoTcldMWsPDcW zWO_H~OrQzKJlQ~_@yb;pcNGHvE94+w!DlB^zr-FStHw>k^6 z_*c`~NW%;vz<{J(-y4vkcH<|U5~m20ea3!O7Gz&4JPK>eDf8vMSI8LEP(~!<=bMlu+Ok{x7 z!p9*YWW+l$;HV*o)?|ME3^NvQDs>+I-d&i(gv+|Rf_m51Sh!XNl;~X7E}Qn&>M)UA zQLr}M*rZ3G!WdMayw5&3Q5UmG!eMHVj+A4ses9nlY<|63IDmjJ;NBeVC*yz3hAkoY z+g)%h@0llHR}Y(0mfI(9X@)6i7jn<^8QZcPEqzy-F&IC;&7S&YjIz>bJeSnoNKUIx zZo+2RHK-5{M5-`9rF%E=Gbtj>Vw?Om%5jMMdm`4e$zb0+y6+yWdjaFO1|y8jY@@dX zg_3A*@2;5hD62K+6+7%DU)D+uZ%@Q*d6zH;CfN=-j7EamlQRa?SFQqFai{WMaC%{& zknQ!=hSSEjPmE@Mu^yo2{rtz0Lm~JOz2L0$9cXtCzpQ_9O@BE#Y?-xlDq`aj{%+fy zZ`0OF=LGIJUd@0ew;Vf%A@eZ*u#%)rp2_Vs+sbgwU!J0*#94{9w`7{-Wb{cdLZL2} zdygan3RWFk@lL+&H=Odd3+k-}Iys7K$1o=v{|GD~eRab2;|?T@pCc}-dg;zCiZ)Xm z^}Vcg2&s-GFt+_V6#KE#DA(cEd|qVqNk-kPiL+G5CxsgW&Pf;IR9SBY6@=yv1nNkE zM%D)oceb z6XOTWBB(krh^gwST|CvxT%M5+#Z`jlcDB!a+uhzT0F@Bc5D5(FNE=mqni$5C>t|su z`9LXzNBgzN$9J2DsNc?(EASp8lu<498Cxn!Za}=wfcL?jYf-3l^0MhjbtEsQ=c(6s z6W|HF5Tn@y8G)^(AgI_-v7~Un4C@S5o7Ho>3_FOmuJi|2Ub1EMaoE9mPngLUugNOP z(OUysdIursv)*%ehlw?Je1OVY*2(TvLjUC$<|ba0yo9RhM#(jvdAY*r8)|$QyT)0{ znBV3o%!Z^rmf6(c+K*9w{yL^m?kl73?}!R`NG*JxV)Z%CLA^XV16PcwSsA6{EXpD$ zpOdhnITf$h=JhY1l^wiEX59}em8#5F&~#>%c|o5mU)Dh5frb0f;Z03QTRfZCieL-5 z{ZcY%G6I_fF%;r5UrUySry4UF^WnEWcm`$EjGun5a{AewM0tS-!n@+2S%q!VTCyqH zb{qCRDY+XR^cL)7fSO!%lZIxNWBPk_j(my53Tf=)_sHN1hzj(Ww+*X4TFIxp4+xd6 z1uQP_tY6HYuNHLK6OC4Ch=gDn5H(T{U-SHB4jKx4KXKa2zHbd1o-AQ?o}0X&yK%rL z)N0VK`}yVNfj)+R51~Iq-ravvi1;4BxNWBOU_2w;4e?e~QK_AGrfaexzuX9YXs9lI z_vVuaj523e9O212u)%z=cG28d=-qemTduBQx6XdSyK8k&5610q1H&WSiTC+GTFIXw z{$R<6(F@&-`HVxkd_S|Owj_Qto^J^D1vA?WmZ90c2H zGPOFlfgQKW+P)u(%`SHf=&L1jjib0XR{SfxABj#DUY5>}PR?x5PA=}?dY0t74}3WL zR?XW)3BG*quh4S-MXx%(Vs1x4PRb5RMx~3x7Oh%V9HG{RbA5VhDlDlE-3Vh9#zA?n z*TF1G)IJ3{q#0wd_GM}?DH>HGyvha1pXJ*$;S4tNVap2O)^K8GUspfW47cAtTBGGE zmq}>xBsFA=y~ZlSg2DBnH7X1QLRJ_2nfm8#z8K2+n3V-@9SSl-eSs^*_qoe$hezX7 zO&dv#I53!48UD=*M zUUYXvf&-*1r6$ce2MzPqR@n!&oH zu5W8Kmf!%_E(kQ8T@W0rSNEUAz_nw+E||rd7Qs zZqvPeX*^P?F<2^Dxa6qUmw0jcE)`m19CPXFS8+9{gT<33=SsSQ%`@*UKzTHuzswGv zpl8{&?te3EUWEVVj5DEB^Mxc_if+Rbn96uzM>QMQkt2@(0E|eFLOdoin)J7bNOnwC z=hp3Sl<(Rk3^K35B@WOc57LCw9(^T5dN}^hr_84D3Z-h_uS;ED_LnJmMI$&q8A@Ur zV|4Ix4=C8-Z6>s_Z4^9(yV3cGKH2qF5}rdrW!t;^_iO<}py@dzu49KWONTANbt_Ux zg!mmDk<^oVZO7;nHp(L!S&4-f1tgAc8*kxUVen|-v~sgHLg(&7rJAECthj(D)uDYQ zLk;KE4DaeFmZZM!s~le!hUIrY@gUAyq*D#GPUygwQO&PyKh6Y;5LNB344H)04=g+4 zgB83Tv$C#EPuMA()%3T&Q!&rBd+BZ_Sr6!dVs5V{#ea zVBzOlY}`iGF7{Dh&UH6vr3a1L2+|E$ z@jsV$>M1IJeu-$T{OhP>t?0gFD>{kw8Vq3Pj?Hz2F%`*5uHKx;Vbxb%|dVWP4iKjMVfVvHWFFK6*f-*c+D+wa%Fx^%;09hqyh+l}m}ZS$>K3PnUlZ*g^Dk2L z%V=R7?<7%k_B02dPQl`(?`K@#(KI4N*MMc<> z6^i%BW|+Q8?>CbvL1`0Cc9Wf+(sZ!_56R$DOC!!>sI7O2eq4M?ah@%q;Q0&xbC_^u zS73NxNZc5cEoOzZp=N>O3#yA>uiDRq3xTZ<{lY!o#p373MRWIKJOt+Rc^HezxiHHI zBB$Gehnz71PL>s?(2!$eJweCzfZtd$S516>CyLHEeucZ(l_MelB)V)X_9RUQRIkvn zVEbQZ1+Nz@k4xFHgr0nP&umQ|=`Sc_Tr*GokW13rB${Wu`TsF0h@ywq#OX-jOO+{M z%bkF_S0#WR3FMr@Te!7xa_WELB#VKh9k8xZkT5W~I0W0<(Rb?B6w7q*d1o|y$vm>p z$I(T(s&BID&A@iz4>U)YqEU|I>uP+kisw@WW(04wH-i5AkU+5v=@}ZI3Ob>TMx~~q z`GRH7{va>qt4|+dKTUU973GkdL+tJ-00tOB3EsT7J@_@T5b%!|OsU$!GC{C!hOd_g zo(r$^cDH#fTeS6@yp(%W#Z{%j)go<(-iF30zUH14Fcc6XkyxGSQuZB+un1W;IBL>g zH^c5YrcA;4sqYQ3<{N8n*F>QX`szc2tZf!`XnvTU&#t zTLlf}*Mt$`Yo7l-0eBD~Y+8J#6Z_7|<;23t{8q-69_G0x^d=^i&0x{R02K#&axrH8 z#Mll}U^x2V14Pu&R;rI=Ylr9gs!a|13f%j7h!SLa0z??C2rP&#@t=0ujX9n_)stJC zf{T0AP+c}KstlTGwgg@e&1Sf2x*uY)bz`q4DLy(ldwZ!S@bt(kGc!!2;uMIjCxbfZZu4>F1IUcW3GifuMBLP>vxXa@PRjzMi;Sv*?MW3 zG4f)px`%E zNoVR*YPR&hqkW;|oqv*jg8*l{Rwh`G3>liAV%`_F67PD-SyA17?-m1#dyO6nX!P@* z)~x;P)ed<7rP1!(#eG=&d&RcZ8D4m&MNjEubwFRESwBZ*78 zl~O#;B+_OT8Ktr7eq~6SAM{BJHJ8Au0z1f&MXFLVH~PR6_VMeAef&|3Z8fTu*QM^h zbqh(H&^%&hm*3p^s&y8$``Hgn($Zw`N8cW1FrOEMXtA-5vxjc=qx?Jt)NVI0?}*YK$ilXq0CMM3Nx<*h;bT)!QPMwLo{{0kOVU>mDh2K{OhIX;7LO5=86% z794rjB>VBr9jB&t*O5V%Hcx|rNyyW8pSSPhX5PQo3HIAFe_{13;5w0&1| zyoj)s_?)p(ap@a4rr&gbb#fJnrNq3hrkd%Oqg?OoWXmUPRFWr=rcW(ED^`HCtylSo zx7IAkwQy)YDIB!VM8&2;@2|;HGf}!KT8F>sRj42`r1Ifi607G!u|6#Z5ThF7BcLzw zLlpz2=qN-6IcT0^?&0R6bIvMu5i_)yVU#{oZO%Rm z5kGySlHKKm>|3!Z?<1RomjVcao+rRBzHQxM!!zK)ubU#Fg`ywLA%#X{Uo1wgZ+^af z2G90rS>wG1Bbr!IS-UrEk}D5y#~H=Fs2}UP?8NAHJqKO{r@;7yD0^ zfJRT3Squwe6KRxDeht1%45Imgi-WOfieV6B%=pUh{Dr5QmPWKi6hFwlDG#T9Y3xDL zyCM2pDGmSkDrPJ$`K3Ra)i)e1E)}E2>8^gO@?iz~xWAJ3{Y0nzI=v+pn=4|SrFVOL z+*6_3BY{zN%@_LXh+?alfmb!!g{x8J5rT%ES%|5WKU4^nSndxDl-&35~}d<0JOMh;mibOS6SiKbytqlf74*2(ry%Fd@h6l3Ji0TdkN z+hUq`o-jj*Xj!kU5MDmeEmj^ZkrNPHCDk+3EJ7*{y{kgumyA@do9mH9YxCIN#@t{H+MGm$d9$?va0;%-jz$uT1Qy zzq`fx$@M|8W43cckuM$tar>tcK4E6T$q})p=~eObt-BlC2?v&@g?)V#x@nzs;o7kO zmox`wM{iUKP#v3@k{dRv{Y-QpComcUGq~jVwlJTf3~N^IGz@zDdWYgazi=OtSq7&Rh>M3GDeV-EPEBI!0_X%d9!GxInB4v zpQU1aLgIJO)sLR2&wKbC!+K_@fU@W zTQCLBD)^V4)~K)@kpi1jtTq~{XKBBF0B0&xGru%C81Rt}TZ~bzEa;6g=Zx2bn4X9Xh+mbBsq*_;!0Sv#W+fCr0jNwzk>0^YWI{Kl>)QS!6BI! z&bivc+^?a@Kk;KBH~F;ViLq`5Qrw@hsa6O?X%`p!vAw;fAG*9bU!F$)BkCu7c84=p z2Bz(5f4n%}~C#Pu}c0;H-#@ zcGd(fJOVOV=G#_5mD4wUXqFRI--_&J0?d-$J5Q{PV$lu)blj?#tLW!C(g*CTQQ75R zm`cAg|7iMTdP@tuIAO#g;UFKZNp(*e%Z$T9n)Gey6WrHKmiqzX~tE>9Eg#TaOYX~ z%7z@wiVa3e?o;{gT>wpbK4^yZgrxjt$xHU)lUqffhTSiTe(@l_h7&(0gorwQN9)5A zm*leH2Vgm@vzA{~M|0yg!cc~Qe~{j?o)C;T8y?b!LeUw}0;f_;XWy%M(!k%OTHL3(+A?vtWAb-96*1FIJvN{X zQ>BR>b$08X3ztyUOLglPBP;m21`!EFWTN+XgNJ$^GN z8ihonKT+PxAg#e59zL+2v7NOxuU7()CE0~w0 z(vLT?d;cQe!^NNkw48HoVA~&o75iAx*J^^G5)JXY+Lez}%C=G%^t-U!j#r6sWa)U& z$9ui!B`=m6N?Ih~IWl56#YzuTY+Gj#{kr@=Upa(lU56$B8)E;Va7yJ|Ar#I_&qmSc zmNISgQyN=&P}>}fN66NM5pwuHGG1#(xw#` z-D^!`Wfb=5;C7lZfx|~+OBIx|_yb3>6E;1*+p!8y7{(kMvSKc#zPX4KR_f?IAdi}4 z1i|EXtEgK5GTt@f;WLoSb6i(9QfOrW{>R-Lv-Aay)IS-Q!N(R@dk+n#LmxYt;8?Bv z!zIr~8*}DQUQTY^<$mHMzsMYvZ>$Le$lF~GIJYCpsqAgelf_!eSuk=!rup)lsuHpj zM)m@lg_y0BvE~tBWBKq%gx@vc4(=0o1Y96-*Cb%<;yk-Jj>dnRBW)Fh_BFQmHfS8l z3%L!0S-IU%CWtD^f51PL3#DM$uLf%g94r5IX6yrJMqX!juyk{&N>$?yfe#XMVIm;% zzt;K)7v59?ZwK%x_=o(D!}ENL!$wW=gMX3XBS_WUhD@NBdxBEQIX4T17W-nzs2Kk~ zVo!aC#t-$tjPnD*g|`f3-2apc4?2OlbK*a7e>U40cjNq%5_jnxq}jnc2%A&t8N?ux zSYeD`r~nc5a~UzeME$sT`;`O(NN#uO+og#$M&HUn1!lH0Rf>h@7}D>wJ?8JU9jxhF zgxP2}8tUV}I0ICBBj7^fut=+5&rNl;g2nJtPVrhfl>zMk&xK3!Tz?}Ga^>bU=?t>o zNo6douglx6tJA1no_g(g7w2wrBh0p-_i!b)`ur7Ie740bx%R=}Od-;O zO|=pVI4HMaw&E0@I1o9|wLT}L7aJQ=FD0NsDF?50_+);|u3 z`L-xZf%OYS zN{!w6lx!zj{3GqJ^HW{-&*Ns?@_Wdh4LP}|M=?ygP3~gd=%~I~sYAq4fQbxP=m^u@2I>OZyhGnj%V0TGmTmz;f$XETt?Ovh}%z!aox<1Si)5x2sIVz=FL8qR^>&) zXGaYGGPW;tf|o(eB~07^Hbcku+DAZ`RyayVJ17|!Vck-tfW<~JJW9tOT3cnut3dw+ zR<|k+(hNsYf{1{2?0A{~xC4utK3dWFGrL4LK6sGD_qPaHY?tl~fPz=hg#_*>)ei^G zF8`IuB|;Ux2T1)IXbmnQ@lpX@JKL1Nr^ADlba59c)#B=-t||^Zd(qC*+13U|Ie76%@dG|kP<+*ZN~cDxADYp z?`;|o1zuhl)UOZA+V+}{+&F)paI=)>b;O`)NjQqGs6>cqRo`%^sv{rPlV1ovoGh-+bOEamnxM`T(v zPzaddHUR?`DQ+Y0j^;Ct3)g$NevS+tXVXx>PU8I1oQkMdD6{hJusVr9C#6Hma01)h8QcS zmq<*RNr0j0QzvZiO@I;OyHJ{CPm<-Cz7X?kh2ak9TH=%;pH=N$4wE`Zi4jLB?8&z{ zRBWAB?;(IXa6%=5G5(j8Td~q{z*M~Jcp^ufr*`i+n+fOxbPvYR z!;8;P70ETw%{%nDW(F32;hy7CDrcrPn)qa&Wb&_Ye$lU`Ay|l@9VLg0Y@9XF?^RsK zOEL{USI$A?Q!ll<(7faER5gsmDoj;WZ3W9B#O-d39ChbK`sJN5SYRD1@mw&{_IRIy zjZp8W<7(4}BCfN1%Mi)Im*tWToj6LvrS zFE^y(91V>CbHmvC1P`PLyjY@)C_He{2M1P18Uo!s`=t6zwUh`zfX45lK2JxltR5tM z=pGHh*6K%QVLPY6Ta*?jM522Q9z5JWAvi2w|5ShllMeuD)0=IA2bs>7kAAMyH+qq6 zg8_XUgpw~T@%uUM z;DiJS>-kIcp~mz75zjN`?j;t{D>1IL8>7&$P9om*L``j!q|Q6%iFlrRu(Y`A)>Y7^ znkzU;YY_0pb-%Z<^O#z1A%)v~R$4dCL@B54)GSelK`u+rN$HM33wb};3fGs#GIalE z8)llXOQ<8oES2v^mPuOp*gDwyCrALNUvt~ij;MF~^M670^Kkn$ssZ#S^^3qIUn)b- zKo#R-;~HmyRA<@Pe%0><(9;ZQn1L<`m@kNysyYjvrm&?IuQ3o5YRhmWFv+|H*?#XK zJio4my}mQ)m{JL1p{~K_&dt69^7}YKno&QZm)GTkbp`9DzX22QEEo!AQ7@oV-6Sr7 zry=%KE(q=!%_EAo>OoENy&cWOP2TYpn@i`P)`PqSP)g4DpZ>QbpG{)$x-RGNuN)uT zN2V&A$bHHVo+cQ`Y`d3&Nqm<(QPc2nN>im*!H5LE6+o>DC_MLx6sLo^?T3; zZUiLQI=|wF_zPU2YLS|+6~Mog$?$-{6Tdw(Gm04(`ScR83K zg1z&KrHJuGz};5QGmet90!+<7nAND2SKwd_jX#_m2HuL`LP+Xf`TM&;Pu7EKERwbg zuP^Qk!v?REG^b*&t+&8kqUvns=+2*&ZwIt&5GwbG>6q_De@^s&N%Fi-4BXDR_CkDKz&gA=nhO0i1(LA8RwvC z>sLbXW7_rapPi(}-K@|!2NJr)2d7REpn82bR7~HU@wNd0GI!Xg*5&jF9QUsnTDO@}2Aqqu~WH7Sk zIV=Mu$2_+TG<$iqqe>!h9#~^BjeX82g;l0s#qG5hd3M%F0Ve5lN<;=VpIqME$NTbL z#CjCZQ~(sm7Ts<;=vTV$4}cpo7lT#K0=e-SESNyho_mgYe(6u|A@eY!4AC1SNj5OW zmgirL?JC+wS{*}+C0h3y60je5(GLGWHr^B}_GO*@CiNWdbEy|>bjBw_H92rQ9;J7m zT#73~!9!!C5Rr;$^!*Fb`akUabMuddVZSpq;GiJl{>9GAb2!aCxzrf(kqZoi>P)|w z#OjPDmA|7Xnv=sbKX;K94g!1}bQ6Ny?U@CD&EMj$zx;jHdOoN4{{y;lj{Z;RCfHDD zp{A+e==Q_JWlK6Tg+$c#bM3#$AxHG*V^w*N-^eh@jj);Ez?=1RxKeZ$$m;f2c9`ZD zV<}sF7UG>asdL13J&}!Nr3kp)!Tr!v{xD7pre|A~NN@eidH>oKCbBfa_cO6KJ@0Od zNjgi_IVr}`guO(bw48~_^k}mnf6pU4Ip&%kN2ec1n_j8FM{|f6-~UD2$jX)#ZItcD zO2SH0A7e>->e0STyCGI^qr_irE^1xexRn(l^~$Ax6ceNg4cg8=1js`d9RJx!?E}7j zr@`NKDA^c<$3WXR)ksPU)CeAVI~eI50r`5A`nv0i_}7+N84ila&m zgubD`a&Alq2P5icvl%I^g>c=d3@(=G9RSX6ly|Eb=2!rte}u?_!P%-o*AxKp5qCe^ zq8S8DWhWb1R~e&34PDS!A0On=lS$iRcjO5wqax%aYm>3X;GWGl^Sq9K=3!1{2NC=o z&JI^Mu-NHrt=RntCjwXQp9|WJQ6s$t*EchhhlKEHTt7Ur8`9xb#j|?nUHnw;Ph`vR z^lwT3@J~8krw2%Sqk+mg<9IlrhdcEJ=;0o`Ae+b|{x(Aek$?ggV9^iW_ zy96pQU(0h1#l4;Zx~X5krnqi0{ycApV_GWp^RNM_O*|l3GKrOT#sPI*9Vt<;4>5bg^9}c}|W3 zzhc%srzT66+G3H1BUP{Oz82-gWs74^(2E>g+fCVSo2kaqo$~zY<>L6eQvS~M1wN=v z^IIDIU$8t3@e9V4a6mbiJqf7n*Q*26e3?;yB^;|IQAwT>T(P0G$(VE50>)(_c!Me7 zaDPpzML#z=TZI{wM}0PF{8GekNWQ_Z{o!~o65m>ukKfoXpy0P>OFx-$xJz8INk(;> zkO$gh7mcU%B|>Hf?g?r!oy$q|E&wjSIGU>{7w*TX9wHoSXZnmW2!#L2vLM%Caimd! zT+-ej!Uui7|C9{sOEyOrk6`(l`<~cs4kOJt6R4<|);#qn1LZExBZwi+9s70gFX5gK zF`Wo87tJy_z41V`(wEXmvY19RCuDl>XxVBaZq5?+6O!nkS@L%MU5yMz|A;hs&#o8j z1ME5xbtUOgyeZEl`P=#V26Zj<<`KmZNOJGhy=hwqk03!!rb+*yq`)3N=z5@u{&&w- zIVo_hcgKg-QXM|(_3ou0jTbuSrJvvPVyv9C)ED2=$;N)1=g;inpD4qc5p*t-#QV@h zuPznGb{C#L)KXpo1_^zvrHEHNkU4@ZIVAuFX|~klGG2HgD~2I&{5M7(9+Y6ZN1~m? zI??7QI5xsX-MUN8lX^McT$h!i)@!>KUAf>w54Bcbv%?=jb^b3S}ED!p+P@ujB zY3H8hdkO0o!dcOkmESd(Rx8V4_ z7S68(f8*M_<2RQhL9Bxeu=5xIJ3oYqxB8o%=bPqfuW5s`ZC_E%C0E0uO1&YJ#WLt@ zL>EHDRTfdYvQY}Ur-sV-v(005IQ|+&qNyd{umI0|vb1r^-1xD4Olj@vsnvCRN^K&ZE3y zi=f6cRo69%<3W7*KFpkQUd+-^fGV2WRr>aY3zPM*4Yd4)0a2%9RiM&L_rXK2#*FLo zMo<-O0eni?QiFs&DmSz^`yPU#pDp)jWui@5vVvXEtY2NT!^u%lAVHG~DT8EWlXLS7 zmB*#hrmPBGi<5Rpou;64Nq@lP;*1Iit}ZKoo^HS-`kMV;x8N#T%Y5zm*>NG3Re;Y} zhRB{tvLNt4beVv+B5+MqMvl^d&8G3)cN5DP+q3?QphrKR*Mvh(D8T$)j5BJkYC~#& zT~D+#y3z~5avlhZ{>F01z*tTcQjgoOuC8-ln;-l+ebrER9WYU_QHlX}Ua+GDUtkOpd)1-+PWcNYz$rhU>ctWO&a+DqtavSwkJc1I!vxJwBpsZ;Tg~e#`ChLTW6Lm!#JcruO*0*Z9zm{AK+;-Mygo z;*uI|OZnLPYefNjzVcD$%k!AI^)Fu+%ILztx?bv;+V``Tc}1#Ypb?PujX%&Y+qqDC zW6;7WI6l^=rcj)JC|WQBEESB1$SH6(u6qn*jo zlF^QhL_1{k=1^-UMTA*#7PqFeErO)%h65R~QvRWWdnqAZ4#B?!za#obb%4w{4A23X zDyzN6h{P){ccsJwkk z*Wgodk#;Vqa#t#W9^&~`tTpn_bP)KVOlmPXv?!}wjfN7k& z(JIwrFyeFy|3s;{Fu8gO-E>7uxijzvC%7xyW#9OEhYmT#BUcjlbI{%yGMB-WXG3BTpc>7t2_zUxi#C8_ZhT|b z{=vw@AXXoIDsrG1dxd6=WlTVDY4RCw!VDfZTK3GR4#4WzDCj(jm=SJ%lQt`)_oU5n zw3ow1Z0e8eyqa^fsvp$B_lY>(}1~NJXqtau{ zDLRxa4D^%s!r>=_PCh-ni`NEU0hupHX4hPzP@ZYb@U7-}&9$J+*%IiW1Ei!LfE?kD z*Od(wzk$?aDcCbOba?^9-lmcr8F#EIj>4`FsFg0G!-ymDfhF?eLpDDd_I8O?+t^P> z>p>gL?%u@}|ET@fL~1ZLED`g++p0acQycF(e(Vp+M)P;#_$9gy8ZA4JC4EX9K1EP~ z`w#;cpUR`L0}1cF9zjU^Y~F>Rk^h6VH^IdN_hmUdZ3ly1{Nq%bwWhzG&&59f`eyoTvN(9N=@Zw5a~sVdxF#X| za~A+}+6U=i0bL306pFLes@{a28VhO)KW(+!X(qSB==IJH<6p~lUY=A1nryuR$wbph zt4>zxYUVrwqoRNO&JF69SnIBgizPe1@6(3mJIdSha=m^T7io_pD@cF7tzsDPBmD=g zX9t7zgB1UO^|^n6^;Jyc1!`~I$BN@NhD#k=oSl|(8ln!Z++0@bif!JyB2U@eM4ej3 zP<@vCSZQNtf|PV}M|9$Ve||c6n@$(zE4^S2&e(Jw{1m`Kw_#Y_cF4^h&40E*0Jk#% z*qgs-`W@$6jEcO@b$5_TwQb=KdXE~^`x-2t@JP>IBuj|xywNz+HDHiV6=}@J;evV>U0+#vnH7m*a zzy@zj7{F3z>jVH^53wzOoO4dG;RS;d@me+G)W=sFMI@)lwq8Sk*FB+41F!aQzEyT&VKw5g^lfRdYXvYGx+oS)vv+dY&PveZ?xuU z3i8>aOLPQ-KR$yWWf`5aSW&0=;R0rHY)&9Mb9&tV?973X^%9T%PqJPI`TTt=#ywe2 zc|d5v7k=POg-d&E1bViDSidnk6)sKFtB;m@u(S>9x&7cqAE(c#7AHz{XSwwwN=%O` za@+9?ty(-0_rT)!9l_W2K5CZ)sx2RVW(ab$JO+Ub{@_(>=+x}N9j`W7%pVA+-qE;F z9DgK%kar0FP0DAWTgxI+1`zZgHgP*O8UGTe{BOyjup|L;y?6GWTxU*|<$x|29TiA| z4eSQ1Z)!D}IGw@LVS$0%tN}E-?G25?sy1S#Wgy6Sx7D-)E)h30+m~nzG4@~jJ9XR~ zys{7Sk)(PyZmNhNoG@!64>LLFcFGn zZ_wm5F%JK!*ml68bpp}^X2*pc*b(F0^4wZzwoC{N+|T;y8faydi4ql5JpNbXm1AZ@ z7UYuZd>o?#9qr#{Z8Qo&>TeF&JAXLtp5gvHGt}SqF|Gnu-5e*0{>=QlQ36BpvC(#K zXRW_-@hL)qSkUwsH=!V~gcC|cwh>su*`}3i1$)2nrVf*&VnQ+NM_E+rz|i)2jVis@ z8-^JYLQ^}r`z@Tn#v45q<%KzLNkBC-r4G6~%0dM^Rugv%j`IXz@UZM^85w@pk>C&{*VrR%-bEzScaQW(N z?qc=#I!^hRDgvTLQT>XVj@rdD7WYv8UBIo(B>JQOkG;2wi*xs)hAC34NQ);N94Db!d&-wqpi}&umc&`{3k~~kcce2*b&I$qw zM!n)Z%3o5O`hQ?_9I^egDq%kzG{sTPcbl;xwxxay=8B$$`&C`k07T7M){@eizaK8fg$eWg$K3*1gS7K6CU|%n8!G)vxKv z5_8nSZ0```GJJyK8$KcdI==~QriHCN9R~(`mRsQlFMy~Uh4GRJfz37P!Ru_!8%#GI zfaR~tzXRIcvwAAzK)-J)1)jL2p%&>!`tnO4sDftn9pgWpLK(TaUJ@i<2+d}RmsOu( z{VkhC6H)A!(_0nCNZ}g~*Uy}w@9sW&a9Yhj8=l#0{SPW1ZArKLQ_aRnN)YRO?Mclh z?LTTZ5V0QZ^1Jd2<^8#*v#ze6emm=0?>@gc6B;=41b1$2pLVhRn|+Xoxix^HCv<#; zJqZ%do*G|ATv;Yvp|Y&swAO1`4fPn|U%Ei0b!HHt(sd0h{+9*+NT3&ULVuaT>MXYc ze{Y{(dI$0OHFSxxv0q9ks4o8?vbCP@N01#XkrP_#(jC>-`&)qhH1uU5;mBX%+^*-( z#KxRLf!x7&UJ9*WL&*&3j0f|GhY8W#;2?C^TbU+0$kO@4|=q6*Or+Se~9; zeGED0n%ntb0-B_eFpI439Z~g8J8{SCoh(YXEPV08Wxb(MwE{M?mgAXvfBy>eN z4!_IO!2Cm=2CwnAY#Z|3`0!+tA8c>KLa!Sm0!|fhDgQ41O6uRDnKV)6>Ecswbc6oJ z9)Ez4Ho<3ffQNT~7$f6{=b&#UP$v4W4R4^$-grWf3GzsMCh;6&&@pSR$sxMWzoN@!u+dQOhF3D}-GjdUAH{wB16%)tLI9QVfu(p&g^hXrzqO?+a3@+2tG6vLDN2mE~-2G|$P@PGQh&^xTvl%ENRZO-lyfv6we0XNmL&tc#j z_?86x+tz6R>n1deP@9j9`(Z5jKi+@@bs*u@6YM{0{)@)qKFurxA1g`z<>Jtp1v3C@ z^Q52MLjLOvlBiEJi^>V3Mjasjw|#grs52rFrjh$r zO0MFGBKDUPlra`9nE|1m&VZy`q^jZrURa=HWbe*m3;n(Gx?p|tX#grksy}F>(_=jW zfFQMW%gKBu?>p^X_sJ5i-hIB6E@Izh{wBAcB9(#MiWwn6#=S*al_-493&-5g7~S0} zF-5m7(FBO#`00|QyB2lJrh%|mQ-}TNikTwHww%D3;O+MP=Q@<4K`*{ShJC|=n^g0UnIRy-~wz9Tmp`(0)zn= zo-W64FZZVyZMaZM1jF&EB*C^ss5uXQVd9@sW^hoNk?0t0UeMnfDO8y{H#{x_;&WvP z2B;nJ`kHU_5)HjQ^=Q>xT0|Z=Ze(t5KjC!pp$_fbOA1*D^jNBBORAn008jFT1 zIQkej1M&3Yv8ZK}z!15g;^$NjBga0wc;YTsZ*B$v_jN0d?dT6{X}rdu;TG1%bISG* z1U}A_`BudO#T2$rmNa@^4brSGhp6ftqrrlLw}>~O1BA1s+T(MaH{9#bZ%%v9S$-n(kGMDykX`Aom&YrV*RtH<{`tgKfb zluf)+=UH##DWr9JBhyc`@M4zD((&n;ADjz~Qz3#t6T>b2>Q;h^agr4mF%RI~G~PkW z5H!oJ`_oim?4<&wx=Nr=sn^Y!!$i67c%GV?uk&8hMe5n|9m%KMkrk4~^E$`^rp0VV zT7%$<7YML5m{^r|H8;KCrGHWO;iF{}2kVA^L#6KVo!`guJNm^d_$Hs~+lR}_DZlQL zl||%tfmA6t45!nyPzo?SXu%Sfq;9U^U2Cxihe(8$wd* zxjo3;aF=#^wl1aAlH}WWeN9c3)O&-9*F1b0{wugRn$>kVe*0NB%rpgvAG^#Ci9uhb zP?_nM#E@B!a|LzuTHxu+uTc34LQoi>h0$Oak|Q7 znp0LUQYudJx(spHO1wj)z1)+eeGY9BuX-Ni%joaRj%ZN@^ysjt9wHSsQAJNX#Vf91 zDXaZt-6&#{ecpY%BH?=b;G_TUv{)%GZqa9f89tP|f+yk!E6u0$$O|8gyfTiN`HMr2 zhK=EhZC8er#%!IdZ2$oS=kBJ}nA(6zBb~QQG=87a#?fV?bTn1?W^nHjC#tqx3$N5G zEUe7}K|#{3{@C-Fs)AnHFk}+kj|6P_%ut}M3c9*Na0 zeB84p?!!SspYFAGC&CraYwu!-wlMbEYkfLZ&pC-4tMiBfEPk|4t zvY#VY!6qBI$D5gV#}`R*xF*S2L!;Zr76w-%Wn0Xdw#^6EKJnHQQ;PM@lM08PztCp# z5sa#=Ay>R|p89hHJ`>Jq;FaS=#z)QCo^yc|ys09!*!CGcif{tX??k*V1Ac*0Z#ltv zp9^X1O)8>JFM+DbE}%__{vu*3xHYxi^28agENZ$Wc_33%Vyg-vbSlKDN9iE$hv*=R ztKmKT?mXp?^tk=m{o}C_H{hW;Py2n%w(bJ3jvMGX;!|Q4oWdKw!A%m5r*Z4Ak>?_# zgd@GB{_xRtRz}{6u}R`sAtsbD$7f!T1*3Myr-&K zhjT@g*33xoYT{m^jXHjVg;}pXcw=nPYPCgw020c0C#0ZmRl)kYOcL{FohI&QMzAYj zkaC~Q_Glt+1Z7#T{yY8g{RYMP8<1eVu#q&@{>+qs*{=@q$Eb9lvxni%dsc7HuNe%* zK~0mdLIa!X+RO{!uTi}w*KiVeq6dr0Ux0cWe;M$&-$)GGezJXf`w zwIC9c%Osf_0obAwPWqXmvqZCY#=_(0w?2no1jc07(<87qJ$JlnNk`OA z3A2v6)Q!JfdbfAv=z=ZSj=}mX@2Z!!HEH8(qSE+zJR5JBYo2=pCl+2U9~T}usN$iB zJJT;7OGKLVA8@B9ANzy+Z?jB7b6HR31$tl+LwRv21e1YW3`Lz7f)LWOB1*47pLEiC zjP&dC`=|`?52O3emFgj_aenZYufK%x*??Rh&LJ}xl3G=Oc-eXD11^*3<30AKaa|N3 z4C=s5z8ip^Lt`QyYTeL$EybX}4(?nr)X2YznL4kyt$T%tFH3EK7^YYGT|=ZLOkKbD_!Q z-gLy`!&0ty(vpqS zF5qhml{d0H2V<+?U8!HQ`a2yf8UuzSq>%_6yI&>Ah*khuSp6v}lgvpi` zhG!DNN&`%)W3AS@)X2ViV7qcfC@56+c~0Lk!gu=pg<||*HqX1jS1hMM;`h;jyiOXU ztC-!c!e%S&iyVm)6OXl0ZnF>hQjP3_V3lz*uI7ft@kF| z{H;>9GkP?TjfZRA8wDI?>GF#H?KH70xmhLf37ji3WM{48au%?-U$COQcZ-1~kl(6LJ4D78>}X^XjLYuptEYs~MXXpOp1-;1B>olAGy3V`qSk@srCg`DXY zS-1(h@iFjTk!x20BsNHk#)~%0{l`6`xA*uC_fwTtV4saMNLB<|t5w7oN3Io7kRyUS zhb=%Zk{uOIKEq>Y-LGtlE(z?Jf1EG`J>Pmccax^an^AYuxwQZu=25uKVcLX(p*li7 zC$Z-{^rB8F zUM+;*R~@1i3a%KBJ*&lQ`h&Y1+?aVexQUwFi_VdkEWvNlWh_~ z%+D0RyK+NK0%+SmP9AEWF=fEt(O&m(R&qwg9l_@)J{G_}W9J)rIByU{#?I^vicDHD zWq5%bf3dTy5yx=f1F_|``NCT3*2f9e7-{CI1UgR8= zXtxMI94ps8JhP*Dl)GYYPrH>ELHc#J8dsPyd%$ITn-g+tmwMQTAMIb^`z2VX029LnQL}_ z$v3dDOFj!MH|ZAcHhu$SS4#%ZI&2UYsz6^Lz&g{U+%JgpVaMrO_&bqT=_Ggljhalf z-?s(|_J0Hc_M6#IW{Q-SPn%at`k%F)%g>kh-%mF^7R9O9#hZfCcBX6m8Ky~?0dZYg zb`1(wN4zv6_n@Mlkf5ol$Fz$udkgiZBdw9kldQrA`EbBl+4ii*lHRx24@gH6+Ngrs z{?D)2=|g#2S8RrHHU+6kC+zRnP~VnwJzPwT_{s+H`G`GYcJROO6SPM9Ho-xu;c_@f zo$!U1K3n`|>B|%f%C3JTA3fsKEu6da_{3iD=bBP%AJb*t$2l*I)Jg>Jo)$Q9$cP+d z3W9E=@&!W_em+h(tU2L5gs5(Kl6=hQ;%7Z#?kR%PrL0?G9W0{3h0*7B zsKsonj5z-I)-N!Bj7Q_nYi&k%TFGlgZpW2Ka(@;PV03kKv;g?{>eb$Li*|;`DpSaP zV5Go9*2>5l>0+e;lZ;NAE>m?GtlULJZe3{FXF)15zZ^f|#g^ol88Jq%M62%`>7d*h44$l>sO(qb`=sC_$t0bqx@YdGI_awTZdm?Nx4DF~4{9SZW-aOqUS_ z-PeA+KkV|R0iWjSDRyr1?70(O53-o_@LKN(QSN9mZd6uP?fPQ~stx%@K2JxJqTwGo zx;5Z8W6h%iH2J^7vkeq{@x0Ijvf76JUX*Wfv~V>t+f=C7|H_Oc+93epd4jh^2a5I5 zJUiiwKmk3%x^Q(Q-5wHB#tdN^%{JId6;V?^)BrRt>kR=fCnY9J%XX*zMwz`+)#sX= zNS@Aa4;kM6CvcfB{7B%{5*oi)&J^bAwnF2#1-o@Cc=Yc-!RyZsjigdpoxtz+N4BEp zzB1L(7t-I`!#FffVbdv$Bv#GJ^#VtC0&o-B;n93Vp(6jz2j!kXWo#D(Bex^%qkij* zh55SUFBF!9)fg;#UtPFD{jH5ni5*!$?Oq)Cx=vIQpD|^6=cF-5%IGyf9ZQZongW8o zqwt;B1c0s+TcOvtfogo-lzPjq`}Is)?`uPb+Sn)%&UF)hsUxp=UC&$k?fwvie=k>D zZ*+O@7&^!P8kQvsbgeaCH^Og?;*kKyJ1B2~N^0B`mFFRkjt`SCvha@XBr&M3m43}L zfuwRjvaS}E+r?^S?0A2jEgd+_+DY(lL#}Dj}5;2%Zl7DIeTvJ^>f-(2nj_8JxIkJ2oZxNZtb0?%k zR}^3wEPGaLW2#W#SumU_Ps+7wkL2@e=>4aXx(HURc<@ROx4~SAHzzq#YV_fFdoX%P zGPr(o7QXC2=Q|I*2$y1PLDw|*mtEw(S^=u28EC&~LCh&2I~z3Ic}G~=RAXOsSmHEZ z25pKD$k#kxh?zAtQO=n@@0oudoA~5BOAgfp&1)_@uPmfA#(|v(!y10wsSS@41l%6? z`>-HcJ}ZGw=%5(P;0Leo%QBa5#d#gBKjR&y7gf#0dilY?k5UXG z0D;OCGx;p{EXZ=GQHCu%u^3P_O)(1Zi_!5~^;TcxTbrOh%BX-YPqP=P`LS%ez@h$g zd)YgZxD6{+o;^xQs=?A#PDDoZLF6^7?|OcTy*X5a1;jze42K>=N3Zc4 z;^(x9Mc%LlL*Lff@FfcU{wN3V<|?m{?wan{-u>!uuiX%Bk%%;-lMg2VXvUbtnYojH z)-Q;cYkZCF!J4Pad2^Dk1CS4gniIRr43jA76sl+G%;qdVY~Z0?4z6r5Ah~?jYcHm1 zyLWTJ5AlK@=!G1^v>*9g03m?6 z`DJyg%LYQaZlm~8 zoC|5=z1yU%^NPvyC%h67) zR;dblb2b+yEE2ssscX?lK6SIThV#DZdB{KkO)s53&x_mANbkeRL&x=Xt;+JdW5qvhr{^14JQt}?)4BCuUsY5U0mli;J0l8~dXTh><1#N~@u+(I8_Kk1HRh`45 zum2ta5@SuRkS{L+Zc+*A``qTP=9|zM&wdrc@9_AqUE9A%1D%I|=_F+z)#>I9@@3A! zlP!%spVk*a&9eZNwm5l$=_KE8k2Hk?d4F&`na1j|V6n^UgD(OT1A4nn$CB#=mR``g zr@H|zK2w4_?(+_E++uso11YRCfkkqy5HkHmr9WQnzTY>uhmJU6MWj)U^Rc=xtu(F#l3Byk037nk_WFNfSK^ ztB;dKw6N-WwD{HZb2Yh|q}&SV+f{I-{E`)qJ$bUXTwx)1n2frgNc)d`MzQj zCwcz#JMa;)qRzB4>T@9BOr$uR`D@`K)v~++?kzYkLbgLgEW_qi@4Lm4d0`>EpIE-> zgaMd(JIt!!PPVNgyIe=HcB~7QnP@$cE{%N*Q)S=WU5K#g&k#T?;)lrEs;=U3qI z1#ka(Kp=byxI1Ne^Zsm_M54Fl0N(Imn(CyEiZaLE_XA?}6}9pe>cWa75(ZM`Da_rk zX?@*i0I3sB?&NHcrhjX~*(>!facf`1qo!1Uvin#GtnGn1rq_-k2y+sT_83z}Yj|E5 zeg^FzH=HJ8bIn%6a1tq>RS>E3(7*ybQ6!|KZ(aMG|i58?={pto~8dOx6H zAzY0<#hH}d%Ix5p=b8j;JVPHwdQ}Q9wusRjYxVXLxm_PmcLX$+^3;?&=N2T2u*@u&xo%2mZ4uv~ED$zIN$ z?6oJL)+GrR6OyKn4m`T6mB2pJFP;Q&Y|C`#Yv{r6>mOXLUGsd0vj}^dce{y^K+>S%RF;^#eVj zEtn1M4v4W>I>CQBS_Nnth*kzU3k@N5UmZ{;G#!vck%60XmFzN)be2bFgG756O0b_598SbZNoN zA-_??4lukg|L0}Nb`OqK43@B(p8Lle*ITbetwPl6?Ry?G-x}Tzch?kNy@#B%jHW(7 zy^pSbfp`f7YfDXS$K64M*nO5EIlNf;V4WGWx*Ds2BLThAwa6C>% zy^9i*Z zMbH(x6_Fv{hB$WQo6Ki{y<|VLab(MU2Kuh`(nligWCDit)nWw$m}?z>drXTcAN8;u zosfAs=Pi;DcPoPL`yY)l_h`yXZq)i&zGlmMem6|2S2ye+U-?jMZaBmis8IeHFEl60>x0|lYVjfn$L=S_l_ zpA!tirbP$I6*c0E(>d(LQlkBu6xVX?Ry^He=fHU%(jIh~_R;v~qev0cHbZcPmg?6N zEBa?|+i!_Ql0%!LT$&S*nSHc35?O9-X+!dgX$s_C zB8e{HY@IP?$|w-ilYVf4jzv;r`No7yPXMcL0_vncXyfhOiu<}~=2n0M8Sos&>yh_L z2B#focRSZyDK+RV9t(8lG(ZA}1@wbrk3hRQ7I~yu9UgVUYntN}4LeXiEK7a?&VfZv8L$ zCslb%520EktqA3WlEwg^>oM<>H9$$-)*N_CD;~5h^%-`1o{DOL>UE;i$ij+Ew2QRg z=uYeGsWVi7(Mij9*5i&hp^D3c3R9+lN7{{*_k}`m9rsjfjb{+kmiB8@Kx1|#4m`YX zRyd5R$BGB%V=k6B0nyzUnGOsjIq)n9Mo}}M%Kc3gu7sG_C=UnP*FN?D?97fJn1pe% zvSzJo9x8si&+tc$RRoCRbfQ>PKF8Q%1#P@kM40f}m|wmJ>T@nLSZmv&?ux#A5b?PE zdG7axR6YUoyLr&V$a62c6RcOz#z)0h=kQjLmWHK9LUCY6ljajC@x)p9KHM>c_{Y9O zhJ}_PMMC<=4|(mEm}_PA!_8q@n15VE{@0HX99VJ)PSI{$JIX&w{8nDbUR)>uxXyFV zYAY=CpMo^1NZ(G>igUG|)Bmffr-I!$&t5)+><PIf1IiO>C->NA&f4r&{n=CU)-TnYufESz$h{sPwo25;tq11>wp+{2Lk;AaFlh$T zw{7N(&yptpV+*86*s}0q*Yqjp=9B?KwB757rMUmN@K4OB$? z*}FRirN*~1g!5^{o;JutTwZi?Wt!|^In*9gdH5>*V^Pj;*sKpU`}ur&3Q|73$s^eO zr>*!JerdbsoXXOjnar%e`<`E8 z7L=vj_i8fFQ)h3wfKL4MJf+{E-3n`ZVp()fR`lYEFL^qfo~UEQyg-q1=O$8hS4qI8 z~D)e$2y5^!*b;jdG z8`FxH{afY`DVqYZ;Ke8^69=h*v_D4#+Od@IX^r%W%Xh9)y=78G{o)pGKH)hM@s@1g z5W;C0u$w!)lnuS$y>GRx(r;+6(uT?+aI=%OI3sej%06b{BX8x4+_1`0fWMwMIO3T@ zBDGR|1R-&jqo1nr7XFdYWCg8I(JT+QDbeY75JtrKFbGNU?DzHKc9>S_3)@oYSGx~K^5Ct zo=r@vpsNZf{DF3|#7L#-cGoxAYNBH*C`LKb&tg~O;`|rWWTplmqq;qmmMHerzHFfR z+pEYzg%+qPoZPe3B_8981rKJKk9a{NdKr)9-IMWxc53nmv#x%*E%pd1CS>wf^U~K( zFOI#BF0&E4Z7Qhc>D}I($!jT3A!$LM`BuH|kj7iUk$_0heOdt<*8ot=_pu)NvJm%d~Z;mJx1YuEau-;I)4;2up<9q@Cge@vd8-^6tLr$Bo^gn|8vu zcM4y)J&^snuI+W^og{kFIh)lVoBQ5uWTFDA0TqsFr0NrY{$s2}^0?i=RS}1j<`BC5 z*mvpMjs0d%%lY4|PVRD}Sz?HUDVHt(qZ;(y>O>8*oqIdU(K-sAF$%~ikd*`ctQ)0= zTQ~Mh47u5`ijzXi`|UE(Xw){dpir`_X$5BD{%dQ+9;JH+-M^=N==vKWgu$WZS!~7+ zJK}UafST&YtR&D+FkG~RtwSGcER5c&qOT}yRY#mNqH8UM zLoUT@D6on@+%^~?O*?)!%R#)|L>>0_oXjpWJ^b0pFnTAMDS&s1(@*CMSRdg{scy&}sp=U};>Rpr zi*ImzMAqax;^{Xnp@5*4gwpo0XCrTETR<*KoNlFu-lRE%(a)JYd+A!sSJ$!eS~F(Mx_RuUTeys>GEP6~%L!g*Jh z!CO`!`%WRpVw{=xtU8YlsRO_aw#XV(JGTD%i%(`UK5IzS3+MI7<7}`PdYJd5zG|C}Tfnl5equ;_fpl=I?bF zSvs>ct)(^Xc>wJl_gku+{j}QJBp^em4F_Ets(PB5xpZ)>AH>j%KG|IQDB6xmrLL#y z9(={m?NUc&BE1mp@Xz%RTO3|B$D|V3gvuMDgMWXfi?`Qt#Elu}*C){~h7n`(Zp`0d z^{th1@noUF3va%B_WPv9NZhi%412=Wp9slCn#lKGj~5uNUxnDHaqN0oixt*<8~=Lg z^B{M1Q`8-2=Dai2oAk08;4h%Qrp)vj5p$e}y{t=NAEU?(*Ze&zc^FUCG|g9pZ)IkO zzx@5{d~|*&2G_n5Y>vL?g7#Dzs=2%%pn>Ra)nsg=EQbdf(#kjDatSl?p(blrN|!;s zV)vULm_99gS;y+6DOzZNb35hEXiB(a1nXv;M9z8Ve0hF+t2taM{`^8_bcWx?h8++; zRj}$r5>a=v!_bf}T#(2|uld!S$SpT4#32LoA8ni`l= zZdjfh^t-pzpfQS0+@eYr1T>CReotWp zI(UqQ#6S*6f2EwE!w^l)G1GcWoj|QYbQf^i)Qx`o$|HYRyy1ier-Xy?{xv_3A+m|% z7ZNpA_cWQk_V>;Tz94hhxF96DP1MAT-uT;t{-m&h&1C(VuO%mH@kB0nSNTP{ma|SP z^W4FQQLbEj{{3&5Ny%k>qv&FldcPg~wCEVLQLd7Ft24plYv^tQ|I$_VJZK+)>gd;& z0Yx-A>DGVa*bH;BFPPw8=Q#jsu8w+nbl6c{QgZ}0xly*uZ7+a~#%oBpjw4&*i2@a0 za_PtfE>$At>~q1<1pUfyA5&KMWsTDvQEnZ=D7rcI_2@3}1W%$!i{_{!3h>)Q5uWn}MJ{Rv z?VV-yjo`s4BpKR_ljv?Gcmi*f&$^zS2Dt&*Oa=Hfr{nm#(wf zL&^cPLeg%%TBoX!Cg z2;6@$FL+;(;I{P|_aTTjFG^+}%UBCDqtjjlZ(3J@&=>UYSENbaN9Yc>jB>{P67G#F z@#o*hgHwz@Y90k+mYj@^DY>(GOrIekIoc${H$rb2-nYoR4`F!QtwNLSAk*|7YckNE z9j~#aqmr@E@nt^fjm0Or$`^i+tq1vx+YLFAVsMfdR`J$lYst189!eJqYDYRbb2w3A zOhuDk=|4H7Jod{kiRr0OJc1Y3f2=(`HLx>AU^vE z_=2&zpWLt{ib7UswAc8;Bm907 zvvyf>rlv&1yMfT*xMY(J(~hMqkk3Qaa*8D`ZAV2fM_aw)@&!RtoRbfa6}KKZ=!qwN zcDi>e{J>*#N2d{E>xJ(=j{FDgMhq9uM3-_z5;-qP;k2kPm?9}Ks za*-{y0qBG-5sg+*+~H`c87a8YxS0eb&^YmI0-y}tT9JU7goh|`i<^CNJ@aIb_ z-*O?1(YgjNemD`|y!i1&H@Z(dA!h6nr=|otyPXv$O=8j9z`|shfO>xlHWn{U|0D+VLiyeCRZ$`BkTx#$O>>DOJ5QQ-92KNmX3Jm<&htCFPqgV_ zhFq(hQXX!pz{hieX3bcMGjVwlYmJ)JL1rb>={GgZkAFD^LiiKyv9wo&imBdqdZ^X< z3CUv$F}1X(yuHs81m|CUXY+m{6)0Lt7KbFSGVPX~!vZ@~^u0eC-Vb={gJ|EMz{3`N$w{v*KON z#n#AziWTowYKDcKwy=r@(xj$bbOQ^m5l@PIGHNtvZc~H3fLi{no1nOBZ@QxJFec%m zx7IHd51KXMs_ibW7M-TU;HWat@AMd6vlAGURF3HuqNtAl;NnJoDLg*4nzQ1~GQ;*P zcpZG&3roT%6KwwyQkkv>{92P$AYyFc{i*g}uBHWF?pBH*_ywk9Ik5`Vm$YD`GXJu$ zC#hNT9e3z%c`nZn?+Anr21MJ#vjrVy9-`tsIgA4g?3+l;9WH?#lU+QlfNGa)EL$5$22E9;36 zCC@<#QI51mnc2iNln$jeTC>zbN%s*ZWK?%x^K~q)4C)$}87m%@iF`aKN_PVb6m+Di zM0>ze>OuAoO=7%2FZLcTj*0WSehL!X)oQa8^sd<7&~z;6NrX@yrJ zcElnVRpWKvG<`rrxEfvJr5;lQ9%N+qj>tn}JCpS;)e{5JZGNi=51e=ROxQhzlOYN@ zyZ&|@6TiwhHCMmu{5@G>!iO-!J`s**7QYb=y{fqy(}U^~HrL6i>gXB;6%DDYw(sIG zLz-+d$i>17$v;X0YF!blf8GpWjBclDG`~L9%81K5wi3(MAoaFdf3Cv5&eO&)FG;EK z-SZ(^1>OL;+GStiHf%_~qQ1=gg*_T*wHHaamfs4iQ#~W4$qATEXU=4$Oe@inrj@}k zlsh;l&RJa~l9Q+w0HZBGxzTTVp+4ea-GD0#Zf*WPT=7Bv4~Lzz5%p%`;~!}iC?ei} z_nkS)>cd1VBi)v-JCqOwyxmLszPiLSa@*WglJ}5M3%w&-ITGj)z0yGLEl`(j2 z#OZ9KBo5X}#0vxAWa$akOBQrh;5%I%AY6`(1zwR1tMFzR}K zOr+Uyc#7KowcccKk;8=2UY{P$13C`E@U@}qwI+@t}1P@shA zpk{<}t{fGD>AC_|JnzS3nG2F-W+GF2^$8r0S&=IB5(jwi0g;4UJ>0_~if=ZH_F*oL zCwS($q;1ZY#AP8A1x>gQiZf=IgCEMQl0PbK9~f6PiY4{smZ*LuaBfq+70mtthR+-Y9NZ0`jp4RY%@1y#LCpvddCPc(Kx6Z!_*x=YYxe_5G-R|x_b0cLyzL( z44@Dh`m}UhuGGsto1}F(1kkCBRJG;FIv6!bXZmNb6dL@6p-N2$E=FX#n*L5mKDKQJ zFQe^@s37ikj}_sFJ(@f=Y8;%qLIKF_DR`+%615viuv3#4DN?SrK{+|5-G zQtR=X*>B2LFL}HU*#4wgswTfttcr~K(C6Oe9R=Fu7*B-G-Rz0bC7qQVblA#cY6~xK zcT|TJ4sHXXoT>>l7jHIIN-ShXt_Nv9M)UC{wYz_3GoZy!wNXhBS@ok<=M%;ZQ_%(k zIB*+g=BvD$ua^@xXv{T-IwalZqS#hbP5QmisNzcIIOP!o# zF$sUCQ^#ujnS^&&u`VHQ$Y7FdJc0XV6cH96oP~4HbFnuX)Rl zRu4L#cPjIwa{M+^F+!$H-Ve9(?-k;axUAH503)+K8($q*95-a*q7gQv1U4?>P{fGJ zC(NXO%#5(cg;}sGKAJ4R-~BA@QX&=cCo%HXC;jr}HPUtlpcDY~8$-0ncBA+_g2t}G z*7rltMzQ^j^m-K!OQq-8Am3HAD2xCSl|J$Do~D12J!Y%>06JH{w7!l05ZwN#I|WM7*TxbRqa3Ud1_Vuoog|5m~cniI6ycsf>c>H9Wn zKm98U%1yEWs3=vki-M>{%kq8y+gtAo_I@Yq?JploV0`H*&Z}$GN3RGfSnm6?WeS`( z)Y(gyQ;y4MjUEV^ge+JSQKMNK1>_dwQ~$9HB1l`G4wDtq(-bHU^M1Q!PrQ(buUSZ% z+&HdxIDCKTVd!|+)X;>49v0f`tirtM36;AtO`XVjfU2n?S@!Cx-j|Y|-4X_4>)gX7&E_(tREKgd*>BEv@wY&TGDPFTd|XZn!~lLP zf}<?O$u<2r-?~>Y3MYI~8Sd?Xm8Mg`oltl^Itzl#RlSQ#; zh-(Hsv8db}yjd#D4F_lL%4J7d@H?nqCk!)nFNtNVCt|a!So{K=SaS^d+ zl1?*=HkSC#i83+yzrJAI=uSk^arHuA~5UB-|DM{$P=GBkM zR?u_7Ttdcp7=34z&sTOtS{TDFR>tg{$&kfK_G(gCmcT$FnmRm-_sCG4u5xa@g9=jpWX`DFp$LI@uf&8zXb>M8v8$r}Cg zZCK4=^D990hMLTF$Ir0+*GoirQw>OyRhD#m^_{gW=>y00kZFhoRO%N6PNj7z^yfm< zUoiRit+@BF>R;-xAoBQR`;nhXaR7ZuW}`|vE__5$12eK=KLwWd%df0+^5`brFE}y1 zYi+uMLRlKB2?z>*GfS!^x+fB6R+Hb4cS97f*RjHc-maCP`ym=ntpA@oeNgVg04rx7 zpm+__DqzqexglTPLc3ftpp9L21D3ibI9+iLd|pDLw#Bo6n5;*T}aFQjeSxuKOa z4gcueFeFbZ;+)DvS1U2PZQefm;Hmz1uq|nKo%O}o&DBW1w6!(8P_+(yB<>ij;i4Y? z-ToiHZ9Z)sHYfag^H10U|4bB~$x17j&SBCe(+|q-vQ|ME<={5vD!GaFHQ@s%NA|+k zc(P4(MA_+7wwd?4)G4-QQ{}Ka6IHm~RAQsGml8X@BODWb8^bp+skYzY{#khl7c8Yz zT*h#nYTh={E1G6)+WA_tXrEg{R1;He>6GCg<0M4$9gHZUK65fs+XsD)hqXZjn0xm} z(P-|aTOcv81peq`Me@$C_5;Wwu_D;1J`=yDmFEXJd8heZk91O>;~LKql?~lkET7p} z3W@DZ9APVXHBGy9W+CMk?xR6E>O_TSG^+Ie?wtcF3jId${;f4v9_pGCO{?N-3HSS6 zDcXx0f}-8om!LbDJEQqr9j*LMvD&lAxcB&Jk~j9P7EO{)GtuD|hf$(zTN`Lkpk|Nv zCqgU;K0Ap{E%ay5bI$CGl3w#$0H>1m7Lvzx!*)PGn#f;hx(vzbP$l{3K@F?7%pjCY zuju=kpHQaI>RuXq!GH~W3?`y51sQD=v0Gz7wjGGO1LXInDaB_1be#Qjerva$;5qoL z=v9FU2>#alR#t+j(&($u0DaM@40t+ovcc0FpPrVkD>erak==P+jjVdHb0w{0pLG`z z_gg20M zfjJeO03JUqj&m5!oxK1T?ynIrbKE;<}3pCRE2ye4sn01`ZO7*Y|AMc z1JOBAP-<5_F@jh?1{L5!a!r%z@wUbQO~c(Z32Z&02w5wL1`(EMJ4!Il5ArR$OdDJJ zeRjUOa6h{9@s_k0X_Hb7W0q>FGac*D8}HMM%+|+rVM+mJlxuZ)G13^VeDZMU+G2qJ z%3BS%Ozy69Ua+4=$}M0;bbDMmuBKf5F{~-{y^dQY@Wmr)O#{oDreJM-MU3T_@_UOd zPJS!N5XCY8hvAT?$-;unt&vuHcPN!j;xAPfn=KrjL&+v>Dcd&^M5S_yBvHkK6O#Bx zoW-%Xq`O%PDKY22G8cayetaGh8JLC{Q?&5*E4x496k`tef!&Biw0q6oi>bBqzb)}8 zgrfF4uhW;0i!MsvX#O=vy=284rDTYlbY!u?vE^IbD;Q?Ejr2Ruyc4T zCbqVuhy=4!Sg6gvvmB>d{NH6m; z!iv4{SI08#7d&x65soFtM{iz(sBWHky0tM;LL$2BTtBrE&7H`IOaW4c95F z?S0l>X+5Q>F=kv@pKGE`_P(|}my)khb@wA`q>`4ULj6W56`RrIUSl~C(g}%5k>7iY zeEj9qPhDvS-+%6RI|QCm;ftX@oQbt2Z*;pN<{1_VjwQtwp-8I`OxC^rnQi#Z;DaTO zY4H~S;mR-Ac|P2afV65A9N*)YgM=mU4X+*oFyn-p>P%=|iLd*1-O%fwdDn3(v@P zEq^`13@7$a%1Mlko%_cRScuqFaUsaY)qFipJnjEy%^Z(IxmSI(G;o1gV2#Ay* z2+~NWNOvRM-2zh5jdX`}N_Q{1JEXfyO1iu2n;3h$&pF>OE`M+#gR$lu_xr?vNk?nm zt+_bo>gn~?Igc_O&yafJTHCQT1ey8s?e*)_&QmG~fi8!{y{Ha{_U>!7m9T=bK)&F4 z4<2wENF`U}`J6`n6XiW>RSp~4Z-BI_X%!t)BT8`!tWACwC!qXsq^z;`>^xV)bh z2Uk8lbqq}XDyj{Mm>q_%Y;UxTw4Mwb4{3_qf2^%oZM+Og>dPMaq?@OE?@oY7wbfN^ zZrXWHNk`%0U6`8TQOrYAN_=Ipz|?|D0!dS&kkQ5P)Adx$Q2h?iyNb|0UY30aUB=mR zQx{ywVLeICGxqU~wy|lKXn2l^C*MO#h0u>X$Bz=CBJyMkSnAA|^ecQ$TFrFq-%0D) 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 Z@PsLE-@$?9Ry^RLtawM^gPf_)e*qgogNOhC literal 116102 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%0D{KplOBP5tzBY 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 P0}yz+`njxgN@xNAP=b~i diff --git a/example.json b/assets/project.json similarity index 54% rename from example.json rename to assets/project.json index 7783bb1..76cfaab 100644 --- a/example.json +++ b/assets/project.json @@ -1,49 +1,67 @@ { "num_workers": 8, - "estimate_confidence": 0.8, + "start_date": "2024-08-01", "tasks": [ { "id": "RequirementsGathering", - "min_time": 10.0, - "max_time": 30.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [] }, { "id": "SystemDesign", - "min_time": 15.0, - "max_time": 45.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "RequirementsGathering" ] }, { "id": "DatabaseDesign", - "min_time": 10.0, - "max_time": 35.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "SystemDesign" ] }, { "id": "UIUXDesign", - "min_time": 20.0, - "max_time": 50.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "RequirementsGathering" ] }, { "id": "FrontendDevelopment", - "min_time": 25.0, - "max_time": 60.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "UIUXDesign" ] }, { "id": "BackendDevelopment", - "min_time": 30.0, - "max_time": 80.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "SystemDesign", "DatabaseDesign" @@ -51,16 +69,22 @@ }, { "id": "APIDevelopment", - "min_time": 20.0, - "max_time": 60.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "BackendDevelopment" ] }, { "id": "IntegrationTesting", - "min_time": 15.0, - "max_time": 45.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "FrontendDevelopment", "BackendDevelopment", @@ -69,32 +93,44 @@ }, { "id": "UserAcceptanceTesting", - "min_time": 10.0, - "max_time": 30.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "IntegrationTesting" ] }, { "id": "PerformanceOptimization", - "min_time": 10.0, - "max_time": 40.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "IntegrationTesting" ] }, { "id": "SecurityAudit", - "min_time": 10.0, - "max_time": 30.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "IntegrationTesting" ] }, { "id": "FinalDeployment", - "min_time": 5.0, - "max_time": 15.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "UserAcceptanceTesting", "PerformanceOptimization", @@ -103,8 +139,11 @@ }, { "id": "ProjectRetrospective", - "min_time": 3.0, - "max_time": 10.0, + "estimate": { + "min": 10.0, + "likely": 25.0, + "max": 30.0 + }, "dependencies": [ "FinalDeployment" ] diff --git a/example.yaml b/assets/project.yaml similarity index 59% rename from example.yaml rename to assets/project.yaml index 1ae2917..99480a0 100644 --- a/example.yaml +++ b/assets/project.yaml @@ -1,129 +1,177 @@ num_workers: 5 -estimate_confidence: 0.80 +start_date: 2024-08-01 tasks: # Project Initiation and Planning - id: project_kickoff - min_time: 2 - max_time: 3 + estimate: + min: 2 + likely: 2.8 + max: 3 dependencies: [] - id: requirements_gathering - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 13 + max: 15 dependencies: [project_kickoff] - id: system_architecture_design - min_time: 15 - max_time: 20 + estimate: + min: 15 + likely: 18 + max: 20 dependencies: [requirements_gathering] - id: database_design - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 8 + max: 10 dependencies: [system_architecture_design] # Frontend Development - id: ui_ux_design - min_time: 20 - max_time: 30 + estimate: + min: 20 + likely: 24 + max: 30 dependencies: [requirements_gathering] - id: frontend_setup - min_time: 3 - max_time: 5 + estimate: + min: 3 + likely: 4.2 + max: 5 dependencies: [ui_ux_design] - id: user_authentication_frontend - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 6.1 + max: 10 dependencies: [frontend_setup] - id: product_catalog_frontend - min_time: 15 - max_time: 25 + estimate: + min: 15 + likely: 17 + max: 25 dependencies: [frontend_setup] - id: shopping_cart_frontend - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [frontend_setup] - id: checkout_process_frontend - min_time: 15 - max_time: 20 + estimate: + min: 15 + likely: 17 + max: 20 dependencies: [shopping_cart_frontend] - id: user_profile_frontend - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 6 + max: 10 dependencies: [user_authentication_frontend] - id: search_functionality_frontend - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [product_catalog_frontend] # Backend Development - id: backend_setup - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 7 + max: 10 dependencies: [system_architecture_design, database_design] - id: user_authentication_backend - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [backend_setup] - id: product_catalog_backend - min_time: 20 - max_time: 30 + estimate: + min: 20 + likely: 25 + max: 30 dependencies: [backend_setup] - id: shopping_cart_backend - min_time: 15 - max_time: 20 + estimate: + min: 15 + likely: 18 + max: 20 dependencies: [backend_setup] - id: checkout_process_backend - min_time: 20 - max_time: 25 + estimate: + min: 20 + likely: 23 + max: 25 dependencies: [shopping_cart_backend] - id: user_profile_backend - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [user_authentication_backend] - id: search_functionality_backend - min_time: 15 - max_time: 20 + estimate: + min: 15 + likely: 18 + max: 20 dependencies: [product_catalog_backend] - id: payment_gateway_integration - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 13 + max: 15 dependencies: [checkout_process_backend] # API Development and Integration - id: api_design - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 7.5 + max: 10 dependencies: [system_architecture_design] - id: api_development - min_time: 25 - max_time: 35 + estimate: + min: 25 + likely: 32 + max: 35 dependencies: [api_design, backend_setup] - id: api_documentation - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 7 + max: 10 dependencies: [api_development] # Testing - id: unit_testing - min_time: 20 - max_time: 30 + estimate: + min: 20 + likely: 25 + max: 30 dependencies: [ user_authentication_backend, @@ -135,55 +183,75 @@ tasks: ] - id: integration_testing - min_time: 15 - max_time: 20 + estimate: + min: 15 + likely: 16 + max: 20 dependencies: [unit_testing, api_development] - id: user_acceptance_testing - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [integration_testing] # Security and Performance - id: security_audit - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [integration_testing] - id: performance_optimization - min_time: 15 - max_time: 20 + estimate: + min: 15 + likely: 17 + max: 20 dependencies: [integration_testing] # Deployment and Launch - id: deployment_planning - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 7 + max: 10 dependencies: [system_architecture_design] - id: staging_environment_setup - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 7 + max: 10 dependencies: [deployment_planning] - id: production_environment_setup - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [staging_environment_setup] - id: data_migration - min_time: 10 - max_time: 20 + estimate: + min: 10 + likely: 12 + max: 20 dependencies: [production_environment_setup] - id: user_training - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 7 + max: 10 dependencies: [user_acceptance_testing] - id: final_deployment - min_time: 5 - max_time: 10 + estimate: + min: 5 + likely: 7 + max: 10 dependencies: [ user_acceptance_testing, @@ -195,11 +263,15 @@ tasks: # Post-launch - id: post_launch_support - min_time: 10 - max_time: 15 + estimate: + min: 10 + likely: 12 + max: 15 dependencies: [final_deployment] - id: project_retrospective - min_time: 2 - max_time: 3 + estimate: + min: 2 + likely: 2.8 + max: 3 dependencies: [post_launch_support] diff --git a/assets/schedule.json b/assets/schedule.json new file mode 100644 index 0000000..d2bccf9 --- /dev/null +++ b/assets/schedule.json @@ -0,0 +1,10 @@ +{ + "work_days": [ + "Monday", + "Tuesday", + "Wednesday" + ], + "holidays": [ + "2023-12-25" + ] +} diff --git a/assets/schedule.yaml b/assets/schedule.yaml new file mode 100644 index 0000000..6ca0420 --- /dev/null +++ b/assets/schedule.yaml @@ -0,0 +1,6 @@ +work_days: + - Monday + - Tuesday + - Wednesday +holidays: + - 2023-12-25 diff --git a/src/main.rs b/src/main.rs index e9f5c28..04cfeac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,52 +1,17 @@ -use mcps::{schedule::Schedule, simulation::run_multiple_simulations}; +use chrono::{NaiveDate, Utc}; +use mcps::{schedule::Project, simulation::run_multiple_simulations}; use clap::{Arg, Command}; +use workdays::WorkCalendar; -use std::time::Duration; +use std::{str::FromStr, time::Duration}; const AFTER_HELP_TEXT: &str = "\ -Examples of supported file formats: +Find example project definition and schedule config files in the repository: - YAML Format: + https://github.com/swaits/mcps/blob/main/examples/ - num_workers: 5 - estimate_confidence: 0.80 - tasks: - - id: DesignPhase - min_time: 1.5 # 1.5 days - max_time: 3.5 # 3.5 days - dependencies: [] - - id: ImplementationPhase - min_time: 2.25 # 2.25 days - max_time: 4.75 # 4.75 days - dependencies: [DesignPhase] - - JSON Format: - - { - \"num_workers\": 5, - \"estimate_confidence\": 0.80, - \"tasks\": [ - { - \"id\": \"DesignPhase\", - \"min_time\": 1.5, - \"max_time\": 3.5, - \"dependencies\": [] - }, - { - \"id\": \"ImplementationPhase\", - \"min_time\": 2.25, - \"max_time\": 4.75, - \"dependencies\": [\"DesignPhase\"] - } - ] - } - - Note: `estimate_confidence` is the confidence (0.0,1.0) that the - actual values fall in the task estimate ranges. For example, - 0.8 means you believe that the actual time it will take to - complete a task falls in your [min_time,max_time] estimate - range for that task 80% of the time."; +"; fn main() -> Result<(), Box> { let matches = Command::new("Monte Carlo Project Scheduler") @@ -55,7 +20,7 @@ fn main() -> Result<(), Box> { .about("Runs Monte Carlo simulations on project schedules") .arg( Arg::new("filename") - .help("Path to the schedule file (.yaml or .json).") + .help("Path to the project file (.yaml or .json)") .required(true) .index(1), ) @@ -68,15 +33,29 @@ fn main() -> Result<(), Box> { ) .arg( Arg::new("workers") - .short('w') + .short('n') .long("workers") - .help("Override `num_workers` specified in schedule file") + .help("Override `num_workers` specified in project file") .value_name("num_workers"), ) + .arg( + Arg::new("begin") + .short('b') + .long("begin") + .help("Override `start_date` specified in project file") + .value_name("YYYY-MM-DD"), + ) + .arg( + Arg::new("schedule") + .short('s') + .long("schedule") + .help("Work schedule config file (.yaml or .json)") + .value_name("filename"), + ) .after_help(AFTER_HELP_TEXT) .get_matches(); - let schedule_path = matches.get_one::("filename").unwrap(); + let project_path = matches.get_one::("filename").unwrap(); let num_simulations: usize = matches.get_one::("iterations").unwrap().parse()?; // Ensure iterations is >= 100 @@ -84,8 +63,20 @@ fn main() -> Result<(), Box> { return Err("Iterations must be at least 100.".into()); } - // Load the schedule - let mut schedule = Schedule::from_file(schedule_path)?; + // Load the project + let mut project = Project::from_file(project_path)?; + + // Load work schedule if it exists + let calendar: WorkCalendar = match matches.get_one::("schedule") { + Some(filename) => WorkCalendar::from_str(&std::fs::read_to_string(filename)?)?, + None => WorkCalendar::new(), + }; + + // Determine the start date (command line > project file > TODAY) + let start_date = matches.get_one::("begin") + .and_then(|date| NaiveDate::parse_from_str(date, "%Y-%m-%d").ok()) + .or(project.start_date) + .unwrap_or_else(|| Utc::now().date_naive()); // Check if workers are overridden by command-line argument if let Some(workers_str) = matches.get_one::("workers") { @@ -93,34 +84,39 @@ fn main() -> Result<(), Box> { if workers < 1 { return Err("Invalid number of workers, must be 1 or more".into()); } - schedule.num_workers = workers; + project.num_workers = workers; } // Monte Carlo simulation - let (project_durations, effort_times) = run_multiple_simulations(&schedule, num_simulations); + let (project_durations, effort_times) = run_multiple_simulations(&project, num_simulations); // Results output print_ascii_cdf( &project_durations, format!( - "Project Completion Time with {} Worker{} (by probability)", - schedule.num_workers, - if schedule.num_workers == 1 { "" } else { "s" } + "Completion Time ({} Worker{}, starting {})", + project.num_workers, + if project.num_workers == 1 { "" } else { "s" }, + start_date, ) .as_str(), - "Duration", + &start_date, + &calendar, ); + println!(); + print_ascii_cdf( &effort_times, - "Total Work Effort (by probability)", - "Effort", + format!("Total Work Effort (1 worker, starting {})", start_date).as_str(), + &start_date, + &calendar, ); Ok(()) } -fn print_ascii_cdf(data: &[Duration], title: &str, units: &str) { +fn print_ascii_cdf(data: &[Duration], title: &str, start: &NaiveDate, calendar: &WorkCalendar) { let mut sorted_data = data.to_vec(); sorted_data.sort_unstable(); let min = sorted_data[0]; @@ -139,9 +135,9 @@ fn print_ascii_cdf(data: &[Duration], title: &str, units: &str) { padding_right = width - padding - title.len() ); - println!("────┬────────────────────────────────────────────────────────────┬──────────"); - println!("%ile│{}│{:>10}", centered_title, units); - println!("────┼────────────────────────────────────────────────────────────┼──────────"); + println!("────┬────────────────────────────────────────────────────────────┬──────────┬──────────┬──────────"); + println!("%ile│{}│ Workdays │ Schedule │ Complete ", centered_title); + println!("────┼────────────────────────────────────────────────────────────┼──────────┼──────────┼──────────"); let bar_width = 60; @@ -179,6 +175,9 @@ fn print_ascii_cdf(data: &[Duration], title: &str, units: &str) { let offset = (bar_width - (max_bar_position - min_bar_position)) / 2; for (i, (bar_position, days)) in bar_positions.iter().enumerate() { + let (end_date, calendar_duration) = + calendar.compute_end_date(*start, *days as i64).unwrap(); + let shifted_bar_position = bar_position + offset; let (fg, bg) = if i % 2 == 0 { @@ -191,7 +190,7 @@ fn print_ascii_cdf(data: &[Duration], title: &str, units: &str) { 0..=50 => "\x1b[31m", // Red 55..=75 => "\x1b[33m", // Orange 80..=90 => "\x1b[32m", // Green - 95..=100 => "\x1b[31m", // Red + 95..=100 => "\x1b[33m", // Orange _ => "\x1b[0m", // Default (shouldn't happen) }; let reset_code = "\x1b[0m"; @@ -205,7 +204,7 @@ fn print_ascii_cdf(data: &[Duration], title: &str, units: &str) { .collect(); println!( - "{}{:>4}{}│{}{}{}│{}{:5.0} days{}", + "{}{:>4}{}│{}{}{}│{}{:5.0} days{}│{}{:5.0} days{}│{}{}{}", color_code, format!("p{}", 100 - i * 5), reset_code, @@ -214,8 +213,14 @@ fn print_ascii_cdf(data: &[Duration], title: &str, units: &str) { reset_code, color_code, days, + reset_code, + color_code, + calendar_duration.num_days(), + reset_code, + color_code, + end_date, reset_code ); } - println!("────┴────────────────────────────────────────────────────────────┴──────────"); + println!("────┴────────────────────────────────────────────────────────────┴──────────┴──────────┴──────────"); } diff --git a/src/schedule.rs b/src/schedule.rs index 47ac688..8da22ef 100644 --- a/src/schedule.rs +++ b/src/schedule.rs @@ -1,25 +1,27 @@ use crate::task::Task; +use chrono::NaiveDate; + use std::collections::{HashMap, HashSet}; use std::time::Duration; #[derive(Debug)] -pub struct Schedule { +pub struct Project { pub tasks: Vec, pub num_workers: usize, - pub estimate_confidence: f64, + pub start_date: Option, } -impl Schedule { +impl Project { pub fn new( tasks: Vec, num_workers: usize, - estimate_confidence: f64, + start_date: Option, ) -> Result { - let schedule = Schedule { + let schedule = Project { tasks, num_workers, - estimate_confidence, + start_date, }; schedule.validate()?; Ok(schedule) @@ -94,11 +96,12 @@ impl Schedule { mod tests { use super::*; - fn create_task(id: &str, min: u64, max: u64, deps: Vec<&str>) -> Task { + fn create_task(id: &str, min: u64, likely: u64, max: u64, deps: Vec<&str>) -> Task { Task { id: id.to_string(), dependencies: deps.into_iter().map(String::from).collect(), min_time: Duration::from_secs(min), + likely_time: Duration::from_secs(likely), max_time: Duration::from_secs(max), } } @@ -106,25 +109,25 @@ mod tests { #[test] fn test_valid_schedule() { let tasks = vec![ - create_task("A", 1, 3, vec![]), - create_task("B", 2, 4, vec!["A"]), - create_task("C", 3, 5, vec!["A"]), + create_task("A", 1, 2, 3, vec![]), + create_task("B", 2, 3, 4, vec!["A"]), + create_task("C", 3, 4, 5, vec!["A"]), ]; - let schedule = Schedule::new(tasks, 2, 0.8); + let schedule = Project::new(tasks, 2, None); assert!(schedule.is_ok()); } #[test] fn test_empty_task_list() { - let schedule = Schedule::new(vec![], 2, 0.8); + let schedule = Project::new(vec![], 2, None); assert!(schedule.is_err()); assert_eq!(schedule.unwrap_err(), "Empty task list"); } #[test] fn test_invalid_task_duration() { - let tasks = vec![create_task("A", 3, 1, vec![])]; - let schedule = Schedule::new(tasks, 2, 0.8); + let tasks = vec![create_task("A", 3, 2, 1, vec![])]; + let schedule = Project::new(tasks, 2, None); assert!(schedule.is_err()); assert_eq!( schedule.unwrap_err(), @@ -134,8 +137,8 @@ mod tests { #[test] fn test_zero_duration() { - let tasks = vec![create_task("A", 0, 1, vec![])]; - let schedule = Schedule::new(tasks, 2, 0.8); + let tasks = vec![create_task("A", 0, 1, 2, vec![])]; + let schedule = Project::new(tasks, 2, None); assert!(schedule.is_err()); assert_eq!(schedule.unwrap_err(), "Invalid task duration for task A"); } @@ -143,10 +146,10 @@ mod tests { #[test] fn test_missing_dependency() { let tasks = vec![ - create_task("A", 1, 3, vec![]), - create_task("B", 2, 4, vec!["C"]), + create_task("A", 1, 2, 3, vec![]), + create_task("B", 2, 3, 4, vec!["C"]), ]; - let schedule = Schedule::new(tasks, 2, 0.8); + let schedule = Project::new(tasks, 2, None); assert!(schedule.is_err()); assert_eq!(schedule.unwrap_err(), "Missing dependency C for task B"); } @@ -154,10 +157,10 @@ mod tests { #[test] fn test_cyclic_dependency() { let tasks = vec![ - create_task("A", 1, 3, vec!["B"]), - create_task("B", 2, 4, vec!["A"]), + create_task("A", 1, 2, 3, vec!["B"]), + create_task("B", 2, 3, 4, vec!["A"]), ]; - let schedule = Schedule::new(tasks, 2, 0.8); + let schedule = Project::new(tasks, 2, None); assert!(schedule.is_err()); assert!(schedule .unwrap_err() @@ -167,28 +170,28 @@ mod tests { #[test] fn test_complex_valid_schedule() { let tasks = vec![ - create_task("A", 1, 3, vec![]), - create_task("B", 2, 4, vec!["A"]), - create_task("C", 3, 5, vec!["A"]), - create_task("D", 2, 6, vec!["B", "C"]), - create_task("E", 1, 2, vec!["A"]), - create_task("F", 2, 4, vec!["D", "E"]), + create_task("A", 1, 2, 3, vec![]), + create_task("B", 2, 3, 4, vec!["A"]), + create_task("C", 3, 4, 5, vec!["A"]), + create_task("D", 2, 4, 6, vec!["B", "C"]), + create_task("E", 1, 2, 4, vec!["A"]), + create_task("F", 2, 3, 4, vec!["D", "E"]), ]; - let schedule = Schedule::new(tasks, 3, 0.9); + let schedule = Project::new(tasks, 3, None); assert!(schedule.is_ok()); } #[test] fn test_complex_cyclic_dependency() { let tasks = vec![ - create_task("A", 1, 3, vec!["F"]), - create_task("B", 2, 4, vec!["A"]), - create_task("C", 3, 5, vec!["B"]), - create_task("D", 2, 6, vec!["C"]), - create_task("E", 1, 2, vec!["D"]), - create_task("F", 2, 4, vec!["E"]), + create_task("A", 1, 2, 3, vec!["F"]), + create_task("B", 2, 3, 4, vec!["A"]), + create_task("C", 3, 4, 5, vec!["B"]), + create_task("D", 2, 3, 6, vec!["C"]), + create_task("E", 1, 2, 3, vec!["D"]), + create_task("F", 2, 3, 4, vec!["E"]), ]; - let schedule = Schedule::new(tasks, 3, 0.9); + let schedule = Project::new(tasks, 3, None); assert!( schedule.is_err(), "Expected cyclic dependency error, but got Ok" @@ -204,8 +207,8 @@ mod tests { #[test] fn test_self_dependency() { - let tasks = vec![create_task("A", 1, 3, vec!["A"])]; - let schedule = Schedule::new(tasks, 1, 0.8); + let tasks = vec![create_task("A", 1, 2, 3, vec!["A"])]; + let schedule = Project::new(tasks, 1, None); assert!( schedule.is_err(), "Expected self-dependency error, but got Ok" diff --git a/src/schedule_loader.rs b/src/schedule_loader.rs index 5a7b540..5a95ef6 100644 --- a/src/schedule_loader.rs +++ b/src/schedule_loader.rs @@ -1,5 +1,6 @@ -use crate::{schedule::Schedule, task::Task}; +use crate::{schedule::Project, task::Task}; +use chrono::NaiveDate; use serde::{Deserialize, Serialize}; use std::{fs::File, io::Read, path::Path, time::Duration}; @@ -7,15 +8,23 @@ use std::{fs::File, io::Read, path::Path, time::Duration}; #[derive(Debug, Deserialize, Serialize)] struct ScheduleInput { num_workers: usize, - estimate_confidence: f64, + start_date: Option, tasks: Vec, } +#[derive(Debug, Deserialize, Serialize)] +struct EstimateInput { + min: f64, + max: f64, + likely: f64, +} + #[derive(Debug, Deserialize, Serialize)] struct TaskInput { id: String, - min_time: f64, - max_time: f64, + name: Option, + description: Option, + estimate: EstimateInput, dependencies: Vec, } @@ -24,7 +33,7 @@ enum FileFormat { Json, } -impl Schedule { +impl Project { pub fn from_file>(path: P) -> Result> { let mut file = File::open(&path)?; let mut contents = String::new(); @@ -41,13 +50,14 @@ impl Schedule { .into_iter() .map(|t| Task { id: t.id, - min_time: Duration::from_secs_f64(t.min_time * 24.0 * 60.0 * 60.0), - max_time: Duration::from_secs_f64(t.max_time * 24.0 * 60.0 * 60.0), + min_time: Duration::from_secs_f64(t.estimate.min * 24.0 * 60.0 * 60.0), + likely_time: Duration::from_secs_f64(t.estimate.likely * 24.0 * 60.0 * 60.0), + max_time: Duration::from_secs_f64(t.estimate.max * 24.0 * 60.0 * 60.0), dependencies: t.dependencies, }) .collect(); - let schedule = Schedule::new(tasks, input.num_workers, input.estimate_confidence)?; + let schedule = Project::new(tasks, input.num_workers, input.start_date)?; schedule.validate()?; @@ -89,22 +99,24 @@ mod tests { fn test_load_from_yaml() { let yaml_content = r#" num_workers: 3 -estimate_confidence: 0.9 tasks: - id: A - min_time: 1 - max_time: 3 + estimate: + min: 1 + likely: 2.4 + max: 3 dependencies: [] - id: B - min_time: 2 - max_time: 4 + estimate: + min: 2 + likely: 2.4 + max: 4 dependencies: [A] "#; let (_temp_file, path) = create_temp_file(yaml_content, "yaml"); - let schedule = Schedule::from_file(path).unwrap(); + let schedule = Project::from_file(path).unwrap(); assert_eq!(schedule.tasks.len(), 2); assert_eq!(schedule.num_workers, 3); - assert_eq!(schedule.estimate_confidence, 0.9); } #[test] @@ -112,35 +124,39 @@ tasks: let json_content = r#" { "num_workers": 3, - "estimate_confidence": 0.9, "tasks": [ { "id": "A", - "min_time": 1, - "max_time": 3, + "estimate": { + "min": 1, + "likely": 1.8, + "max": 3 + }, "dependencies": [] }, { "id": "B", - "min_time": 2, - "max_time": 4, + "estimate": { + "min": 2, + "likely": 1.8, + "max": 4 + }, "dependencies": ["A"] } ] } "#; let (_temp_file, path) = create_temp_file(json_content, "json"); - let schedule = Schedule::from_file(path).unwrap(); + let schedule = Project::from_file(path).unwrap(); assert_eq!(schedule.tasks.len(), 2); assert_eq!(schedule.num_workers, 3); - assert_eq!(schedule.estimate_confidence, 0.9); } #[test] fn test_unsupported_format() { let content = "irrelevant content"; let (_temp_file, path) = create_temp_file(content, "txt"); - let result = Schedule::from_file(path); + let result = Project::from_file(path); assert!(result.is_err()); assert!(result .unwrap_err() @@ -152,15 +168,16 @@ tasks: fn test_invalid_schedule() { let yaml_content = r#" num_workers: 3 -estimate_confidence: 0.9 tasks: - id: A - min_time: 3 - max_time: 1 # Invalid: min_time > max_time + estimate: + min: 3 + likely: 2 + max: 1 # Invalid: min_time > max_time dependencies: [] "#; let (_temp_file, path) = create_temp_file(yaml_content, "yaml"); - let result = Schedule::from_file(path); + let result = Project::from_file(path); assert!(result.is_err()); assert!(result .unwrap_err() @@ -172,15 +189,16 @@ tasks: fn test_load_with_floating_point_times_yaml() { let yaml_content = r#" num_workers: 3 -estimate_confidence: 0.9 tasks: - id: A - min_time: 1.5 # 1.5 days - max_time: 3.5 # 3.5 days + estimate: + min: 1.5 # 1.5 days + likely: 2 # 2.0 days + max: 3.5 # 3.5 days dependencies: [] "#; let (_temp_file, path) = create_temp_file(yaml_content, "yaml"); - let schedule = Schedule::from_file(path).unwrap(); + let schedule = Project::from_file(path).unwrap(); // Verify that there is one task and it has the correct times assert_eq!(schedule.tasks.len(), 1); @@ -199,19 +217,21 @@ tasks: let json_content = r#" { "num_workers": 3, - "estimate_confidence": 0.9, "tasks": [ { "id": "A", - "min_time": 1.5, - "max_time": 3.5, + "estimate": { + "min": 1.5, + "likely": 3, + "max": 3.5 + }, "dependencies": [] } ] } "#; let (_temp_file, path) = create_temp_file(json_content, "json"); - let schedule = Schedule::from_file(path).unwrap(); + let schedule = Project::from_file(path).unwrap(); // Verify that there is one task and it has the correct times assert_eq!(schedule.tasks.len(), 1); diff --git a/src/simulation.rs b/src/simulation.rs index 4989565..2440ca9 100644 --- a/src/simulation.rs +++ b/src/simulation.rs @@ -1,7 +1,7 @@ -use crate::schedule::Schedule; +use crate::schedule::Project; +use distimate::Pert; use rand::prelude::*; -use rand_distr::{Distribution, Normal}; use rayon::prelude::*; use std::{ @@ -9,13 +9,14 @@ use std::{ time::Duration, }; +#[derive(Debug)] pub struct SimulationResult { pub total_project_duration: Duration, pub total_effort_time: Duration, } pub fn run_multiple_simulations( - schedule: &Schedule, + schedule: &Project, num_simulations: usize, ) -> (Vec, Vec) { (0..num_simulations) @@ -27,7 +28,7 @@ pub fn run_multiple_simulations( .unzip() } -fn run_simulation(schedule: &Schedule) -> SimulationResult { +fn run_simulation(schedule: &Project) -> SimulationResult { let mut rng = thread_rng(); // Simulate task times @@ -35,12 +36,7 @@ fn run_simulation(schedule: &Schedule) -> SimulationResult { .tasks .iter() .map(|task| { - let task_time = simulate_task_time( - &mut rng, - task.min_time, - task.max_time, - schedule.estimate_confidence, - ); + let task_time = simulate_task_time(&mut rng, task.min_time, task.max_time); (&task.id, task_time) }) .collect(); @@ -117,21 +113,13 @@ fn run_simulation(schedule: &Schedule) -> SimulationResult { } } -fn simulate_task_time( - rng: &mut impl Rng, - min_time: Duration, - max_time: Duration, - estimate_confidence: f64, -) -> Duration { +fn simulate_task_time(rng: &mut impl Rng, min_time: Duration, max_time: Duration) -> Duration { let min_secs = min_time.as_secs_f64(); let max_secs = max_time.as_secs_f64(); let mean = (min_secs + max_secs) / 2.0; - let z_score = (1.0 - (1.0 - estimate_confidence) / 2.0).sqrt() * 2.0; - let std_dev = (max_secs - min_secs) / (2.0 * z_score); - - let normal = Normal::new(mean, std_dev).unwrap(); - let sampled_secs = normal.sample(rng).clamp(min_secs, max_secs); + let pert = Pert::new(min_secs, mean, max_secs).unwrap(); + let sampled_secs = pert.sample(rng); Duration::from_secs_f64(sampled_secs) } @@ -146,10 +134,9 @@ mod tests { let mut rng = thread_rng(); let min_time = Duration::from_secs(5); let max_time = Duration::from_secs(15); - let estimate_confidence = 0.8; for _ in 0..1000 { - let time = simulate_task_time(&mut rng, min_time, max_time, estimate_confidence); + let time = simulate_task_time(&mut rng, min_time, max_time); assert!( time >= min_time && time <= max_time, "Simulated time should be within range" @@ -159,8 +146,14 @@ mod tests { #[test] fn test_single_task_simulation() { - let task = Task::new("A", vec![], Duration::from_secs(5), Duration::from_secs(15)); - let schedule = Schedule::new(vec![task], 1, 0.8).unwrap(); + let task = Task::new( + "A", + vec![], + Duration::from_secs(5), + Duration::from_secs(10), + Duration::from_secs(15), + ); + let schedule = Project::new(vec![task], 1, None).unwrap(); let result = run_simulation(&schedule); @@ -178,11 +171,29 @@ mod tests { #[test] fn test_multiple_independent_tasks() { let tasks = vec![ - Task::new("A", vec![], Duration::from_secs(5), Duration::from_secs(10)), - Task::new("B", vec![], Duration::from_secs(7), Duration::from_secs(12)), - Task::new("C", vec![], Duration::from_secs(3), Duration::from_secs(8)), + Task::new( + "A", + vec![], + Duration::from_secs(5), + Duration::from_secs(6), + Duration::from_secs(10), + ), + Task::new( + "B", + vec![], + Duration::from_secs(7), + Duration::from_secs(10), + Duration::from_secs(12), + ), + Task::new( + "C", + vec![], + Duration::from_secs(3), + Duration::from_secs(6), + Duration::from_secs(8), + ), ]; - let schedule = Schedule::new(tasks, 2, 0.8).unwrap(); + let schedule = Project::new(tasks, 2, None).unwrap(); let result = run_simulation(&schedule); @@ -199,32 +210,42 @@ mod tests { #[test] fn test_tasks_with_dependencies() { let tasks = vec![ - Task::new("A", vec![], Duration::from_secs(5), Duration::from_secs(10)), + Task::new( + "A", + vec![], + Duration::from_secs(5), + Duration::from_secs(8), + Duration::from_secs(10), + ), Task::new( "B", vec!["A".to_string()], Duration::from_secs(7), + Duration::from_secs(9), Duration::from_secs(12), ), Task::new( "C", vec!["A".to_string()], Duration::from_secs(3), + Duration::from_secs(6), Duration::from_secs(8), ), Task::new( "D", vec!["B".to_string(), "C".to_string()], Duration::from_secs(4), + Duration::from_secs(7), Duration::from_secs(9), ), ]; - let schedule = Schedule::new(tasks, 2, 0.8).unwrap(); + let schedule = Project::new(tasks, 2, None).unwrap(); let result = run_simulation(&schedule); + println!("{:?}", result); assert!( - result.total_project_duration >= Duration::from_secs(14), + result.total_project_duration >= Duration::from_secs(13), "Project duration should be at least the minimum critical path duration" ); } @@ -232,15 +253,22 @@ mod tests { #[test] fn test_multiple_simulations_consistency() { let tasks = vec![ - Task::new("A", vec![], Duration::from_secs(5), Duration::from_secs(10)), + Task::new( + "A", + vec![], + Duration::from_secs(5), + Duration::from_secs(8), + Duration::from_secs(10), + ), Task::new( "B", vec!["A".to_string()], Duration::from_secs(7), + Duration::from_secs(10), Duration::from_secs(12), ), ]; - let schedule = Schedule::new(tasks, 1, 0.8).unwrap(); + let schedule = Project::new(tasks, 1, None).unwrap(); let (durations, efforts) = run_multiple_simulations(&schedule, 1000); diff --git a/src/task.rs b/src/task.rs index e97d895..71572e8 100644 --- a/src/task.rs +++ b/src/task.rs @@ -5,6 +5,7 @@ pub struct Task { pub id: String, pub dependencies: Vec, pub min_time: Duration, + pub likely_time: Duration, pub max_time: Duration, } @@ -13,12 +14,14 @@ impl Task { id: &str, dependencies: Vec, min_time: Duration, + likely_time: Duration, max_time: Duration, ) -> Self { Task { id: id.to_string(), dependencies, min_time, + likely_time, max_time, } } @@ -51,6 +54,7 @@ mod tests { "Task1", vec!["Dep1".to_string(), "Dep2".to_string()], Duration::from_secs(1), + Duration::from_secs(3), Duration::from_secs(5), ); @@ -66,6 +70,7 @@ mod tests { "Task2", vec![], Duration::from_secs(2), + Duration::from_secs(7), Duration::from_secs(10), ); @@ -82,6 +87,7 @@ mod tests { vec!["Dep3".to_string()], Duration::from_secs(5), Duration::from_secs(5), + Duration::from_secs(5), ); assert_eq!(task.id, "Task3"); @@ -95,6 +101,7 @@ mod tests { "Task4", vec!["Dep4".to_string()], Duration::from_secs(3), + Duration::from_secs(5), Duration::from_secs(7), ); let task2 = task1.clone(); diff --git a/tests/effort_is_correct.rs b/tests/effort_is_correct.rs index 2149f49..d2a4e8a 100644 --- a/tests/effort_is_correct.rs +++ b/tests/effort_is_correct.rs @@ -1,5 +1,5 @@ use mcps::{ - schedule::Schedule, + schedule::Project, simulation::run_multiple_simulations, task::{days_to_duration, Task}, }; @@ -12,7 +12,6 @@ fn test_average_effort_calculation() { let min_days = 5.0; let max_days = 15.0; let expected_avg_days = 10.0; - let estimate_confidence = 0.8; let num_simulations = 10000; let num_workers = 1; // Using 1 worker to simplify effort calculation @@ -23,13 +22,13 @@ fn test_average_effort_calculation() { &format!("Task{}", i), vec![], days_to_duration(min_days), + days_to_duration(0.5 * (min_days + max_days)), days_to_duration(max_days), ) }) .collect(); - let schedule = - Schedule::new(tasks, num_workers, estimate_confidence).expect("Failed to create schedule"); + let schedule = Project::new(tasks, num_workers, None).expect("Failed to create schedule"); let (_, effort_times) = run_multiple_simulations(&schedule, num_simulations); diff --git a/tests/invalid_schedules.rs b/tests/invalid_schedules.rs index 646286a..5e05886 100644 --- a/tests/invalid_schedules.rs +++ b/tests/invalid_schedules.rs @@ -1,10 +1,10 @@ use mcps::{ - schedule::Schedule, + schedule::Project, task::{days_to_duration, Task}, }; fn create_schedule_and_expect_error(tasks: Vec, expected_error: &str) { - let result = Schedule::new(tasks, 1, 0.8); + let result = Project::new(tasks, 1, None); assert!( result.is_err(), @@ -27,12 +27,14 @@ fn test_cyclic_dependency() { "A", vec!["B".to_string()], days_to_duration(1.0), + days_to_duration(1.5), days_to_duration(2.0), ), Task::new( "B", vec!["A".to_string()], days_to_duration(1.0), + days_to_duration(1.5), days_to_duration(2.0), ), ]; @@ -47,12 +49,14 @@ fn test_missing_dependency() { "A", vec!["C".to_string()], days_to_duration(1.0), + days_to_duration(1.5), days_to_duration(2.0), ), Task::new( "B", vec!["A".to_string()], days_to_duration(1.0), + days_to_duration(1.5), days_to_duration(2.0), ), ]; @@ -66,6 +70,7 @@ fn test_negative_duration() { "A", vec![], days_to_duration(0.0), + days_to_duration(0.5), days_to_duration(1.0), )]; @@ -79,6 +84,7 @@ fn test_min_greater_than_max() { vec![], days_to_duration(3.0), days_to_duration(2.0), + days_to_duration(2.0), )]; create_schedule_and_expect_error(tasks, "Minimum duration greater than maximum"); diff --git a/tests/no_dependencies_schedule.rs b/tests/no_dependencies_schedule.rs index bcbc59f..2135c00 100644 --- a/tests/no_dependencies_schedule.rs +++ b/tests/no_dependencies_schedule.rs @@ -1,5 +1,5 @@ use mcps::{ - schedule::Schedule, + schedule::Project, simulation::run_multiple_simulations, task::{days_to_duration, Task}, }; @@ -13,6 +13,7 @@ fn create_independent_tasks(num_tasks: usize) -> Vec { &format!("Task_{}", i), vec![], days_to_duration(1.0), + days_to_duration(2.0), days_to_duration(3.0), ) }) @@ -23,14 +24,13 @@ fn create_independent_tasks(num_tasks: usize) -> Vec { fn test_no_dependencies_schedule() { let num_tasks = 32; let tasks = create_independent_tasks(num_tasks); - let estimate_confidence = 0.8; let num_simulations = 1_000; let mut prev_avg_effort = 0.0; for num_workers in [1, 2, 4, 8] { - let schedule = Schedule::new(tasks.clone(), num_workers, estimate_confidence) - .expect("Failed to create schedule"); + let schedule = + Project::new(tasks.clone(), num_workers, None).expect("Failed to create schedule"); let (project_durations, effort_times) = run_multiple_simulations(&schedule, num_simulations); diff --git a/tests/simulation_tests.rs b/tests/simulation_tests.rs index bc52dd2..49d8b0b 100644 --- a/tests/simulation_tests.rs +++ b/tests/simulation_tests.rs @@ -1,5 +1,5 @@ use mcps::{ - schedule::Schedule, + schedule::Project, simulation::run_multiple_simulations, task::{days_to_duration, Task}, }; @@ -9,47 +9,57 @@ use std::time::Duration; #[test] fn test_simulation_with_different_worker_counts() { let tasks = vec![ - Task::new("A", vec![], days_to_duration(1.0), days_to_duration(3.0)), + Task::new( + "A", + vec![], + days_to_duration(1.0), + days_to_duration(2.0), + days_to_duration(3.0), + ), Task::new( "B", vec!["A".to_string()], days_to_duration(2.0), + days_to_duration(3.0), days_to_duration(4.0), ), Task::new( "C", vec!["A".to_string()], days_to_duration(3.0), + days_to_duration(4.0), days_to_duration(5.0), ), Task::new( "D", vec!["B".to_string(), "C".to_string()], days_to_duration(2.0), + days_to_duration(4.0), days_to_duration(6.0), ), Task::new( "E", vec!["B".to_string()], days_to_duration(1.0), + days_to_duration(1.5), days_to_duration(2.0), ), Task::new( "F", vec!["D".to_string(), "E".to_string()], days_to_duration(2.0), + days_to_duration(3.0), days_to_duration(4.0), ), ]; - let estimate_confidence = 0.8; let num_simulations = 1000; let mut all_efforts = Vec::new(); for num_workers in [1, 2, 4, 8, 16, 32] { - let schedule = Schedule::new(tasks.clone(), num_workers, estimate_confidence) - .expect("Failed to create schedule"); + let schedule = + Project::new(tasks.clone(), num_workers, None).expect("Failed to create schedule"); let (project_durations, effort_times) = run_multiple_simulations(&schedule, num_simulations);