From 5bf207ee08e4258ed8bfe54b72166a500097c229 Mon Sep 17 00:00:00 2001 From: aOK Date: Thu, 22 Aug 2024 21:09:42 +0300 Subject: [PATCH] first commit --- .gitignore | 2 + Cargo.lock | 672 +++++++++++++++++++++++++++ Cargo.toml | 11 + README.md | 0 resources/colourfish.png | Bin 0 -> 53661 bytes resources/tinrs_mobile.png | Bin 0 -> 7829 bytes src/app.rs | 82 ++++ src/app_web.rs | 88 ++++ src/editor/block_connector_button.rs | 279 +++++++++++ src/editor/block_delete_button.rs | 248 ++++++++++ src/editor/block_header_button.rs | 274 +++++++++++ src/editor/fish_block.rs | 64 +++ src/editor/fish_block_editor.rs | 121 +++++ src/editor/fish_block_template.rs | 233 ++++++++++ src/editor/fish_connection.rs | 17 + src/editor/fish_connection_widget.rs | 231 +++++++++ src/editor/fish_doc.rs | 72 +++ src/editor/fish_param_storage.rs | 41 ++ src/editor/fish_patch.rs | 520 +++++++++++++++++++++ src/editor/fish_patch_editor.rs | 318 +++++++++++++ src/editor/fish_ports.rs | 45 ++ src/editor/fish_preset.rs | 22 + src/editor/fish_selector_widget.rs | 124 +++++ src/editor/fish_theme.rs | 178 +++++++ src/editor/mod.rs | 29 ++ src/lib.rs | 8 + src/main.rs | 3 + 27 files changed, 3682 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 README.md create mode 100644 resources/colourfish.png create mode 100644 resources/tinrs_mobile.png create mode 100644 src/app.rs create mode 100644 src/app_web.rs create mode 100644 src/editor/block_connector_button.rs create mode 100644 src/editor/block_delete_button.rs create mode 100644 src/editor/block_header_button.rs create mode 100644 src/editor/fish_block.rs create mode 100644 src/editor/fish_block_editor.rs create mode 100644 src/editor/fish_block_template.rs create mode 100644 src/editor/fish_connection.rs create mode 100644 src/editor/fish_connection_widget.rs create mode 100644 src/editor/fish_doc.rs create mode 100644 src/editor/fish_param_storage.rs create mode 100644 src/editor/fish_patch.rs create mode 100644 src/editor/fish_patch_editor.rs create mode 100644 src/editor/fish_ports.rs create mode 100644 src/editor/fish_preset.rs create mode 100644 src/editor/fish_selector_widget.rs create mode 100644 src/editor/fish_theme.rs create mode 100644 src/editor/mod.rs create mode 100644 src/lib.rs create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ac80f81 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.fish +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..928d2cc --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,672 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bytemuck" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "data-url" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666" +dependencies = [ + "crc32fast", + "miniz_oxide 0.8.0", +] + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "imagesize" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" + +[[package]] +name = "kurbo" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5aa9f0f96a938266bdb12928a67169e8d22c6a786fda8ed984b85e6ba93c3c" +dependencies = [ + "arrayvec", + "smallvec", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "makepad-android-state" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd004cda8be459fd76954218b76a1249a079fb9360bbca4e724cb7ddb2962857" +dependencies = [ + "makepad-jni-sys", +] + +[[package]] +name = "makepad-derive-live" +version = "0.4.0" +dependencies = [ + "makepad-live-id", + "makepad-micro-proc-macro", +] + +[[package]] +name = "makepad-derive-wasm-bridge" +version = "0.4.0" +dependencies = [ + "makepad-micro-proc-macro", +] + +[[package]] +name = "makepad-derive-widget" +version = "0.4.0" +dependencies = [ + "makepad-live-id", + "makepad-micro-proc-macro", +] + +[[package]] +name = "makepad-draw" +version = "0.6.0" +dependencies = [ + "ab_glyph_rasterizer", + "fxhash", + "makepad-html", + "makepad-platform", + "makepad-rustybuzz", + "makepad-vector", + "sdfer", + "unicode-bidi", + "unicode-linebreak", + "unicode-segmentation", +] + +[[package]] +name = "makepad-futures" +version = "0.4.0" + +[[package]] +name = "makepad-futures-legacy" +version = "0.7.0" + +[[package]] +name = "makepad-html" +version = "0.4.0" +dependencies = [ + "makepad-live-id", +] + +[[package]] +name = "makepad-http" +version = "0.4.0" + +[[package]] +name = "makepad-jni-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9775cbec5fa0647500c3e5de7c850280a88335d1d2d770e5aa2332b801ba7064" + +[[package]] +name = "makepad-live-compiler" +version = "0.5.0" +dependencies = [ + "makepad-derive-live", + "makepad-live-tokenizer", + "makepad-math", +] + +[[package]] +name = "makepad-live-id" +version = "0.4.0" +dependencies = [ + "makepad-live-id-macros", +] + +[[package]] +name = "makepad-live-id-macros" +version = "0.4.0" +dependencies = [ + "makepad-micro-proc-macro", +] + +[[package]] +name = "makepad-live-tokenizer" +version = "0.4.0" +dependencies = [ + "makepad-live-id", + "makepad-math", + "makepad-micro-serde", +] + +[[package]] +name = "makepad-markdown" +version = "0.4.0" +dependencies = [ + "makepad-live-id", +] + +[[package]] +name = "makepad-math" +version = "0.4.0" + +[[package]] +name = "makepad-micro-proc-macro" +version = "0.4.0" + +[[package]] +name = "makepad-micro-serde" +version = "0.4.0" +dependencies = [ + "makepad-micro-serde-derive", +] + +[[package]] +name = "makepad-micro-serde-derive" +version = "0.4.0" +dependencies = [ + "makepad-micro-proc-macro", +] + +[[package]] +name = "makepad-objc-sys" +version = "0.4.0" + +[[package]] +name = "makepad-platform" +version = "0.6.0" +dependencies = [ + "makepad-android-state", + "makepad-futures", + "makepad-futures-legacy", + "makepad-http", + "makepad-jni-sys", + "makepad-objc-sys", + "makepad-shader-compiler", + "makepad-wasm-bridge", + "makepad-windows", + "smallvec", + "windows-targets", +] + +[[package]] +name = "makepad-rustybuzz" +version = "0.8.0" +dependencies = [ + "bitflags 1.3.2", + "bytemuck", + "smallvec", + "ttf-parser", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", +] + +[[package]] +name = "makepad-shader-compiler" +version = "0.5.0" +dependencies = [ + "makepad-live-compiler", +] + +[[package]] +name = "makepad-vector" +version = "0.4.0" +dependencies = [ + "resvg", + "ttf-parser", +] + +[[package]] +name = "makepad-wasm-bridge" +version = "0.4.0" +dependencies = [ + "makepad-derive-wasm-bridge", + "makepad-live-id", +] + +[[package]] +name = "makepad-widgets" +version = "0.6.0" +dependencies = [ + "makepad-derive-widget", + "makepad-draw", + "makepad-html", + "makepad-markdown", + "makepad-zune-jpeg", + "makepad-zune-png", + "unicode-segmentation", +] + +[[package]] +name = "makepad-windows" +version = "0.51.1" +dependencies = [ + "windows-core", + "windows-targets", +] + +[[package]] +name = "makepad-zune-core" +version = "0.2.14" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "makepad-zune-inflate" +version = "0.2.54" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "makepad-zune-jpeg" +version = "0.3.17" +dependencies = [ + "makepad-zune-core", +] + +[[package]] +name = "makepad-zune-png" +version = "0.2.1" +dependencies = [ + "makepad-zune-core", + "makepad-zune-inflate", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "mumu" +version = "0.1.0" +dependencies = [ + "makepad-widgets", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.7.4", +] + +[[package]] +name = "resvg" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "944d052815156ac8fa77eaac055220e95ba0b01fa8887108ca710c03805d9051" +dependencies = [ + "log", + "pico-args", + "rgb", + "svgtypes", + "tiny-skia", + "usvg", +] + +[[package]] +name = "rgb" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f86ae463694029097b846d8f99fd5536740602ae00022c0c50c5600720b2f71" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + +[[package]] +name = "sdfer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27fd75ebc7c721a70d202c7cdd2beb108bbe5dfaaea68e06aff4de2f4cc240ed" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simplecss" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d" +dependencies = [ + "log", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +dependencies = [ + "float-cmp", +] + +[[package]] +name = "svgtypes" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794de53cc48eaabeed0ab6a3404a65f40b3e38c067e4435883a65d2aa4ca000e" +dependencies = [ + "kurbo", + "siphasher", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "png", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "ttf-parser" +version = "0.21.1" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-bidi-mirroring" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" + +[[package]] +name = "unicode-ccc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-properties" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524" + +[[package]] +name = "unicode-script" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "usvg" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84ea542ae85c715f07b082438a4231c3760539d902e11d093847a0b22963032" +dependencies = [ + "base64", + "data-url", + "flate2", + "imagesize", + "kurbo", + "log", + "pico-args", + "roxmltree", + "simplecss", + "siphasher", + "strict-num", + "svgtypes", + "tiny-skia-path", + "xmlwriter", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "xmlwriter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..c029888 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "mumu" +version = "0.1.0" +authors = ["Stijn Kuipers "] +edition = "2021" +description = "BigFish" +license = "MIT OR Apache-2.0" +metadata.makepad-auto-version = "zqpv-Yj-K7WNVK2I8h5Okhho46Q=" + +[dependencies] +makepad-widgets = { path = "../makepad/widgets", version = "0.6.0" } diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/resources/colourfish.png b/resources/colourfish.png new file mode 100644 index 0000000000000000000000000000000000000000..7204202e3b2c98bb0aae6a60396ba7701161f81c GIT binary patch literal 53661 zcmd3NWmg={^EU48E{nSbw*ZT47I$}-AOQkNaCi6M?(Xgo+LC zduF<;uBxkKdO}r{q*0NGkRTu+P-SI+AP5M^s*g#I0QYg_E?3s=zQhzD=KVabLzQ#>xe5`uIqN* z-+zaWJLpC@NQ7@~^1X2$LB};;s>!@{)=)n><~+ZrSvnI^1yWA)TVvuFFHN zGC>r^!6UEB;eI?Yqub@Ae@*&$gL0 zN2kuk-pdXGIGAbozGqc#SHshq%Dy%PjV7_uqJ0Wtr4rINaxOyUA zsy~(@FKzsA=RZ$>hw^@~JkP-}CHuex(Md+z6#{~l>feO)ED&{vfS`bo1&XP8W}I|* zWss_;zQ2on^;Y(n(e}3sz(9cc8BmQR@LA=hCW4sN@GA^1q_b2Pmq7E&%XeIOOFbvG zLFc*HSTScK2uNvdNq1=DO-e*vEDCRd!;WXxTc3A6+xd>BHfTgdCy^@6`;L3HOx2>& zGvVxSS^KV8(3t-pjVjE!sI$*NV1L=KkZ}kRm~nVAcvcO$+mj^&N#MUR=O5yu2jr3C z24S|y0d?Hn$f*GT1_VZI2XOC^C_iy1C&cHw^gZvtt2>HlnEZ0UprOxtlm-~Ffr72) z{|W0T9x@ETWLPvQ`lMK(#To@PDhbhJ0-Opy2>}3&uz5yQfSs=pn6mzn-Tfa%rr~Kk zCTDQsg&4~juS3V~G1FPkI}a`fT&Ne!MK`)8Qvn*80A7;7b~FlrA!H|U(k(8$r_%&B z4%07s8hTKIoNR)L#gLnY$7BJeb@Ae!Z?|9q$al5vV>7GJvF!kW0X#-*vOnS7wNuOR z4nBEd0v@Vy0X<9s3!sulguS-nOKsj2HPK8SSJ~Q~;B7 z$~aA6|73I*f~Xt%En(SMuSyaYFd@|2nmT_ll0GM=YpoCa_}obU9l0TD7UD$=IJu0r zkAYdEh&jRpFxemK+zy_Q@by^6ZBC4qLxz^ky3rIyQ*3kgT(m|Pb^-04)9J58Gq zh8KAnXWBFx7D~uVhkjh$GYkFq8J(eQMCNE1yqdcIX(>`ce7(U}f8~`#M$nL9&@z zpm<&d1Hz~)KSDxtD`lLKgUjNUYx$B3aY@4Udg#Y$s{dOpd@7JUXq2Wk_z9Bpk_lO| z)Sl7OxFFRRlN5W_0m!nAuv+~yYGX&oAmrnoc&h(!3?F}~{Q9aZGtgg;qZOF@72*iX zIh7}aCdm^wFGof#Y?2SR6}MmWjMt!l65MYP*6&;pVm|gV2~LEBXh!|-0V1T|4~R~Rs+OW@u+t@} zet-G|G{e4Fkz}w}7!$y^&z$Z_+0%=qWC=RG$J4B-eDBnGef<&A{+yU)2kd7O`_KIm z04_My@>-21V{nWXfSTTY78pm#)RnY^j9c(MqN%=dDSfpz|EC*jOM72y-h4B?(DdLe zi|gt5M+c@Y8_eb7`7A$Rzt;a8tv9+4y`a8VURXDS8ro+=9OE}LwHAOzkVD%|iQZnH z-#NzsKto-P5k_Hv*FSnv!;7*eZRl*?sRNCH{V3IL@jp}i4E&p`sp#%m(V*vYvw{q%lP&Am|s6EEOikam8eQ;G5ZXM=$FWc|GQxe##nKa6eW>&PuUoME4pe2 z3kZxL{0}U$7t04Rpl6|Nhbn;u%^9s@E>b8RC1Raj$cV00KZ!weEX7X2wS)I`BbCIL zK`dnb$gl)X+ov}m4e5Ax9{}^QYjwxu<7xi`4N{@~Af(z({oVpjuFt>J<Qh7I+V@KpcV2N4qgM}#EJ zArwY50Os|2r7jQF&J_;EjxL%{hJ}*&3+wo2w)+8uCa%}*POLJ5kNgrQsfd5Rb^W*^ zYK1Gq2|;@J9pd(v7YMXt`p+wRFk;t7z#Kj`Md=&cdCrFgKf2fFT>}2D2YnY$UjMsr zJ*vi=l(@WJ7>|Xxf}|I^4P!Z-pQ277qU2{S`Bpy&>EXDZ7!pDt_}|7nU$Qc^8{BpU znodHMJC9}i2fJ?E$2H=sHJ4ukv{TyxBQ3o+k?2@#k0*v^+zfz{X(MZt?xJomcE0bY z35@HH5~p;4{jO3bY|Jn4|A9aO+}rIIGhUV#UUx%BhyHFXTgSUyOE;;mWeTckNLpJl zOf_9_5ru2PRR5gFIPac)b(;{H$^a&fF2T{}b>aeLLSLRohH-wx0>D2GLHjvk{BUlp zO@m9O-^NN6TE*=l&k(N&ovz(CSl(Z;YMx8S17AiDzY{slISYjbPLg-V@)DFDw>ZOy zZ`siH5Xe-ksSS<%)?JfLdi-oa-Cm<(-$a#)x>UHYV+uT z9ikhhEq|`~VLP8kE)}tEVLPMB;uP&wLqMXn;4EdjVxO*#!GzVAeWd?If{GISvf8PL zTDRgKUxJznj4qiEX5#?vt#;Q}pR`mu@Z6w#;u{#<`Zx4DrJ+cRw44w?v6cmWeK6j~ zZTs5cl9YjDo9;rh(u)1u*e~4>cbRR|H zjDb;jweGVg0&*)TMftV(xpPOgKFhL`hf}!vgn2MQrMi6qB$1pt_Yce|cvLSRHl+Ot z7lM&th{^n1abJ}$;fA^qE9wWU$A345i}{84pYa+{g$yT;OdRUW@(v@Xdq>>vEv_Tg znL~(0p=PJac7?g(t~7L({&j|(c}ytpWlx_~0ULA>s|21WCJyN$kC$O{#pmIoBz&kw z4=f@C1mZ=4(v zI^2RxuD32Z<%GzNr^bp_a17^MxmHW9q_v%Y6!ue&t3Nh&#Im2%B!mGqI%!!H5u_T( z!2?y0XU~Fa_INi{d7u}|a+63lW|%|>xLVZpprHZ?{X^5v?*%Fa6R&+ua9EYt+y5n_ za%CZ0qL4nDRH6-4b!6eb)-yX(f)|_^G+Iv?BP*DgeL-SzAk!;5G5M9Cl?OJ_3g1fk z@`sLV*JLykn{+$qzb!|x*JRHAvyf4JCSLPTXx}cBBVTcvU$3^AF3qsw;ReJVgTEr!Fx3569d|)qrbEP@4(v-_iD;CH@Yi@YuTGeaT@%^W3-i!jkFq46b z#trF6VEL1(v9=U5pr;WfRegz5kL!Bywt>|E*e~NY#-Ue$XGJV)G zc{eayYDnKE6OhUo`kWa?2XY~j^>~?`_FR#wvw(wzG)7ENCOt^ox-pBzoM?g_xD%I6)zJ5 z0~1)f`7l}P`kkAw=}@djlud2<_Df34#|5n_XCUyO<=aOK{ur#@`oaBLe#}G|Xz;za zroqCevZsB9orYMY*49zmn{iy|e5+4g9WUP3nN`wlh5oovZL}0UacmND`5_J0E})D# zcpqF*-LGx=P5i6qdSBCgtHZk{P(kYM)8W5S_y< z!}6-?1A4AzAIG#H@WN&GwJN>()A9d<2XfqOHGRaI_DpYH`o7u_m!IoU^QUZA3yxxm zbHk&T8h=Y0M!sonKD0JwuvA=ri-EcMX)YMd%$dBlcoy&3U=jnSLN$N=L6bB!VZ|~! z4r2Lye?iWmVK8Yp>Av-&`A+l0;tZoc;Q2N7W5l?pPG2%>MPzs3U23S~kH{zCQrZcp**mpxbe3 zbJ#8Lm54mt4~pLDpSV_AlGvf)_RB5C4=HJ*lZ&JI$+evKp9{$^vd-fZ+2E>^lC%Qz z_~8{TO7MJgFbIvtrq3}Lz-*@@fU8SPR^R?~g8%3o7HB5qq}};axDQ9jS~Qt=d0q6= zGZBWBN1AUVGo=}YPz1T1N+_Lgu{v>)KG4N{)^WS-bN>=?^2BVr0EN1gjdkEEdG=dm$54E}EQ6QN{W3)=FxVyIzV(U`+#LIS)KBlyY z@g^s$yydc(j80`&3uSSYn`jBj9^38x(MCWB?|;>MJ5u z|9SQ810g#XvsMiaxM$v+RCzQeqS+JE-64s3nJ>{xcA%mhOgu>s*+&qoiAvk^!i@0O zN;}yg?l+xnD6BTPPCjp`Ii-1=bYZeKzgV|Px&|gAa>%^aV@o~4sG`0bm1s_}KyU0R zjTzvV%@*N#{a;qA@fjEe$H`jWQ|q*TRZE4HPBpE=x{%{yf=EZ%WPc-FTGkO{|&3N2@ z&~39KkE0%dx(p@JP*HWgGdhNe_s<^&5$c-v$cItKc!lC;H0OSK5H5XdQ= zT3$dmbvNFSaI7dCq-B~l)X8XruE#96{$GR{jI#Z4Y25SMRyAv5D-aE1a;#R?HWFqX zOERW`y28PfQ5RN5L&pI{KbrdExp^bz;~#G1cAA#xzckZo7URr4!()9Tg+MN6OdNqAN8+_hKtd7Iy3OI2 ziktEyXeOPA^(B*R*X441vu>iHR(o-_TMMJ6TB^1$MX|J~5b;KR4LC}8yUN_l@h=1J zJ-h^k@Z$f=nIfPt`4Jw(8c`~>87-V;ZMBzrMA|;*Z-~0BF7qo9vCazQO2(^0v>t#Q z9PndC>Wx>g|IlaPkbx_Tt9>irP^dtiYYUg*Di$n#bIdA-&(sd0^5aS#sj3V*4Y}#A z7E^Q-Hzr{1u*CflN=OIx>l466{y!t;fKtdfc6aGY6x8S*YtgICRmarfZlq@RSYCn_ zub#iQksv0oy>9i{6hgGoEJ&`iq=SdA6y8l6)6&S}bZy~G%J4+~b324ttcYSaWk`Z) zIn`H+pk8QiTN212syuhcC+>LZM_;6#x{v&?c_xX;&)mha6B)e-Y%#?VCx^KE>=z&W zW8c4^+m$h0kQQKK*?Za@P`%Z{+H9MM|82Er9g!YNUap$8rQ94G>?E2kFTXM{z9h zf7)0l)CrB!Q`dk^E!G(1_4N-j8?bU)R41Z4$~#S6zF!RVZ&@ec$njH zXoN!94t1ca#?yjrhY+%T)1WU1TYXrl#6FNu7m|NI4Z_ zb+zjDT8)}vzTXIM64BpCm=Gu@&Spc&=O9OKRfDIAr9gRMuYDzNWzQG0&|5>FI1(&G z^z>)94{OV#TT!m$YT*+`jjM56Y;p(*f>3M63ON-hCxWic!HBCGQVW$?;{I~`!3@us z5)ePFd{$xnh&t8%%5!7#ojN0Wm#UCG316J@GD%acASa*J%M0s9L&t&~ z6h|!&rJ>;{3&PH!mGRS4goEXBSVjD^a0SiQgpFULUpz+f7^Ys_EJpD7W9-WeAJa7SsR^IAuE z@iW$Lf$5W&o`#sH_{w<3mv6Obj=qwn8|kjiDk)kajKk8x3lB77sCLx4>;KmLRC4lt z@=6wDdZ|{r{^KJBqb{Ljmv@I6bU_{|iGeY*So2$0x6)*3)KH<6?T`#OSC+Byr<}K2 zkI63w!z^$k5;8IKZT8;|=;&+9Phqyv0C#!ZIK-vncB1I=IL{>M#yrksltVh%kP6bQ z75+}AoJjs&K`vM^*w%-y*R&K)8)sFKTYt783Sa76%G$dXsxEqcnYnfv2>f1YmW#PE z*wcJDy-@i+*wELE_TE`RIvDxuZ^adwoo2%H!m3U^@(x42;p>!K3AbRa>Bn0Dz!iCS zQD1E&^aVNkj@c!eoDFtjP5nn$Vy^qPXU@#6?=VcmaW<^rGp@_Bl2?Na3OfC3s@kcX zi^a}i{~IC76j6o0w;JmG=T%a2ct4_T!s<{+U#xE}Q>dykD?5jRWP?;?l0po8?_`5w4RsjIL|%<=Pl9}2nqo@o zQ-2Rlwp@M{=eB?Ac(k>e1}-k-jxbX}34UqI(=FQVr8v8NiKhXW_ zi&gEl1h7-V;j|b8`?gEDWR#rZ5?|MDZepr5f61cAjw+iK0NMw+IrMdtTFFwFHt>&) zV@10Y+n8KxXdgKAH{ZPIn20ncI-|o;6MQ(d{JzaNl5G3xw5|a`UhU}l?*&%O34E z)35HFr~h20#b)N1I@nH&+`&(q_|sfkJM8<1yl`JQK3mlcIOPZPjWKhW!GAQ7u`nbEuH$m_?OB$;wPwd*JDVj2B=yIQ^ROihYiYD- z^3n)OyD?G}Ok>^T10WG$tt(YnJOAz)Eo-IWuF-{RLr*Z$y{@ASqb`yc-0bcDwBgcN zM!~u+TC%yHl)7Q>4lQ7mZm_65Zq{ahdf4I9AB0$ zyRI=+3Z0gg`)>n=nlNh$RzHsg^ z`mS%F6(`Xtl)k}O{Q%6JGefcwfaOjGPDs|Mi#<}ddtWYI{ma+S6%Y!R`#DkOGmpJCW_R$>EUCbWzHV zP~KOTTM3e5*>sTh{`cYr^1J+5(?vd}l^SZOJ6q2{JM*%Zmk(A<9EbsR5`csoxKqI> zB-^qSH#*o3L8Oo|rlUOx8be^IPc%1`QCc$YSQwo`tkWRD7#GEEm!F9b@<6qi4_YP( z%_W*?L%!zpYGRv*$(LpNdb)C5eLeiba>1&W&H;4fs+3E=;cNb-F`p7$u>6exStUY_Y8$yzHf8$+e^E$74LRW&Zd|HHwAJ+XDDfd55)J0yGC$n$ee&?J>Ljpv z6F79Zy$VnjyB6Ef7^yb208K<>Ebg5&Eifcu8T{RTt&v}0)GGCTwp;&TBstoCma09J z0+0>QN|F3z{YcxqgDCUsA*l+dUGuwvI+l*ssInZIsmV5QZyE$bK$YbWfi-Wkz6@Tr zNDN>N!fVHBrRrdZrj&5Y4WDXE{6bc0XICn)AUTZ|;LN)y_1T?oF*|wK+c?CK$il2g zs)3;29ExM_pw9Kcp2t@`Wco=?EiKgeXG1T@^3fWUuJFT`q4+~w_qStCECZ>wye{&J z8vE!|IRgm5mF1Sb@v=T|kFQ4@C8RXcEkf`Y<|>j<+3((3Lyx2{jipPv9lLwOWrc|Z zH|9Qq3RwuM0>)up>*jz@_JW#bVYKzq{Q@(2^=5e69r@ZP%!U z5Rg{EdYuME`OiXDO-90X}k@x zVII%ofIZwIY@LpxtUV=w0=iQ!^7#+8b91zBHce|lz&dK|X|##L*#LLhla^Ich= zJ006cd^%?8MjE%u<|qbU54uIDj#5|WmC`5@C3Hc#Z?aziG`{f9 zSv6JQx~Cd3*DEdAW1R?K5+St{-Tc;%e2-Mpdn$bS6EaNJEzzC-(rC$ZNU-RX)l6}$ zGunbxkv=`PIXmusJTqI8#rTmfM7RdpNJs;tmR|ODBO3m?Q0O!n6JZ!&bRp@*c(t^@ zpP1U_3a#IXk<%4hipEbWB$#uR*cB!? z02CJ`tWb$~b8ziFdGqpeXyc17an#_8@p2;aBBqsTd?AgOGLoCUwP>zXwsrlKjD?eZ zmXcDLj6+4gw8c9SgbH8~%r}6f+TObI5?cN0GpR~1(_--bL-f!y2$B-RoNj3@cEWP1 zgHiwz2EQ>$TVADCc$KA0*P3kJ1zt%LRfe=gzpz_FDP*Fk()HBKRe!%XPD zco>-ADDbX}xJ2%+5_@vmFD&`iqbm)z)>c+Vi~1g<+uv~snMKEqyg0;148Maz>o`*7 zb^9)0QS(qxK$`U?9JDt*tI%(2vOq9a*)hlT?kSo~xu}uUXu6bI%1_4V~X@$$~j%=ETDn$0^V0WRyYmHHrOPS{K)Cl{@(LZ?3Ui<{lK zrU)sb6H3#XdFni$OrljOp+PO?s*C1aScdOiX<;K5zNBOJz_N*UN9&;VqVBV{-f{-^ zuK;S(DQ$s}EYrIRUL7S~Ol=er+@xFl2KHUB!%_Iq$!(&5c@T!(QxOUW?4Bw+A;-%L zE0gX0C99*c*ABvdwE6x|ulr078l9%xEIM#S1v^#8As4O(i5Pzq&0k;d>&ghnEGdZ@ zDKYM&E?^gJX=oTq{PbtZAOhy90`CWo(L+3;9?xVw%j+JuMiMbcM>b?U=B+?{1A^P{ z390cifM%}*P`!ShVM^{40yKQy;FRq_77Nm4D@uc>#T8tyfiki`3k=^++L=|eYkLh^gc{REK9KHDhLfb0MtQd+dhgR) zj#GJ80E$;2M^zZU?biAa%2Y@td#eg6%gEG}6p?`J;ggCcil*GF5uYCl<6}xssC2x~ ze8fsiF`BTna#oD>HH-aSIR(Zq^o#XBK_UoD`Q_(bk#93~l?w6Sh`9umBx5f|l)uLr zz8-0swht3U3tb_6C^M(XlLmal-|YB+WamUj>kgOkokPp7Tt#?7?C@Q ztF~97AS7=nIzlfafu9$>pGuGnQ^SsnAhOm_Z5V4qSD*Qi$xb?eNqt0N1Ps&=z3{z( zHm9y3F^Er0kf1O41~hZ5CvtE!L>uaoE^=(WpK91eCk$sKS>qB6gzsa5KRz`q>m2n( zTP=M{idu6}F_ew!77wtWw-NMP%W%qBaF)l_sv$GbLiZ3U!HvB32!52c zTY=Caw)id6{GrOGwB|T!Z4P7o5A-%$W53@%-C~? z%}DCMmud0%{vaC};2rcCJQ`9{$7|;FAH*g-as@0&^rzGwKWZq|<;(TcDTJ?sbC)^a zv$kxs?OJx_3?ex3=4{$Dx{hvfg;TfCVnc`W(S)<MTV;#CFgw-P+}Ns|$pfF_^*oHc!_o6x|(qWg=HfXQRFdRc>2 zk!4swvmKa!VpHJ0fg9FAJ85wjpj|8=HWj8uPhe|()VzFy+vZt#>@aGLnTTK? ziA}gElWm-GAguR${`^W}pleVG+V&x@W4L)zo5 zU+9Iue?#ZW@UN#hOEO{$u6)pF@u|-q6}j=-%Oe5}V>{ny2ilH04;gLCgs0~34&{cUtcMLB``hrn_ z3xdF;i$b$~Pp-h!R)eP42tp)@^Sn#)JO%ZLA3+apiMR3eMO1^WnVL24$oLcUybh|*g=>{%w39iO?Hhg7 z#XLi5g>3Tg&OfUw%fb*uzpeX1KLmk}45hpB9EDC)u4+}}G64Wlm`;o&<#b4LLDI@r z93BrabJaKKE33)@%_B|{M9!Vy$+#Is>L2+6 zRe+U-EO6j=Sdbib_=)V>0VMIb&@Gjmf1NNJ}H~lT{uy$ zUZSMCovu^a96MaNao;rPp$p#J(+doQYQL6w7!Te`kuZ)vWN*RN(Jdd7?o!HvxVGr~ zgSP2 zmVaQ{p_|o#-z4`KG5MY5bXL)Id(nfZ0)*+dS$3wwSAjLf=W9YulJ|OXC+fV$%;;B&cqSB!H+(HUSBug zJJN}{@kqWuY(pf>IDi;hTpNG6@Shs%zpJBY8d$tMT&_9wp|;;vIFi;(U@P%K7T|#0 zNK0;7Y;)i}K6B@)F-=TNd|iE5S?siU`bwVYCVys3(fmif3$kLR{1kALRM%;_z)&6` z$oT^B68|`R)2Y5_adyBu^}AFh7QSRyR5i9N_GFR2A7x7n^U;y3=u+`VW>7ms0_YvC zoj6lqAh!YaZPB{gqhnJoQf#Otxr~Rs_Le(tAkLOc0%d!v$R9>Yga|DY9ng!)yVkvI znLSZ6L^cKqPtrYCqH1ktXLdAK(tfOezLViPxjiG#R?yXztxwlGBHg>$PL7st8B)0b zk?!FQHk^%cR$0HCo+nQNAEBW1{bK8`dP8}CqHDgj*4otF7x1cwE`o>-8j0u0MEcHs11*JH+@v zZT};fZm+pcRWQ9FIQL^pL$IqEpg*{Q+%fRJy#43Nkil=HMY(=^K z+CAYrJ59Yj1Jbp=S!n8{poKVWs`7pqC^^5$)-=#GncN84Ohm{y72cnrnP!++{GFM-{ zbm%;xwp12f5pN84gIenE>0EcR=R{AedFV}0OYKO2fW?aXe5r)&3Y(ksj8|yv=Wo)WgL$3&hDW);7EG zepsEi=ht(;Y<}0j7pYS|K^q$e?wh!i5As@8mILzw@Gj+1xx!Z2=c*7PE4*K8tn53nO*x2Mzo3hH58?azHKc@w zo+4NML{71`cD`)S*2`e|hlvlMhl(x}8U%>bNaxLA#Dk7y0gneZz_$Aczh{l7$ z481j{TBZ>(VgOZ;f$UUVKZ%LI#Vlhhb|6Xib-G5cl1*vd@BQ`gv>T}Wa^kNp-hRAFuAGlTRH51bMTawk$t~dcd^4g#p;A|J;kn z`xv)YMudYD49f%e3z5}izz&R8(4ZqFiHD$&h&OXjQq!W_XvTtt6y~jH2-iOQU~*W} z-R;3+r~(5kMgQc2ML>g5R~nvtXS>Gh7dYOw-Ycdrj*x1MxZf|s4KId7-(thrI#W!e z_=B*c{e3NaZtumXK4*%UG5-=+y&4dI9hvp=(5}#jF<2>oe|z|J!Y`?7dhPye@F{En zhL50G4hT0r*5sqeaI3dYR0Sbdl9zh^l{f~m@niwbk_>542zF|3*X!2gS5Ke+RK1bD zA`gfC!Yj^qQB|B!&f0IYN{onH0%`o;q6t6YVTBC~5`+iPKATB`8X#ADIv|K}!=yc=5gX-n-t!1X+#b|hMptoF|?-H`Cp zb8~9Ew=*AkKgyp3294Hf#tx$#R5*R%MMY%!);8PL4hV7yrZJtDTBZ%6Kdnmk9Sh-J zq%Omh5c#!m2zu_7Y}{w)e<`7lD-f>8{xav;%v;{2{!x;-$4h#L3|vTrfvM_mi^2va z`~AT*`fEJgO7VFxv}L@qEZ zR>rgp#7LxhL1o5WhVx9n6M`oe0PwTPQe1{MPEOVC(5C(W8bS3|n1&yjBq0fj+2kj_ zV>7-tl}zo<(ymmrBh3-Vsn~DxcS2Wq4wE*hP3j;|cj1>aQ9L~r?9oPe>54w&}3!b#Mcm}mxEo>dFTkHNd-03 zb;WPp-;T#iKJZ9l*6#fm^knHW`#%~jTJg;gS)Srm?4p&jRgv6kWP1f<_D0`#i8qUV zDN&fc)bnvr@-3!m%$sMFCBr^(bJuKsf1bDBAEx?hvX(mvhhPdC)n!`{_~Qk|y?k?X zGiN^=`|+vI5bB(@k(c$AjeW(PdQ($V-IU0Ryk1hn*^8T^-|khw=SlN}{7e23pQWhL z6I=ZtqeTK}@}^pGR1Oa0?6oD)6Rq3dbv%78xFk#|Wrez)SxBO#mVv$oz_;HEL5qU! zHdj!mPhaFnkzW|Q>=(!`{>TOuw9bdM6 z1-~8K)P1XLb8Lrmf|db~5;D9FxT^eO8-XcT!UjzT+4pEKJrxv9icsNY2;7(_TC=q@ zZ@!Nybg#axq!UyDgXbD^?+T?pm5tfQD}QPurs4_M9Znt_cKs8 zqJg>U7n(o_wX945{=wMVuW@hO4Rk;J>x(^N9TO>@Xe1l6^}t)2tG{g+ArhRTbKQ9! zn{|4+Z{BoK7crc@i3r@THhwz5?*_Jg$Ap5yUfT2pB8Y0jAf;tkrB~|lWx*y&(WSkL zz;8(!-?yq79Lct)=JapIyG> z86OeEFD5lzeaaj^OZCnJv{_pk{HHP97f$|Si}7KK=3-XR`0{#M@RLaeloPd6e2824 z@Bo0*9z~k?L$|~~gr{x2&8ruw`JSDYiY#29ODE?Q6eru8uG^Vu8*!E#<(Qt&X9meK zCq7YcQ&b%*SmEV&b*=e1ts7Oj%%p4XH~n z!P)sv#egPp1)?46u!nu2I4e&9W?OdDE3vS!ka*@~X@5~zw3*NJJRXQ!mf@%pzF(Wo zSf$MzUexh})Hd6R`%0!G!Nep)p3qb;QDAK|r%X8GUOD?oqB|8jaERMfU8ep?56hAv zjQ$)nPAb2ezZe7J+TXPt*IVI5abHQ%WT7wUqyezyRIp38?+*6Bi@-#SKsBw~faK=u z@&lO7qqp!}&JD$ctSU6nTrYayex!keN*&c5ILRH!pXGTyOqJ*IE4mL8_jZVtCnoBqRq_fXFb%Op68_F-6e zD+uiLeuO#M*OGbzfBMFukqA2BuKDrXqJgu8`x%BqrS#)(7NNz0 z^XsbjxK&7?`il=3-OxR_I!xi7&%6BATkrT#OGj?ob-Ilz5>|M-Dk>&Oe`{$U&$6^| z*PvL3Ho0R_k!@5POHAoXkJh0Vjp#8o4s45|!dZ7u=MsCl zM;TpMiaBL@j>)?5f%*55dE!3$u^(NwBVJmulZm|rY%M2@6At3aHavsxsVDfHBqq*U!OD`hb#hFJ} z`nvmSzt&jKYks*mfr-O!-a>woplRcJ+B1+;)pS1yf~qKU7Ue%OhrSs z=&p~|+)IIe!Qe9lp22^IxBFa$$xB>ev4)zd;t3_d<$=8tN6dwmjd)*`%YzN?(DxEb z%Lr~3PUp8OeY3#}m;7KAG&ndot!g94I?JiQDZ;d>Dib9kJs32-|**AI%s*(yLvNJ}8{6 z^-?rQ=dmwc{@WXf3`t*Pn+a=D<;cf7iNs?Qn;gyYoXZlAH`=^xqog)j3{kdkxNK{V zpNI1)7YC~@tiHlBL`rwby70U*R^d47pyC-MD{>A{@1m18(?mofvv1D<%H>FEa=y1Fkpd7B=FRVtuT8e_B%k!- zwRK;CJ*ZYqJF%t*w;I1~V{AOwAI?>7;Xm^^*-*hN+Pfgre1BfubU$hx9F&?AJQwPG znyhAQ!c)61>mB@lS=xndu1b|^J0yGa@8Zd zNL6J$TMyp^`1PRYFM_s9%b^t;q&Ef7W(P5@~+uzJO{LPhxvq_C^iv>=bd8 zv)`z&C}*<7{mabx?r+P?DdEBZ>v2*}JXLfEk}H;pqhyVyXr#%NU-omXJ(5^u-Pqwg zx0ga+jh>?y?1K-qBS8%~{vj22ls)VrnV*yJj?Jao3xz65n{qBMeZcXtU0eDl0(eXPY#dGNkx=Ipcgbp}S%hty_9cKZ{N z?>PbQEUmvDp&I^$F}xqvWUD(@DIJ*Wy5&6WxKbp<{?Vm6n2(7Ni937yYI1)57jX49 zzT}cFE-hKv&y7T(X*Se|VGPHnh!m3y*cd-~olJk`cu)KN_|-&(J12@~;xx2r;Ji&- z=H46hhuO=r4+dPl_Vm8daFv8C(@|K6NNGhmlxe-W%3DgJA&T?Q|rtyz@wPaFw!D*rI(IB6TwiN@5@_p3s&-hK^II|PR_PY*7%ev>J~8WJ1*d{C&R!qK0I^Y z6aVleiKo9kb$N`$sN3}IYC<@>x%0$MKAkIyeVixwsH#1hLm`#_m5?V|#w}jW+-Ea? z-Nr5o*Dr$Xg@vT|cJTBta&!GVF+JVO$lNU9ua=B(-(%r3_V0>%lp;Aon@ki^)h}d$8M>+NO6#O9@ z`YxI$h)OQ$&zK1G!U3L4o_!E5*F0yt)Z1!6o1s#iOPKvU=G*3UEgSFqD1-QIsqR*x zDYz^PO|Wif2m3_!JxJx5*-a!-Z&t!UR3iXJ7nF3B>)B^z3`F7_N6a%k%B;!wd3lku z+~7;*)fAheQ6ffkOgRw{<=jNI@zYTysXmjjuWDU{IS1}a&)OI@CZ;&y_T@J+-)Hrh zzI9q?%1FD^*>FAJ8WpE=P5*L?@{g29Xjy}{$MLJtYL~;&NsU+30;bN{M!BzWP>DFa z;cD9Bd=&DspYSoSxNzwzFvBw37OfzUoh0JsXzpsn@Hx)#`7-$!XkniNIm69{X+_i7 z1ZoR~z((Emwhu;QZyctT`;JUMjucu~fn8W_V>ja!`ztEcS5m7EJE_hYk$L>qLa^s9`I`JY531-p1yw>K zqD&9+7)Wtq(rubtSQz?qt1)|XH_b0FsxVQtJuhgGOpZ})aFeIXMc6PeB zxJ)K+C|AACTx5B_u<`i#Xfq41RWJ2|L>O;@Qif%m;!tQw(oLAYRKpmY)+64mwSMU2 z2|Kf&G?&CgeNiziyWS}~p~Fr6Ln99CFzF%Y2TO;e%4X1#g-<3BEAsmG{d*nUIElIE zHvI}=HrbUVC1Qrl<_m6CLDG3fF3#fG>|veU&fg;wrfGS_5#qodWcG$WTgDN3xq5BB zbE|53+X<4TS6x^bip!vJem$*J?{YBJHe6Y2a(}s#;klcd;eFcb1A6dn z_UwB!RsJR3Cw#3A;!~X>eXCU0-`4spKAtn|9+lyje5dnmk6Xx&uG}2}6co_S|6F-{ zn7hjRt!AyZ{w9MpfV1=bdN8Dz>kEZquDjO$r_cY{+jS$%{Tev}(*hIH=L0700!W-oUlzd0fF$cT!^T+o;cVqz#aS-XDx+|a3Cv2{h98n z5SexcnNwn*(&q#(uR`%f%^BN?`LlVmZiK(IPSP)8?H$I^$wJyVl?@fZIc&h?3|o^R z>Y2DDMO}nZu%H(HDSYen?wrQR*zfWAu~*1>V-<0|3o$1l#wI*z4hc@< zZm2WNyv~nZ&*fFdIadmMedx53a3=VEn#m{<*VIgYS63*Pduq0qVitbBh`HbYAUwQu7wTKodqy@pJ6}RcA=*(Mt)4{jt)@fKd&BZkS&s?< z`8ItLrk>CBuvo_KTo13}Akg(GETngBN#`frAh*qt?Jqy>(JuBun@!p2*I33n9|EmN zB26v1&;RoM@MXdC^zn_zceCHLf4Q|kio@%nO4jSsw#@u-Jnkq^qr+?bJ1JK*Y}j0f zkT6Bin+t^a(qj)J$t;!|eWBlMtj(u$&dhA`NfR`x^tA8hp&(&3(9*)}{OCqC4H3Dr zV3f{FF%H-H&&av4sVDr5ysTJnoZL8PaRO-y>hLI&+;rPj$LH3aH{-l}#A&GB(<5VM z_Hn{LB@T?s)#%l=^>dg;?0t`PA(>!);W;xx;n#%3)cKFAR5TW4fr(X?4FMZ?irT0{ z1rJVD$dcCj9>ZVwY!gM6zZ>qWWUEVGZc9*_RhhRG>C%32-2O1mnf9(OfeJ|})`6|e z%L6Vm@(dcQm4L^J#(?VShUBUYu~02p<HE1=-J8P@v(p*JG~AZ&+*VX94WGS~A_x$|ulk9`6U zBVK`K!lo3&Bbj*Wi>BtzC?)@gX`h$JwY^1~YV)Uun}48f-GL?hE3&d(cvIuJB_(uQ z8*|Z%;TQXgh^ywvgXig!$DYqgUOC^|B1Yvq!(=Zw&M+H&_6CzfrbSdC|JNP@quG79hQyy;Qa&&?lSJx^QrK1pNWrc8c*D99c} z9C={i_kFl-yE*yuwP|qn8^5hyel!u2ew$0d$S?4pQw4{*lxl92FExvaUcbk{fIUhX zf%$G$R8m%1rM?Z;?scHP;;=2O@CIEL7__N!Y)(uvKZhUBCPWZH<(fbmj-V* zy!X#XrK^6UGPeYHpLOC%qT0PGp2|UYkucW}%RN#q&aPA96spAi>pYA?(dWeWcyNVb zst@vh>JE+D!Xe<@-qKIci8-R{B;To_i0QlwXuD>W}9!I35387YpwIYn(g>*I%g< zEgkVXAe++5Ps4_t1J~%DkH?`Xnp?0Pn$+)ojoV@7k@U8De^5D1@0vgN-*w&V_@@>3 zwXysdAz28CgvY!cD~@hFoIrPt-mjDdH*}iN}xB1b0k@kL9>C94%j^yUDx_!XV{1riyrFHk<2c+)~|JprzIzm{> z{e7aE1Z_z|{@r}$0SQTl>#Vk($3`gUQI^+X>A#1$?jjopRE!GGKP9X5#Ep+18@L+k z!14YWNawbn2%RPuWG{a|fX-ipiV0lJ5S1_uokql$!hLVn*50m9Un&4Hg)!jH^tL!| z(H5>$9JEKvE^bxXn3zh+exe&SN^a_w_}w$%|LiRExG*t$GM(IYO*Jn3;uFHA8|E)g z#aaJU%jS~X%9?#U=zcYC8dGc38`Ngk*x2YeM3vlPt{O%^r<(N0Zk7-M(8^;rQ$Yl2 zOjB3n4QJ)B$qb^{vIoxWhvPSi#vi7o_Qh@-2b7~erK9aNnDd3d*dAFODdh5`g>3y& zNN>bPKv$Dxs$SS2`NA#Wsr}`bP>;HZzSaJe<@z{PP3u?d-mo%1LrH^1BnD09`^(82 zt?I5y%azo7U#G{jS>(qv=*Nj5WKrujg>){*okUG15WCnWe%daGSKI`$i|r?|^XQky z&UyHD#Gv8gxjuWcvgx^htsy(Tjo^)nTl9@8+QGj{+z4f6TE=I*=Ofca@>ZIavFZkC zrg@s(=g$@kb>^U%C)In#XI$Ejx%%GRBc$5!Wrs%i9@%}>ljd&4oecDG8z2#a1rmU! z8)U~6G-t37$J-MerMg%Dl=x3LAol#^^765wDLBqu_5D?g70q{s6M?IG;iN?7-uaj9 zEpBwm`$S$G8b@#jIIVi_%~W{*-3WI+>%3E`NN6$LSqYeo?WwJg5zS5EvLgi5yi%K6 z!qSq4d&LC@P$4`-2uZbVcNEkOqh_}u-Rr+UknQ9IqnGL4WuE!a;OV}EhokC3J1Z?bm zgcU+P|7{6Bzk`r>9|VNkM$@%B#pEMPdquRdCccVIlB68 z;?|Oqt)77U^2p26eGMODAl|WIVsK-WMZ9XFLGXl8Vjyg^syA=R;&F}K^60l;-mGR)sij%zEB3wr z6LWnAL;30ZmFj|VH=~s|T63?O1rgYbd;IE+UQ+pBe?mfENbF#qtUu_vm&si;N;YTc zF9`V#C-tHQ+vz7@U~|;yKQbpD92^)=7b(~-HbnIHib{k4&hrvH!|Sx&=T&rl9^cE$<0#V-gZV*CfHamG=EsjUIRT+> z@lg@v7<=tGK7Je2>UzJMeyNZr^N--Yn<=zO53`1{EeBQsqwB$OAM?_PowJ{R#)13k zY0y0iwLtaUX{Yt5ED_u3;Vo}L5r zBN4XCD2l_3x@I9k$h_3a;x(}TKd>RXWP}qEeQv~s-v87zk0a_Ruuit-8W?f zg<2^#F#;qwPEJlc7-nU(ZsC6$7!WYFLfKm+mO!mp%0`lD&Hu&s>*8Ae2aL<_g68>hr4x=tum|Hg`{Mf#08nwQXb-x>WHcYjnW*}GDiSxS0}E}p7H zoDCyW{ga+mb8!X9Il6;JIn6)ah8O&EHU*@M$b?JIb%XUi4^L^y*W-9Ps=SfLX`|O;uJgHSs#I1Q zml|GW*G8TlaW7H|-e50tu8#H@ILN*8wWgk1QQZ3}=_57cnI*O=N(xL08qpGOeeQRX zGn|I$wu^VBi0vsE3J@}8FZB)Bk6csdw56n5CqTq%p2Seq5;Rk;+1x6en3(tv1jKtFlYB2)i8>ac0N#SQ4hEd@?ePL2qbqSX zy>5?(zyhr-5fwYV!laewYeiD$BS-GX2dB=v? zX{&%^YYU}7Lt7=%GD56kXsD#1@CtlgAI^Mr;Q5yG4*Ijym;02+E9O$h<*b}>4N8oB zN1PyH%PUJ+x-)FCe?>F#&rA#5RL1$7?9|+A7_XtO&U?d^k)*QFxaGr*#b1}SF80_n zEE{dMU%eiATC6*Z-<~YIoAHBkVd74oDV*Z^_tWxx8?nZU1rBDIotBPn1GH6j*O$+@ zO_nh#jSB2LnH>`NEJmK=BL_cFS|HdMByy|JuGeaDpkV2|#&%zJM9i7@w^(}rPJKgj z3)$%0h_kz}?_#~XS>qKOO@>2IHB4kG!-7-K`20p0Hg~^gRcG32q73W%riAf`*%o?x zT{}Jt|S@)LV`ei|AY%GGWDOzeGJyS=yP47w5gJ%b#_ z_hMNYlo`hvrWRzHxO^Fp5bDA6J2JEAN%`pT z#DVW1@02jHlC#x$s%5cjlxf_pwu>jro-8-vooYg4|K;~|a~*xkBY{9CCReg3EBo4 zvRht)T3_pRV_l?>F2#yZ$t-6TDg1%5wuiJqKMO6%jXb({8QG*MJnX1m-|YvNs^wJ1 zU7^9)y;YObmm?1*GDYf>xqDVZBRW(<9cT(qocjl!FU-|QA0EmlUR>heX z$nG{KZ+GDw&Mve!B#wM+#rHA`vf({=@8|dgZprYtuGuLh=p4!toOmKr=O@|~{g~x> zFr?5zCA0gR^aov!;Ze?953VV0Amzf*hAeL(fJ`_-Jf)iyR^cuc>d!3n!$W=}Sug#qo;p+kxW=gTQ*rnVZM5L8YLALX3-vUHJ{Rz39arc_ zbJcr;MD}n-3!nGbNEJ^$SMvia?6mdHfXjYSf`hQIsw%p=>mkzb=>ZD~uEch#G^RH? zjVH4{SU!y-qBzT|?1ytwYO2*x_>6=aesxL7m!#nXpNmkh)nUaE>Kx?5wgLs|AUkig7@8NVNFeJt?AFH zVkNQl!{Gb(*q+m!_MQ ztYslA>r4mjRg<}{J<*`$L34DoU5@65mQN)nv|Ln1aP7FuH$vZ!VAFF@bg%byuqls@l6E@oUb zcumo|-=>%?14m!b44!ks(#+gkd}87c%l4$n*X70b z#)e+IH}X0xq%o=n28y1ZyehKbEYR0USE#jioAH$qw-x?z|87X`Nb2qP^)c?X?Wemn zh@S&0XwM|ZyNBZ7iKGW1uYjZFFD zf|7KJhUZT5H@Eymzk)JsY)AzJg}n6B2B)6aIH1p5nxIeVQ_q zZr?Qo`r={h^mNz32~r33;#goo8TcZ4q=S|_YR6rhWJ{SuYN#MtbyLYA>$k}Cgg6Zo zXy+i?t+f~ zW+9inMd!9@n=@*hiElBti(Jk7LXhQCSfQ0ADe(Xr1(H_n7KdC(wEv1I4>5IG31!h- zd~D-@Yhfpk5M1Ni5Gq$n%z}3ke6b%yTEu_F zAvr!VVg*BAvA_4fc$LGhv!whY|#w5?bjK_DulZcMO0s@tC{>mLOP zgy(VzIv>*3_}b7J=6Wp|68R8fkD)i9D%D8i*UB$eQGR-N@^`xl*tL8fc>U<8`1~q- zy^KAFR*4RG+3TpX;RmFQg8lr6$wRHiVM0=pin_WaE56z8XsVw3iYwicO*D6Hz6H+HVyVv>|5-;regHGql@a4u3lE971|Im{EMcep2bKu5;O$^=)fnTRizUXABIc9ND=iyfU zs^yl`PsG=SJ#CUsnoQJSQ5k$vKWJXvCihH0b}FAGkQz3R$nir#BbTxOH;$B8iiZ_H z&;*u~o4ekq7iQJ((XOnl?31;=ch+@qaG*(H2j|TKZ(V8Dx5sqDsp%)DC4Np z4^L6vEw++RFB>HLH}x#f8kl(LjVtFqtzxuPJbjlRo8t)&z=sSn@*EVzqo0Q4(d+6t zk8w)7GA-kuR% zPNR3Kn&R+v-6y8&WO|qVg|0DUaV1^0nKnN=qS<03X5cRrwt-NkOk)$`jLWffN|49; zSQEajsl?_w31`Bc#P5IABSd=Cqv&v9#1A*UyeuyxgFG`c^No;`-uy2!X-qvZbTz6C z#(;zQ6VxxpT~l4VgQ-F^G9hARrQa)Ut~Sm@!H5_Zpu%1sO#ggnx6MbaUI)0KAB z=hV6R`@QT5uuf!I@eBAavD1*Sr@U~`U*ll9l{nuV&VZKB-}rR7wbCHF*C-a!@q)3R zQS!|Sa(YA6mQdxkFcnye-;=+8S7;_z<;Xa&mWva;_EWVp;4vCQs7ewGYtlU6##%hh zM!!^pF~QbtvaKb>M<4v$aUlh?EBqg<gz^YDTKR>wj&Tol#)CXYH^$GEP$NzMA^n#V0#?S_s)a znRTR*gIO1vX6bZN?$5;boi|B|X7+%t2WQ=%nHk4r$DiMmEch!_`c4Vw9eY0R5W=hQ z9$0TW_#tdJiN@77G$e4^%(gs3cC@ElxOF!GCK$0lo;3cS1yCw)X!!F!maNU(-28XD zyS>-lsRH=f2g|MOz!0x}=5s%lXT@)DlC?+-6d^ZKK*E57F*7s6L=XS2QU^e5KQL5! z0fGRklWNnS(G>=ri!fsbonDRfvo>i(R(gQg{!fn)uu~sAhJ3@6`$G`{3qzMLEhnZH z^iiFccwa=?hX3k4VHD`4n9h{2KX|YaU3g?PuX=qIemYQM)N833vrFf4+LnH2Rx$nh zMUanPZIif1ArzGbXF_JTX2HwgOm34oa1)MInB3Wa@8<8fH&K2!G(9tF8X8kwzK_8| zw+GY3S0E;ac{Q*Ddt1vh;5TMoW@$PpO+TW_93njg|Cj58)`KKZhVBuH1%{?rr??GW zNC$zcFuEa{yJ9c->Jpg%MJ2!xHA^RMZwH#gerc8dmu8F#Zc;HYbO1i<6H^PUM~J8J z@1GAkF;5R5-1@g-gg@6#OifMk+;7JdfOiKRAYdCLkJzt{pNx{Zi;m50?Mbz)?{+P3 zMdVn?8=(ou%HU=BVDzy~E+u96=9JM`-!zq)FaN?6I|8nEy>}Y7s_VfT64mB>Px0yb zXdy-U{uO+2-ut2IR5~%Fm)>>Vru>j7aSn=sH%1`|m#-6OlD2>D?ez@Q8%t0z>Yx;s zq8JC=J-D5HeG@RU{N`UHOgy1exBL5i0pC(9we>`L384Nxz;F`d#VnBFx&yF~y8RW8 z#o}V~2c(3!9L+{S0E?|?xug_E28Q}eKG5Md4$t^6S*T3rn)8;tTLFZ#S)is|W3Nt~ z>(T7R7TL@EgRNJr@8c~{@0b*DX+?EpH4EWMC;{M(-zO?R6M zy#2-a5_Yln>kt%59>-&T{YlFNQG=8&qU}1Hvu~dewV6G~``+q^4>7OTgYwsJqJY%} z@9-@*l?PQ?_OpvMVscdY)Jn}KpyRK&RCjVSMmln4v9hO!$cSb@oL=MZn@D#Nfn*ThGWQt zyM8>F*foMQrR({@27DjcFVAk&LHt%wwvz((L*Ksr!yhnoiB>> zvG`yt%EaD#H6%x?bhlfk#gFF?cJU;p|-u*z>u)$8va7v zAkiXy*}-x5Goenc&+h`ZND903w-Dr{N34Xod1=A?3n{*$qZ` zb;-YcR*<@mixR4%ef5iL`jPMHdK$z2Lp1AB%g4mxDT%J5P0fce1pL$u{*5GCnDl|% z&)hgrE{NLwvpfSZ)b4dluZaesRmOF6-=rWfJx+NNNKb-80c6=jpd~tcE5XY|jP49P z#d@o0>R=s~-=2L?qTyA!xv|w9gOn(KBo1y%6UWV#ANs>y5UKxE{A@2sxPy&>o<5&E z3JrMf{IiyYqSf|>>zH*u!YD9`^;yP}XL4d%7K_lOY?ZR|Y<|4@SAN3zL}4V`8tA?u z6xdOF2)cbmP_?@_MsVl9GdKeazkS2pD-Rw!(4gtL&ZwJNTCxLk$H4byrhldIU7vg- zPIB^h7cyjA17{B!i+Rk_GOA#S#8w7)9l^N(HAb#b4a~g^~y`nV{x$Hzk=$c()Oz~8#JH^Cr zL(G)as;+!2bd_F4kW4nxd<})9buT3n(M{=(eGGYd$b zW7gd$>)RXtqcg4!tug*;u{%(J*dy>5c~s+7{2;eTHfi>Y!@L+70iAe$SB0=rn}@ha zDOrbb3dG=T2n-Dv=_RctzHA~ z4KlPgsF(d>TV7Qqr4n4Qh?R#k+jvHw3?p+E-wj4B;L-C!vAF(_REY0IQOh8(vJR0= z!Mw2ywFsf4SQE2^4l>2s)athxhC2-Om2O4VuYk&{atUFlJUEUQ$-5#T%K`+6xh~diGd~xPSF<8q(rr?6^FH8^&dz5Ho#5L@g0x~ivwMQsz*180NkTM4Y zpx;RNZ)2%rW$8-G%k#_1A_cu~Yn=BKLCa;{S*2CGnRDcl+T?TZWRrIT$?k>zt_KHC zm7|4J4@Cp+Q38zEQ+ezT7 z`;ElDob*VBZU3DNlkK ziMFFZ%xQV*-RlG{5K|4`<8ggF!t*D+A(=u%ij{T6ee7Fq+QMkpow8XC%Bt5pU+awZ zg!j#i6u~VgF+#AAe2;eb>)EA<$eCU#d|S; z!wcqF2!wn*;`G#=^`Fg$5#u2ZCY*8pxkeW4V<2o76o-4Mnq4@ZmMVUo$;xStq_=0=( zREC+wzVs{h3#MK1iOI`)3ObNcTFPf?%pr|%_YIFt+D7Y_3Qz_Xa;FVwTpLpr!7;rE zG#oue2(AZF)PSycFotYxih|X4o)r>bCeW$w&rRs_F{K5ZAR5_FC1{l1n+o%2;Vg#=9&~qB1vaQxoPjF@@uP6vVI+c|k>IhCEh}~QDpYCB7pO8A-1ux@x1tfcYi7ER5^@-~Bvi$eUj89DnNN z2OwchPSrBg(#iZnLe>sXKn_77pTrbXt%k#V8x#VN3P)wP&k84d}7rh%TNGOK&M^G#X zU8BJcrlP8Gft4WHMxQGu(+=Lg(Ru9RT!-0DLFN9Y5=jVRMK|OH6bhc51Xac!r`i1} zs^hY-DOp-UsP^)eA3tf(!zeO0f-!{FAv71*3}~Rm05)GbDoaN!NZOM_(ET4?x9#?s z|11}R5V(*yv+DE9I->A8@EVO&sXENmiZBq3jSvfsvI$g3^~`Z>%R<6vzwH-AYVH=& zO^hG2(;B%hJ|kpGF6A9pMCBo`z*LVfKo_Aiip;q}2rh7khW^qkGNB9r6;9!Qy;uxW zfV^;T+-VAi)C1Z=i4WMAD3ik@BduG}{18($E>a=Q4g4Ngn_pQ}h)T^Y?T}%YvLi7G zS-StRt-UC83N435Qo{E8bezY(JK$AnTH84pQG8a9u% zAavryJgrZ5G^?N>(o|;HK3XTve~#(nAoV#HHSp6`Mre(ra80~8v^uGAWYmzb}G?ZMvg1?&sNZhQA3dV3yya%o-bAJ`U(fHR2agib?? zY5X9h=S6JxSAJ*eu@8@bBUt6HOZZCT#)?r!Zc-ws^1ylH<>htRpA1CTCR9Zzy6QWG zLrfdvQwxf3D{;aGevB=)1GI*3QG*dC^7XHYVsQ+xEjnwFk^GbTpp7wGtYg39j=xf+C$l}%IuNz}I?XiS~qK-b|dkPn3*DgfqfZ`>xK zfCnoGRJnk{riv>u_Z|!14r!k(HiDs0cx41=s*acE#|pjHIFOj@a`s+cUP8zoP*MxY z?ckznZ=gPzO;b2CZUi`)Ze8#|9Gs3%-Q7T`TwYyag~YOnQGOKjI`;tQwCKl=SO8h! zH#?{zd)oi7y}O$?;=AwE{IrFlL%g1u6@6(Sk0IIO0+WchJHPtNv(SVf4TVS%)A@ji zaQ#zI0?x~*a_&ObeHl@FUS>|wgGq3RM`6a64P# zZM{r>7iFVEiB5DUDnnpfss@#GO@6p=mNQ<)INauXq_R5&9;h}@aO02Z>)WKU=|xai zK&B|_+yQ)&0iY4EyNxVNey1^$t(|0dLaN2Ad3~iJ}r&ms_V4CYqeT%nNV+y z0D9*FnRZ=Qbv$M1F??B0a6YOf>whZ3g(bCec_drvP)#Y2f(IFT4 zxT_|n0}a;BXa;XQ7`|_?k`><@&-4UK7V?2#j&?YxglK47urQ5)I|1>Dfxy>Tde6kb z@HGO52EzI~IXQiye3p@~szvlQRwQf^?U{?m(h6m)Bu;?+tM+9AOVJ<(GWE(z6)<<~m2 zd~rtgD+17Jpnjrg{q@u+g&KX-RyD3GR|;oll87o$%Tg25yf0a#p4Z6@D6i{1ugl2U zVVpcL7DYco-@{N2MFwV7TtoHswF?lClI?CMDcuOvWW^odmY4Mm+4>;a5yU$^qC#mH z2Qxl?_f-Ai7)mJO`d$Zx8u07g%%PD|`0i*K%eX@K+c;7&q?rw45cC!V+0w4{cA%;Jp9yRkj-U2dxG>{`iMGaaoxdQb8Z>K!D(GfTdU@ zm(2V};!s<=DRO*)5M-Qx?T^HMTz7CQw?(V3xGDd(u*IMK;~fgO1rqtj_3IfYO#s?&NtfN zlQ!^eCfBX4;^#^fT&1E5S z>-VAo+x+O{U}#ze%qxsWWD5OzW>cK4P6B$D?beD3#RXdT{YjZldj+f2W4!g@;MT_1 zj?kH8jce8;AAgRZ2z%LhQ%v$8N0qLQiHFCxIC9wjC1Il&nC_WY8U7j=-m3sVJRWeC z4SOXN%;fDr>F6sRM%ov~IXAKl_0#(XYKYDk*Fjxf-4TEzkXRHv7x8fP9YAE7%-0yd z#>LfcrBHTlZNu#;G5xbA$XR27!MJ7>!dqx*h;G9%&@ zZUMqLfsv1WP6H=URBF*2-22sa4_W`LfDC}NanV-AJ>}h^A^*ng{kGbpN{6vH;*3e^ zIlS;fWGJzjF@|l{9#`+6Xv?dM<)Tr>m<+oFs4{&4KmZhOSd7ra7hthWQnj=5+ceh} zf9BSA;`_}|ovcnX+7R;1S?sqqTq7nj0Zr1EN&ND>1~1;!T;j{A_8f{5>s47hGsLGw z{VyUrKLC?lmvGNftq;6pD2YvPWb2b(Xg3suQEXOI1>z=XNy*9JJ}pAfV#z2okf+h+ zGCvS&=YBm{Y-9i>gY!8&0I<8zOc_CaI`#49w7HX0hO0STQ10N-JCC%x#HSRXFsoCpu-G;*y~>>UonGXE$Sa(-b$0> zgCJH?R7$f+&9`s1Oo^#>_M0-PRUomojZN!eS@|NG9@Kv@j>3hVS?HgHkmfbNbTIeR z(E6&{Zlx{p`@0W$5dxH$a}1?X0^&LjtfH0tgajg(6kAt zwy3(7n}dc}$zG+!S&`akUxi(oaLVI0e$c!;X-SgAZjd5n^;>E%TlV~Mx*Xjw|KkRf z#FpQrL;b5>1X-N*jC&ST9|5DZif?E9eDk?#ZMhNUn3QAgdI^_^k4eWRtY_}?A(-H% zq@)%U&d^}ih8R=9tEekJSEx|?<9V4=OxBX}xCos_YxS=vuiD+uc5mhk_j1EYHzE8o zkYX15lew?oyqRisw*1_(fdHEAgO5m-H~miy`v=mLz#vnF?FA`%uQ-O_K-eoH9*1=( zL*E;>^M(a?nd&i?>AiNB;MQsM@DoTXi^jyGrs1n*5k_?WdZkT||8>72s_}Kr4phi6n-^h8)>t2FFZUawD0HD{V#mH57H~ri}Vr)-=NR6|W3-(VO;# zZ@A+d*_ybN)_V^Q|jngzEhv znrwmXuB61oi@#ejs+yWVA<^iW+w-Fnvu-!W^BRqV?f10qnR=1$Fi^8e{kl|`(=!>Y z%IdM)VCWeHw}3IpZ)-~f`I1g<>x4Vu$!U1KSGg05Unt>O_lqB}DoU-wcG@?vgIO*C zC|D#Q6#tPRLT>ydU$0mA<$eN$MM67Vkg+qUrShZwxb$FZI4}Ti0$xF>Qh~9ifhQG| zE7r94>wwQ8zA)RxH7IRyT+g(7!Y`icl$lX)}q5m#30aPI!(B$Bkw%GplJ*06O%M9!H4DowQtyZiDUI8y^{l*^HL0)t_V?BD#+8TT=_83bF+H~D$^*PC6}4rtpZCljN^1}g}W0CilkvgMbS1XFyKT9#wML1+%BfkXOoMK(m5&ja~y6AV4nfiK7C4iPtvOzHtX~R)Q6p01nVV<#h>4 zR|y={_+MyMth~=?0yHyvI2J9F88cMBYesT;phpk1J)L!AS{dqz&@aEl+m*D6#rF-n z-eUfhq&5qPv&c|>p)SgE3^JT63)uLulN-I*y=ZX9{7c#yDlWTtM{Bq2enHIOm$bl z2mqn|wuov-UInAmR9`}J@)ZPg-r<4*4M2x_l$YELdRdyfr-!$4JUI@>527I?i}#-< z$w8`jv@{Ez71S@Zh1V){uIL>0g}ze4&!Dx1jC=s|$FO0(`1shCVNIQE#iRkJxMSm0 zWZmF&t?37$f9K+$JDDp(blXj}gltu8lu+qk^oM!Xc_S!OFv(CTlrI-CO$YtssqEoE zDuXE^Dh}tG$9Rr!D$~N`b%v-v7=>fqfN83&Fm!N zSp*g(aNYN@e*O3fo8jA;t_cQTB^9|_API~aI`oBa$jf!*4Q)*MiR1Q*DSz7412^yk zFr^9g(f<_wa=&MiyAWa+LnjadvUaT^zbBSLyaj}M&{`H!b^pjj5>qd{ju4t(^qx4o zVyKP!{WxQeb~w*(rLCK`U=y+wmF zDioN@^n~T}I*lviDIU8poIn2XOatkjaFXg;8Kl$p&YqgC+)z@yA|oS%c-7}hAzJWu zKEW5+|()l8!Vbs=6{VmmmYrrl@w9yivhW|Sgm0f5a>g|bgt^_`Xcw<~? zk@3{#387)1327RXMMY`PuW%pZAs*g~iPUQLz6hBBDq>#t{)*TFnl($Gh#VZ~3&YZY zBi!|tcgQX4v>v{DV<`h2qz<^5WhJ4$&sWl_=`rqHUIA|dAi*9y>KkGwVbLAd-HB`^ zkS?d+G04#N;O@D1@~wKmW9*8r(q|~p+QmmI2=K28RBC3JL=6=?wh1WK=<8E?XGojd ztGxYbt|}812_OO~0-kITbqBg7azXvv<-?isR^Vdj3gAr_D_O4h1WI7@@ounghy(zb z(=0)cULx1j5PnqVE zTV@GKVO+M2f7cfs_Nu#|x^NV67Ml59OTUk3#9^;W1&iaKlkwnVw5LPfdyO@)0_Y_5 zmP`QGwFj75NNS|U-OEr;Z0MDuUL};yokQ?S4qh#5hkzon_%NmNc`8VG0m<+raPdp0 zzE}^UuJLcTU&y8Z(wZv=X>BWmR^fvHbQ}rB&cXqa=)B@Or@f73$qkU6!30lg)NjOkWA}Mh zOjWGylx-E6pqQ&Jc)5X;DeM6_Ob`$R>ZW!~BWv*9TMD}!S_Z5gkkmL?8K%vGc^*_a zoBT5h^JUSC*@&YhWGmm6f0rYWpi|}cr&V!=Q>1IvyNEkX1cDzjB+VW8KQG$*ochoY zQZ2?W*t(jUrVHcX>Ss8Kc^MhL?RRW^b63vXF3wnB){yh#3vjbW@X zX!`d6{9iOo$8{A`opCIy54}hH)+)o}Jvu#w?zwUvzR1V#I|z?dZV1+)N5dNm&fqfm z@k0V2905R5NSzF0z&%L@-Y1+8P=CPqGX4)T&8bKCAC>+@Ycaab3*oCHC z+XeUB?y~M4yK<7V4yWAT1FX;L3-3DvVwy!Ag))HQ2l<|*Z^Y7SHnem$&tQnbcvom! ztDyl%?CS1kJ|K*X-zVjK$TA6nkRc#Tr`>S_*~&ja?;{wg-@iG08}%veV8P>Up4h9n z`vckI3y{LdEL0)$y{d&xAq{8EI);5K@1`Y)*C??F*=!pQDW5i>Y9$hJlj^^~sf-EB z{z8Cxo6fA?_BUt_s9|J;;DKv>%4@c*oMY5?aa!WiNB!XD`~~Xs;jytDP*6A)^~Ck6 z`snKePCmAFkXZhmWM%kiCeV=@@@l2F3SMjKx~T*2e>9zCP#j&ig>iQ$xVyW%OJHz! zcMt9w^bPLr?hs^v5P~}dhXi+b$Zfu=`(vv3#q`XaK7IDu&sw_;zY%m$o=YKvET&>4 zvy9}nfSN~rcmaC>n~9I z!EiasUZ`@N!nm$_4f&Xt5&3HC5@~o{0PBNZRRDPEUSAKy4uB*aYGO2vMTC|Nq6p*z z(Y%IwXs?IS+dgGvBm%WkZq)DPnt`{s3plY)NM) zfsr=0LXVwqM35ysPp1Q#W0O@5nB0b7ISk-x6*`t@XG*yO=vgo{4zxo5EB+q-@TWbN z7|mrA#o<$aCR4=`#$S~&f5OcSoIx~??!GDUzlt!4qlN8G(5g6+nlFLA)GM>O%RWGJ zWhkWK3POh)twoG8q(%jGrC|^nEAPgvCq?1~;0Nt!?$Cb%*!vLRbDRVohf4g!*7KrY zuDRefW=>d3uTe;>{fzX?V8uIfi*8ZYkPORVd(6f(pE#y{UWm3!oY-A@DLou3aSjuS ze@2(7|LMNA{vh*pJfxyf%m6m&gSYwNrQjPF5pNpu-+x#Dh;@wjl9QeeyeAg~ech@< zM1mt@`wH|844#!&ai_S#)|U606N8p?6bhj^$~mGv(`KmF2}{i0ipHqEZx3FTs5>t3 z5W4ITCH_M(q~300QcW!I#DTW3?17W3KdsXcJ@5GxH&@mtVBbIOxerRrJZS z4+yAANl%y6P_{Wbx0k)sr08|1?<&`dyaOucIp92){YU+Np@wWF_rXGRScw6_Htf%9 z{_PkW+%}+7?*MYQLz7X+s;vNsaoBQ$ak?mlP!r`>Br<-vqXp2$hk=5mjD3^FZi{Qa zAmCm+`p1R3MRCWAW~m+*qL661S~?%}_|=izTu?oP(*QE-x|*(){9b zr7(ZeEUe6=EQpnW46%inj*dv->~K{|YUT}yQ&hBNJusOGBL?+O5%~B6kRFNUbgiu5 z{GmNqwCP^D5Cu93dsc}gCwj~yvO(iA@Py9@dVwp=WYa*IunE@)b&)v&5x-WN z44B5=?yRJC9XI_4!w5BW_`1mgD1Jaw{}2tKstiJogaac9eNk+KnX@R$Djq)yHqBQ} zUb{JJi0Yh&LMrAB(U4nHQAwB&l?0G%3ZUu)8|&l5m?g<06&OVyL>)n^GTbW|d)qpZ1$<~fvn zDV*~7e6B|stBe;7FFuJ&#Gc-}m?$q3%hUp*#ozrLm-e{O@@8NG5(&^MsN5LKYv9di@&NmXVMs6LOSLMzh0)UX}hrVrn`&k^LvOkG*ivS-?APad*tru zdFr-2{vwa3H#blU0j8p`D9-2kH$GTEZuQ6C@TQV&FPNOv>(Ah%-f^GP@Gdfj|DvoI zr1Y%~-cMk-GliiN&uUxGKU(xB4Rj1DG=RNn=n?q%Q-C53LBCStZs0Y^0Mg$K^oRW6 zmgE2>`w*Hk%+Om0XPS-iN2}n%_@_rlP!qH$qu1#);BZhoY z(N1Pb1cOK^T(Q;nnxpJ*s(@|C7hr-j1-%$iQQxz50Am3y@T+F#7mCi+!hL~+J@Q34 z;S5Q}vjmz9AD!gB#S)FIDka(+g{H{70@#nYi3Ri1J`|yPt*$H zl|{5^2YacrSd<8y`{~#pk2mYp8j!iglQYbC*2I-W})-usqa-eMZS>bK#`f_~7 z%<+xcBkA_0YAPqKWQn*CHGE@ln%sD`JdS#4`-j0Fs@Vd(AWbVW)4?mPmxc50JrmM3!c zw7#8rSw(XZY1nN$Wt+xRA@+@QRrk-0Ck=$kH&q`4zKw&r5t-s|Dgxars2e? zjm@g$f6FnG&{f_w7NyQXu}fg&P@ea=!Va1;mqRs}vLBKMRR-!IeaaWkUHtrCEQaca z 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 literal 0 HcmV?d00001 diff --git a/resources/tinrs_mobile.png b/resources/tinrs_mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..7c42b2729d7264f193f3e43ec854dad902841242 GIT binary patch literal 7829 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 { + + show_bg: true + width: Fill, + height: Fill, + padding: 0., + margin: 0., + draw_bg: { + fn pixel(self) -> vec4 { + let Pos = floor(self.pos*self.rect_size *0.10); + let PatternMask = mod(Pos.x + mod(Pos.y, 2.0), 2.0); + return vec4(0.03,0.03,0.03,1); + } + } + + caption_bar = { + visible: true, + caption_label = {label ={text: "TiNRS BigFish" }} + }; + + window_menu = { + main = Main {items: [app, file]} + app = Sub {name: "TiNRS BigFish", items: [about, line, settings, line, quit]} + file = Sub {name: "File", items: [newfile]} + about = Item {name: "About BigFish", enabled: true} + settings = Item {name: "Settings", enabled: true} + quit = Item {name: "Quit BigFish", key: KeyQ} + newfile = Item {name: "New", key: KeyN} + line = Line, + } + + body = {} + } + } +} + +app_main!(App); + +#[derive(Live, LiveHook)] +pub struct App { + #[live] + ui: WidgetRef, +} + +impl LiveRegister for App { + fn live_register(cx: &mut Cx) { + crate::makepad_widgets::live_design(cx); + crate::editor::live_design(cx); + crate::app_web::live_design(cx); + } + // after_new_from_doc +} + +impl MatchEvent for App { + fn handle_startup(&mut self, _cx: &mut Cx) {} + + fn handle_actions(&mut self, cx: &mut Cx, actions: &Actions) {} +} + +impl AppMain for App { + fn handle_event(&mut self, cx: &mut Cx, event: &Event) { + self.match_event(cx, event); + self.ui.handle_event(cx, event, &mut Scope::empty()); + } +} diff --git a/src/app_web.rs b/src/app_web.rs new file mode 100644 index 0000000..5e3eb4f --- /dev/null +++ b/src/app_web.rs @@ -0,0 +1,88 @@ +use makepad_widgets::*; + +use crate::editor::fish_doc::FishDoc; + +live_design! { + import makepad_widgets::base::*; + import makepad_widgets::theme_desktop_dark::*; + import crate::editor::fish_patch_editor::*; + import crate::editor::fish_block_editor::*; + import crate::editor::fish_theme::*; + import crate::editor::fish_connection_widget::*; + import crate::editor::fish_selector_widget::*; + + AppWebUI = {{AppWebUI}} { + { + flow: Down, + patcheditorscreen = { + flow: Down + + { + flow: Right + height: Fit; + undobutton =