From f75afc030b14378f7aed1072c8351d169f197765 Mon Sep 17 00:00:00 2001 From: Francesco Maiomascio Date: Fri, 23 Oct 2026 12:43:05 +0200 Subject: [PATCH 1/3] Checkpoint local Iced and wgpu migration before W0 qualification --- Cargo.lock | 1841 +++++++++++------ crates/moonitor-desktop/Cargo.toml | 6 +- .../moonitor-desktop/assets/Inter-LICENSE.txt | 92 + .../moonitor-desktop/assets/Inter-Medium.ttf | Bin 0 -> 417300 bytes .../moonitor-desktop/assets/Inter-Regular.ttf | Bin 0 -> 411640 bytes .../assets/Inter-SemiBold.ttf | Bin 0 -> 419744 bytes crates/moonitor-desktop/src/composite.wgsl | 7 + crates/moonitor-desktop/src/config.rs | 2 +- crates/moonitor-desktop/src/main.rs | 55 +- crates/moonitor-desktop/src/scene.rs | 1077 ++++++++++ crates/moonitor-desktop/src/scene.wgsl | 32 + crates/moonitor-desktop/src/ui.rs | 1761 ++++++++++------ 12 files changed, 3583 insertions(+), 1290 deletions(-) create mode 100644 crates/moonitor-desktop/assets/Inter-LICENSE.txt create mode 100644 crates/moonitor-desktop/assets/Inter-Medium.ttf create mode 100644 crates/moonitor-desktop/assets/Inter-Regular.ttf create mode 100644 crates/moonitor-desktop/assets/Inter-SemiBold.ttf create mode 100644 crates/moonitor-desktop/src/composite.wgsl create mode 100644 crates/moonitor-desktop/src/scene.rs create mode 100644 crates/moonitor-desktop/src/scene.wgsl diff --git a/Cargo.lock b/Cargo.lock index f2c5918..f94b2f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,14 +3,21 @@ version = 4 [[package]] -name = "accesskit" -version = "0.25.1" +name = "ab_glyph" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad442f58ee04714aaa0ba0a2768c1ea1935b29507bb22ddece8cbbc76db02932" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" dependencies = [ - "uuid", + "ab_glyph_rasterizer", + "owned_ttf_parser", ] +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + [[package]] name = "adler2" version = "2.0.1" @@ -55,6 +62,15 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" +[[package]] +name = "android_system_properties" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" +dependencies = [ + "libc", +] + [[package]] name = "anyhow" version = "1.0.104" @@ -62,25 +78,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] -name = "arboard" -version = "3.7.0" +name = "arrayref" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeb9553e62312c8756a5979254fc6d7da8bbeb5986a1e17037fab932f7037917" -dependencies = [ - "clipboard-win", - "image", - "log", - "objc2 0.6.5", - "objc2-app-kit 0.3.2", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.2", - "parking_lot", - "percent-encoding", - "windows-sys 0.61.2", - "wl-clipboard-rs", - "x11rb", -] +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -94,6 +95,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -114,18 +124,18 @@ checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" [[package]] name = "bit-set" -version = "0.10.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2f926cc3060f09db9ebc5b52823d85268d24bb917e472c0c4bea35780a7d" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.9.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" @@ -140,21 +150,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" [[package]] -name = "block2" -version = "0.5.1" +name = "block" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" -dependencies = [ - "objc2 0.5.3", -] +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" [[package]] name = "block2" -version = "0.6.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.6.5", + "objc2 0.5.3", ] [[package]] @@ -209,18 +216,42 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "calloop" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b32313e937c8721c9d17ee9bf60699a6402b4b7c2cb6ac1bee0ffcaa4b4e5e" +dependencies = [ + "bitflags 2.13.2", + "polling", + "rustix 1.1.5", + "tracing", +] + [[package]] name = "calloop-wayland-source" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ - "calloop", + "calloop 0.13.0", "rustix 0.38.44", "wayland-backend", "wayland-client", ] +[[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.5", + "rustix 1.1.5", + "wayland-backend", + "wayland-client", +] + [[package]] name = "cc" version = "1.9.0" @@ -246,39 +277,53 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] -name = "cgl" -version = "0.3.2" +name = "clipboard-win" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ - "libc", + "error-code", ] [[package]] -name = "clipboard-win" -version = "5.4.1" +name = "clipboard_macos" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +checksum = "9b7f4aaa047ba3c3630b080bb9860894732ff23e2aee290a418909aa6d5df38f" dependencies = [ - "error-code", + "objc2 0.5.3", + "objc2-app-kit", + "objc2-foundation 0.2.2", ] [[package]] -name = "codespan-reporting" -version = "0.13.1" +name = "clipboard_wayland" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681" +checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8" dependencies = [ - "unicode-width", + "smithay-clipboard", ] [[package]] -name = "color" -version = "0.3.3" +name = "clipboard_x11" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf" +checksum = "bd63e33452ffdafd39924c4f05a5dd1e94db646c779c6bd59148a3d95fff5ad4" dependencies = [ - "bytemuck", + "thiserror 2.0.21", + "x11rb", +] + +[[package]] +name = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width", ] [[package]] @@ -363,7 +408,7 @@ checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "core-graphics-types", + "core-graphics-types 0.1.3", "foreign-types", "libc", ] @@ -379,6 +424,50 @@ dependencies = [ "libc", ] +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.13.2", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + +[[package]] +name = "cosmic-text" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173852283a9a57a3cbe365d86e74dc428a09c50421477d5ad6fe9d9509e37737" +dependencies = [ + "bitflags 2.13.2", + "fontdb", + "harfrust", + "linebender_resource_handle", + "log", + "rangemap", + "rustc-hash 1.1.0", + "self_cell", + "skrifa 0.37.0", + "smol_str", + "swash", + "sys-locale", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + [[package]] name = "crc32fast" version = "1.5.3" @@ -400,6 +489,28 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "cryoglyph" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc795bdbccdbd461736fb163930a009da6597b226d6f6fce33e7a8eb6ec519" +dependencies = [ + "cosmic-text", + "etagere", + "lru", + "rustc-hash 2.1.3", + "wgpu", +] + +[[package]] +name = "ctor" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83cf0d42651b16c6dfe68685716d18480d18a9c39c62d76e8cf3eb6ed5d8bcbf" +dependencies = [ + "dtor", +] + [[package]] name = "cursor-icon" version = "1.2.0" @@ -505,252 +616,88 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] -name = "ecolor" -version = "0.37.0" +name = "dtor" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31bcbef0d4263a63eb32c4834e5d711613035ce1333468e107d928923e21e6e2" -dependencies = [ - "bytemuck", - "emath", -] +checksum = "edf234dd1594d6dd434a8fb8cada51ddbbc593e40e4a01556a0b31c62da2775b" [[package]] -name = "eframe" -version = "0.37.0" +name = "equivalent" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826" + +[[package]] +name = "errno" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c5642501a65ca657d05f00c643a5c14ff2346cb3818032bfe23d58e1f8e5f84" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ - "ahash", - "bytemuck", - "document-features", - "egui", - "egui-wgpu", - "egui-winit", - "egui_glow", - "glow", - "glutin", - "glutin-winit", - "image", - "js-sys", - "log", - "objc2 0.6.5", - "objc2-app-kit 0.3.2", - "objc2-foundation 0.3.2", - "parking_lot", - "percent-encoding", - "profiling", - "raw-window-handle", - "send_wrapper", - "static_assertions", - "wasm-bindgen", - "web-sys", - "web-time", + "libc", "windows-sys 0.61.2", - "winit", ] [[package]] -name = "egui" -version = "0.37.0" +name = "error-code" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec9144f49b7a28b5f395d3147e325b4fe3e77ba686eac11d1bdf0a7da3f375f" -dependencies = [ - "accesskit", - "ahash", - "bitflags 2.13.2", - "emath", - "epaint", - "itertools", - "log", - "nohash-hasher", - "profiling", - "smallvec", - "unicode-segmentation", - "web-sys", -] +checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" [[package]] -name = "egui-wgpu" -version = "0.37.0" +name = "etagere" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0309cbe1febed48af5b974e4bcc424b35e9664863a4d402697147b57a488c864" +checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342" dependencies = [ - "ahash", - "bytemuck", - "document-features", - "egui", - "epaint", - "log", - "profiling", - "thiserror 2.0.21", - "type-map", - "web-time", - "wgpu", - "winit", + "euclid", + "svg_fmt", ] [[package]] -name = "egui-winit" -version = "0.37.0" +name = "euclid" +version = "0.22.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e449f4c4a2a60c7ccb4ba7fa4078417bfe1f9ddc03b5e05ce75748e33a70de" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" dependencies = [ - "arboard", - "block2 0.6.2", - "bytemuck", - "egui", - "log", - "objc2 0.6.5", - "objc2-app-kit 0.3.2", - "objc2-foundation 0.3.2", - "objc2-ui-kit 0.3.2", - "profiling", - "raw-window-handle", - "web-time", - "windows-sys 0.61.2", - "winit", + "num-traits", ] [[package]] -name = "egui_glow" -version = "0.37.0" +name = "fallible-iterator" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9275ca5cc35a6b7c94e0e8cedf22542f66cb0cf45ed8ab2657c78ff49fec7268" -dependencies = [ - "bytemuck", - "egui", - "glow", - "log", - "profiling", - "winit", -] +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] -name = "either" -version = "1.19.0" +name = "fallible-streaming-iterator" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] -name = "emath" -version = "0.37.0" +name = "fastrand" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73ce90f54750be8672c02be0743fe47530e6f251e066f0ee2869b59eb297af5" -dependencies = [ - "bytemuck", -] +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] -name = "epaint" -version = "0.37.0" +name = "fdeflate" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97bac86ae3dde93fc3951e790951caea739ff39a6c89d909cdaf1d9278dbb1bd" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ - "ahash", - "bytemuck", - "ecolor", - "emath", - "epaint_default_fonts", - "font-types", - "harfrust", - "log", - "nohash-hasher", - "parking_lot", - "profiling", - "self_cell", - "skrifa", - "smallvec", - "unicode-general-category", - "unicode-properties", - "unicode-segmentation", - "vello_cpu", + "simd-adler32", ] [[package]] -name = "epaint_default_fonts" -version = "0.37.0" +name = "find-msvc-tools" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc1cc505827f4c23eedc297975a0fd038268d41293f389dd8ff3b574aefab19" +checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48" [[package]] -name = "equivalent" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d174d5400e5e8fd687ad1049e2f578285fa914201b1af7e8b112a4546bd826" - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "error-code" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b5343afd4a8365a643ac588dab4cf234a190c7f6c88c9f6dd6ffe00837661b7" - -[[package]] -name = "euclid" -version = "0.22.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" -dependencies = [ - "num-traits", -] - -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - -[[package]] -name = "fallible-streaming-iterator" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" - -[[package]] -name = "fax" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "fearless_simd" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693" - -[[package]] -name = "find-msvc-tools" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48" - -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - -[[package]] -name = "flate2" -version = "1.1.10" +name = "flate2" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" dependencies = [ @@ -759,6 +706,12 @@ dependencies = [ "zlib-rs", ] +[[package]] +name = "float_next_after" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" + [[package]] name = "fnv" version = "1.0.7" @@ -777,6 +730,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "font-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +dependencies = [ + "bytemuck", +] + [[package]] name = "font-types" version = "0.12.7" @@ -786,6 +748,29 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "fontconfig-parser" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" +dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2", + "slotmap", + "tinyvec", + "ttf-parser", +] + [[package]] name = "foreign-types" version = "0.5.0" @@ -822,12 +807,71 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "futures" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", + "futures-sink", +] + [[package]] name = "futures-core" version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" +[[package]] +name = "futures-executor" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-macro" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + [[package]] name = "futures-task" version = "0.3.34" @@ -840,8 +884,13 @@ version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ + "futures-channel", "futures-core", + "futures-io", + "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "slab", ] @@ -891,26 +940,25 @@ dependencies = [ ] [[package]] -name = "glifo" -version = "0.3.0" +name = "glam" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" + +[[package]] +name = "glam" +version = "0.30.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a26c1e23de04bdab3e34a21b6f877a479b96737792516b9b8b8f69b6661be" +checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" dependencies = [ "bytemuck", - "foldhash 0.2.0", - "hashbrown 0.17.1", - "log", - "peniko", - "skrifa", - "smallvec", - "vello_common", ] [[package]] name = "glow" -version = "0.17.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" dependencies = [ "js-sys", "slotmap", @@ -919,78 +967,73 @@ dependencies = [ ] [[package]] -name = "glutin" -version = "0.32.3" +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +checksum = "45cf04b2726f02df5508c6de726acdc90cdf97ac771a9a0ffd8ba10a6e696bf9" dependencies = [ "bitflags 2.13.2", - "cfg_aliases", - "cgl", - "dispatch2", - "glutin_egl_sys", - "glutin_glx_sys", - "glutin_wgl_sys", - "libloading", - "objc2 0.6.5", - "objc2-app-kit 0.3.2", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "once_cell", - "raw-window-handle", - "wayland-sys", - "windows-sys 0.52.0", - "x11-dl", + "gpu-alloc-types", ] [[package]] -name = "glutin-winit" -version = "0.5.0" +name = "gpu-alloc-types" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +checksum = "b2bbed164dd10ed526c2e4fe3e721ca4a71c61730e5aafac6844b417b3227058" dependencies = [ - "cfg_aliases", - "glutin", - "raw-window-handle", - "winit", + "bitflags 2.13.2", ] [[package]] -name = "glutin_egl_sys" -version = "0.7.1" +name = "gpu-allocator" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" dependencies = [ - "gl_generator", - "windows-sys 0.52.0", + "log", + "presser", + "thiserror 1.0.69", + "windows 0.58.0", ] [[package]] -name = "glutin_glx_sys" -version = "0.6.1" +name = "gpu-descriptor" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "gl_generator", - "x11-dl", + "bitflags 2.13.2", + "gpu-descriptor-types", + "hashbrown 0.15.5", ] [[package]] -name = "glutin_wgl_sys" -version = "0.6.1" +name = "gpu-descriptor-types" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "gl_generator", + "bitflags 2.13.2", ] [[package]] name = "guillotiere" -version = "0.7.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b17e70c989c36bad147b27a58d148c0741c51448aa5653436547323e524d0ab" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" dependencies = [ "euclid", + "svg_fmt", ] [[package]] @@ -1007,13 +1050,14 @@ dependencies = [ [[package]] name = "harfrust" -version = "0.12.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03d949a14aa089bbb282f7dd76a498a7f684428e4257202efc119ec010376f9" +checksum = "92c020db12c71d8a12a3fe7607873cade3a01a6287e29d540c8723276221b9d8" dependencies = [ "bitflags 2.13.2", "bytemuck", - "read-fonts", + "core_maths", + "read-fonts 0.35.0", "smallvec", ] @@ -1028,19 +1072,31 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.17.1" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash 0.2.0", ] +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + [[package]] name = "hermit-abi" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284" +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + [[package]] name = "http" version = "1.5.0" @@ -1057,6 +1113,192 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +[[package]] +name = "iced" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000e01026c93ba643f8357a3db3ada0e6555265a377f6f9291c472f6dd701fb3" +dependencies = [ + "iced_core", + "iced_debug", + "iced_futures", + "iced_renderer", + "iced_runtime", + "iced_widget", + "iced_winit", + "thiserror 2.0.21", +] + +[[package]] +name = "iced_core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ab1937d699403e7e69252ae743a902bcee9f4ab2052cc4c9a46fcf34729d85" +dependencies = [ + "bitflags 2.13.2", + "bytes", + "glam 0.25.0", + "lilt", + "log", + "num-traits", + "rustc-hash 2.1.3", + "smol_str", + "thiserror 2.0.21", + "web-time", +] + +[[package]] +name = "iced_debug" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25035ab0215a620e53f4103e36fc4e59a1fb2817e4bfc38a30ad27b4202ea0be" +dependencies = [ + "iced_core", + "iced_futures", + "log", +] + +[[package]] +name = "iced_futures" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c0c85ccad42dfbec7293c36c018af0ea0dbcc52d137a4a9a0b0f6822a3fdf0a" +dependencies = [ + "futures", + "iced_core", + "log", + "rustc-hash 2.1.3", + "tokio", + "wasm-bindgen-futures", + "wasmtimer", +] + +[[package]] +name = "iced_graphics" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234ca1c2cec4155055f68fa5fad1b5242c496ac8238d80a259bca382fb44a102" +dependencies = [ + "bitflags 2.13.2", + "bytemuck", + "cosmic-text", + "half", + "iced_core", + "iced_futures", + "log", + "lyon_path", + "raw-window-handle", + "rustc-hash 2.1.3", + "thiserror 2.0.21", + "unicode-segmentation", +] + +[[package]] +name = "iced_program" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dfafec2947cda688d8eb00dac337ba11aa60f9ef6335aed343e189d26e4a673" +dependencies = [ + "iced_graphics", + "iced_runtime", +] + +[[package]] +name = "iced_renderer" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250cc0802408e8c077986ec56c7d07c65f423ee658a4b9fd795a1f2aae5dac05" +dependencies = [ + "iced_graphics", + "iced_tiny_skia", + "iced_wgpu", + "log", + "thiserror 2.0.21", +] + +[[package]] +name = "iced_runtime" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1889b819ce4c06674183242e336c8d49465665441396914dc07cc86f44fa8d4" +dependencies = [ + "bytes", + "iced_core", + "iced_futures", + "raw-window-handle", + "thiserror 2.0.21", +] + +[[package]] +name = "iced_tiny_skia" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c267596d742714b1853cc10c3983a367762816fc4836bd3b79f76ce76787d6f8" +dependencies = [ + "bytemuck", + "cosmic-text", + "iced_debug", + "iced_graphics", + "kurbo", + "log", + "rustc-hash 2.1.3", + "softbuffer", + "tiny-skia", +] + +[[package]] +name = "iced_wgpu" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff144a999b0ca0f8a10257934500060240825c42e950ec0ebee9c8ae30561c13" +dependencies = [ + "bitflags 2.13.2", + "bytemuck", + "cryoglyph", + "futures", + "glam 0.25.0", + "guillotiere", + "iced_debug", + "iced_graphics", + "log", + "lyon", + "rustc-hash 2.1.3", + "thiserror 2.0.21", + "wgpu", +] + +[[package]] +name = "iced_widget" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1596afa0d3109c2618e8bc12bae6c11d3064df8f95c42dfce570397dbe957ab" +dependencies = [ + "iced_renderer", + "log", + "num-traits", + "rustc-hash 2.1.3", + "thiserror 2.0.21", + "unicode-segmentation", +] + +[[package]] +name = "iced_winit" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7589888c8e951899cc688247a69933bb7a0511f0b4b2e122ac3fcd5dacb37f72" +dependencies = [ + "iced_debug", + "iced_program", + "log", + "rustc-hash 2.1.3", + "thiserror 2.0.21", + "tracing", + "wasm-bindgen-futures", + "web-sys", + "window_clipboard", + "winit", +] + [[package]] name = "icu_collections" version = "2.4.0" @@ -1178,7 +1420,6 @@ dependencies = [ "moxcms", "num-traits", "png", - "tiff", ] [[package]] @@ -1191,15 +1432,6 @@ dependencies = [ "hashbrown 0.17.1", ] -[[package]] -name = "itertools" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.18" @@ -1285,6 +1517,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + [[package]] name = "khronos_api" version = "3.1.0" @@ -1293,13 +1536,11 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kurbo" -version = "0.13.1" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b60dfc32f652b926df6192e55525b16d186c69d47876c3ead4da5cc9f8450e2" +checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440" dependencies = [ "arrayvec", - "euclid", - "polycool", "smallvec", ] @@ -1348,6 +1589,15 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "lilt" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "337d4c256f7d9f2dbd633891d48ace853efa5b1554122d9220b172ad9c03c3a9" +dependencies = [ + "web-time", +] + [[package]] name = "linebender_resource_handle" version = "0.1.1" @@ -1367,31 +1617,98 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] -name = "litemap" -version = "0.8.3" +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[package]] +name = "litrs" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4744e383959f0db86ede514b809b1c53251889093803c05267acc7d4e7030d70" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[package]] +name = "lru" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" + +[[package]] +name = "lyon" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0578bdecb7d6d88987b8b2b1e3a4e2f81df9d0ece1078623324a567904e7b7" +dependencies = [ + "lyon_algorithms", + "lyon_tessellation", +] + +[[package]] +name = "lyon_algorithms" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a6b9d4e8b48acd531fbf1241ad9b270df6e60b6b92bdea1469f4f40899d805" +dependencies = [ + "lyon_path", + "num-traits", +] + +[[package]] +name = "lyon_geom" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" +checksum = "d82dd26aa4dc0b5b70b9115de59824842bcb43cf4a28e1b1e6d0ad148c93f93e" +dependencies = [ + "arrayvec", + "euclid", + "num-traits", +] [[package]] -name = "litrs" -version = "1.0.1" +name = "lyon_path" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4744e383959f0db86ede514b809b1c53251889093803c05267acc7d4e7030d70" +checksum = "5c463f9c428b7fc5ec885dcd39ce4aa61e29111d0e33483f6f98c74e89d8621e" +dependencies = [ + "lyon_geom", + "num-traits", +] [[package]] -name = "lock_api" -version = "0.4.14" +name = "lyon_tessellation" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +checksum = "fd4872650e70dc907dd4f7ebc449d7d657a0d2658e423b2e724970870bbbf75b" dependencies = [ - "scopeguard", + "float_next_after", + "lyon_path", + "num-traits", ] [[package]] -name = "log" -version = "0.4.34" +name = "malloc_buf" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] [[package]] name = "memchr" @@ -1408,6 +1725,21 @@ dependencies = [ "libc", ] +[[package]] +name = "metal" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" +dependencies = [ + "bitflags 2.13.2", + "block", + "core-graphics-types 0.2.0", + "foreign-types", + "log", + "objc", + "paste", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1455,8 +1787,11 @@ name = "moonitor-desktop" version = "0.1.0" dependencies = [ "anyhow", - "eframe", + "bytemuck", + "glam 0.30.10", + "iced", "image", + "log", "moonitor-agent", "moonitor-core", "moonitor-store", @@ -1487,9 +1822,9 @@ dependencies = [ [[package]] name = "naga" -version = "30.0.1" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a616d2fb8c89516ac2723a581f69d6c18576046bed761bd6b305e5618e6ae130" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" dependencies = [ "arrayvec", "bit-set", @@ -1498,30 +1833,19 @@ dependencies = [ "cfg_aliases", "codespan-reporting", "half", - "hashbrown 0.17.1", + "hashbrown 0.16.1", + "hexf-parse", "indexmap", "libm", "log", - "naga-types", "num-traits", "once_cell", "rustc-hash 1.1.0", + "spirv", "thiserror 2.0.21", "unicode-ident", ] -[[package]] -name = "naga-types" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590afbf58a6f4f62873cd5cff4468061844bafa1cdf399cc954537c22d768d49" -dependencies = [ - "hashbrown 0.17.1", - "indexmap", - "rustc-hash 1.1.0", - "thiserror 2.0.21", -] - [[package]] name = "ndk" version = "0.9.0" @@ -1552,21 +1876,6 @@ dependencies = [ "jni-sys 0.3.1", ] -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "nom" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" -dependencies = [ - "memchr", -] - [[package]] name = "ntapi" version = "0.4.3" @@ -1637,6 +1946,15 @@ dependencies = [ "libloading", ] +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + [[package]] name = "objc-sys" version = "0.3.5" @@ -1669,27 +1987,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "libc", "objc2 0.5.3", "objc2-core-data", "objc2-core-image", "objc2-foundation 0.2.2", - "objc2-quartz-core", -] - -[[package]] -name = "objc2-app-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" -dependencies = [ - "bitflags 2.13.2", - "block2 0.6.2", - "objc2 0.6.5", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation 0.3.2", + "objc2-quartz-core 0.2.2", ] [[package]] @@ -1699,7 +2003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-core-location", "objc2-foundation 0.2.2", @@ -1711,7 +2015,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -1723,7 +2027,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -1758,7 +2062,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal", @@ -1770,7 +2074,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-contacts", "objc2-foundation 0.2.2", @@ -1789,7 +2093,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "dispatch", "libc", "objc2 0.5.3", @@ -1802,7 +2106,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.13.2", - "block2 0.6.2", "objc2 0.6.5", "objc2-core-foundation", ] @@ -1834,9 +2137,9 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" dependencies = [ - "block2 0.5.1", + "block2", "objc2 0.5.3", - "objc2-app-kit 0.2.2", + "objc2-app-kit", "objc2-foundation 0.2.2", ] @@ -1847,7 +2150,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -1859,12 +2162,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-foundation 0.2.2", "objc2-metal", ] +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.13.2", + "objc2 0.6.5", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + [[package]] name = "objc2-symbols" version = "0.2.2" @@ -1882,7 +2197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-cloud-kit", "objc2-core-data", @@ -1890,31 +2205,19 @@ dependencies = [ "objc2-core-location", "objc2-foundation 0.2.2", "objc2-link-presentation", - "objc2-quartz-core", + "objc2-quartz-core 0.2.2", "objc2-symbols", "objc2-uniform-type-identifiers", "objc2-user-notifications", ] -[[package]] -name = "objc2-ui-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" -dependencies = [ - "bitflags 2.13.2", - "objc2 0.6.5", - "objc2-core-foundation", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-uniform-type-identifiers" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" dependencies = [ - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-foundation 0.2.2", ] @@ -1926,7 +2229,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ "bitflags 2.13.2", - "block2 0.5.1", + "block2", "objc2 0.5.3", "objc2-core-location", "objc2-foundation 0.2.2", @@ -1949,13 +2252,21 @@ dependencies = [ ] [[package]] -name = "os_pipe" -version = "1.2.3" +name = "ordered-float" +version = "5.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" +checksum = "8c7c9e0d9b23589f26070720bac724174bfec1083e82f7854cdd0267518343c0" dependencies = [ - "libc", - "windows-sys 0.61.2", + "num-traits", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", ] [[package]] @@ -1982,17 +2293,10 @@ dependencies = [ ] [[package]] -name = "peniko" -version = "0.6.1" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839c8299360d2e998bdb106dc0a6cd71dcc5f4df51df1b620361bf50e283cca6" -dependencies = [ - "bytemuck", - "color", - "kurbo", - "linebender_resource_handle", - "smallvec", -] +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" @@ -2000,17 +2304,6 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "petgraph" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" -dependencies = [ - "fixedbitset", - "hashbrown 0.15.5", - "indexmap", -] - [[package]] name = "pin-project" version = "1.1.13" @@ -2037,6 +2330,12 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +[[package]] +name = "pin-utils" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13bee6c73da26345c729282832b60b0363cf3dd9f4bfd81d8551b7a1c889a113" + [[package]] name = "pkg-config" version = "0.3.34" @@ -2076,15 +2375,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "polycool" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50596ddc09eb5ad5f75cacd40209568e66df71baf86e1499a0e99c4cff12a5a6" -dependencies = [ - "arrayvec", -] - [[package]] name = "portable-atomic" version = "1.15.0" @@ -2115,6 +2405,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a6394b9e965e73d0a289ee54f589087e2c676aedf60885baf52c76b771e4958" +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -2145,12 +2441,6 @@ version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quick-xml" version = "0.41.0" @@ -2181,12 +2471,35 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "range-alloc" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08" + +[[package]] +name = "rangemap" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a611d15b50743feb4c76b7d03edcb0e64f399c26961e4efe6975bc398be6aa3d" + [[package]] name = "raw-window-handle" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "read-fonts" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +dependencies = [ + "bytemuck", + "core_maths", + "font-types 0.10.1", +] + [[package]] name = "read-fonts" version = "0.41.0" @@ -2194,7 +2507,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046a7d674daf459825b32f5062056d6882db0d2f5a479fbd76ccfc870ac18709" dependencies = [ "bytemuck", - "font-types", + "font-types 0.12.7", "once_cell", ] @@ -2231,6 +2544,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + [[package]] name = "rusqlite" version = "0.40.2" @@ -2318,6 +2637,19 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit 0.19.2", + "tiny-skia", +] + [[package]] name = "self_cell" version = "1.3.0" @@ -2330,12 +2662,6 @@ version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - [[package]] name = "serde" version = "1.0.229" @@ -2416,6 +2742,16 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" +[[package]] +name = "skrifa" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +dependencies = [ + "bytemuck", + "read-fonts 0.35.0", +] + [[package]] name = "skrifa" version = "0.44.0" @@ -2423,7 +2759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "819ab7d62b1d3e72d9d9dea5650bac30424f9111364bb94928dbf5ecad1baa68" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.41.0", ] [[package]] @@ -2454,8 +2790,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ "bitflags 2.13.2", - "calloop", - "calloop-wayland-source", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", "cursor-icon", "libc", "log", @@ -2472,6 +2808,44 @@ dependencies = [ "xkeysym", ] +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.13.2", + "calloop 0.14.5", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.5", + "thiserror 2.0.21", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" +dependencies = [ + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + [[package]] name = "smol_str" version = "0.2.2" @@ -2481,6 +2855,46 @@ dependencies = [ "serde", ] +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "as-raw-xcb-connection", + "bytemuck", + "fastrand", + "js-sys", + "memmap2", + "ndk", + "objc2 0.6.5", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", + "raw-window-handle", + "redox_syscall 0.5.18", + "rustix 1.1.5", + "tiny-xlib", + "tracing", + "wasm-bindgen", + "wayland-backend", + "wayland-client", + "wayland-sys", + "web-sys", + "windows-sys 0.61.2", + "x11rb", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.13.2", +] + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -2493,12 +2907,35 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + [[package]] name = "strsim" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "svg_fmt" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" + +[[package]] +name = "swash" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c2499c2d826531388872b2268718aed907a39bd785ab0dcfe57fab26283f92e" +dependencies = [ + "skrifa 0.44.0", + "yazi", + "zeno", +] + [[package]] name = "syn" version = "2.0.119" @@ -2525,11 +2962,20 @@ dependencies = [ name = "synstructure" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.6", +] + +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" dependencies = [ - "proc-macro2", - "quote", - "syn 3.0.6", + "libc", ] [[package]] @@ -2543,7 +2989,16 @@ dependencies = [ "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows", + "windows 0.62.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", ] [[package]] @@ -2586,20 +3041,6 @@ dependencies = [ "syn 3.0.6", ] -[[package]] -name = "tiff" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" -dependencies = [ - "fax", - "flate2", - "half", - "quick-error", - "weezl", - "zune-jpeg", -] - [[package]] name = "time" version = "0.3.55" @@ -2630,6 +3071,44 @@ dependencies = [ "time-core", ] +[[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", + "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 = "tiny-xlib" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90a0ca3ee6a69f2ad28fd11621a4c3f03b371f366be500b64df260c4ffbafb4" +dependencies = [ + "as-raw-xcb-connection", + "ctor", + "libloading", + "pkg-config", + "tracing", +] + [[package]] name = "tinystr" version = "0.8.5" @@ -2640,6 +3119,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee" + [[package]] name = "tokio" version = "1.54.1" @@ -2706,41 +3191,46 @@ version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ + "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] [[package]] -name = "tracing-core" -version = "0.1.36" +name = "tracing-attributes" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] [[package]] -name = "tree_magic_mini" -version = "3.2.2" +name = "tracing-core" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8765b90061cba6c22b5831f675da109ae5561588290f9fa2317adab2714d5a6" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ - "memchr", - "nom", - "petgraph", + "once_cell", ] [[package]] -name = "type-map" -version = "0.5.1" +name = "ttf-parser" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" dependencies = [ - "rustc-hash 2.1.3", + "core_maths", ] [[package]] -name = "unicode-general-category" -version = "1.1.0" +name = "unicode-bidi" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" @@ -2749,10 +3239,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" [[package]] -name = "unicode-properties" -version = "0.1.4" +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-script" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" +checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" [[package]] name = "unicode-segmentation" @@ -2818,45 +3314,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" -[[package]] -name = "uuid" -version = "1.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606" - [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "vello_common" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb2141a2bca6e6d598e471fd4d1d7eed8e020aad6a28187edda07f091a325dd" -dependencies = [ - "bytemuck", - "fearless_simd", - "guillotiere", - "log", - "peniko", - "smallvec", - "thiserror 2.0.21", -] - -[[package]] -name = "vello_cpu" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace506ca414548966fcf3c283be94eb1cad8254de488791ee698bf438b0890a9" -dependencies = [ - "bytemuck", - "glifo", - "hashbrown 0.17.1", - "vello_common", -] - [[package]] name = "version_check" version = "0.9.5" @@ -2938,6 +3401,20 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "wayland-backend" version = "0.3.17" @@ -2998,6 +3475,32 @@ dependencies = [ "wayland-scanner", ] +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.13.2", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" +dependencies = [ + "bitflags 2.13.2", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + [[package]] name = "wayland-protocols-plasma" version = "0.3.12" @@ -3067,27 +3570,22 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "weezl" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" - [[package]] name = "wgpu" -version = "30.0.1" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527ccdf43dd5b2e8676eed9984ce00e2bbb0a1b85b70c1969dcb6cd2eb55ab9e" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" dependencies = [ "arrayvec", "bitflags 2.13.2", - "bytemuck", "cfg-if", "cfg_aliases", "document-features", - "hashbrown 0.17.1", + "hashbrown 0.16.1", "js-sys", "log", + "naga", + "parking_lot", "portable-atomic", "profiling", "raw-window-handle", @@ -3103,9 +3601,9 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "30.0.1" +version = "27.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c018fce9b6270aa203c2fdd56f3cce996713534bd757e4ea58c8560b121f14" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" dependencies = [ "arrayvec", "bit-set", @@ -3114,11 +3612,10 @@ dependencies = [ "bytemuck", "cfg_aliases", "document-features", - "hashbrown 0.17.1", + "hashbrown 0.16.1", "indexmap", "log", "naga", - "naga-types", "once_cell", "parking_lot", "portable-atomic", @@ -3127,68 +3624,100 @@ dependencies = [ "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.21", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", "wgpu-core-deps-windows-linux-android", "wgpu-hal", - "wgpu-naga-bridge", "wgpu-types", ] +[[package]] +name = "wgpu-core-deps-apple" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" +dependencies = [ + "wgpu-hal", +] + [[package]] name = "wgpu-core-deps-windows-linux-android" -version = "30.0.1" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7586165fd5f6d881cb9ce4bb71f40d6caab2c0f1837e3fc1d9788a197fb6004f" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" dependencies = [ "wgpu-hal", ] [[package]] name = "wgpu-hal" -version = "30.0.1" +version = "27.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b7fb58561a792bc237628ba0792e332de418fefe145f13b5ed8201e6d52f58" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", "bitflags 2.13.2", + "block", + "bytemuck", "cfg-if", "cfg_aliases", - "hashbrown 0.17.1", + "core-graphics-types 0.2.0", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hashbrown 0.16.1", + "js-sys", + "khronos-egl", + "libc", "libloading", "log", + "metal", "naga", - "naga-types", + "ndk-sys", + "objc", + "once_cell", + "ordered-float", + "parking_lot", "portable-atomic", "portable-atomic-util", + "profiling", + "range-alloc", "raw-window-handle", "renderdoc-sys", - "static_assertions", + "smallvec", "thiserror 2.0.21", - "wgpu-naga-bridge", - "wgpu-types", -] - -[[package]] -name = "wgpu-naga-bridge" -version = "30.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f62e73117bb7a62bfd9c5a5841438a823f6566c6442a808ee269d2d055c081" -dependencies = [ - "naga", + "wasm-bindgen", + "web-sys", "wgpu-types", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] name = "wgpu-types" -version = "30.0.1" +version = "27.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99dad6f1fbdbbdb4c278a6508b059d44688f5cebddf78d005a46a31340269286" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" dependencies = [ "bitflags 2.13.2", "bytemuck", "js-sys", "log", - "naga-types", - "raw-window-handle", - "static_assertions", + "thiserror 2.0.21", "web-sys", ] @@ -3223,6 +3752,30 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "window_clipboard" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5654226305eaf2dde8853fb482861d28e5dcecbbd40cb88e8393d94bb80d733" +dependencies = [ + "clipboard-win", + "clipboard_macos", + "clipboard_wayland", + "clipboard_x11", + "raw-window-handle", + "thiserror 2.0.21", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets", +] + [[package]] name = "windows" version = "0.62.2" @@ -3230,7 +3783,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", - "windows-core", + "windows-core 0.62.2", "windows-future", "windows-numerics", ] @@ -3241,7 +3794,20 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-core", + "windows-core 0.62.2", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets", ] [[package]] @@ -3250,11 +3816,11 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.2", + "windows-interface 0.59.3", "windows-link", - "windows-result", - "windows-strings", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] @@ -3263,11 +3829,22 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core", + "windows-core 0.62.2", "windows-link", "windows-threading", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "windows-implement" version = "0.60.2" @@ -3279,6 +3856,17 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + [[package]] name = "windows-interface" version = "0.59.3" @@ -3302,10 +3890,19 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core", + "windows-core 0.62.2", "windows-link", ] +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-result" version = "0.4.1" @@ -3315,6 +3912,16 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets", +] + [[package]] name = "windows-strings" version = "0.5.1" @@ -3434,9 +4041,9 @@ dependencies = [ "android-activity", "atomic-waker", "bitflags 2.13.2", - "block2 0.5.1", + "block2", "bytemuck", - "calloop", + "calloop 0.13.0", "cfg_aliases", "concurrent-queue", "core-foundation 0.9.4", @@ -3448,16 +4055,17 @@ dependencies = [ "memmap2", "ndk", "objc2 0.5.3", - "objc2-app-kit 0.2.2", + "objc2-app-kit", "objc2-foundation 0.2.2", - "objc2-ui-kit 0.2.2", + "objc2-ui-kit", "orbclient", "percent-encoding", "pin-project", "raw-window-handle", "redox_syscall 0.4.1", "rustix 0.38.44", - "smithay-client-toolkit", + "sctk-adwaita", + "smithay-client-toolkit 0.19.2", "smol_str", "tracing", "unicode-segmentation", @@ -3490,24 +4098,6 @@ version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wl-clipboard-rs" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1" -dependencies = [ - "libc", - "log", - "os_pipe", - "rustix 1.1.5", - "thiserror 2.0.21", - "tree_magic_mini", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-wlr", -] - [[package]] name = "wrapcenum-derive" version = "0.4.1" @@ -3589,6 +4179,12 @@ version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" +[[package]] +name = "yazi" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" + [[package]] name = "yoke" version = "0.8.4" @@ -3612,6 +4208,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" + [[package]] name = "zerocopy" version = "0.8.63" @@ -3697,18 +4299,3 @@ name = "zmij" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" - -[[package]] -name = "zune-core" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" - -[[package]] -name = "zune-jpeg" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" -dependencies = [ - "zune-core", -] diff --git a/crates/moonitor-desktop/Cargo.toml b/crates/moonitor-desktop/Cargo.toml index fea53cc..04d5942 100644 --- a/crates/moonitor-desktop/Cargo.toml +++ b/crates/moonitor-desktop/Cargo.toml @@ -17,5 +17,9 @@ serde.workspace = true serde_json.workspace = true anyhow.workspace = true toml = "1.1.6" -eframe = { version = "0.37.0", default-features = false, features = ["default_fonts", "glow", "x11", "wayland"] } +iced = { version = "0.14.0", default-features = false, features = ["wgpu", "tokio", "canvas", "x11", "wayland", "crisp"] } +bytemuck = { version = "1.25", features = ["derive"] } +glam = { version = "0.30", features = ["bytemuck"] } image = { version = "0.25.10", default-features = false, features = ["png"] } + +log = "0.4" diff --git a/crates/moonitor-desktop/assets/Inter-LICENSE.txt b/crates/moonitor-desktop/assets/Inter-LICENSE.txt new file mode 100644 index 0000000..9b2ca37 --- /dev/null +++ b/crates/moonitor-desktop/assets/Inter-LICENSE.txt @@ -0,0 +1,92 @@ +Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/crates/moonitor-desktop/assets/Inter-Medium.ttf b/crates/moonitor-desktop/assets/Inter-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..458cd0601d28013d3817481aa2839c9bbb5ded70 GIT binary patch literal 417300 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�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 z zx}~_Q?4r3~K;9A)JEqhNS~7dkT=Rt##iji0U0bRB;N8>SnR$3b=Smw6fqnp^{tdub z9?@*b3#v#?>qLZm8p_#X;d$VBLHysbs1H=mhTuG&7ew>oV8Sw>n~^IFG>I$CSO?_= zVIh9?HxxR$*tUSMW!_-br0iF>=iUyJv+!;X> zCa1-YQVRsKjcHjyVd8nzEj^L{XhYvw^)6gUN@~`1;PD9)j}IEvJvcrnt6yrZS_>Pl z%wM~?^SB|MIu6P)!%!bUj>Y$J!j4{%8=M(C`Q*?cCniq$tdYpdgl>*CSIjI<+c0k6 zjJzQuH_#sA9;2(x&mT@7N*5tf158Nlfoy8Jpo5^Xqw2?=CF z4Z6=J;4^^kpJ?O2(LOBOjZ>yL)V&Kub#n>{)vwmR8$#7g|D+@})gSTNx0Po;cfD5)sek12v6u44&AmEK`p#$8fSL_f z=C)8uetmQK>XG9HO{_og`iFt{P7EIH$L@zzIKV&llruOXKJ?;tH892I4%{J+D&Vkoj(2b~)0jl>Pe=Hmhq@X}QZ{`ObjxGf4 zaq)9@AcR9PQt~yUmV)L^q_SjTm{>AP`Ab>zU*#;TrkwpjInL@T#}#EAQdYCY4UU)E8fC5*6-EvU$eLo6T5TaG2fz zJrCOwWErp%eXy1p^drAowEs!e71Q`Wd6Q)Wl)PGAQj4l$M3c{zpU)g)k#Ap~dt<`o zJ(hlB*1Y-k+sfZ9vm+b7QCaz!@LwKrBnkQuTts1$J=EAg75ot?{9u;-xG5H(RR51q9Uzs8R30 zfsfae?-iG1EF1lf{Q92a>igfT4C_SB-0!*RPH`pN`uf7RWC zp3%t;*`y^y2V4%JC`}v!;vUv8?4)Slv56ZR=2NZO@sXq)4AEPp~CgS8dzYDD_zV z1}wT{l{GOjaXH|PUHU=grtfT5*9ecLoQge(5*phZpobrIq1Aioy!0bsu@`5;n&zc9 zc%euWlt73SQbwU4NFBgCNDY+GvQEI4ql`w}BjV#tMqfQG3|;6EOc82fNtVi4mMoIT z_|uRSW|qrWS#AE$e+=wD%AbzEvE_eMa9l`d#S!z~R32nXM>BrNGRlJwFFWnW9Pj&y zV;Al_+@$^4BdiI+kw8OT059de8(>921Q$weaO)Ppq8cN(gz7*!Tq1aRIZK0TCPC_? z4Ujm8#orn7Ev3Sbs3($FG)Z24y11C<=(?!H?~9vcqgJvKHL0|sflE*^i& z0yF@f9pfaEQV^uKp~=2TaG4B~pFv^)kiq^8u=oq!KK|Z0LSP_|>ucZ4S8XgA9E57< zXbov(K0Y0Mz);fp2z`o$LcJPm}*49{{q@;iVDTZ_Q7wm01-*M^zZ z_#ghITcLP~!O9~g{DV8UZ{Ha!T3A`fb!o~uM?-P`=ZalCdQNQX*hN3sE^K@z{@4Z> zs1k0HP!2nm4!9=S$7e8apGs-C--u1igh!w?jNUsm61{9u&B0sfk8&C)h#G}%v1mR= zd?~CBAACCX%?Ee?b^&2bNqV-Fn|9J{zU5ZCFUnU>HnX< z)yWKmkUUQX-FpFQ2$2kGSLpzraZEi)KkywJklG!_eFO<^#W1ph!^biELy z{(fje>TM8tY%)G=533A1{pp*RDFbUle3^KX*yJTFMJ7h94!$sugC!Ic5Q+wRL@dEr zYnIuPWJ!ch3l7_oh1_Q0_gGM2?KOSpKAq{@x3#wt40><9!8;e9KpA4W zzBmv*I&U8YOh5#P5CMKz0`GVWDFh8D2j7GoOFadS$E-Jl#UV#5lSgIqN@>6jFtJ6;szZPp8 zK_uSpnEGjw0jxPYqG}mgFCAF&&Jrb(-J>7;D#kg!ryu3qCK(kzw&-*lmSjw8*K}4@ zrAq3c>Qx8R8K)eU^16K7D@mRu3$^VvV?z9JofHzH)e`i);RsQJNc4bEb=1T_&^js} z)14B#j(d6%zFj6HBs9{%YxR3ng?8Q|EyO-twV`#mjakGiN0dh^*RkOJqPO5rHZnB+}3ZtWR`UwNy?V%r-M$i#^2p$%{~r1b;@tr_1R;V1v>8UJgEG+#^)4U zF1HF(?mYcdxf2!m`8MZzYU{@8=Yi9wqhC=Md&jcLO!C%OMM%AORt8j>G7)B|E>uxp zrEVnHN%Bk-fimDIKoy1V#&aH3($01+GA$L4EN9FLFJZ^y@F z^n9&F{l+~z=dGfWIpOBY*;y^>*LQSfDdj6t*aNH zP>%HO5mUlLnZ@^D4R2Ci7`8<|7-;$NpO2)Ay1c*k&Au$<7ClKb$ss9NGwt_S>~{?8 z(db}~o01S00_`I<8qE+uD8LJpI#J5y;SBN=92<4B8SBdH+2gKY4mL)rZ5dv&)!17^ zbGr6gytH5WZS6W{+&6B~!*%Ankw+#>I1+g;Y}LaRuzO=c_af%8HMbYrA%_@+Vf5?2Y~2a%1kKPe$*Xd&w_+b@y^Dr8hp(2er?yw?Aaz z_`o$^kE9Cvk64FeqrO=axM1a!XGiZSf24>r540YR0tLJVCfAF3T#DIwUE-G|l=>sF zL}oqif8)15wB$m0Dl_jH6lw^~3MDF#*K_Vrwry|%})Y_IY5Gat63m37`hmsaMb-jzZ&EtdVW*z_kZCro$TeBG)_!pLUzxto!hi(+@VQ_ z26d}fORSn$HN8@~l(-mJq)hOgC$I#g)^k|B+QU#rAwFbF%S?|$b$rU}Bhd%*BsUC~ zcC;XE3Tz}Z17=_wOoGM`o!j#QgB1k6J5iq%Oxd}$Afyv7ywOm@~#v89gLNr=4 zpB~d|*PPaC{>l}9 ze-KqYA+tg4%(~S>HWcJ-4)7O$^^FeMYqt8I-z|Tr9QvyEx5}|YgX=f$uZ(<2#*XCO za7@AD4RzmsGFvWguK&cHzjGiews!T`Yi8TQl$o%!WV*f&Tp8trgQ{c8zpNEfR|pRU zKPGFv`fr2wZ|uAgJ8ywa3Z|*yWT2jj+qH;LH%g4^(F_SP{D!Bw$>M0DH$1wpoM%t) zm;(P8+UTjzgNEvU9IQ8F(E^)?LCb0iP6)A*MT;3UuMQ3f-yA)a$&|?dL|cO2od?{U zC2wq*+%u!c+HT*y(Iu__@Nc(&%=&uuYtgZw@IQXB>jpI#k&>+w&W1&`KfK6MQT(z+ z*W_t~9rakO(pwtdtKIC0jxKWdck7NyFaKZC%ie{gO@>|B9}33sCi@bBlq4kIz_vy9 zUEHU1u?tW}PN(ayC*tWQ* z_`Bm$t4`v5hk5@IpcFK)7)+ug))FDa*`q^EUdRw4Qv+Rw0VZz>gr+{c^tZ(dJ9HB8 z3Z)UjXEqZ*L}Bnt>N?(JY}KS6Cax)DQ@>yO!;0IJ4qkqm=;$TBW&8W{g9pyAq{9(^ zJdQl9d~=51;qQCV{nG|?(H%aA$9FRU)rWLc8#|Ts9h)__jLZzFRPzxMqbcr;4F10X z5Gz1`57O3E)sNrgJIKw;rkLWxjm9KXe2@>3htFDI3rF6kC>Z8{@fJ3MLg2n-!wQ8ac zIMm`OLu|zbelcIkW+y6lzCCu+`1HEsiJv~>x_jl$rONYf;Xjr3Pa**U2|37ubDwuMfz$6-WCuv#!?$XpOcGWD4ve7Xx8^lfaJEn?TK zZQ5e%A#uSTv#BeTj@T5Z+2MQ!o|ukosn%9D(A(JBn(ha{2Eiv7HcW4QXDT4p^6xcE z|HJ3}@Y=m=rw*Yw5|NIT6aqvcDF28=SU5l;`Z4(68mNVY+-{Q5wcO-m&Nlt{W95;` z^Dl4`-TJ8V$P$*gcNI~Ig-zd9U8CGoiFEF==iQA)D((K%=_2U1kf?OLYT_^iw2%z= zo%|x?C|jI6$&*l3gSvRb)mca`fA37;~$mqG(gE9U16;kU-E254%*2|BdfA`oK3tb*LC( z7Fzj!tJ27S;rqR0%eO1!e`pU^EI{f)iXEmTk(VI z__K3ImDf(1y5?N<#BmGC$IdxBZrY2J7e3=>>+#a+`B#t_T@+@Z&vcKI4Q$7V2}BlZ z3@GMJ1{{zXrTNDJV?5|?)bZQGUCY+Nwhao{V0JiLVIW*0>6DDKbD&cc2Hb6ixR`mp z^2&YDPKjde&q}}7J6};gVePMopEh){LuD9cqT@)k8z`je`+LIv=HiT_0Twv?gC?s4 zB&LP2nWTGzT9y-$EMPoM57H$;3qvjp*qxwyvuZ^`+VORvP|5^Is!WgXaX=Wp>ceWy zCsx}gE;^XCd`Q3L9d8ekq8gTWv+BHl@bdTO)qL$b;oPhdbB`@8s>|&b+)n)0Rb@oy zsHz9+*2D7yvODmu0^Y%7*Y!e9o|bs)fVWO6!?9b zojIMzOu3PUnFS7k>H+>tKxkmMfNpI)D1|Wshy0kI5q%MXLv(a9ePvely9*Y7y>sxg?2OvHyyZEWOI=g; zGuOAkkCQK#ot-^&rt)RO@QDjQu3P)}rI!cQ738lPn7?|^pf%7M5lrmersXMsZf^`{WW9A`m&N4`&eF#Xl^V(J>KhOLP<1We$xm`Rg+c$6 ztWWfS4+KwOpymxB#w4Q(R^q1X*+8Q%ory}wx)jwVDm2(XEFcVilV(&>ZT8LGOALFi zd3cqJy7zKtDY0hfkIS-F^zzkp zu9GgzDcLj8!OHu^${DA|k3Th|@STVT`rzpTvoPlVOiN? zq8aTk-^$xGUmN+s)(}IcPC_`aftxj$h0vIg$A@7lGt9y!e(-cRu(MfD$xR`=r*kCP zFTmZ@aa_RY?B<9&iCeP6*xFl596xufowWZ9@xkId^AQ6->hi9Vl?}V|R^(+e(A7@n!Lyf;EG3SLcHr3Rb~<$?w)P?42%< z$`KRq=IlfrGetUE*hM|v?Og0#9=(f3gfjO~h6ySvc>RR7NTwh{xe9eisma9=XoQNhiiJd_)vn9sdZ)N90XGbnNjknuMF5;w#$ z(q=ia7dsuBXjOS3=&HQ0hyGmkSfs+I`9Nzd^3P&ykx9`54h~MVqPJdRo3B)+CAKZ) zk>*}vSYk1-mX_GSNW&cJrP^}EC2PN_v--;B@a(FmQ?|}o&L%a~NV}AbEuYL;@lV%L zXBUl|x_D9A!mPt=lik%rN~qPeYjbK|rw|L^Yut+*$WxW9%v=$IP%;_&zhM&+MFe3P zy)z8%P6613$k`W;I#7kc_{6uO8DjFM4cFPd_pV*Lr|v@S?ARqGk#9w4PnE4QK_6Ga zpK@#1;7)H)9@*7kCYgXy$mi)b)SM2O+U`gJ;^XD!@9y6Qi4z0_PMBxvL*s_CXUlYn zrF9P$51Y;g|EP=#9MpCBo71a4SvzOPjyZF8>~Nj`VAGWE4zXVv4m!I{dwccTj}}}! zTvc=MVD*y2L=)hMH7yhCkO@cf6u~+z0$FS_kiSaFRfuaq3)mxYWU8fI#{zLMFil3) z6H^UFEnf54;^Jw_u^-uv_8iAWpRS#|ef!)wJ9lXQ&XIgdu@Q$_LQ)hKfX^uR_y15v z-2xf)8|J}fR1e%0{pYrQ`?lf7m91wJo6D#n%mr=}p~?sN?0e-y@XSnHP5sv7>(cmS8ic=r zP)%dN?|;EjRh?PT^um3RoLcDMq8WjdMg~VKn#x$(oYY%;%~v-Xk0rFg&Au3PmE~TP zzEsyZj0osA74+S}>6iW|JvY%mgVX;A;3|DHc|K(5X$<3+#h-^NYuFy)F4Jk=XngTc zS@jqEQ&#;2QQwlrf3c^TC+Ppl19g1xEQcYc1kWh-N#g^_MLi=(E>w!j2+!af_;wLg zxM29|rr-o$#N!w6(Fw-RN;gey5DqV+&QKKx{{3&L)tP)3IWD{aub%4vT=`mjUfTsY z?ewJQiFi)n&%4}+_Id+6Kqx$ew4FqIHPN^i78KG&L3jc61@1IW2Eh^;=VgCz7lM!| z>#EsDq>mR$>FeA=y|u5CTRoOE9^b7b;&L{p|MSaoRiDF_Z5+ICgwmrSeDqQeW40%kq?mmD7Pc_2mKj z;xCLiV{Jt~UIyH~2|XA(;5Y}a5j0~kq4^Q9gq*zs2x+Jq!Cc0#fOjESQB%r42lj37 z{h`6Zl@=187Gb?;fz4z2v`D#?Q&}g)2rnqt!Avy5=P}7XjcI?t|g3Fo7&sm%ThTH z-rnBdTEJME=q5c7?;w)olyDw|1MYaYTzVj-fIsP7xr%)`um|oZg&=tza?5Bn-|48I zC-6L%KYxFdo=*yW0j~l4hi{ud|Hz+TVb=0QX$|22{EpzSAd+RGJQdIX;?GYDCGrwE z8qYuR@6WJ*$d%%Ac>XtkJ}!)utK|qh|E$7=D7jJ|f#+ZNv)cYdJpam{*9r&Z-O|7D z{2PB>!ByT+bPS4=2)iUlUgnivss8ainK3tXOX`Ipj?{LQ0t@eMn+W!-P&E>G~ z8*jFNofKY2IXjg5q48T`Ih7NSFE`T72>Y=W>=kwxH0X?S|Ag+4wu>33WEd^NhGuu9UI>`*$nYamZZN^1Fcj+zNI^xC?qV0``j$ zCK=m1DZGcVCD^ZkZBqNUN$uZSmL%_%HvsmVv7D(7YeYZL{4`*{1NNj!&nMM#XN6zo zS@K6Xc-Zmt*oek&HSIN@!DiJ}=p(E*T%3SInWzcz^OR%}W-4TkMhd)U@8G{g)+xGW zArLE>;l##IEzFp7>y9T6Nxlp~X+nC_h*!obFr}`1!!yG=Jv9Ham;-2`^0v``s?$CrNu*(#2FcWxJl6M8}nH3({Uj` z9S`OHrD`4voQ|0b4#yJvuBPD|@#`m%hAHmqLz)PpupfKkTbLUXbVkUD0y$m1jFan# zM98DuR~3f_!PZ)K&^X{j$w>=^pbOH>N<8f?=z|6JEytf7%k+79`h@&^_ObL!y{+Op zI6i(b{a_71J8~@A3DImsyE@HA5h^QcU)jvwl4tSuabm)bPFkx`)UHI^*>Ew-QsXY+ zF6ND2a(vHWUP4}8f<8YVDbCQie9_oAno--=CP5Z6w!g*DelGH?kq?d^>`#cFYzHr7 z^~eUJgj_`^lGPd_IgIq626w#(@K?0~fzF+@d+h zj2YyhbTRb^{Q=%qcDz4ZfTT{d1?wsG6YsSev-cb6J?K1Isg(X9Pv-qBK7(%JNQT`w z6q5;8u*0o{VQDn>5qYN#9S0wI>%C1MP)(vLY7i}k%a}rKT9SiQbH=&Boe~VElqk41 zN4juk!5a`we8E7DK`V6@$sulgG&$J2CUOu~G>&hg-;_UR?(;B7!sk&9`-ArdI7&qK z3@%fo<-tNh`9ENfBeyvU?!!gI-Z1kSzlAAE)(Qx_G8HoavQY2VJ^&s#Jo66P^b2(E z;A{=`DT~CkKxCL9tmrS9VPD{RorCk>jMYO1tM7N05^_k2ao)%fmdMJcvQ|GaqhL&Nw!!1z-C5261U(5C)l zt$;t7sRP5C2!Qp_(7~ZR{E_$pL{JNW1R$-^E1!tO6T|a)NuTS3T7Su)>X61XHKomh zdG}Goa&rlEc}!MW+aAPn%2SE;foATtxl6B2T>@gc4B|A%&lgW=8>*T0BZ$S$fmnI; zgJDPaZa}u%30V%Yka`ldkqL(0Bm1MkvOQcyESk8D+8O>uB9fswy99=aHxg&2zmqXJ zree`MRg1;p``K8QHgBi$ta5teYszrtU+=RkYTfy$yA$em6p(|(tZtZAP&vMF6dXOt zsN&Mg*%{Z*i%_pQQ@pD#zhGj|K9e(Ur&lD^E>OOHk@aA<)f;ii#K4_%mFJah`yVLr zcR2pTkkTWiFiUpzk1>b6ka%xRR9;#>|QjK48a`uTN?ooc#R) z;cBc)#Z}ecqThg!4=f#Us7?(`huHjD;z}{(-2TaHe*b;7ZgJ~zaVxJLwX9XXmYjj> z|F`EY$@$)`!Da3I#t*)AZ&C4}nwmkwsvdFPa`QEvw}>{s0eAoZADp);s)}=KYjcaM z?%f<-shL-L^FN)pFox5W3A#y|V?tj9AZ}EXB0C2$8`%vv&&MGoDjp_eIRoA&6kkLT zO$&(WrFGNig@*LXoynihMl0Lkngtz~9rH8kN?y2`adSc@f?tGE@|_+E*-?!y2#4pb zjjXZ3&iLOHCG>ijio&Y_eh#<TMzZ(+4CaG9fi3F)Jx61};{eJB8x%9WPI3M+EElWqs{o*kWXVMhtdO znPSz+^A3hCGm`)WK@XVKNnt>mND&?ivWRS=u&HxTJ(vni(YEfgmlCIVeZY3Gz}qbG z;~DL;*OfZ2ao1|TdxY&bO>poG> zXrJJ$g*imAk@b+Xy&>t%Rpq-5Z4gdw2g4vo~ zW?&`ALtmk*)=ZSYf!#Tr?4NY!4s=ZIJaJ2;C>VGqcEP%|7siY|o3XxXQ?FPgwe7j8YDw1R3A3-1mtUD(d9|YAs%!uF#fz6_oEtho7_Sv*}bLNE!W6q?nT)b32;OM+t3m4s*JNMS2g}2~3f_#gvn7qvj1nd7a2wMDezct6no{)d%XZY^|H!O&SrbeA;sS6~HHlEii<(8g}+ zH~hY&;D!m}otIux%L<|!j4F>?Ru<~4meTn|$Ylc3JvcB2iB@HULDrzA z(2DH~*XQT2FGRZh{0+=Gf5Q;dGsd>5UT=Z25I|msuSOYW1yCq7O%5EWoE(|p;pXV= zA(Us)=k1FSF{CnZV9hKsadZD)q^4fD^eyig~yG{qI}s&ReGs zKe%!ILH)CPMW==z(Z+7H(aX>Va>zqsCe^h>BB{Vdao&Vz-UP0(H#PyWnV*LlES+Mx z(wW_P=ck{P4yO-G10P(!@jyJ;@T2HNv=Sb&u99A=0J2V`{Kh;20cXJxOpAjGs(C2( zZ#XAaG@Ju3t%YtkSW3aZa>`t@%l9}zTn?d`V5eKb3dCpRJJLkJo^J(1IV-i?nO3mR z*%4_ZD6P|+1+H6E-QN~f_tyk_(FhZdt1#vuu9Tvr0VqcU)~p=HcfV91cLR(x*3DqT z2Bw!g${PT~kwDn0?tkReg}(0wtQUuok*_)IA$v{I%XTP76PCl+aqbMpgniNq_7A@1 zwbi>D7aAd-hh7+08l+>B_8r_aL|P%HHoSl;FbqxQLQZH$_p^N7GgfdyEA-=)4Eg?` zsS+mKMB8-Fy(Iia+t4d~)%NqYref$T%1OZ}7ovF+xac%*QjRvf2Tq8arS~`Z`x^}F zy5W5}fBy!5{{~yl-&ZPYq%`5KKsKwpe?nN*yun7ne%9P(WiX_no=T;TT@*+sP2Xz_ zb~X(OAovf<6Z-Q6?~e;(4O?dH()EZ6}IUb+Lz(Iw9W1p-efm4S`oHc)Op|V)eov|_CDB=n_7QR`I74VFTW=m zePOWWf=0alw!otKyiiTW9A~jRyMbMaV=E@8^FmB$Y9IEt8}bwtF6FCmDc=PDuiC>H zjS$v}U&?yu|KrY(gEUupw#OOL&a{9Pl2nf!1fqkg-y%_pWf$sgKrv`YoJn#FrmW@+ zX`QFC^*<}K*vfV69=oS>P&(ivw3CH)-u)l6gK#{wlf_mlvwmjlm8qs?FgECmybf)I zXud+5I?Y!M0wms}ZFwPo|22RAHN6K;M`4q!fK5_|{a+_y|A)&EE@ozKN2S*r62zC; z?@zJ!zECdPDKCFU-+zwpj~c#5{2Js1+_FUf%SY>@#48Q)((CMZrSoSj!JZ|2pI@mcW=K-bp$;wTYSl}4RBxxNq>Xz)KJlDP&fri*Lqqomixy@y!r z^_Oj~UQ<524BVU73+)}QZQ=C_X|2Y|%F4NrXe8BA_V{iQ>-$j1&j(u+&;2(;D^m9`k5t;Q3~15 zh35-@SI&=NPb=0#L%z7GT>boW{PP8HdUxpaeWGNsA>P|70Cd#YC%Oz~xIkrxjc21#muxS4c z*t6Hbp8a@d7kN#6y!hPp>uT9oVf%gpwr^YTwU*>sOwLdoA{iX0m~5-;SN5%9#mfFw ztb`S>Quedrk?LbHD_*1QVn)=0`3a|<73v-_-L%)LMV?R zcUP$tn%F`SyE7TuREgir)@M!5|2Se9#9=P3n%lGpefA(WKQAseFE2JWKR*_~#bZ~l ztXJQ}<<&pTi|dn@*C&q7?CPAFi2iXOb<8I#Bzk~IiUbA}_@WyH-cb#iG7_aC+ku0f zLmPY3IM^VBgJ-Meqkxku`1BfE{2HrP7QLn{#B|$uiFql1zeM?R8lJ^;5QPKq4>%3~ z0B<3R#i|+mlkgg6M7auAnK5#Ut+HpfI%}P+brncQ=94lEB=}Y0aX2=J$bsI_)>>Bx z?I9(a(OKt0Nyvj)&^$`MQS{{#VjTB~j#ZH$f9%I4ACfiu3v z-jEKk9Z!xB<%9UCZe2Qc* zA$be-WW@9f3(gv*#4p-4Aii%{P(j}OJsEwHI|gQvV-VzU_o<9^k?U#K`V077i5OV zhD4__cC2b&W^77WNI?Pq&?j~Y&Mn3sb`<_371(OY*F*{KR?^0qkE!n90}VCE*vWn>PXb39#m8 zt~cOovPQ}R3?Y&&`tT}NrYGcg0sFZX><##utdSc5`^5+|`I=mVugN+N`xUU}z9t9Y zYjT>O<9;)iGx?hAgRjZ+(rMI5IxaI`6Y#;utcM&e{sP&izu|5U9Qm;!l0RCrJsWp( z5JX(s5}@9)*yK9F7k#O`VS+Ri<~W;kN-Xi4(AbaP$R!D(oZtRhM@3A9T_aLDU7v9Q zhgK$3v!&8e$mRAzSA7`n$Iw7{YubiPyHq~UTxZBC?@av3Bnos;cOf^4-3e9hu+Fy; z*L5e9EoIy99A!O~w~yXY#(*@`4mJX6$BlB6yE4%l?U**=am{w@eB+Ldf^Pga4%&%v z8wcrg)mBX{)9Pz#-GqUP#r6$HS-?@&Rk?js`Sj=p!UQs;)KyxnIRt6MKrf^o11bcn zm0)1xDnV|mq-YL42_Y;7B2iBk>vorQyZVmZEvYNzQ({!oYPPu+EC|**A$GunuGV_fIt3NV9S;PDTE3XxDB&vEp z{1Syy8yHcA+@K&gS0=PkE^=iNO;MSI?zQ~BoS+lP3e_#7y=){H0 zzR!%F!IPBd#(G6WdX8g7^o{Xb`n`VEYjda!|M%#bGoojHepI&mE#}a*Yu7+XJBN{{ z_ORw_&?Hny5k_;0!1q;arPWwf2}sjtrCUe@f$un(<z43CJRX&=NRk9#5a2)B-jS~;{Q99|;2!c0cDthE!F!Iz8@ zd>VtNc+iJxNs|umR=&A2d-fgXzI!)wr@xeMcF(@KtFUm_&Dny8^fnjT z%**UIEirLgzsxCZ&f85qG+pUk`r(GHX ztxxaB@D4pY^z6|stYb4ydrXRj8m1gYeH-W8W6^0NORw9tcm0;R+39IHb03c^=fs~k zlvmV!&t@h?MfIg~=RoNkV(o52GigdhH>J^u(7g+O%c2DQcAf8x6A_i&3NWO zrpZPE5W(Kn9w|L=A5|L^wsUgE#-oKpl?3fOU4(&O62dwl?&FW)8z(M)a@&&0>l+I9 zu@n2GbF5G~Bzh_}Y<|O6tUx)!&KDOe$sC_E@>0!RRM}G~)aTn;;pPzpb!x>7qzcs9 zSZm=HrL)oM79xGDfY^J1%AS64c8xwduXk*#(vcIuEc9l#usW`L2mj~ha>@M9bk5=p|{#8Q^`&AD^m zG{n=mh$kk0LFgARC|Xvm4hi~_T#QAx1UNnq9Cg6aSMV1m=*RgZ)t|M4HPRqBGtpkk zaI|yKX(6dXxv&&@DsC6 z0JL(k;+L%0+MprwgL2ZsUlY!wfynC@02fw|sBj4nI#^H)JqivFWlw%G`ooFczU;FR<|#g`qc2%?Afq6=}w$b{!o5Ae;&QuIP|SI-v<5B zH~9$qW{u2l{z89!lAEKgq{Ds;$ppDEk=heH#u(=@Hrxg)g|!BWWU_6bl=E-b*2Bi# z#+{}D&b@Z1#45m6O9A-AMDVK&q|Ey!eha2KPF@v(;!kgmt!1ocOv5hY>|oc1NB8d^ zJ)H1eSUPm%{Fc+CIHh-SObX5066uV5U2_La?Jqo`hXkavvSm0ZB69;}Z6K#>IGb77 zSm|b9mLOTfLYlzn3`1wEF*Jq95hNHU3|?e=!??)5x2bx(0)={CnqrrMqrS%FS zFI&zWu8ci?x^(Dh^nZcWO$yU|%rzywxy0~a*+z{rk+zx3IQa>fJYLv)!*>)H?-*XP zy|{RL$$+tA2c(W0Cv|6dFaZwpm#G8BVlNhj1aXBFsreQo(v^HUd`Yt#jIdW3-Y(d6 z;UI5%#FQrAc>2T>Qm0r7Mb;dIJaUJ44Y;nF9O7X}HiDq@nP-4g%pt(sO_K=$UE6o{ z@pgB0uowK9zs{Z;eT^Q@YG>3d=OOiBIfnZWbutpE$GAH@n_Ttm=$-kq#}CfQ9qDvB z?B;@)g%cBBwDPHr8#~KBbBIsI$f4qj#q&$XceAo{3zOrM^<40UM>1y@jtCJ>OUA*|pq#b+9%lGZADBnwR5%x9lE7n#=(xrottvVLF zAuTVKR7os@Ce`3IPwI9r(|fZ6fU0bTqSKN$JC;s!mD;dVLpt^8)2TyDjQEx0S^t$Z zyHAIZJ~5%4dJ``2`xn0wztbXWRhaNRyxQQeu4ZBLB-I%_1aSKVf&lQP`ZsrHBgft* z_%Jj0FyahkgaS*!&$~=LG@&@WED8%>2y_V|?@?Ow$&qOP9SjSNxu^ zgFoVJ*<14u+yS2?Aj`L3JEV4}!=(no15Q=4sDV_BZInSOMnnl~3c?#E;|hgtT>}Gr zyj)%2KnFtu1(v{7!cm@qm)%B>D<~TorF=i8a?u1SBje6asrp7uFMbdJNvJ$FLD6Q`3rSuboxQsEy||#_rRmdOs+e~^v8$hB zCpZ0txe)YcygasgXkvM|Z&zpg2%oMqlZRGo;@G0X)R|oZyV!Mz2ro}ATqJw55ec51 z-GjO%jGcC=eCDO;qY}b8yL5MrA3goj%!*6Xl#-%Fu|0gE+Bzk8cTQM1WXM8&=YT$K zVtV$7T}V8$kH-lA9WqT<0XK?LMtn-_k8lei48$?zzeKz@g&1f^(TvPH8e^_Rjg;%x zjtQZ`?YjDPbw_ektxQ*MSP`judhmmzy8OZg(~#MYf;W+m0U_X&jsv8?a@b^cnYo=VRUsU<|&h4Mho_^=ls;a1pqMSL^lQvz z@n?m^Y1GmG7dw-!x!VP-+QLGhRlVDB>JC;2DLGdsGw2TLEbwUOa)j0i}Yr;~E)WbKPeGyfIeDb^KyA|n|u&Pts zH3$mNA4tTY0&F*&3bc+&BGK7Ou!6#l=!`&mu0D%ouN+|OKWzB(rO%+)RYK(h54(z~ zm+&oyr}1r#pInEXH3YgNl zMXs+;=T1H$z9F4EYT$_Ep}I}-i(yocNrRhksNp^K{ZBZs)8Tspb}s#R7i_5xjt)3hAwN3vf_;%<7R}!vkb%kwdJtF21^e-~{iKk>N#g%AlcR=g0Sqv$2WjXn@idC1SV)L4B(>uD9F;KWFzHCt=SO~q{*v~@yRECAn;+&P z*|VXnH1wCNB5^)7Z8GM9x#&7{BgZhE-eK)u1!BJhd9vYW1x$6(;*CmH|^ zUmi>YU|JW{C{lRH;{OFu5=*9D%V6; z+IXlRAZ^oGz<8k+n=|Lwz}k$F4=Iq>CzPj(gF06O`&B8(XZs$gYMIXGTh68>Ayw7LFzO8eXN0rGwyF zZH5+O_8ZW$*-bUr*(ndsfvT#NBfI6ecd-v}>D+PW zPN|ChW2M{FX^y((vev(C$V#OxU-t&XF5(RuQcUY0eNJ1Z<6R#Ef zb?y?jWJp$a3GP9MffsRKQkCSzd3^w#d3YKOI_Cj6yy-sOcA>n~>|Cg#aMC>yWHzqfD@v_U*zi-TarOCvhQ z#&+x!8w>86-mq4@6cHR05fKzj1~9Slp}39301q4JnQ~N4^oDIu;_1B%cz`HuBnXg8 zxU_}Q2jZCw;f8QDgTdLw&eqw{*4@rMAka~3!@c^EahB3jMM9jxL?<%2YAY`9UF795 zZUk`Z)G;nj^RI@A*@Nr)i1$sHsbl4Xv9c3#^wwY;%v^p(rST$1AB-1G53HETLQDb1 zoNb4z&&^?ldT1j_d~|lfm;o!&GDgvU9jbGyc**|P`^rzO?Wgbb27B~ShJLC1sO7scB`#DoEu>)uU12f7Z8I4ZA!`oEZUUI@s{%8+1mV6a8zla9 z3inV~)8;H`;!QWFif8QFRV1Yp`35XaAHU>szsQ*67ZZC$rxJH8Mg&ZLUdr?l@Qs?& zEuvRfWjUMMHKJEHWrb<}@O4#>`2&9yFfL*4Y|nv=r+EhL841 zzMACloMD+Xj!kfNA8igV)VsR5!i|IrAK1F+S~e?{Tg@^jLZ5+~U0uu;$BK(KPUE=D zQ8{dat8SM;@Bpd>a|}YqfG)~0HoZym;Cm!KXlv*Ta-BIsApuTCU(gAD-o`pe49Pe2 z9AfuOA` z2+-k?rjJ?!L~oM+0LkX*^VErjUa2dXD%==~K<=dl16KB+Amf6e4uOXo-~2I&&RM&S zjq~+!=;n|*oMz5UeS*y)ohCU_Ie?<*1Gq^140AnLmF;j(1&%_LXpoOOWINzeijxEh z+FayxhEN23hQ_ov^35?K6sih!;WSh2P^wcc+q~eA&lZ=GxY)EY)sx2_Sv6;U`#P7r z@Sdq*y_esak;*bk~-TDGi{ubrP&kY9ZJ5etipwTtRjD!055iz_X+wqpgQES8)T zX#JfldBM-fg*3OAZP)}P6(tPlNVp{!C`hgoHk6qhvYXa0+p*58VWcEkhC(u~tXTIF z?a7xbZR(mVBva=~trqWtj2VrOqVTQBG8>&o}U70PQ}iz6aRy0DmrwWzzBR3)!M z-Ny;Ir9|{`NLL4ry?Zm#$cvZb@9Gv7VQ;$_5%>|W5O5iZdW?!1}d z5#;C;?2&W*!!KSR;SuQQ;OAKaIVX{!xxVcK6Wfha-d0|o-!35_u#f+I-hQOGS<<6@ zcfnWhWe3Tksd-GXU58pcsKS1WhQ@dt?|yTq?rN}vk*keTRMYX(k$v&v zTW_B|`_`K;7L6EDR8%U>`slT5AAS7VYai{Zsj6DGe34R5x|$}uC|4l#Z>IdGO(J5UQ9pdSp9g1~ zY#lDpz+>d4QG^9;0VM`49bVE}fb$m5xN6LVq3#Rd24^+rD&sj<1J#_Xz5VC)mU32k z??-2fx(06_7*~H2bxg$k>I`1+5{98|HGLg11QO<8L<}|zI(9&$#3IWxn`fx2tnmY^ z4_G58O`-{0sJ92sUV>L>d*nXHLV?HyW4;(T2^i#T%u4X-OjekjRG8Rr(2Ex~?>rw; zF}s>QEmf^x){!ZlBKq_WpSfz;#4aV}nZ>$oz-bJ4HyQYb2}_?3rrU@Ohm)@4;-t~a zRlphAS~#V^-x~d)yvMpyoCSeD@h=_yxMrYps{*Rm3VBPZ1>MlES-Sa!vcXfz z-;rj;PEHN!-n&cJm_@z2ghll1IAC(zveEqtZFF{}nG=_Bek2;CfnR(Dy*|zz3U)^| zPc9VgAOf7s(E&IgwWc}tQGET-^x{?u_U_n& zrQ)la(&Y4_(Zh!SP015CDt}*jYV^|_&(LmtBD*Kg-J{vQ{7rdzS=O{zphqo&r^Wz3 z%F#YlZ_|{c-LTfQNY&0ciwis+G}~&Mf%zJT)uvS*ca^DdQi4xIAnuPv9``Y9>rb<0 zozvPV4`q3s=-cq+hMJlU*!Zr%c+Yu9#mhl>l6alZGdu8lFdH?(3iR^;p@^Y{gnP)B2r`HQ~kWUu*2K$1ck4! zSh$C%O#1=NbuZ}d7eQ_Vmj@x=x3Pnvq%VVUgQmLb-)P#yD36l~b#Dx?@k_%-Vl2_@ zyFz_iA8#hK_xBF*2_feITN}u{Ud+ol%?)y{>e^^D6Pq2@Aa<}%N>0qUeR};_``PAht*mrGT+Ne=!X=7x0xHK#6__o)+-7qe+!-|TSl=V}p_H4+A>79|)I~p52 z^?9aA--(;Q4LP16SAv(+M9<`HCP;<&1??b?xss4;t`$b6XHpLu<~C3!;ZHqn!yMeS zDZ9F}i$nL0j*fhIUisNu-@f|ru$?1QhmROAptMw)88>fO()k*?oW0;>tovrk?_19EVB?o&+;1q+Y@)aI^Z19Xx-3;lc8eM<=}VOiGznQ!*fZ> z>|lnch$`&XWQ8~AL1BY`#8faO6qgJM#W5|oG1-vCCxpE?Z0{&cg>y{yiuJ2LGHmCl z)ZxQZQ%Xy<7vkm?V=5?jSubnb+SvtsDnzHJM`J30zt)LAuy3^AAjZK$jx~2zk(eBf zQI0iodI$_z7nT|RTv|rIfzKV4?-pKpzF&>&BNo9e=02(x<}ChMc}oKamoBUymc=&C9fCH}Bd{Ay*r zOm(f1J`xpeTatUzk9%STu@u9Y{$Iv0lG2;5LN)B5Y}VIb@A~E&>7zTF-g|G;9Zrur z`H4z2OFY~UDiqtJ2Qfz2guj#jQCykFNY?1xNpEYlytWL;EKkf&tp%sHHAy7h3 zs81;FGM&_ENM22fXiM>^(2TbXNu?2`gByOfh{X;2#bVii`*!BEeLI>(d{uwtRq-8` zBI&fDg79Y!#Z`-E|I9JPRaYplOTDrC>$C`Hwg4Zjyb5ui%6Bxvk*m9@{9u$v>TSR~ z8R5<9r}ECcJi>-8)E}hW5`)D^l<#bWH?P0pBgvbW?_z{EtG`0IC3*4oyBgum%1=>l zvEE_=>hETRo0o5V*zgUD;qdO3;K-?WOG5k-%0tzy;@_-(z*#tl_k0vw-pP>1LmU1m zxa7tA2fKxZ`iXvl93E+eo8vE3G<+lV=I~w?;e!Eh%i&QL;lN+)z|w(Vv=QE{e|g}a z&p7^Yu(N<)kaCrM!r(rkjj;%?P;Q`qeF5)d5grNp_Tg}BR~G8;rreTOaX8FN7U0n+ z@5bS9#IXR6Z1_^rb9jP9_*C@&9*65K!i$yHr12tLl(l`0@MiRHf+rf`lKK1?hx%FzcFZE zg{KgI}ejRKX`MCO$C%nVo+~9{0_W%}-4`ty@y+Bvn0U`?NX!l(yhU)^u^c}D( zw@~)Mt+bV<4~Gl$v?xu73P-kf=b)qcA?Eh~2h?F$z53XPT@cy;yAJj3IvLt0f$0=-c=(=UljKFFnu&YuJ?B=9T zhfR~zZ$vusOcT&~{L6KClp=r}cA>*#SD&-KbU^9>9p3H@hZf)qCScaG6H-sm5gEQ! zB_7^Fyl&FaHQnK2(9fy2h8Xm7qT9q?+Qd0No5cB@!t3(8)xXW_Ey5se1FgJ-p89U8 zf{v&JQN9YJ*IeP_=HWTDQ^6J+fCyx9)L=_f}SK_a9MG#FA#SfT*0# z-6JBpO990tX;yVzR^Ot66V?+; zJp7_Mckf#p+oNN6NPB&0y)GpIf| z{vH&n;%LC0Jj~Py&3#Ox*YTJG;h?-OpS4!tU2!(HNmVt??J}Jo@D){HeEfcS7n2M}t!lc?<^9kyM1o zAUvvDYMw@t<_YA7-i?%W|M64YbzsO=@gF}`Yo#ng|M63*6*@m7n>-3nx@dv2OF&8H z-4;4BXL2F~t2bRkX2vWC?&SA8n(4?^&DkwIEhU9TXXfgiW8I(Zh1^7^ymW1{J5OJK z%yvO>V5ijB*c=>NB^U`3lwNN<)d5p?Y=qD ziHXrs{rXua%q`F(Tu-Zic-W;&^5tB(&&?A?Fg{J95G zqT+|2T$L~&Gp0{wO5Yxd2@#R;dg~>l29(=dJB*DhnZIyY{1^vo`x&XDmejZ6+G^kdcxRqx|eN>jBh`3?uQ_wCTGgBx_(e7a(7Z?Q9()Lb4s1%Q_HTv0qOgScz% z>^%<8+Q)YrP-Go2rEl5#qbs^hAD=XIOJO{6PUZBC%}%#nIVQMkRb{k(bH&1^M4#N< zHJh&vXS;?(L<}1g+Xu2H(G&mFO0j$%;C>EO&tbCK8V83K5SHG?a$&r21 zrajE@%jxH??-`LeC}Z}MDqeMsUTl%2O3n)2SrqQ4J~@9BN>^D$FMUzRRz72nm|$9V~AOL4ENFBA8g^ku1l z-{){JfeM$-n!z*0z3i&yHp;Iy!kIa|Kj0@c$OoidV-a2??iIK3`oX+v{mse`L;Ke_ zeC;FQH+lQ(EW-0q|N9)i-Ut`X@oR!_Fv6R)KTUi>JkQH-vE43oXMt2rI^o_b6+1Yu@bTv~zUOlq^Q4lk zX0xSI^kXmZTuSo%$!wL}^4#Rg% z^9|o=!7s+|@SA^!@9U&*Eqo8Xgsw_+AK$6-7vD?m&{>^!t^A_;eY5e%Z2V38g2npR zO8>M_e-Y|m!0T7%C)Mw5sQ-+G?+O3j7VBRxjkNInFns?3uV0qj@FDz%Tf~2hMf?+ikJ?{#JtTgBR|@!fi?rK9{h8ng%k2C4TiCa6nYCOLY^>6_*osFp03QU4aUb#fM=#;%dD*= z>j}sd!w@k>WOK1`maMGAQYW1w?ld$XrC$G`Boe;p3QXlu+AzlY7>fnzt`*)cAFW3e z#)$PP$WI;6C#F}gU_NRk!}3QJjLOLxke8a5sEovV#1D3#n)o3F=f*;$ zxt%F2VeTqVM7L#aFd?KiLK&RsBqw|18Io)#2o4Smj*r9@UXGr29vT}PvDDq#P3tPV z=*&4I_CJ<)#|2FVX0`A-4BVyHKccvm6*z=&;2iQ7Re(#cG}`M37`+dlHs^;K$?`Nn#D zdqPB^D*VCA{G!`np-iMawM7}xRHlF9SGv{6p%ViCh@W{o(Bc87j`HgIa%x9B+xRoJ zL&zEKfTl8&EtKi~7iA91KZ+h&FI@ik4f-w$Ps=|_wRk3-L@>{(U^;_}!v1@}CrvQ9T>m_P! z9?~;I<{0TEt&O0y!MPCTB|K{;;F;ph0);4j1kbaM><#prLS1DY?%M$lxothkj_2p= z8Q2zA8QFQ*d#Gm&o}t7{aRBx=DHhHDmg0M5Wb}$mPgneUrKi&$QhWYKMux^VBO)>_ zEixjb!%`9- zrD$xLNc{lO5!)r)nCQkFNhET?5-H+hAj)CXI#IZlhng1@$`Nx5s5za)iuNB)R@QKO zq@{`74S#6fq0F&YQzIhM(jp>KjlT)sGfIirPUr^waaP6iU?oem5}ff&k}zyniYHsv zxbpGNcf$tVTY>LqC^*-ktdUaB$ic&(%rMRwo1|&4(s0t-qWMo5QPXDUli1lfC7ZS31&q{~FSr!f=iAqP! zKd@%Bh0Gr&tfPDtS{>$tHThOk9=uRHrbXIBD8-RR*PdC6R!B;y(+PITALz9eh))vA^|3!$Jp5!TyWv z(%${&FYL)4$Z~TB<_`K!T&TJI=P5b!VOP2TpXbE)uWT#We&s6ud3i@!K|$WQad`zp z#w%$%c5wPPerGLfaDTSe1N7DjskmE$zsJLO$eU+;zd}09--C{tRLyNs%N+P~IG*R| zeiK8mFQACcA51Mj9e4Ph(EMFQazzXyZcbsJisLZ4*z&}2d~`)&J#s2NA!otPA1ENI zBcL6!8pD`~H3@-V43Vy|$Rd^nmOTy1au0BFx-2CdQ?8G=tbq2dp z?3pojF&%jVoVbTRLnIs$2Ze;lp1GICPPx2cVA0l#qgH&etp4}ty6j;Wm4BqK?IQ+7 zu6b>IMEsELZ&Z}Ov2DoepLcXu&i0J$Elp-gy>M@ye5d$2@Og05 zVL?S`9uOANTp5F#5zTJ;5J790*#R9%H;k0n9y(xw>47K#L<=KS&qJEhFibpHb3fr& zYV_P_=}vv;=y_48&&1#N6c308YCh1fj<#{W~#(rAsBFJ(Ex|IeEaxw&~tuILS!a$QbD=W2}u$=se8Z`A)j@ z=hA{9@|^l4=3;2=`||}uE-2Vy)v@~mH2lA56OIOtXj6Ol_bCNKbnE{>W+n@5G6DQ@ z&p2+bZLn~nqb|<4xDvF483A||5Yxc(1~OAXDCd{ZC^9A>BWNU2+95euXlN9ZBWmx* zKa(0YFS@?7bO$VxdMx37jd;+r=7adUXj`XC&Nk7j^&iwUKnq6|HhyLO&;Lccx(s8x zf4FMDGqhVP9(ZKCU${PP^McR@1H0ZehR3#%^j$r~F*OHu+VN|BE3#BHaLe+NU9<|K5 zK2e@iSny}9^pf&@t$4_HF>|>vq~JVr;SCb~z5xCHC++D{YMIL)VY>B03VxrWy{mjj zy=&2)@UXE#GgL0Yx&q%YB#{*y(L<5CD5heQVo+1lsG6-U7-m<&HNZ(mg03ja+pjJx zNH`0I!TRU)P`aqRk$Rj~RVC4;U zetZHP5;zWs>qe?r_;O<&X4qI`$0hb$3Mw;1VX77?k!3q|bCi&iEI1J9(7>-c7K*4F z1LJBEE;-x!ncC@6bSGbVL%O(^MGk%stp+z_FB6XkC$|IVQr(|mA4!l))&9d>hT`}P z{ZHfluWdQF=KV+FV&hZ+BVl=k?#oG&fQ29u1n6RF&Ck|Zx>%p2Qb0VutRY*a0E;9X zaN58a5Dw@+=DW~_j{)^Rjo?55U8m_v9`Cp^-Ozs|v4-q{o@3!NE%Oi2{dWC>)kcPP zM)z4{eG(0c+JALOO#Q#n_&fN`pFAe?T?4#a+aSphEw(Psi1!iFg57Z|L#qYX&!@Kt zlPWDu#{I>#UNF-lV%%^_8YYRGYHp|-j;5VDm2cFDn;It7+)$U6ho7sP!3`^M6TW?& zZ$kfvx%YsNvUvW-pMA>RrRUN^Aj##@2rZC=&^dbVkPt{Av;?GsbRqN_T0%#p7g0nI zL{zXMAflol3nCy`uwX%ylH8Nud-i!Qxg>{vzQ6K+{n6xd`^>XDJ3Bi&J3BkW1tMUJbc$tvwwL%a|3%vB_lta&&-e#T z4fzApA8tsesjuFdudRl6xWE}WFdelMPM{^pod3%>xfenL-M>(Qlc@>E>E54ihXRfO=pt6b48Oq7s`G>JC`fBLyAC}-j17y zXam~Bc1*WagTH++>eO^4v_ra*xB`0B9!ERU52c|_?SRIZ;}3W{A>`rVhsb9h2oq0J zjT)mEAmR`R98&ZH0|P?>LxO|MGWv-)-TEv~MaC{27Y1cq61Anb(hRYmQ|e1b@qK#= zG3IlvFJSu6Mt}om%Y5pri_&OL+@C{9ISkxw;kJ zTCm_&Vc)(Q&eCyCJ=+y04Qw9aIRA8S!njwtHikX!1)&3U-9pJ=G{IrSgwy6DS$qqm zJ%dh4&)i%*vqAS>hiC4to}o^9=HcoY>ZE6$Ri8oM>;OHA+VgVt3~LZQ^LFvf2EC5z z^l|kJb<#6mSIqM&db)1jgZ-a1PIq>)058XXmtM=d@>!@N6)D7U<&HK|G^6{VLZ9 z7W_;oGE98d#XrXP*lWb^FR16bs@ge+!$T93-;&Bn6y3= z3yqXFVJhM!Kv-MYXyc&LzKEXt5pPo%jZOPIhWdaFwE1D`kUq`R&m)DFh~UHsqBB~0 zPC9I;|L`)^J+iE$VL$vHC_guZLL*W>4ErCRF|;`)?UMFTKZN(nIwGZv1_Qy`s7|n% zy=Q23%Gj|Kn-kFqKSi+GB5|9wl4?U%EY=H=))YyBeo0unNgQqaPBBMB28@RvDU(a= za5Y9<<@hT?w9NujO{FxRnkgCvAcBP>Ht$djs6c&s_^14)eLMB+HU7M!Z%7t?9M|jx zk@ru+Eqva^*Glg3UOr;-N&9Z}Rdnhry@OGvcY@7s5<2{7j_h9YH}AH6uQ*uDf(Wt! z-+LNuVC_WiF041m_D3NTV0S|h4g`?qmJWPCYC!{s*g|Rv0f9#SOn&egCZqlqz9~7aPiabi>`v+n# zB75XiCTO{jh)S+<__)kA<1(KN=u*)}9BH&@#c|68RI3!thHfuAC&V#4runLAmt3M# zHLsFO^r~e}0(Nge&sm2#BMHGaNB}7NU_+j~42z1HxDfe4&2K1|`7I*R3En6q*y6wo zU>DL9F`n8E2~GppB4M~OW~dhVWAsX5kdy=!J^D$`DA`Zdy~e#cD(dtUYC6#jR(h^} z@>oQOfCS?9^6_FqaDZ1$pPEKl@MIoDGfNb-23oujkJ=hThrVW9F|ojEh=^P4!0p?z zFlqWvrM}WPae;wxr4g|~K`8oZ`lM3f_G>}06~)w-^8R@uUQ#68Ln2px6&Sh(!!jVMJMo$<1&I*cy)EkgQQ1H_7By znp_$$eIed1O_V;8AXY)s3OLG2>?3&D+!2feK}R4G=p_Wzk8u;Fx7EHdm>-coQU|Ji z*x~a87kIq`HYpYMhaN z7=HZmBL-3r97yRMUMk5D>u z>NIj>r_Lirh}+b6N3&*+ejCM_!JTt7Yd)&N|o<+e&#idc~l=KqfFYUl9gEwSk zY@pY-ji6UMcN$^;jWrvso*j)EMvL32idpP6wf!0Vp`Lwoo1IcSN?nWb58h!;G4I#KpC}lE%`jvH`oqQ#3L|h2;x!e(*$OGD1-U>F5qlYDlX)g) zK*}n~2;xH2P$ny!Kq)zJh(Z#px^?5>|5Ov9I_fs4+n|0ujikE&Q$$UKQq&0RuEC?);oSs9B5jAwveXXqqwb&aWA2xR{@^x-hAMC93iD>&Y>ZjgwZcOr~Y80x!cc zFHOIzj+5*5UA9DLNqU{4!PpIRlL@EF?izPN2Xdpk2hec3x|t}ChIXpw=TEWw8S)%h z{GqP;%k}M7uGqg2_k46&+-1M=1(e_^;$pT+Tx_4IPO{I0OslAmN2G-3m(bPU&l4A> zL?kbvYOzM8;{%y#z+{5h%P+{!pZ0+j&9Go8#v(};oXJ*c(0=97Fea!MhvldjaF?KJ z`(n4FEbb(obDvbdMEB6Yqk>?3-Ov#srEq5e&35JcX)+&jg~A{hV3tNFVLE{-U_L4> zk`}9tOP7joNQ+Bn+HK++RFCLXkC%{aYY53Bb;ZFf5_FM1i|K*8u{1sCut_FW1Evfl zLqNM|z*x~h9H}lzth}9WWujSyg`m8-jrLaJTS!%lb?B)2oQ}H}{38Q}KDM6lca+gC zT0@38G%Mk)CEmv6qw#V3*WJ zMF)va2H{TGHN>&I3(4M5=p$qT#V3Rrwy7YMnfb_)&nVwuZ%M`_G`doh=VufdDRY&rF%h*W4FkGp6q>W(&06o@&*Jc+=hZwkI*}k^t0c9pqQi}{kCu*O08mIMp1ftQO3@l+9%|= zIj$;V-f7FqlHPBdmDTo{tkRcvvaEJgQ1=-sX`7{H zs%jMDuV<)uf6%&t1J@1OzFqs&YC&o7z=6e7S~PGU%WS(nvu)c_pBj9AdfY}#Xim@Q_{SED6d4am0dn$Ktg!A8ec z0$$7S5o@#Z#J`G*Euz6-a5K0ClX9-th()oYR{MVW7+dM6nH@WIif}2rtt=MLIpIRq zJghGB?Yr!|7O=0xbNGv};yOL{ySHI4Yzd7#3i`wKZb#hUDGN z84i1KSd}M~Cq#RKV94|$uHI_dLa>R$ffW)eVbUo`sD#jMJY|R?^o3tBT@y}lfXYa( zDGLSAARVvZLazP_^lo~?R)>J0$`oM9{5NPg90o^Q5$&o$bc0GMM6^W{T#B{FRSFS_ z+akEXFmxWC=tcabJdsHFbLELdy4aiKiMisiJbOU997-wDvYq&<>y#q)dg6r<_NT>R zBNjO)7lBNN44ncVAZ-|#w6X0$5IpRzvBj!#2!o4w5HJ9wJdj2lMJ<7D0Sha#YsE%e zVfT<@zy$Dhz@_e$mP3fko2kv%WRFdM77^vsH=Uczkq54laF~>6@Pv#Hp2wXQO-huDGYL25MaNMD z_ZYhZPlY23GSWg(m=kSD#U}(S#49%&O6%-3#c!2yk8a4rN}jfVuB<3fKTe7~A#oFg{S)=m`SfHytHY~EbfK>c_wOJoh_s+U>)xhgIOQr4!| z#JXa=(wIs(s-Mhf4S*+nlZ^9#C;6rN3(ah)<c*NToHbG&Mt7Q* zWbuUXz`+eT-f?gP12d{6=K(1P&Y#7Vz&-Y0HVQ6A9B08; z$3T_~;0$XV%CL555)1V%ehki>+Q>Dhp)7BDtu$Jk!pX6zBwxDfz*#WXbJR`vqHfRw z*hA6?sGD2Ih$z~Tv5qrQo6^_;=hCQC@+Nj3Rp*yRok|Mo#XiHfQ-_>37msY-9+=Fz-~!bs%sGXLz&a!{9h~I^zagaCuD_a?TJJ z;gp+6paY&bd6pQBMt7sTpV^-h&Ji`>%mqqIA9DsdR63ya$JbaCr^x2l)XmcJ(y27? zRof%~1=byAOT9hVxY3?~_OPltdp&9G1t5D5+5?5qCvNAEN0bhb4zcs=sI^hAu{;RV z7Q8jS$C6vYA38{AZ)-!d$-^B(fawG~!D2TC7Q%!VVF8qoBMBBj3e*jcLP^Fp2`@nj z2Nn50KTksh--=OM1p1+fM~J0JKS#A;{~iBcqhE3d68QIC*mYPv%=#YQ^};>kv!i8~ zwdgAV$JRyL{8;3ap2y$(oLr+^4QpN#V#5nl#+}?s_3Lf zu!{O2$t3oB%9`8I{CBBkg@s^`Y_{k2ZMK_1gD)&p%hcU!mVFXE$YQ(kU=IMa2fNhF z+qcy$0F=Sqlg7RRhXzizYYL!`rjoB-vH#ws6SJ-p;Q0$| zEK8)_Fe85P4(fc!865SxVh!og{|HfH`apuy+eINVQuzeo?3q^ zZ1n~**5j+y5(P^=EO(Dgn`Rai%)H;<^hW*q_ic&xU8SZCk5Djr*1VJTO>d#FReiFn z=ro62e-T=iQ~M7190}~@ zqI{Xu*kyU4i2EEa;CG7JorbFTzbj971<%~21efJL;twv%L!}-r%cGggezCgZQkU>; zT+;`4%OT*Z_lwOD5jV|6IU-BDEH8Xa`Bw3+OZWrgW|!sX#8+IFzt2{>EWa$i>9YI_ z@vO`8-^DUls~i|1XI_dt9mSMWU_Q(gq?pey)|l1n~R zo+s6_Dn9VtKPDX)Cc`5_WJl;0nM;^o#0$bR8q70~gSi8`{Ts~h;w=qEJfhVDb=7%o zX)g4)^&x4C^KmktAk4WN&;Q_w3mXQvJY2G-1&8ih3%OW^MWIh(A}u+I%@c7T(*(yc z$vBL0UVyy*Hx?j&uBAZx3`Ab@e_KQUX)zjQKP|RBBeu1l{y$un#0atTOJZmH$(QUW zU5w$M4!SbebWNh%GayXWn3Vr7R&R;Uv;I$rc4DivZR`Ijy#~#bd(3mm%lE{a|H`L- zIbbB6o>gg%n?N;0OZECu9`=~>nqvLx@VJ<6f?bsS#xVcN{l+S-jezlDyZ;rY5so-p zYxT5#%p5f);gGI_2GhX-KDdTorz&sI7Zd%iop9yQ&BJ#Q>M(KH?#l<)OMfu2MgXX4hT9 z*A?fwEN|nQZfu(Pz$N?~af-|G0$pFIicg{VhfDaauE&ub(Dk*d^_&xrxUA=Ww!mfi zW$~oT@-M{KU6%hY{_Uz9`h`pUpCyv$U5%i0nU6ywjuemJmA>qu!MLj*Gc$eix zxVz^Hexo$mW%={EK3Iu9T)%j}nto9g<`?nnYBISh%$@%N=6CT*HT^=bhwtTLob(G= z4<4gmq;vfuhwB%;YSf@DUX7Rav~`RZ*T>{ z)jp8jsaW=_jRk1?r}$-Mxk6C9jq0J6XxRMcTH-<$hL- z*Op^feYjV(4^?>-{rt-T-J>HYV$N=s{nAN9S&GwXBm z`n0k2u9Y?{UixxCt5yT(2e@yR4omx#2STh7HUo@J8T*ir!DeYQ%5Mp=CKLYjceK~t!>xL z70QF*al_JT_HNy#Z(h#&Gra!IsQ(txrc!)QogkTx_@33r@e9=K78={M*MN3iGgnHR zhsO^~tJT}qrcYi@@f$ksPIWs`U1yw3rpFGgPGq)e%8JacZPR)+jSF>8?=Njme51I6 zpxBdvE*iZkhMCnC8R<=DGTp6axYFaq6P$_f0=1A39Ya@OtGA(48`>(ZvfY(Nw+a%& ztDr<fIiE%pH-Mfg!H0XBu+LVOz@GNSyQRpsxjW8we)4ty|X7}K?PQ2$L~ESo~H z3Pi1bnsZ46W13bD^GKMe!AMnLoazCd8jOx7uZQ|XG7e*ixCnY*cw7W6>IK@`3&Z@E zyq-2X%v@d%y2<-X_3Tx9%3tz&959P{^b7|n2!>)XOyl)*(drRRydDs_q8{`sjl)2O za(r^C;f%JFG~Sj2=1JZb=wE>|@EKqvy60eU;}G@cJ)Q1T`B*vHq(O6x74>rfZyWD$ zx(8|aInli;%q=#xdLO85j-OT!U^sqgvjRV~)tlne{2#NT> zfjg%==+&FU?9_2y=L+XaFt^y<>h*x8y*bWWJ%Fi-bJ>3|(FgOk-qqStk5p|-gE4&$ zx@$1^)R#0EC%(k0!d5!fa|@TttM+S`+LNu|_-OUq5`3!SLp)cZM{pXx=?bPor{FL{ zs=}117_YjYygVYCxlOjGg+p6^e_!$mT zA1Yv~woP+O$>;Szx8eAexvHl^|IuKo)iV*ac#-&>Vg3=nv%wm_i|&AREt_~u6yCNr zXKxD6^0uAj42K~(L-nHVN5WwZ#%VmO)^kgA*I=CHHOH?a{t9@R@Tx3lIE-Nz+UlUw z)CCO1aWQQv$45n&1}+<&@BvNbGrV8Zbeb-zh7ZBq=P(62%#!Lb;EQtolGA->HJnNA zA!;e`K|KQT4q%9Pgkz|W(_P~ohp+_ij4t~@e$%uW?`ZS-u5g97&79;6hvE3?bDtGz zFitcbjke46T#nzGYJ9}RN%c-8fUDZ0!)q2Mu`1!7$&7HIV)J+B^zb=J=`*c#=q>x6lahb{X-y06^Q zVGX96AESE6wtiHOs0>*g2DLVzN8aOA@84aJwwWVl-m#v@BpGc-7Pkh<1hsEXY=}DSJ!Z; zR{s#xpUvxcz@$~LA24Z%6B#Rxq7Xbb2j&VI;mS`}-W_DE97mpI5K&K&UM>&_byH2M;Hq~DSr(n4y@vXR> zzk5^NT#avWN>K^sR@uX9JW1owlG916hwD-r4&}Pxji!6*Gn^)?pd(H%hmWOth%#lRl}Cox@er`jSHQY&g#y4^M*Y{+ zY&MlYdr!j$?hn-NQN)DoU0xpN@kCjC*?xw%@SJPmW&1h%0haS$xowG$Pe+c0LwDpb zkPRmI(s4TzU_L+|7K%X!7%c`J>RAaqpXBtrp^ahL!>aX^{fO9yPCZVJUPViu3T;h z<9)8CTZ7+v%7{6McY_F5?8A;}?XaP|9cTGNy#FL`hhQ-$uq7qB@p6(Wybj0|gHw4q zJaBi+XKIt%+fWb3OKZz{t`J_^lr+={TioMd2p?l?dAsUpt=(cZ8?uJzL54YMcbi5J znt!|;`%)?wp6BI-7_V}>AhlKYs2YtqjB*8a(z|gQ45ByP`BLXKZT9f`hL-&(-8D7` zEVn0`{$NX;%476$gX!*64POq=@zUULvDz9uWN*1$lG7le8eT&Qru<#t#Q?)$QAg!@ zU3RnV4{@#G4%(l=X?jzAow*YX^jdda{sdHkxg~^aFwjHFVL-2PyC}6K%&mr3aoJtS z85)Bk-~nF2Z$8JUoMeSweh;o>j``VA&eqCN=S@M@>U7c}d7V!0{_S|TN}UfXl@niT zI6QKclMHlf>lPbc9e=?5$oX%B&VMdoc)LD&{YI0W?CY2h_3`d#UjL{1yX~vh-xNd{ z#pwgR2)uYx_>sR`wfq+RrK!%QkOQN5ow^<+c5+pxE(g9rouK(A8f{UhQ#r@YR2LRHzixaBhFdH(|&g<0W7^}zMoee&<^LKSQ#^S5J z%hzzyg+wb5AzkRIPQQ^HwvsFYjkEb$uEDN@Mxea(8W#bC)X=TZt3NZ zyqwC*;i>Cs`x>7yrc8xOTf=rPN1C6b*p&(Ly@cJiPhBIDi|Hb|=6LP;Vmk*0Hp1p?;lF?{qB$dlQ z^Ko{_^z^d3(h**MM}vpjOz?y|UnAvTwQ~HX@^U@P?QN}G*R!&q?{IjdGgQt4J zsD8zumH$y*t`yK2nc{(hIPs|Li%*&}+j%>KK;LjqyLg>;{j1U!vfzQ(f#Xg{<6U)& zhWkIwTZ6rPE?qmoaVg73Jx^0P&-`OFU02&tJ!NmByo<3;dHFYGEh_4Fs^_{^k2aT_ z%Jus7Ifi=lIrfdPi`R2h8q8jmvvI}*Vo8HB+BiFs25b8Qoad30ewA*S2%$D;qX@)I zaeTC7dMGtZ2<1nYhK@2fCaHFUz@7IS{GICxIUce_j3qq5n}lt+CP$=jT{q+Ha+phxhXD_6K!12WLY(OXaV#IV59F`# zDGGb==3(q{=*}B%IpKs<%i@hlhN37Tew0KhxDo$GkP&Iapa4)Z8z^q0lq5;GvwGU+ zp6_qWoqa9+RqCNy?L-pP3&|sWs(dd{?35H+qi~9+hYNIYyv60A0s_fJ1DQQ=uS`ZO zvW!IBk&%(sNNX*tUxI;79O=G0T_r}4pC|-}Z-oo0JRYDC7b*j(X*Mq@r)|4I^E3M| zH(ZxzU6{G}!i4d|TJ?zj1B3I9&*I{=+O?rji>P9ysHs4ajc z(O7K7UX|KtydbvHctLEX^8(^0(74JL`1P0t+#|dSZr&#mpIF$d5#whux24I+k?MWsrruaShlQ#3s8&6tix?MutmXLf zF~V5W7;zr>0_{H(F=`;#7djXGEttWxN4@}>v=f#7*6;;9?bA1+9)szFtMvXV;IDnZ zqy=L9sHk0 z1B`#Z+5m&^am7l(kL0_0+*dzeyC$Yz(<*jHwa7Q3*C`rI*QgC)iDHtxjCBy3Gz4(~ zI@>y6R?$p=8Yzpoc4m-;(VlJ|hyiHGLHrs+nz3hSXdoilht>?O8CF9JB3e0hg60$E zB5eXgf0L-s11r)e^lv(#la@Zge&fo=Um1GTsnakrcY57A{YE^gzWNdV5iLZ*TRMdG zfn)*2!lU#OkOt%lkj7le07qji2GuG?jjFiStQgsBUJqm_iBEo}iz+xZG#Lsp7+CZp zy@NvVs{RgWc1z=Z#obLZcoC0bRdT0Kajf-hw^-z66*gw?6=c3xru%RqX!$<9>;iLA`-p6X6L;C}G@IUZ= zIc>Q{ThU+4RrFWmL!6OowD%Bj!JaovU{?2?& z11@2?r|}zZ$d+oEHe>y|3&~EJD`=~EW^kUeKJ_jyPel=Virz0Gfn!x24a3MPT3axD|G*TNuE`Es} z!4=#LCZaLdInv~wUS32UFJCVNG;pSoyEBbQjBuv^dd0H0{y6@J0_2Rt_U|{*T5GcJ z)er=JHG$tTj^E!d@%z6*D@wMbBP9B~{@D_B(!bE^!9U;vMGJD6j~iA$ZBhCktbbVf zi0_Fw(j5B-2}Bra`EpgMI%d-_X0-p|{8KSz;ID0l^-`2+0iHvttNI++ZBr~#6yo`o zYv(SbQC{wMz{{a20=^jK(TH;Jr#Czr+S9kH&xiNIeZ+iCjju}c4UH|U0#2M-H6IFP!6%N z1$fRZLjq4BzuOT{tQ?_OP;g}riC-vO1wly&(SnK8M;F%qSRd$nd6x9S3=7NSUxSSH zL@gCr)FE#un-Y{i1SYp`39DOg%8mSN`=%l78i#-N#}iX|KbAx9EG&wI!c94!<^+B z4pb+#O*m+KBS(`Uaz&dpK|cwU#*Ro!?7^Tg(|(A%jaJ$Zv7++5ko1DS4{F_`QlDep zXxD9Y3nE%zIANoOn_!x?pJu zl6e^U7)y}0owV#lm=7E4`jGk0{%N0jf_2SV)M3kN^@MWy9d#W0_1xl%liy_Brgs>= zn#Kb-xPv}Itk9ouW4|kBHGYL=I$tY?Gnm0+8dMy@c?NKPQF#q`1PN)~j?@Qd(zb%q zQ6a!D6c%u2S`PyS?SjK0&xByB2?A1lE{Yk-0i7Rb*u3#C$U88~Y>tUEdW6-nSa@u> z=p^(m#eyJsJnUPN{G$ESy+6-Jx)|2jK0w;}w|Zgi!i8%mUtIj&JvQd_K7YK-Br5Ftb5V+W&DF`wpv0MxUHt_}n zLf>JH$`X1qA)$6$j3pu*A&~<7eZ7TxtezWg$RhP0IaH@28XaxyX)hma)v}V&R+)1p z{%F)VHOX5P=WYIV*{=0ZuAFpv&GK)SNMFhO#!g(ib=KUuo1ZXsS7>hEDkwNys!Y^{$=yLQg zRImuGY|uL~StQc%5Fd=96N@4exX7~JC**a|`V<)+Rs(s~5K$K*iz9v0! za_XKN0UMAw=+NQcXKz@v_Uor!Q4jw5i~8&-vH!HgIq#8-8>Dtt0)T%M#RdsPG?E}6 za1a9Lh!A6_4Ty%B@wl>%of6>aWN5sekS4m9wVLgtulaJva76 z_L=9o{dT*z+cWClhhA2{-L(*IF+^*QEBQ3KMFK6Odl6F5aNjV8&l38RkN!mQ{$L;M z4TcZE(v9w*XNXh`-ZDtCVGfelDA@f_x44Z3-NIxUie_@TIExa{GqZn?)dZVMjKLtI z3lyCM?1jDsQr|Er6bX?ys&T3kW!k0wwfDIC>*kgBcd1OamEK{W7A&|hIrG5eVS7dz zdTst`;VxG5<>#3Db~kTP+JDYdO?YwaxurASn$Twr%~Ie#Pwft$qwj^<0`3yTMMfYL zv;mhOxc(2`;s!0Dr`0b`g6Q#2X&mi{w&-NLA`6x%%SQcaoI(EfXO^;g#lpE8@3SSp zY~J+ag1$Y{hOAQU>h{auur|-e)SafDX5Ef=+;Do{+(lEeW}O@{?2VP9U+a^6a>?_^ zgE=GSoqDToKA$$l(t8fcs=$>D!$8bYo!CdyT$-Y08)kzZfr3?-r{zHO4q%E{t0qD& zB8-jLJHDlvVxVF6uj|^WKOQ-+-rBT{ zMPFQWt2^^6+4s(+6N3}h_4(+ma{0kZ!=z@Vb#taY%bI;zaFsRN-@VmTd(UaVsP{6Z zi~G2G-UJ< z96kh62UbK)#9N~+eq{dikMoCYZ-kXgwpx(mkphXs68inIM{EP@@CR&&-`}-=_8sf6 ze8-OE(xKt(ZTp44E`MQHhTEsvzh6Ip`U=#q$@5n*MiIgUjr8sTB=EWiBBWiI%^e>y z6^PySkqPEfop#v34VyD))m#LI*}^bH9AAfkbb6X$Gs9XH?C;CvV+4z!AT?a#BNP#r z>M48#4B&fyzXrB%gSdX%gEfEeSXH>4b?@#|*IcWEb<>;04+AD%-zWWE>brHrhOOe7 z?5+}gZ{6QKW}mS4#zb@peD{R9O_^nAf_-GDfXMQ=JgFc{90JUOrxkQsK?GNWL0@Lk z35sv4nec(48L#<3JusWd#*CVr;bVjV?Kn4|oN0pZ+sfv2%;X~$TXZ{-&i#1Aq zWNs^0En2VMSGP&8+7B9Q1M2s9uhaq&psJBavbAfar@3j1Gu0d4!YngN_BG zGZC7vpU!`y)EdVjq>+sdJvDLXfIAI)*Pk>wSo)<=p9W7%3BB{RDQQdo*gXdZ4o^RK zP!2D-IdWqCQ5|d7)BnuvDo=k@e`=d9aHAvIFMu!274VZUESY)_Jt4t`nr1H;XQ+?# zRdjsSxylb*g=mTBqJWi^!PgyXcM!MY(hPu9uXvDQgLJ78f);#3t^5vIAn^>ARth<# zkg2_Kw4a`l-pFPqE$Dxgd2hI)&Qi5z6umHhFn(s+=BC$rtbvGhyU2Iw%0n_ojdKG$yk18tvWR zWr;l#>x)8aa(#p;iH!-RXq5HDdZeZ>ec_Kw;Q@nD%fyd1>aBk4BBUw0YL?rggVXpK~Bxemx+o-=KlD-e0nGNkPH##aMqZ z2Jn`YgV5J-iZB;O);6d%5R;_Z&;WqgnLS7b$vIdAa7ZK~*ruk53E^Tm4~E4%$Whb4<^>;Tf@aKjp9Va&pkm^@Bhs4i81 z69aw`17yVdqo|Iwex5*G-}3b{)J*GVC_Bm9z?rw)L^+AR!%psJMl3x!je5*5b=^ zua@m(%KB#4*@&Ox-+|Rry*KmulgsCn5RTXUVy%8A=s9kp1xFS-H({P49J01jaYn+q=#z;0=51dd z_v+M<`-ctNKe9_3wLgn$HE>|7HUkGDD5sbBXNlXW#Y6Xw9KLT@4Jr1~Pknmy!oMCk zLS&@RC<)+?+QJG=o|-L@$gqcS+*q}ca7dIOaw?Z8DAVOm1WdAspC=Z8cN{_n>p`vo z!H(&&YM9Mh9fEdVnC=9J;Q$o2Ul_02Lhb0-nA%p_ekGZcp;gGiNEOL=rU4Ly`AScqUKX7C{ta+zak>2@R<8dxnS0Q53lhk|^e4NsWOg8pZa zc;QnphvZ!q7>WZO0u?x-Rg$al?FJ!;1!-F&1m(3N6e0|e{M?rI8I*|Hp%DiJ ziEoUY*VW(q%2!_go#y5*{&d!iPfiV4(6(q@Ve$H)_F2&{$k`{XnH`p@>WP=s(&ew_ zA05B%>;D{n;R=QVJemu>7=XSv5So!)0J@bZ#07d|UkV=97E??m0f_5e$dY=-)vJRL z3v`M{w{b~5)P5Va(J}@FJLZ~p^qd+S$2WK2Z^w-Leo<0k<`did_1!flb4ALMu;vl* zZThxVXPZR2J?HP*IrMGH5@%PVtyqXe~1(}CeZv2lUP#P>Py`}RctEVS<k}mQ7(7?GAz82wvmY-D{LTM+cZNyc|rzWOJ`q zCpxN*8Otc5d19klUyS3zPhUj2U^iIlD!DH6DXn=hNyNrb%mUdlZ(A?xGv}VXzWtdS zQ=fQieyC5M)3y=GlXF+h9MwL&!H}6v)upF=nzciQVBh@#`_xq{9_$L3dug$s)cLtC zQb<7l!C{~72$*s(!6SP!?`JyXbP)O(3@sXY#vxCjCqUs;uu@TGaaf>eoznW4t52a2 z#0(3G2ti^SUvCd2wV_Cw`qa>6MXDvm7g7X!aO#pjXF_A3=(Y0mb_<)V?J<9|o4wJ! z&$fIsbM8-5e5X$sHp?wwZ0__VrVRc3Gu{5ex#R$dSF<>U}KWH*MP>{t$gE+d;AclIFXk5J{!YSFF86o zigX!;%XiEPNOv+CV&d>A6KD=LLed$_r-%5tbq?BUI`vU!1>gwX|>dhs}&a=9SgyaU6~^X1K-t<)`Yp0V&>}~CL3)X z__{Y83*CtQBRaOV#MkH)xplX#9Tq<}vE{&lE!(E2%Lhm79X4$5h?1xwecWGlGoF4) zS{gEJUt=tKy?bNvgU-Nx%H$^@>lg8{%q;uSKs*?Wxz^FvF3uX@@8xO0p&E-1qZO_@ z?1xAffY9%H2e{-DI5!RJG_WH40IPlC7F&f`-fhY%Ss~D6F-lI6| zN03!jGoqx3y$ilwBLxKRot3pP{8IeAW0#q4?5DvE+lSQgjH=ZkzJG3tuT7ly-AemA z<`pxt7IqAtc>jFB^hGOr_e@-{^SgH=*Y5FDR`>*UpV!OnK$);c3?49}D5Dq}Ao@E+ zoi1-AzbvJjAgIXgLg(@7N^L9ccn<&GIPE!Em$2g|k9H?G@Xi$Q&LKG)bV@>=rl3&p zP7Qxp%q*UwL5a3T!74B7JQNQb8m0snQe3;lddHYT#xpGcWYQ$_AD37E9Vl#588*0W zG)k&k=Fi-i+AGezZoRQZ z&$DeFZ|zi5Jl!XsoH!{je^Gv`Zp`T4uy5nqt=h(u$ejp!7lTd_!gQOvJIH{X+2EpX zN8&JVVnHNDHYl{<$e0>r>g9Ggt`RuV#aayzt{>Qgk0^hE1Ug7kGmN(06qp|QWndq0 zB1vVNoz``3175uKk7W}+SfP%WcG{P*5sOajezsuxe)rp^!XMS?6VJ|@^2Q7|PxkKq zw>{O7&+i;RYu<#Bb6*|~l!vPAWjFM#Hc35*Xdw>fYgnT&L6AKP${>kt*i3c%J0Er~ z!E>daehF6p`rKyf4=bXk-jxeD*rp+=X~t_wE->3Mik6MiBz4uwXGR>Kv0~5@8O=s_ zl7AR|asByU&wn(1_@LbPSbzJka`tNVbm-G#bLR943r}m%rjw;thm3urUoKj(BO#=9 zo5n5HvIKB5BcBWf#}L51u`MYy1m17Se{?nVf)+AN-S zLpT`Vwg6=E1DnOgMeEjfO=OcI6CBLDWflEjf9vWV_W78nw!fx+F#hd1CoV;w4a^%p zcxIo>m$t3{>+?5{%b6vM_Vl!kuqL$qY50bITW8m4p3%2;6I)=sb@lWOCo$jV5!%{XN0T1aT`<6&YLE+%k_r-wZ2p|4xrl%R zBLKE&f~fc87fkmheC;4-EeJZE~QL_t9Tpd@Y|ILl;XXb)28Q>haA3!X zY1D10Q+~>jQ7oo;r>KbDb4N@#%uMQo!()36Y|&WHw5XRWA>-O;Ld^Lh@4t>xQbF>y^)q>dMQ+G&;_qyqy{q?_uMfdBg0uNI6c zy1zdE<*DffV|Vo(leT*_dw?;h;A4&tRBwn3;u8s?4qGKO4<>P71{(?r!iDfq9UqIC z$Xa!G5QvO0!N?W((NnwoRNfePCG_v~G@BN-wx~IGS zQ&bL|7O35&JJ46c1)P=CLJsumXC*m8&nUlWIx9&{iAMZ#C{9+cU1BxFwpvh9TH#D5 z&hVXRI6i31onJ4$b)}$Kovs$V{mba2GiRP(#>~%W_S*gCi5+{E4Eax~da1?nMzi-$ znAmQnlP(-fx-gAn*(CcgeH@4B;|N(Rcg8y5Db%wiaG%WXz#VoEDUTZnGPvOtmU)zV z3Z7=OADt@0wuj7P+~z}}{@H{~Hj#O#DeP_auDYi0RXJM?XE*Ja?4Pphss+_^dekrb zL8-0$gn2Tw+mS#>Nx!(rpg_vi0v(GXt~(50Fp0)RR+M?d?AJXAN^dt zrY)#(PmAZKsDHzmFC?!HOYrxLsqyu%?2tjOUzAke*GE3)?%i*2 zr{YGXPmM`78(wttEm*@Ac3acA^V+WVMe;}=t*?8r{{DdZVG-c31D9!5Q^EQR`C05qnFqHy5_`9P*_QXKRRtvM<>rncGF=uxYVKin09>AcdYt-tyXiqvhc zMwzX9KbN{Nb@b)$*pgqj&A8BUXYJ|T=IzPH4_Pf=__JbC~Qs0BMAY;ElqTsRjCYPQ(;fxCt5j9 zMzeCOv4xJbxca2;hbs(gI!uNwAQ-+65w(J1f@Ab^Ei$mt0*7-gu8@-nkng`zVPs1+ zYiBC(=0L``fIE|0ytZuDm*d8Ky?^AMX5ZUCt>3<8%}x!6k4=~-XFn3;Yc1?MdW~5B zcX9MCCU5MNI-#_CNFZy+aznzNcwt2JjyEwJqA(BV7kxP$>I>~`HV-W2kS62`tjM&U z!&XmPF_|8)>I@}jgoP|Phzar7`T+U*!SyMLtAHa|I`(IgbSCbNGx9j}09$$3FqMj< z*%Ua^=mHQ&)6!^gdzYu{=5C+($Kb(#Ox&JZmu+WVn0Wf@?CAcTdrrE`CiLvmKPLNY zdCZII*M~BXZy0pr#-I(yGY>KAi>IewnB8xEcHy(HzrKG>_WFLaFHG0?k;`lJDUwd% zXny1D9L&cszvf{2a63NVymQ?j%TrvGUtE-?1XdEyWL|c%LXcS{=Z0ZU?(i{n>Wv>Z zcAVjc;kOHWzZy5;t7i(%Ph}(ej2^XnV1vO2$1WRl_Ra=%YlHO<){i^{q$FXJIz>K@ zIpU99u2o32d08TnQUvxZxKWT1kDNw40Lf1p_;Cpj7)U44aHP(7DKt=o<=G$nkc!oi z+Ym%DcgKp%3@aOE22MVMg26YNZoKu&+c$2!{mbj$iL27GvsCx&0Rytd$dKq;z7P3cy%wd;Ve_plTpVIgh(5kJWWmeo*^ouYW5oZ&z=BQdOxZ8uMuULc5P3Ea zWU3LECw|eUf!ub@nwm-mDY834Y+@HqhrPjgpqCM=S3I@_(i47%f*wd@M1h$uBjW@e zqmcVha0+J*>Y{#(l~W@zBx7Q&-@Y@{p4l%b1@}G-?OVt%J`$$2>1qQ1HiymQBSV0Y zfc@WRwi>jv@qh|ihq)Ugn87`iDTWa6v;jzyu8JdC&8OHQcd~nsn#$mZ&s7$8cf(M~ zB^*s7l`Nh243-_ng@%q-0g89vl8&1pn(%@x!sUy$299@tDfu>!a(dU*8!$omHcG5l z*X$n~9TQ_U`+9gF*9@||aAS;ah9OHHNe2i;sCX^O{6l*H_^6TSFi_#|zyI{X5o-sF zF`!XcpCKQ-VC@j0B&7DwipfphH|zLu_SMfUxpmF9N?Y|o{_)pM##d!|P+Cd7m*`Ko z!2=pHlh=vOVxPmM3&aoYFZ60|;`~5&!q#p!|ldhYV zS!>6)@3r>%-MjZ~=~mww)vJq~{ah>iCmY<32Jc!bZhUV1;zG|uN`pq@1tyFu`xPEI z&4egn#&HufK~>WRz8>z47)$~dA%oFmFwTKflSzI+i|u9M zQPW$Vx;Xfq9r+iR+-B1Tj~g*6ug75asW&Tr=bbMCqeS`ai=&<$)@j{DpU%BT_3NLH z%P}Ok>to;856Xr&tdvQ%L>?^?IyE-EPVNREJ~(s;sSILIA0MA!pCBZUadtP*uygV^ zxVZfnHkfxRrm1+AnB91P4;4rIh!EdPQ$ zu@!IFkj7m>Mn0X>XyqkPvj3y6PLP;L@NbEaiLwOxduwTKp@ImJEW+KfXU2Sin6Xrt zH?dcCY?X1Eiz7FEM@=WDtYpLC-Mg=fN}EnEe{4DLmp5YYti#7PZ~py5by8W|uI#UI zv$ns!qiDwpao$npuKw-)%mPc3tiG+s#KuOhp7!)n={ftM-UGU~9v&5EdFDxyei*|{ z>?_VgcG0=-D4S=j5fV1shoAdu_RKItrQ=_SnTq3IIB0+)1-7UH#_1`}Y7*-+{d_nk zIwTMoFOj8>n_)Dk$p7kiIH}6{@Se27ei^-|yz<28L4!xFD|tHP>C$zh24_4m=9MXZ z()+GV3lCX+=-D;+^}Mu<)y~fvHag;{G~~pBx%(QV9-FiEQeNH%Tjw52ZLn|df)hie zqY=cdV0E$n$o>YHdaFuT?`dN-bN|t1BCf9ylI1 zkZxABl%cfz9FSb&OpxrFn|KbSJQ?_~Rn^bCtdQ-MA+R>3mxFOAoCCIL9TyX4^~e9w z?liNJc9$e?puRdG6R)<93I;22O~FsWGE5>^b3p>5rZmpP-X1;bttEq2CjFMYa?s+pMm-wcU|e>;agmYZdS^~(B=2PnCuH^-XR(a!mp!(= zm>jUDY;CJ%!zbE0tX200JXcoOx;eX{TAH;kEE5g|&4((!7 z!`t>4dVtea9b)($I*~@#&DzxS_xBZzOs8uUXrs}UO2x{hy4D*>BxSic6lcsqQ`+)p z^>D`_>R{UFM?>0VaMA+~v(qJ5h7Fo;o7T;mG;EL%51g!=#vXjHRj&E!yO|{I)DEX6 z8tu)b==>9frN&7sGBmxg*3^mc5<#)y4G}YrvEF!-6rRm(7RQD{L9G zzfDAJ1cUrNy7T<=98 z$m|UxKPioLLK6j55%ywHDS+pgq`(enoP$u=@F&+MW4aM6REw90!Xf}G;vx-FSwy^t z=NYyzFE5}O>J=IiOc_vpebAz(pV<#7+-uYc6O;UL7t|`@f9Jn{>o#%ul&;SoSUqjl z>H{x0e^HJizQss&8yjvv!KSDy#jd3r)Th}nbvqks$NeglbmsJgWkLK1=T!ben#~=uKDG4Ic3k5-EPKLO*8kPevEr&*=@usBcJCfYLPcIW8K&ub%y?MyQW|N6B(BAxoF{F;En9|kSv4&< zH9jUWCUM&3T{}OXo*2_GrgoFy>8m@3#5RnnH~-n>ewnog7O(1Q?c24%DX;kWl1=0SDwln--#tyfE>-;Y9S$o>1am3pv;jcIuee#7hx!udP%%0e~l5$PmGxG(7q&Bx?aEn18 zUwWNZ8t!Tu&;gTf?Q%{tQW!ILkD{%r6_mB>7j?zGdF&_>RY?ksdG8sL%V=E7+QJ!_(05cbvRIQRl^0(j&lnj(Htbo;I%kK_S$EK}j5iy~S zBWfiF%h@Hn5JllWJ2`&9nQ7DBp}9osTobhEA;dx50IRyR;Ccuibe5o7a4Ge#et*Z0@8&37sFq20d&mKUXkg<`XT@;#wDLup-f}j{RC^CpY z4tTN8gYz~#KpUrWODmaNapq<&W<9=+PBi-^Mt#M4Uy;R{trNa{{c7!&IKhX&_;~QC z0sUUh6dRQ65<>=kI(qC|qwKfEkdd$E=YE`Szm1mASBNU<9Zp~PCDL%~##5}B+6^dB zo)X!U^9;Wmg!@lyuDV`2qHdJ-oI0iDOcrte+g<9*mO(cO7vN)xn0ga3-dFxaIwzb zoqBBesON^gcv1}Yp3u8(R@BtE?X0zWxKF=gwrs@VaglRh8Gik_VSO@N#7|DmRD(S` z55_vSyX+740q!9hlp@}Dx)3v7Ifu1Vk1GJ<7+*E<8@FM2Y!)(ku<-|!bB~%R=TOH6 zOq?EgC)VxB58-?1_M~u)*2uD>DDSP6e=7()RwQHtofE{Dg=jGunSgTwiXmPWLI(y+ zm;iSJEA$zE*gM>OJ>YLn452A9zPPK;wHD}in(@n~7hyZ97ioTkSYiSKpq%iN1ca%e zNEOx;B>L5U`Llasi~K*u=A-Tv{w3MZ<=vC)?~Qy|s2nZ%Ku)5cM?Gz(W)b;H?h+rN3GZKs~=)W6pD=-j3gnzX1YL(rO!V`g>i zJhLmC`ALfgby^aiX0h(#X5bSdWZV3qAPf!Fl1TSK`Wk8%sLkYBR#>;R`@{3Zu!e9c0-arOIvKs0BI4LA;vl=F6 z$DQpM7h&lYm*215h`<dL+49AF}okDaZ7WbILg~2vISP11B z(2GGjgt-U4Ks5xYh7y^f&XL0rM{^F>n`Y5TOfX%E!)$@mum(dK6`o|+++wW$_|M>l z&@kMM9Z~>BS~6ylQm;8v1=4rqAjxkxebrgk-j>|n@10)xG5sPv|$P8qXhdW(z2Na?#81c46(qytysYBfzG}{SDS}{=u8fS?*y}}pH=q4&V!p>ovf~HgBykqiFGa~HgGlz7{Tb#QFx2bWr#+na)ZYtGFNMLDqW~f8D?Hy z=Zn?rguROLC>UgK$2;;F`p%~D?-aXi8sgv^kV~HGM2swc@5exK)bSlPBPJPgjL1!? z4dfV6sotz?RpTUjcI%$&JbY``y5M z&n^Ajax?NdbrbGp9`*hD+i$P=A7eF-tyf=&ykYrb*}=OZQtvZA{!+BYXXBSscCiMZ z+Hv#OKIcOg|IFksxA?5y@ZC2ULw>i5@~}YX2%u9XGc#Z*z>W(7*T5B>$R0*Tf*j!7 z@8tS8S^-ykp(E9ct1g0`{dEM?d1C zlNmp6-*HF3i-S31oCF;FaTf=-C+Gqn>yDgq*j|$gl<(mNvrJ?UlYtf>3+XD@={Rrk zJc)V;QB{GBmFq3cp@Xqy_^%!dcA$0tfO`B}DT8gZ)#_A_BUgG%>QR9pA*oz0J$7=y zuRC@EP57weo`5lEp=Bi6%4>uwdG(X@M5e~pG$Ol5h9gGi0 z`^HH`E;!DS%e9&2d8CNbW#rOWIr4E;WR)^R6``)+9=PtRjs9+g;;LgnU|Ha#T z07P|c|KoRV+oefo5fs^7U_qL6ML|%ipn?riRKNyyv13DHi?O%(VvWYAY4%j3=`ZD_ zzjRZ4DetA5yu=jQ%l~uc?!uy&Ct!iuutT|;^MXbRHwLmYhuaWu$&H*cr-L%ufjv(KdI+C=#)Z9>@9|9-l@Y0dj< zmak{OdZ4jyv2n*{*l~c0ee54J8T4GBpCN&X{VwU211M6D6nfcje2#HRJjYwD)(+?JXvyDmV}4LQuP41nr|TBs#=M@Szx{5Y zG9)@udv2DqbJ_JdJKeWjpR*I2kz>DwmW-*(QE!Xyn52Bs3vF~OpUkYX+ zFDJK~jvA)Ka~?`&OxlKp*+m;ziG~?UkUoW z##}@+y95Ft-n*wqCC*@cl1u=frcE_dY$Ux*VV6u zhgz?X;cd90w}JJwT<&@0uq^p2M zPyd;8hDRLIneB#$;a|n<_+#-5c|Ax_b&6*^F3dSm4e~*4rr-XBW7hb;>pB0q)jL04 z<^ANPOHcc(yR>=v3yVG9^;ud!e}90u>YlB4PZ~Yr-r8lKY}cY-v5DGtsd4N*4Fl)g zxe@hqKe#*#W9$u|1ElNVAb)tGAfCehD`K1p?1A-0Yu;P%_6-bF46u_(h+qLo764Pp z3aJ8UIWpncYzFDJb;&WOVpG?C%1(a5PTOm2{elAfMpi`P;0CwctZ%=~&NXTq$R;KF zd1NH@Nb|a~VkK_}$vyFChY7Vo9}foy3JVoQWG;kuCIL}}wjy?jP*j$IMgw9`ob7@K z2&~8#Z6jXPu5Da6BO8-z8Ab~FE6|ql;6=!w4ytt}SyC6$Dg`$;E~KG}@E8cvI3UfP zvKly02#R+mX$_)~2T5xX6*8EaVDp@ut+HAmOYt|4fA1;nB{@lZ?y)!DSu;1|?aYSt zY;VvxZTa!bFL^K+61-me==kyN)3lN7SpBZ!Vl4v%m&O#dG|WZYNKUISIT;VdHoPNY z&Eg`gh2}&88XzEJpTdPY#YL!dEyw4ri(JP^AHd~0>I{XO>w;a!eG=DYCTLBUE{UhL zm*pPXb1y&j&e}P>-s&~yR(6+iL0i75`nDud8;OZ3vt~{3`tT*!9u5I<(Z8YESm~G= zBE$)4LT%2t1Z1x32B4%^>gg^T-HfXRH^pr=v~>}d6Efl`UO_kue^>aHB|LnXCs#YApiyj zAT5vN%tpvwz5mshju(!rtAp!e?4(I!wH<8QqaRKkHGbj87xL~rp0H~3rdN@vP#b&a zt+(D;oS#47kpcO610FfJW&GUGZmTA4y?55^M-1ohzu%~R%>r@qEXgNhl^1Yst}4I8 z`E~;2fIEqAD-@Tds^2_`50t9_eNM_#!RNol1;}QCE@x4ETQ1MPKS00E`ttISt;j|S zJ3#|o_b6bnAL2a;C{O1ws4{k5m)}wJoAw@IPV-Cp-qZY2tDH7g;b)U5A$lDmlrKCB zZC{H$6Ueo$sT$lCt zZV|rZ*LluxD$i+v@-RP8d8`fO0LM8bjy>>OVME(>UY_#>q|?EewJSPw0X^~#lB@7qs*_pjU5$$q-i*8O6s&$iX8wwksu>HY_pvSo{Q?ScC>`<6!^UAy*C z_RgxaXVFCTiMNs3uID><-vZV{*Ll8kx~}Itci-}|ew}C#%CD1641N8f^}5oex??On zaG^EdIcTvTzZs1o&chk|Cvu|Y59P!Z1k=!FkpX2Ca-!AYyf9eV3>L0E_3N^T%+Sz` z$Q3_nPay&6mu%=SyR5xJJEvQB|I7xnUskh!z0`YpO3L)!FKJ<`HMj42)+Hy`_56NP9-XV2gjWuWAU1jRfN&)s2sk zbC)G!y!hEWYo3_A;>-O_w5|Fsu3vNH@VdkHU)k`$JwNQemnqw^oepYv{mi+yiAK;z z$L#r(SS|c1 zJ4TA$i8J8HR_H6l=0y8=yUW~;PQhWaSPYlBkN`uNC?<06im%`s%;0<@}%+CNUbr-i-__(6pBPT8(9_Nskx^BHZ>BGyYhcUg-= zy<8W8PS}lhmNUz|7Z#irZd4gCVSzvO*SvK}W+Xs-vX_}7k2e_Q_R zxwF5m*u820-C|p`%X}~-+TSlamrE^<_8}cQ=m^L z#8-A@T@^km&J+xUA>e}o|C5tDiK(Zw=vPha>L#wr&0RHd@@ms-G0i9TeZ6AE*QT@k zlSj{-a%$?dGgGEkB=0%l@jFljF6wx4@OSJ1cYD}0#SfiM}oz}JE7ZE z&_Y7>5a&b-yM-|!(i#@iEhab!*%1uXQls8d=el&n?rcOCCZR)8hGe;-yKg*sT zm`-KV$?lJSw9%IL!`~1604IS9OYaBdQ|gB+rElm*8^s;{0OFX8(j8H}T|aJ4{rjB# zxY;PMi=}!$N~s^vlOPMc4xZg1KT6{KDCK&7TOV?Th*Wx}J{qDPx? z1RdTvh{pkSBHRNaaY!eG3#AigAC9<3t%$ZGWIz(lz(mHg!TT#l1OkB%IgHJadYSn4 z^6#~!LoZz#&!!+ED1$wz4VuWx*ehBh1i)DKmi-_0xADS5z*(#Z&a*2v*i_+64p8Zm zO1W>GQ2H1cE!)<7!4EOTttY4APi#&{dz?GV{ac=8S&bSVz0 zScFzC8tOZEqOBa%xlo$FDM?6~VGWD!7Tq@X?wG^y_v+qW!Pl|HIGn#W6<#hAw;htD z&w>y~NJd9!0n3bRWF z&5`c@;nKE`ma_3|3^JWfd4Ai<{!K%JEQ|LP4S8binsrByu47*8a_6Al=IGoqeSY5p zn%)E69s$cJB4;Bl!1c>PQ1^fU0tOnnQ7Agk5ku=>@^}*KG^V>Xz{W?@q#7LE&_if> z)6?|eIBtJVPgfjSov@S22i=P@=fApc(?93`yJ^OxgJMGiJIPa5%FOgP`T#K=%GCAQ`OjyWN2CF%P z3wP~`VD5LqZGccCQUjs_3|QwW84?^1*yr^vgsVE>Poy^sDGfV# znEh~R)#wuMD4)&)yWVwBi`ytRRTaw8Y1QM21KR!KUFYm~jxLa-({9FR?_jC+6{t`Y z4r!6{deF@Rt^l7>7wCW(f81C@*aFC2a6UV-F=fbuBCPST*3^hp8^YDG0W&L1D^Zjv zrH3<0tQC?0@Cj1eFhcj};A0*#79^)#WDBP6{%Fy>j}K6)lz(iQa(}hbIRQ*}(l%OvrD!Ce>p;2NV9);UecTGURYh0_8CXgnR`{WpGUaxrqd;kOhNT zFbP_b;MfG3;*e_kt{U(+OcW9ProD3P!|5|VJWAhI&vs`kwB?4BsgGRP^2;5OfBSj! zg~JQamNX6Iy2O8!5N-<`0U8_Je`j;JJX8yOn4Mq8Z+<Rl4 zPKuZ6{<{Gmz>z$K>-`Ni(7))q!DF}vI7zDx16`J%fl2kwbi4;=i_v=|Qg-P2beHR` z=On3L+|Az)`QwUe<@G|=qw)^y=^dIMJK3^c@Dh5TQYYl)^q`mMeb8?)^+Y78aBO%>beuXs9|%^(7V78+MYsuKWve=jLyaowznsu6 zq5gi1@{d}(SWSU`A^stNLLn1@8v$rqr>qkbg|t_|L6X(`kG-drBsb((<;V|s}LKfzJGMh(YGc|dJ7*POgXx3kE-t9%-%EZ-MDeDJ}0jC z5#hJ=5czq?X9VBhvm&H>j2o^iU$kDg>DTGLJjQw7aJ2Qlfj#edE(OoQw+$*i&&%Pr zA&tt>Z+c$2&w1T#eCu_*pRUt=1Cn&1emv)~^@jT>NB5~5sOD&=0cSxw+t1!`w8P=Y z(Qy-aAATDm`1{^)v;%8SzwS1)^*XhKuSL}JqVxSckG{$P;z4<*j^)I35S@URhR!=@)J`}j<@8lr`&)lR^?1)B(0!YJ9T%e9w>EPt0|Iu?Q1`8vJ@`*A zr|i5*Ih&&#StmdZdJgXK*5}k2*F9&D{>k4@?~Q~!0N)AZzJLBgztLJ{Kb4pMiFUTx zJGRQ6yd9Vo#_sxkR6zItMxUs0r~X^rhflOX-R&&zp75vT@jR8M_ZbiB&l@pO^?s{4 zH?;q9Yx`jtLu?+k|MFET4||L%@%k?7?~~{0?{nDea34A5sDG~asr|6uQT-}Lgts5h z;eF7788Rn`s`v^2?a<}$8}>rnABp^V949Xh|J6~RpRKIY*~(y;^^hrlP(Bm>C~g=5 z_z+RZazJszR==nl;)Wr8!9YOX4oYFFiZVGtrd;vgw)3`w`DdQKeS_Z>@6}%)dxH6F zWt+4gF5dI)YWB{SeYafRxaTtSKC)@^Z9J-7`D7m?gpywOqDHiN1)5X=tfCua0e2)(r?ddA;7Kyi@jz$5 zfk_Ku1a{0A;*$)rctHmRz zCy9L_Ps2ISzCw6TSCO_ooXrCiQ6+>xlK3Q64p5bktU@@pCeYY81}6yFwa$c&+&Fd4 zhO*A*Y+K&mvgPfq?2FhjIsL}OR2`l)@h;wvYOPT;sPBP$sb>IpN{%&U_}Vg@+0<4FRyE; z8#Hat?RA6jrMzyJebJs7L+WPN4Vt>=_Q`|rWk~%lmbZ6$S^ez#fm83ey>1}Bl-2KM zb<+pc@7P{9c-qYRL3KNJ)D5bidBYWEpFU{H&K>nsXmI_m+oue!$M9h`OtOCmc>?F;slmd!%Ic9}3- z^O8o1BlUS8VIH_4A`wqWqqN5u+wtm4+r`8>x508+3*6Yug52#~R45g5I z&I`a>p;*Tc^GT2S$;MLlO&`=Cuu3kwQElawXCuvg9YmPJ6=)%3Z45Fg&DsmvZQ63} zKMmzSvzWcdSdS|O@_~mR96n-MLBX;S;Bkk=9_&RR!(kKzHPWL7hk}6|OkY^Bw zo4^((c;IYI8D~NwXA$YIlnJOFm$43IfeyU`g0>ReiP)yBlt<|QCGc$4Ht1vw3!NEQ zBuB?WBL~BD{mxvj>j+xC4BNDwG+gShIsYOMpsRae8j!$iBYGGk&N@1b&82?gGK;tP2hqaBO zn~a!ccvOn?G%W#O#1O_wTZ8OP&?}xp4yUBFUdEVm!5lZ4fOUtN;Nd2FE8dj#65P&; zLk3+9fo=zneA}2kVnlZK@ZqSiSWFmBU-6G#kgtWRV_P-|*co%Io*oKxL?jZ%9eo0U z@($sjK;9B16Isqr-?O1pYR4d#c4+bPAr-k}tNT{W zIf{9)qNPbXCO#(_RLs=opY(ar{F7r|h(adXFjVzJ8@dAV?G@75AJKOTvRUv56$dCey^Md6#Ak7CbbyJ{sSD&shprZ9W-*fxcvj`b> zRHXKkNj;B{@^9!&qxKq$V=KqhOx8~R_ebriiL*;zXO?z7G+brJ=M2xT9oujC(57Pa z_dnWt*@t9G)dTJh>UG^UO}E2e(|E6$u#&YXlcaT63CJIW{NZ5Nq@+`*8QGnH-GP8e z8;?*!YE!v2(#o@1FxYu1GKvHPZczxM!#NbUF=@xA4%@x?w*0cW8N>VCJ!Qzw4eRm? z=1XBa62|l?>yr|5N8&JirnMh)pd38h$yQ!W1I>g=d~oB2K(QLIkUIul32#rQGS;1~ z9aCGcJ@CU7?ZV`S($`qz+@o_Uvc^~SA5qpsE>(=kKA~LhDg7IL%*@Hq_b8muq3=$l zMIo6FZ7MKOQ0>@|$U*_7US@;!Z9_jalWz|ht=k4pxT9@D?rA@>+g9%_o5Dc61AUaIF!V}2$Hz|tXoo*VR}eo z_$S@dJW9H|dDOmrTJv5~$VB8Wct;wo+z)7Nm=K*4>F*7Q1Y{c!L=xb)Z!dk=f}(s0 zV^5JECbFV}yQQUOWB?&yA{+|B7|5Q^F7NqR`*;6{1>?poj4aW<{`d|z**`GK>vie76DEuGJPBlo`ud~P^?fr*NeX4y}z`DPvT`FafkKX?U ziz$_&wcYnM-KRalHsOO!Ikxg1R-jF}XBi)lr=>OQG}ex)e2_zPXn|J2o@qG;YGBVL zn@kdm#QJ`_b>PALU@~4K6upAswDpmOv4;l*|k> zjT`bf93qi)c!cUXOc2g;(1-{ufxC#su$e8se&MRIOKb*GIUxNmIjiy4si<4c`7CAG zVt1{P-QqQ8h4u2i$#yd=s$899e%)-hz^x8H0S{ z?OU&G8l1Z_Hf`L2afMAUufBD9{-ObyRjF=D$fobM)IE|vH(_~x?ZI)^9;~^uT5q4B zKpg-b5tc-&54EZ^GQ!W7wg$>PgRKEmm-5_W;zLW2#PUcOkhxskn&UE^nuXRWjsQlN z21gnSnqHpU*1qPq+x?Vxu|3sy)=(=;dRL{oOZA7E51?hO&6baT&BwS_%##KxF_6b> zd}VgQ9*MPsIikmVi}O*;C>R5LWo(SxW<@I{gCJ0AwGS>F_3^&vaqW_rCw{Kw^zYA} zu!r*ZHi~7^WF-xcs%Nkmlc7Oi`6>pJB2BjYi{EO!b933VVi~jC$t)L+di#)g51P0> z2S|T1z@U*Cwn#kN$o`(2tMwAU70VvK%g6iZ1?{6d^=EGA1F=HKDg$?cV2N_*gKt1< zA0(TB3z_1Ud%S&)USN@jScI6zp6uUW>nncl=)(cwh&WP=0oN)g+URH81!L5hNPrc7 zcmgyfa^neXFohw(*|FxvJG!s7EiRC#2#hOF40(V(a_cd+Y0sW7fipq>=h#0Km$f|n zKN%04dP(CUvD{Zy&-e74v-&0bhwKCGa$+LurbXhN`7B6`U}rGz!uc2nx-=2D*;y5EXs;F7*9CE zEGW8;&z3;M%tK?L_;vQ`t+yUqw@&Q0dEeHp`!;i4b(r1HUIY%?M)EH^Pu_HJ&sQ90 zQ&aQ{KWpz5zU5=D86;P*Fa;?IJ^JwHv&05gBu@uw8GDkQ&_j@y?HoPC+kd-OB@Jm= z+D1=ee~8S(v|!jA7}Mtl&VF^y4TTU_49I#mZs*Pyw6C^l-`=u!ubcKC7VL&sVqL74 zZ}Rx>Q91`H+FmQ}x7R9`+i(A7=T4&e4Re4} z6wqFa7Ng#wqUZ(-)tw z16?xh--~H24?z+S6?*a6l7O1AIwZ=o0LoR8)X5$X>^z_zk3b1-bMPLFbf$)7~0b&vySLFJf!=eDg++pfS^ebc(A?X%E55;E~Ybs=t<>HhjFcr-|1*yQNU6FnDu35 zHvO1Azw*NmwViCLPR})3v=q(hS=KgJf;quvQO5+a0w2KK;G018;ufQ%FW24apqJog zpecCS*t@ldx3Jr;Q9tVtyINbZj+j`Hjr6VIOMcNbJK+jE92G6jxz;6HYDeYyJ^3=b3@A#Z0u!K)R z0NTrFKMw-khwA;;&#dKRjD?HJEASym)l{K`Hh?y|Y3ll09Z?>~g~J+`5_n+Uv0IPq zeT$zZ#e}7xT_fzSiV#nA=2)m9Yd}-1Pfl%8)9uI3{$Ajv#m1GGJeYmJHSTiO7RfCSda}hRo3F%{cM3}B za*vBB<7gjhopV~PGvGSS9qtM9^%}FO3@|;$`O!;b zCr=s83U5E~@zWy~)@ZN4+C4ox>CqQUd=3V%PuY%#PQRx;HhlepiU-9vcChfuyrIPG zn6OiOL@5Ur+du|h0#*iNH1v%FjtDaT@nz0vnVaYq?Ht$LX}8K%94Shn2>7@2St;ci z?Gg4S$%I-wuWwU}ri{ZrY!x2S4az;7?jSP2DmW}1DIt)X(_P_`f>?t+W$Zu?=I+jw zaXtMao&E3^o~vsATuwr3Rj{=H0zlZZ>#B6E2p)8dBwA{x0lo`rI2tN9suQIOr_f@YgSn%4aXTI$8iPw|~Q&+C4msI;Z>|HJTI)oYTsjKjK}=hBcFwI*o`6s={y-EsKOKm>m{3r z2wujGc6<^$;w&l@;QgX-{0lc^IV2^AdBKYFXA@Xwl0{$KI8_ zboh(`i;9XC4VYzrN$T1Byf|c8@BVY2LE4(Rd6`Xv^XC>8&db-19LMaP3x;_=>(WMd)2xulmVmQeliqlb+uoGj3>*A|!ImVL`a;TaRT%N)rU5v+$a1V~y zdr%h6H4D=AqDhmAiY8CK_96Zh;RgkoKgloQm!$G*C?JTeeR$S}f@EuzU#g`2_NLSD~2iVA*uel0W7YxRL`>;^-~RR+xdhK^V4EScECI!US|M zjzv)gWXz^yS`HnAU{3@(Y)x(eY%uyj6VCp^%FSD6HZFx5xUf%hKT}cX`gbm+WG1D{ zhxRo1ui1Uag0$=cb9iY)J{xLG%I=GH+Uw-gnup;&KEG0UJ8`BB#39(-Z&Vot0r5hF zD3u`HnDiDw9&iwkn=CbHvuB(ws(WlyRGj+0{arD7ZFp>Kc(>SCkOg$P4|KT*x_JF1 zT@0>DAt<0zsCOu;1wP3|7qg{t7&m1X;y@Z*6$4MOKe%u!V_O$4-n40Pzsz3!b2Bs1 z|D~SG_U>Ei*|>l1=wi8&s||AsC(=818T)N@jf?85(l;-5 z@0nL-F_-u1(_21#aG}Sty&0@q^H*tka|b+EICg*sO({O7PHTtIXI~+Uuc%})NFnnw z-V8!OVRc8RS?I) zKMPH6FeYrE#oyY-9BF0g*;ILM4Uho`Z%{MzR-`oF5i&S^QGDkSeJdt!sfbJS6gQ3< z*k$ufb(hsPHZFPQVt7pR=S74Chr;QdKM#!)qXlM90s0&sqbsLh}jq^AYufHrw8x+pe9q zQhUSGyC)fqHG7_xPm3|yQP@f=?eE~7Z{wYx;+?JbPIsV8$Q@b=$%+KX3i^cAm&6u6 znPBns^Ye3Rp_G?H^0(RyR)5L9ylU)`qxT)2FyYX>cdH*9Iih{9{pa3$SupdZ`D;(K zzpqVfSp%P~L-%qSr;f%b*=39rK1P%@kj5xTn;2>-58XJsQ*uS8&db($=YGfT&M9E1 z27L;bkF|s;)1e7e(Kwy+gj1M!Zy45nC~|Xhxfp^C#NSGiZzQl^iAi9;A^fg@oYpto zM5a{Ou&~+lOsRYfQ;2;bG)vVFo4}z!9Nlgov5KX~3>UYs%<&BFeE>ahy%fuwaPnD84gK88$V=$*;HLT zY~soVqagbvodTLT)jLn>2NoYsPa2D>> zF)7nYVvNH4c98OV5u{CmjM6Fx%`*qp7Lyb?l7W=0scuGALH*)Qn;Ua`XZFj@?DhB2 zDVgQA5^p1Dn3-7AM#HQ=`5{hldN|wX0Y=?x0~;%*yjR1#MkLXt9hL zofM2AAwX6z8L?;bpdkX{NQm)4@_l0^Wm>8MyD&1R7~WlfK*C)7(O?jw=h0mie8q@UF3K^qW-s{19Ct7n`?3&U?`CcgW)rPG3Jxie^^q zha$X+92nE8=Q(6?%vGVB&UU7xsGO6~q1zBR!AQ6-023f8N+Fw0j zap|BXMYqq)?bWU6oKOGM+`hoi6&glOH#J?D8#i)IY5#`&xtlE`>$Si8bsm<}Yhd;8 zcxdTu?F>Vc0^UU=z;K z9Caig3`7S0ZegOLA~pelPg3TPK@{;lCft!bxC2>`n5&iSpQ<9Mz~WQx4uvb0PB;@1 z;{eVSn$sN&6;Kql38VKXg>m>p7o2%(2@kb(vC+Ytumh<=2n(STiuiy#5AY^?5Ltyt z_rgvJzqdpPSjZ#X4q@M$xh%SWx3cJ4GpZ)7T{~$)hH?4fv9amC*1)$Q(^Il`1hg8vCxCQg`q`?Ra1h)a_6wzrkI69f)Fh%r7 zM1P!OKO(i{?$)ZFRas@e9%a*h>;g9@wfiB+ zB~KY%5j>r%%FPI&mdhm=ECz!u7fz^bn`nYG?EZfKt)hu9qT~%En?P)^7ewva_w0WT z?eDYM@QRj{aR0~JLtkax4=X0KkCRW^zkyu+7yQKxLcD$4MhMBxU-5SS7wue!gUH+L z-B?u}_z+OIy@8q>2)^1nZR#c^YOXj;3r7j`djQ^d74P#D5;*s@8WpnE;fQfv7y|=^ zU=IP4+}M8H9pG?0k4_c(+x-;HWD|RnRZ4S4=UJ+X?md+@7SE zjxO!GdA5276jSXiE1jDOTr*_%=0>#T6#DBXIIIN7Da!kM6X_FS|H!o8I>ZFiwvt`m z?#4`8w`yN*HmF(?YeJWoX)CF_;C%;C#{tyQS+EF&oT_~wdD0orP!P}wxLhCtP|Dhl z?6{WjE+PKDl+#e?%sRI!vvk@#H{$ASFvt`Lr4|brvHH3L*J}UUl+8?@x_D$NPUPL{ zr6lg3XG=`6&QsRDB@U||I;w|%NqoF-FE684u5WyF_?-9%E5t(3#+iS?&{)tO= zZYwCr>z1Jw5A7B)w!HVSu$Sd;&6$aLWFke~$K|8it?K8Xlq1dy71GEz@#M@309X3# zz!7Z{&(bW_(2+Rh7QYy?9}a}=qPGHMaO`A3pbNwr*i`jAFW`1uZnj@bDHynDNzLRn z>)c0|CHI;5C&WZG)2 z5A#AU@iW@5SoAe)=-hGIz0@bMxe0vwSPFBmF{!*ac3&)5(-Xj@`Le#j-8=P zqU$B>Vw9q&8);|=&A=`O*92NsNuLtn2S_spfrB57qUtt}KPZO1D+HN6yLIgx5fTBO zuiFX{BI&YsIc$Y|!-5jajnvnfHtMG?TQWVlIM{7Pl$+$`*WENCG__zrL}YOe%x1@K zpKn}oG$x{-wm4g!;2{qg($M#kk2p6l^wdh=SZ&J*# za{+gRy$SoU0OK!2P~C8in`G@|HP|2sjEW-y&Ea7o!M;9T9%SxpHOg?~v?K8lKTZd@ z?sTM}b}rqt6ekA5{vpm|g2!t}s?aoITqslB47^ht^tU^p~!bVhlw zsU~;YJpaIdi?5c~CD{)Jg!DU7{>YkR7PvdL+?JDxI9916R_Q@DTmgNgWg&JX| za4+xQ!7$dPo6@a|($vWlGKL}0AO|*u1P4h0CO1=nTa%xUyJYlW9!Ay#?kHi3cNMyI z>DsN{iz(jBAS;IY&MYvLnF0b$^}fu_A4T0fU>+wG7aIpHQYMwpm^P(;^2G7A)nlth zS5^!kHl%FOz>?y^f;^o2o7KBl&-B#fq{R5x?$LlZo4ffz-=+Wggd^)H=PmkSgv98; zQxE{mS-q88NFi&x{9=xSRh{>AlWIrLDeX!!XAS(F_S!kDp=SJ?*(^RIEzbVvTsCL? z_&E&;>1lDE4Qx(L?c9d=jMO;!@SNG>$IqQZg*@k=O!eHE422SZe_}RksKp)ph*#a_ zHjE$N&=8lAn$Y|W6{~5OnV6QIpglEo>eQjp**Wsnq4o7cV|w?w_I~;FsY7jjbEWt6 zD_Pe*(697mm&@zx%cJ{bN0m*X&pzU3bitODEf{|f)oKy{^&CVdH}EEZtmUrYqc)*} zk1^noT>t@yGKY5!@$_(mUl3agoX1kPPBf;N)ErbLO$O^}h1${P1YonbcR+9ej(GR> z_xAVofz?bOkH|D7P>D>-z=Ihn{)&H!2_YfSdlXw*q>0%gO$ZUm@HbqWs-0wGm0z?& z-fXaT=kqmwx7(G%TRj&K_gq|4$ad7SqW-@xDP%F@#eF++pP$I?ZmiAQ;90Q2z0vN@ z;%c==e`VF3AaY~N9HJfkXhNqu3a*9qdvQW1X(TJ^r@dWGbDT97LH`a{G$_sUbq+>{ z$aVp{6eS1n0o<7w5Oyy-LYNCZUO%+84Bv^{7s(01T}ekqT>m_dZiGkAM@9l7nxGOO zJZWZI$|v^sPm9s)loGz|$~3)g6-sc+DCEEh6dX7LFi6@%iJJqjg+gKtnbX8_3(ndK zSCBQCPkFLsI2;0$un+TIwOX4iA}ZErrB3KMbLDM)5_+#YF+WP#-#s`WyncF=PkN8u zy?LF$xS6yuDuPag&U^-Rf>MG29Ne7m#|#cXhb=9|VA9-=Jt<`=roZ2^lR^t2lWxbe z8~C#!{8?`_6BCO+9MJkOv@KhTw&CcIKJt^wM}NeKiT${Mi&;z=OO~ z451G1sQ?Qh7av?PC=Y`uCK9PH6ytVjQ8iDMtv9yoL=u{bhz z^5Db~>vydhvnavRTiL&+Tc9bnN4if`?cAi!ew4lpZJ8_|Zpl+GV^{lBpA%$!PlM_~ zAz_g_r$(TUe8czLa|1clHO4kQrgRkVT zbT=}0ya=zL(-g4<_U-s#Zk4DIa72p&W{M|n_6C?5U=Bxb5dUEg2XiE+jGh*pPnW!a(u<{TV{)e zQY=x2aFAq5GCY~|5g4%0%WLw)?$KA}&q@mV%sX)S|Jl2p9z?VnhGOnBci2)e?A)(O zeiua|Umj&=;$vY+OC{Wgo>!0+T)i3{J7Kby{Mq3H^ZFE&5c`oo6E}0Z_zE@p>?A=d zl)#%e(1!vbCCs33ehWl{)1L61WM+k*j%bJ@mr(>qsKVod*h&W}4IPp)5+PSkax(L+ zQ{HgW)Po^xT5sD4N82W}Yg-32fWL|hc;TEp5P=YufVL6CARi(Lfv~)x2=~rW+uF!Q znJ;c67d5YyWUPv}Pp6wp`z|@!H@U5SI-LHxxrIfJCJ^z=PU2yxuwrreAKZ^vZ?4n} z=+p`RVBbz?rh|gU4k?&{jm}BI#pXArxDZf#18>x6_@$$bQ`)uhMjBEZbt0ObL_{`E zv=M=U3am)&sc7m1_oCj$HcC>Gsv9Xu&1|LQA@iG4of8m*bhJ~zJe+2j0xyw87(wmK zDIrk+BSzR6(H$0jS(pN|zCkroA|*FB&KKQ~g40cPD-R4rHWPT-!o#}4&g|z4_rALk z(UC#`3-D}hlg^KH`3iC_IbB)1#m&yAR}JU_#o{(;)UaN|3oR*b>!h*TGmbT{u8WIH zHji(Nj~hODfmY>U0G!T$-hKnM-yj&>490rFO;z0})2oX1t8Qv}5ZWK!t!rpVaG)i~ z@;_+5)P99`*!~$<_T48=_PVb54jv#eU!@bgDs~J#;b0toRb3Dx;ed8airJFH8iNdL z8NyZw3gZfd@%1qxTOc2JS~Spabs$B6N_a2lcgcJ6^bfQ{X#)nNr4AS%_HcYrUT1Nd zZ*eNFrKT1;KU-Ry?Gjb>3tAn*9Qlf5HpF6%gbQ&unI%MJ_=FH)UWpHbTH|T-kW_f)C3-*6SH+_=m5*wv^AoiQO96tToEw>Y zTMgzGYNqous74Bu)!9eetYL;;<>kG44H=@il~Ve>jC8{IjFRnA0O(~D%>11<#Fd-< zTnrv*h?RgPh}mAYU({aRB*Rh`pnc=^0LatsU5@qHJI(03ajNE3vfpw#=Y&T!4gfj)$t_({ul z<#=0rkS(pl_DDFck+)}hKwN&(^29jhxM}vLwQ+-n9EJf;cu*TFh6#y+pWu*w2)iCm zqP_t5U#oluxDLs$axDR1WO(q+R0Kj|(@o1D`W;XB0TSaIVRk}d{GA7lSP={bPzt2= z2N$Jv@18b1e3JOYtVV6@jIP#*E}te=i2FyCqkY4)L81|F@pEz&V1NKJ@HW7-)=@A# z3{ZZ|ul*V)!dVb&m7P3a`-y)m0a+NcD@Y>NC*WW4&KE8Vy;0 zl$Iw2wA4rj_w9o4TcIxN|5m8S_dws0S{Ae<$>+gKyYcxDKvqGD+~7fh5OMgab;M^R zI4NJX*K8K|$>)E6OyPDac5NmyjJ<(;5r6IZgyt^GrO#BK-%hK8PzCDGlb_aF)M9d+ z>uZ2xk;&2ln=Eu&sQ%oE0K7I3LXKDur%Bu8PCG2J)3yyXGWnI7^TfyQ*0#$}vo%`d zufKA=sLnn?d$z>~yI;k%*MG|+x`+?|mgkInYW_y^)t*93u+1a0dF5|Ak$pSUe(JYf zdfeS_J5i3}?ta^)Kfs!Q&{S=G%O>dV*Tos33;zqTKlV?5WPj7tZ}w^nb-D$~cWA$> z39uOL*6Bu?h{+F-Tz(8B4iOCr@Ry|le0hUx9o`X(9k$?*4kED-ut?6lPzpt%FeUKe z>w>uyQW&5k_%b0F$!>{3QxaL1t&qESq1QTat>gqwCYz}#K-ElPi2=Q)^bEHmeCw9# zxB^R7eKO2Zy|%BEfABO;&93w6lVF&+Gu(ep_L$y@p0l=~<5IJS+^BtTSPQ$18J=l} zcZS4sBY;(q7$uSz+hkz^xB~Exl#<-}00W7ts63+wk1%U>{+kGtql>(45oR|_*tj?EZ0BsDrs+h3T|x40;$Z&4vn-_f^7z0GUp)`a-p3GOp?A}CGU zkyKoml9Hb<4o)g6NJ-7lhwVB`{;MT=TNP}EIJa?%fUp1$0CrT$ zFNOYjco=FSv3VGVkm=O|{ToOl{NIOA>RcuOfgSyEiI@xQ@Tzv(E_7yaQF`h-591)av$!CQe(gJ?lu5z7 zC0hPu|6Y5c<$1`aju;^35(8u(QM+c%gthBx*R8HuXa8}+>U9%uT{C{&y79Mi`h8)) zr2T;ST7!GfW^S?sP3`teEk=H=SMxfMndpoVTjYX1kF0OKu04-S2KNm6$8-<$gbc@u zxD59f>{4`mNI4AiWY;^Gu8smVvVRJKx=(5MZ=ss; zTC?Joar(FFCiZMjQc6xvN>Yw?JUcZxJ3Be0ul7wvW3QVc+TWmxUQ*7o^y+M4Wtsmo4kuRYMxVh_}Y zix0Q##+rYy<;UMHIAo^_t!v&Y-!49iN0!X;UEzIV#T@Nx?S1WE*Txi2m*2IFUl-7&i+_4n%#=mU zAKx<2H@j874Roe_uF-tW{ZZaL=b*Oc&U54<6Q4U1x$C|4>)+cMbvE^B7WViB7WR~U zn{{|r)^O{P9b?Aq0NGGi7yDb%1ngr*J)Zp>x$p_=qR%++ebv99ulx(<`?bgA?JWaUn)zgxyGZjyk8895NF~8E3k46h<4Re@)=36h zewsinv_IguOHLAJ3I(YgB_P=Xx6!@`IVbDKS2ly z4)AM@W->UX5q~Q)I8A{NpoS(llJ-?7XXUYKcC;Y`DDgkLhD(8Lsqk`QH5Ov&>KX&#B_vzC}fSbBpaw1&(xj zGN_}ynL(zRq=JGSsfGFJ$@v9DAJ+U|`#-g^mivILcktEZU}TAa`xI-P_#Lakx@P4) z5-g%)j1=9?3$sLE0N}X%(`1N>Lc8DrCSVswH1Y4`+H3xA{FLOp{Meq|6Z$0J|4aNP zZeRuGfY8tYb3vgs5cY!pUDtIE?HwIv_VsjgbN37Zvc|*B&D&#`F(ck=Qe-mK$_7){ zkZ@0fhZE;oBwAyBbbz8G6&iNziugJ+lkU!Avv?=ZK!Vyug~d62eVw`qSsR( zhe$z3?ct7TW&kmpw~5B5pIxO)*sHy{Rd0V4-WTEeK0Mz(sSu6RjqjtxJ%;A0XGKX{ zv5K0vmtM%4JK=px@jf>pneQz&BX~RvnizI6J>UcJNzfM@jl2%3g+6CcLk-QBUiohH z1eUV-%#tR0`+)=6o5zmf{pEQ7#sA;$_cv3x486a6BTE}s{p~AP)+}><|F!<|%R;#F zIk=vazF3&#hXQf}|HutRQy1_i4$X0f1Nxh}B&b8{($mc0_JuK9NA5UrhUE+%)K~IS zin6ozF3A`+ECVt}nEZ0fZ@i9lPNP_2j(Q!S63=!fz@P@+JA?^dbRaP_EHc!(S^}`+ z>7phqwc3NDw#M3*N$$A=2j)EZfc$cH);_9h2`O8wd5L^Ts#U(j9&F|H1v{`Wh*hWY zAVVcmTR07s{z{-Bk`OHEQrw&NarUvVN!^w2elX>|@kU+dKb3*aeh zU=uP3qo`h8i0GAhqV9P#Rzx6n$KzeE&E!YfIK&Y_uU8B4#7)=Hr_cH0YVfnM0+1sR|N)3Ddsx2 zkn%II^#garRzEgc)pWBWNZJ!+u_8aHBWX{HL5DVQF;G8Rlh~lmUbw5Kdw%DrzFC&8 zX&wue=(4^U<0|6f%aSMLTnz~b508wEOs>w3iV6!&Ko|IYXw+Un-YcuHm-=wlgwZQ0 zIT?a>cLn?xK3B{_#1e9J0>S(wr0;|XOb8G62{yoA|ZbvW21%? zm4$klJNJ$WE15iYK=F_O-w63%{kx?~wQStT;t3_gyIXokSfq)prnGo;d2Xsrr^PCH znf4DuqhJyG@$t;)hCMkPUB}^d-msj5`(1B#z=q8s4>&ZI4#=}Gi&F`K^N|b?9Eb=1 ziNS^wICMh+EmacU?aTYlDK1?;=$8BDovMoOyL$A9{(XlQ_U;oE(m7w*mN03^z`411 zZQk|p_~2Oqd21KejxXt3lN&Z+0OBp>@O$@0U>>Y2)?l3=P%00Cl2{OEH*<13@m)|7y^Tu4{lB$J$2#2sS`5X*YwHg*}KdVA)l6lw96TLmw7Ba z*gtjR=wgr3s^VuMV2QwxAJPu0pTJk$#c2aYw4#J8F@(@|K+n)z3?0xZ3PgoUvLg~k zMIp~%Xy>3nZ!hj01cad#aSuN<&!B11li2d$BLJ%SE@a=ksF6)l^0P)K7j&62Y$Y(1R9W*B7WKwf)& zI!B^;l01uqejR&=2wy@~SJ0;d#VT`1vi+9cb0pq4jo+t{&eL4}{iWDE$g^q^Sae(b`mWG6g5ne)+qqYq;+uTq3Fyboad z2I#kL1{;9jQJ$g#I22Rp1f&p51p_)p!eKg;B>>&{)*vAEABO=OE3l^_hYGONZWs+W zvakbqLPxY2jnX(lGD>jO^rQzdWPHcKv5ZZB^-&yfl$_{~R8dLz{WH$N7l`y;ZmKn4Yn@3CEYxiP~`XVyQVU_bC$&;1(0w#$f zw03}xB=;;yUm{6eA}jaz3kmk?=HD$6hkQC92^mfvLeX%vbo`x5hsSU=k6xCGtPz{H zG$zG1zTK~PCeIv^@M7tFJ$1y=J)NFpwowDxvPV$+PD&TFGwP>Uq@lv?G`f1)0wk`G z1v*R*BM3E*cm}RWE>|4+4Z2Yh1F#5;BMl}3;uzA_K!_Bbo;M44FESBh(Op*z+b$K7 zL?jCTJ3Sh4ob#o0quhxeYRVXR4p-xec_-Qqc9e z4PKVc^Yw@`V)j=Sgv~6eTu>LgrFgAaruQ?bi%9=Q@!avI2;2zw`lAwN?s4uJT-R-l-PcX>SML8xe z5jO5PmoM6cl1yCRbhjtcSwOh~bYb~{1%5Cwt4 zrz{@`WnesUHbM31d{emw4mp`JB_dBifK%vVm|Nh>oW=1hA2vS0nnx_PY>G*aN%Gn{ zr&G@+{X1LuzKweBQSi`$^&8;O%yIls@B=g>2Y)h_9dnZ!0Qd#A zO*XnwK-OQ%^piqQVo;j?CyxS4?0CwV^XHGAz9IXMUsmsow4}sHD`0Ds1gODpnL{V7Tr_eBvI9-7S#EIOF+rft@)Zp+6;C3i;PI8a9?okopVXhf;+?_BJ+NJf5 zfi<+xpyTh_VOI;-;YC}wE^6Goxv^hnX1{)!y=TNnMI^*WM#VR?*eF{}4E54A)lM6; z6iaUCq11dDu~gg9KVNv$V{|>~oSr&PUzrwk(}=h#MMXvsbP*m4-cPa+v}WS5wiSZx zbd#JsIi5I6!pbq=t*&Q%@M+aT=pJc9`si3&WOw;TtIai&k9fkhyBJuq)!I$+HtjXwP7Lk^%?qV(bsvEAtRglG3`KP3xw)|U^GBkJyauM6a^2}fG{Nh{cGV3H>x-Ff44dD32WeRg&R7& z+WhRcrg3oLr$zSMxq58BvZ6Gcm(zCXmT~>c>5}$|Vb~n2HO}fje1_E$ry0u|EY<|8 z`>^R2E2X%D?{cQRx24Lk0(6bN_A?|`?pqN{9ds41nc>?!*zy=8CvT@E!UG_5syKWdjwAL-iVzEj$J_DgG~ zOj&(?;zR5W?em-*7OIgFO>x4XwDdN-gE8%%V*{X@yp|5L3Rb8ic``YX$hw03Kf#C~ zjAe8pf~yPDWS{2t&x#K}ta#ISzwwQV4=#;-!zh1pb>;SX4ZBwTa&^`14YO}w$0zQt``yOLEzOVEVe}->ORlnu_h4b?FVl3qyR=)}$ zf5GSYJ(U0cx&$vkY@8szAZ@_Japn<)^z|3wswt;mim&*BefPH)E=U{f$#@qaHsV>l z%g`48fZdydHc=BDApz+QK`?q&((6)w;&qU1e8scc>F>T1qc3Q?qzxLGwO}*z1t#|* z{4j(q4W+#N0?r>H20Gb*bFcC48ccmwB@7A-=Q3+;amuI`CnbvmN2XM4T}8tr%v2F$HrLGly&~Wc>riS+@;I zRpKC+L2#rF9S?(IlCKH_IS*oWX{i`ye}#oQz^Mjl{d)UXuIE2HX`|N@O4$$LNziLD z$_A3*Y6w-0%Kjj;AXVz`QmHHcR$69%x$t@jE^o-UPNFzJ{~wGM(kyi_R(l_Rd+klf z3Zz}9n5A?>79R^vBanns2NGI6TFu6RXl#V=XEbunzUWFLa_zDIrk9qc18%K_5gwax z%5d~8FG))+DM=+1w*HCQMBx>=S<1wG4nX8$pPXI@G++kc$B_^MSymv3O@f^27&kfu z7*Pkofe1=$k0mETfb39Y8*CqKK+eYXZJ6=lJx3HcVhmoRN!=VDpJJJ`G$DROeIpy8 zdm^3lXgmzWgnaLt(}(=xtki(5no$Zc#w4s*vj=mG8l zco_Na-J!3wVwZ0=t=NaR-TKrI=YE)f!_*po^r#V`+iphtM(4zGeu957Uv+|Xk@LqN zF>steN-q4-aeo2$Cz-HscAxm`*B#w=u3O;TIsbI2@B5C*JI4~`f8b-ArK;jk!!KN) z#A){+9+&VafC;h3C(5=+Cc&M zTBVXytE5%BlT>c0RPNec>Q*V+`~7>K>;2x0^yj`m{~nLum&bGGT-Q10^?F_BI@k3+ z|F6OGhYZaaG$>=}kokjihDJpVHDC&w{d4vy_bnKtH6wCn;%AM0Jj`3i;v+4zL98cR ze>BHT_V>JRU&q7jSAP?~6K3qYtzBmyb0`)JZwVV82dLn(^Fsn=#8U{dYNky?4N5ATvZ3CNcZ&jyziaH zZ%;u*onMCg!-rRg&+)YNhI{h~AAIHq?>~Iu-hcS(Q>vn$r<3QjcN2G(J&a9ruqlHV zrt77~uu4_$g}q1oIYTPGkaLDq*uz*=%^B{eU)bT<=;@^9cy2v*%#K#E z@6y=5<_7xux0sXR>;0;37MQ+Cf9t1F!@3vOyVxxIVo;3rh5_vC%=6*j{LL&}XkYc4 zWjfsNFL<FUaqEm^|?pI3a)@MQQ4Dovt4cJw`&}0&;1`^o`$Nq|Hd?) zTYI8;qspGslWt(%|FIYR^Zs8vf1Qyz_KdY&^p3#>=I8osU>>!9emV7vyLes#eDyR_ zCTLsS=DERsUcRZg?zhj2q&h0qlfA&w74-xWw%)cB;!JV!7v4&sdp* zjv(PXN2XCpZQJNDwbQe$NGg7&xbV1{B`!gV?|(M#WKk@9%|i5;?_Xb3aM!yVl?rNI zzxiO#*ry&+wLCvRsGP-ax9{GL=5vl?z0WZ>F)X%~+2h1ttw-588%&0Ex39$+Rp0c! zMIo6h>QOoR0TorJnLCgXsjG*2eu~$#odFZ4bI)=e*`7|!?J;xUnOJAP_kQKvV`jb& z^W)9TY!ha_h-2>Y3g*st^p@Cj<}d!`Hve;N=FHpS@``5#?}b*pGx=@$ZMi+O-_^-` zgX=58-T1%qrFVVhf9~~}x19&Q^W01AcRIOh#`?_a^uI8di8hU8ro+L8imR;qE3R_Q zzvmtmc+Wk??j%o3Pnh>n?2f5){j$$*_r7YoFRk38;=RvO){C*bi9ftaRd~him4`e< z-ggPVt>TJbx|(pFg|2?PRYjO*y*Jytg4$A_*q(F(^05aeU*+UYZ9d_^F>hZpTu&{| z-j0Ngz|3xnZ2iC*ou;aZ{pM)H=BKVkc1@{?`F-`hjvEDgYAwi#iCd_0=Uz8>@O5)m zE{u!G@vP78-+#`{qeiWq+rR%3W!@RH)Naoq{Q!CU?U~IL+kDqhv90tB6sL#AnS>c_>JR0+R`(L;>_9yH-+u01%`S8O$ zM-`_WpLjlWz5Y9MkCW5#@@B2hyL!!@bm$t;@}KO`Dr02R9^#V3kXV84Rx;1ZQ00yq%{THf*J8cFRS+ zsv3Gu>>Ju|z~CX5#tbntHJFlB5j8ZvTlC<;#+Fpa*H&|PAG>~f(^J06sc!(OrP)i= zr=2%mF5{pUqjC<1y-wU=4`!PwX!e&?SdC#8k30Bq5Q%)Y|5Ib(@!BZ&xXOdjOyF8T*hBvqf@9%aE2W_$b2JPayf* zzrS0xWLFcny3jJbrW@aS$#LPOct&Z3 zlrbdERE6V)WDHt1B&z$+q1~f~sC#WYAEnJT*&SoIZX#q@Y#ePad)cmKM&sF z{&X?#?=`@Fug!DeMwvdp-FR*TEq*x59$Eg#w0oaR+3{Zs-zp2UpHp9Zl6C05_N3|W zb8%V!P3=iD5BkEU53EFUjn<@gucrRYd&4zB&vJiZzc=Xnu)8Bn*Dswx_A7%=+nKir zlg+9paGLGt?Vgw#eYi@k|L85xn!$ZyVq;_a4RlRVPR|+Dvdf^sog)VgM&4A%hk8Hl z=z8n{l;V3oHRThZzOEtBc2)9fejjM%@{Vd_>YWVFF%#!(9L)8tmi5&;8Hfww2?}Z$ z#D=_QtMF!~irqA;YFyAXvrNBH&4shuP2>8*%W}sKnlNDyi)Ym$U)$O=4nEW``|X_M zv$F{uZp<-YSpIx7TVtk!4qVKvj`ABT+4~&>S+-QQwAT#Y|HeYIOn&X*|)UU zb>E&t=UZs**Hp(5{jNKXd<>IppM9-OA!6broyh^NI+zpSm?hfmBQ0lhv~#to7mQtP zwVjM+QA_i7YRyhzAO~Sq*MR_1Nvfw-Vgmk;1eA`E7Y~ z58Y)KvL)KKrJ>wdoiAn{1Di%MVrnh$XAgza-UQBF zNcFXRXiDtVEMJMGav;w-?o~I~eKCL3kHZ_34+&Y%zS@K6*`8c}8u+bP<+{!48Sn&s z2`8)S88!RM{QXyKPg|#*9e=myaox%L5%tusCHR-U{<`|!s=BzWutus~4#so;$~QmV zZC0or>zg?G(s#zap)KuC>#mwL%vn>ByoQjf-l?kJ278*I>7lCnR7q5?s3xivGS@d* z?|IV*K6%n7+T2&`m@1*oUR&DPy;T?N@2V}e8(IEo=&Flu&q~O~4cLdPL9eJfwGX-i zd)2p&MLzJt#Kf@$wBxW@$#UfGvfKSN*8QK;_UFB2R_`>dZvQWzF(#)|G|m63KaRg_ z@EucLG;(tIzE&4^J!vKbZ2O|?m@XyrJqcD)IC$CfE6EfE#_p=x&($L(&7@hoR!ytF zD$&s2JxKqc*>IPZsDA>P%bjCAp1)|zn8k}p#j(?d4+wC6x9t9zPi8E?>z&r$ zsHMX)1}slqIkX4b&aufq7sUQ*5>r61Ow7+DaU5o~LREF18A{q39bUg(>+0#M>`rK2 z(acYwVb311=IdYn9!#rCNkIP*(+4ygF=E&oix*#ZfA)sQo!>{g&CSR@L9`YU#OBJz$sZKWsm9 zt^RMo{+nx2eVtH^+SzMSRg3XUmW=PvqelnF<>{ASu^>(L=@j0R>#JIW=`w9#bj|WO zRekRR|Hkz=eb;j(n;+h5?w>xhhdC!#Fz2MDRL^RqZ=N4C^Md6^mo3@Y(2XgN$}!WN zvaX`KV0MTa-MUrF7PP?{G;GAKes!w0os4SKs(mYan_YVgKKt{!=GJo5iv!iG&6z#x zRlh<#uyD$PRnY_M-xAn!z^W!I*6WeOnZNV>_dmF2WR4#{q}!WswjVuy{LsiZRd3T- z)7F}*|H;}rH@!Ku;4e}XEJ_)RS`JCcG1D@|%%DuH6~J8epjttsans4{ zHeX5OSG7(1Htt?gED&kWtlPHVeR}%EZslE*^Hr0udUZn^qh@~P`Xx(#u=*|=IOvAH zCZ7YnWsXPKzLdSheQP|Lv{y|ERymriik{;9m@!o1gzFvpHLD|W{^1SqvroD1e_}V*Be9J)i=6gf-l51tHn>tL5 zznes{dpu?cr#s%O{#tso_k*>3wCe1vN>2J5{8J?MPp*~C78_bo)^c@J6FS{Hf7)qSGY$fSuSKR)riUzfSg?PLevq&Gi0CY#JOJKc&g z(E34^+x$qI4J=jAhfdXbG`UQC_s^(({+%RfD+U0Gd$9GD)bji5bYbLatthUA`&hFHy>%cyf zQq5Pjn5FG~&#~OGhPl4Hsw+cu_sIJ!Be@I17NZDAhf)+X1i6w~w7 z$}$DOKcLR_MNxXp=zPHu^~Dj#l!_Fq@XQvkmoKz3I^me2+v%OCb=R5g?O^vru?W)N z6UFzOb$8XzIUZXmXB0~!{>~a%`~BMQHRt$>zgul=8#}5|D%V*|KPvsg^rJH2@pt=$ z!+ib1G@|T@jdr(i&mMbARrU=%I|Mers9RTOamD_%g>|-S$ECv%&pR~5`?YJSBVF2Q z^wC>5$`MYFS*<5n&*&|(YbZ)$z4tNhy@{CuX7tT2Xl#E;*A!Jfx~r=8v0+r4NmPo2{e~TL|9<$+leet-v2f};_usO5Ytd~K zk%lY2yyN!c%S=(@S4O?%{042TDvIrJcBp@p$sW__HJ|vSqx$?&|0rH1G&C>1)2@+~O@@-DE)#_`Re&C zeX&%|??sF4P!+>G=48MPXJew-*VMKpoBBQ@+f5srD)iY_;00USHJSi58{GA12DDwX zCYNTwIn8cgQ-Hg0)bWFLm3u0EpMNxOq~{;Z8)3gTGvritUs~1hn=w;;%o!o4qpGkCNk?s*li!s$LzJp@y+(J5T88_IbL<%@h$doCr7zz?`oo4wbxpe{$A%w`&l`6eY5GO;f9$m z8Y<)d(n{Yh4-DNUte`YMp=al)^rAg!rainzTe8NAW+ht~I}Q5Nwu+e}Wm=@yy!!bX z2CkZWK1bzWPiyji%bL$$t4d1RQS1{{oBBlqX&c*`ZU$;W_1xNQ5yel7d0$R7KP_h$ zsQGTIJz!^lDw3DBich=s^7v2UuN>X1Q-l7kQazW=Oo?CCJ*e|!dvTiC8A^G-;k)fa z^$F%7b&3sdO67$;+|Q0n@odq4^yz9G99T#AET4l0g6R@$*Pr)Gu&!%WZ$))1El-VK z^WgS1Nu#F}Y%iEnV@ImtX-O02Z2Iudy`GAP=3F+ar+;fI-f!q1!mnvFqu+d4rs?nL zZ`80(ZSyS@qu;*T{toolbyTZYJ<`^u-n;YO)X`&eHY^{*RX4n}mAxOrV1aU@xx!S{}3eR??_L@mD2Y(z%}5eQQEm%FwLnpopZHg!;AY-M5%l zz`d-c0{I>0UN*4rW&PjY%X$}?jW^9sU;ca9wno;f!D)Gy^;cb*jUE+U7xn2HBhHA4c^-NUfYnped ze`)As&xAE8FRokc+rmuwu1h`qKYCpwr;m)EvS!xe`>r0;YtY&2s`$#Oy?3}4QwJM5 zvbYXiFHQLQJ$H72U4vz<3!^gUPA>2T)cg{>i|Ir?m>t-o;wxRe-C4fQv+8RyjrFyy z)vMA-&*R1PhjkTGpQaDH(V2_%JO;%~z5O2Q?LA2M7whf!Y}&-HSH*jtx}NL3kCDzT zU0H|6(mQ+Qm)&MJ`!d_B6I>4Yeyzmqc-z3Ej| zKr@QpgLT6!=Ba$wj6Ln}gfG8ynTO_J#Rte*UoFdYco|t#jtyQ%3%+moQ8*lU+g1-dyZqucYzv8Aa4LR&3%q%IE&z9epR$KgYl zcWpjobf@7=V?}m%U0^M+`v1v2HGO2X;ksL~y1*VE<+fg{ThQ5CUH7ifD7S8*uid5k z?lQTo&RBIEx1Jkr)lp{-sh1BC-cLWE_gibYMpNIU4dY;vml>M2_Y`)>G|ePshgsl# z?)1H?4*TD9Z|iz}Qbx6C-a-{vDU&D-ik79mu zs{5n1P3XQjtgGWdZt6XqhxWR5=;EsU8uHiktD&7=zWRyTz^t4z?vh`As!R=jIN%tE^z@k=UWn z4{%FVO`HQ|+c}Ju2I%ZleeS5t$F4sk&5rY$Y-3G8AHJKh?SlLu!L?%%gzk4%~ek(yZVx!!^qoPp&0IhhsfVu-ZdutH@cp|&S$)b9JVV9oM*_3zX1Dg z&i^Yoe&XGP(NrF2+|4U;17A&K&N+1#lfgRvBUI zeBq9j2(?nBugLOI?DkHID|_pG(YV{A5Y&avH}mU2Je*_!;XB22csrtn_k*u`_g zemu5bXIJ9<6(Zz8C(plgfHZb?l3D*YyGYBm{2|liGG{Nf|C~7Gr27ht`#*`%aX!DY zuS|{KMOp|^zlZZ~=~d0!_&@X?Z{&CB3;f3YGqR<&iQ^u?yUMuNbFYuVhtQh5^QU)( zd)};y;|!JS{}Ns0dip-c{U1|MQ@?wxjH`*`2TA!qqyXJ+C~%a6acgofwi#aVyH&>* zaxZWluI|)r$}W6;wPs5SbGuS(x2`|VleqtPBz%yEJH3HyA3vzr7Pd|}=P90v@P zVLP4oVV~=Z%X-#DP~Zr_E{C@WilGeN_46cdxru}OAbbsP!!Lf!xiEN{IOF{CvN=8q zJI`YDc#F`pNPi%GOgO*Orw#bG`7vpZ8e1HTYU15??y)pB$9|iBAdS)Uf;qNwrLh&~ zz29nH6)pqyQQN>~pJ*{}Y!zd84YZ)2~D3 zBFX-%I6KSTj;)lZdnC%#HJ#&Sg=r@_SISa%Fm=#i>XhAZL#VGBXk)mOsI$<<2zUXg zuLeBLIocR*+8C~vyzBln4)R>#=vqYlpQ#VwIwwhMX9R5tY;nB9@6O}MJ1xBeI#IuJ zNT%HuS%h6TK&7c8lYT#buHUr{|8d$DvypQj_xCk0?tPqVhMYaPUvM28@Q0J8A8pKU zWD?)u-A21UEub52SLsdt*PJ)!=F`5M@A`<}sbAzeX8`(NN6+iD<4X7)O#R=%JY#lw zdyejed8MT!}x$`3i1T*oE9M`+fPJJfnX-O@++&{VwqvYyUoZAHiJ>i}_u8 z10Ja1zKZ`n!bah~4g7w2$3Pi8?(9$b&5|_Q(CyEC7kmFs`A*@TkYXMFkKa4LxhC#! zigP=^16T4}n2Y;Ah~s+(1K;F+tmQXhRW%OES2%UAKCX9pS2*SJ>UR+JGRJ;+0L;6q z4cGmcpZ9r2hGH`~%7EW0=W@T_9KVWu^2xayeZ7(UAbjUL?|2;d5a7BVgZJ@c6L}xZ zw>S$NUUYzafwZSBQb67KO4mEM%cP@YHg$`1`&^1^I(at}9q$6q2+wU7({{A$(wWl2 z@srH75+%a%xy*3xlCjRI(vwM}184(Ic7M!smMJ4?_w{lg;XHBe_Si)B=M9yPb{|w# zzuZBdZ`zl261hL0$*r!x$wST)vZ2-`$oNujb9_vnVO2k0N11Ppm8&Q}>kRh0BUTpB z@0CgZPvW<8KF`f0b`G0w{7w@;R&9h+%NCpE@{aW*?3XQ8Dcmhtx-M|79FI}oaPR&m zvnk87-S^7un#bx#=JkHT{hovEbL0VcJbCmn`Gvn4ep74uttj#~ig&_Mp3$T9k6cb! zyIekl*ZmyEHM|IK!mEDQgl~l{@SmjlyH!H|b(ZA@>i{-%l;zGC^o)_|?nK#9h2v)# z>p0G{TOwm!ZkgivMW#5L$rNjcEQJBqr!qoqm$BAbejDGR9K6HtcOLbHyJafR))wbv zp6f5=RqgQ}b%x1R&ZRt?w@9KjM23#vH_4hNNqVq^S?lfNOk~bg+r7V91I73= zo%M-p;$QCzH)(V-$K7PSu0uK#mLWYH&q-Hnl=QZ)l^)hGnPMV6z_mP%>p#{#>F4b!32-;0TB~I(V^!;L@A&`2HK^M?8CDA! zX@$vf-HPAjdNNegZ*A3=Wb0yRN8hx;DH&En8L1DzYcj~HM;iYzZQ1Ls2E0dGFfa3K zSqi<>_i`hoLKdw1U(xZ6jB*{7QSSXR(#?DpH}y5wEx6&5?AEyZsQ=xM|Da6ZJDQ{1 zk4c8RC24-ee<$Z3mJEIm2br*19Xa=dd{FzKd~ngz@_{=}+6MHJB=?taRED}=AfI;1 z4o6FQ822tFW@7lWFPJDg{B4)4B$X2{U@4%9`Q$FGpYyHR+**l~sV ziRNEGscfU~X=%U|ey2=-K7F2c-MNEoaBq?QwV#vyjWT6_mEXOENzc!*UrHwXU-|v6 zKJqIZ_4BJq!z?&Et#Ms{_wzFDZrNX}o6Yl8GXG5eZ{*d`Wpuk6$RT$lwJ4yA%rdy= z$_#k@H^bhnu)jXeO+{}z^@hoq%>(ah{#OqAE%CrIKN4nnh8)?&rL%$7=_*$O%+x@I| z43IkwI^!%=$Hukm*fqvIs*kJc&!*1(8oJ>^W5ss8-1HClVNCOVAJlWY@O$sS2FFUT zr)s>fdaTYrer4W2)%eHb?6ItxV^!ymLs9>?$BzDJoTzFniR-I5mQy`;Q*(^QKel4> z-8ygl)$w~{DZc(d(;lks6Fk2k-}IT={o)6_d$?bw58U(vucKdguMgXA`ljvvX9xG! z-xr)``hKhWZcRFy3-xQ7{!eordngZvwT27zC+cUtpV?)F@=`6cN_Gv`8RXYT|5nXD zt?Irjf1j1z$5hq7bb+xDY)avJ*XyUStGd6MHvVni7b&l6O_}{eJGdS@ocRoB*nM8~@tFP`bN{#x$)*im-F`OtL%Y>(t+}W64W*h1Y zZK-eF>RO`O+T#p&VgtuUk4bNbM@l61(o}=vb=AsG2(H0*d;k}yZ)`SDH+b3b7v3uy zYP?rAocCV2OE;I*4(lxDxC(RL^q1BCl6L`PM9vPf$aWpvpDW<}_8yWX(xmgAPqO8;lSORfzKnj* zUAS#czmDnOvFOLKifK2~_SU^<51-L2ZRQG?ce{Cynm%L3wB6G=w?P`a&HJ8rrkga>TMBB$k$#R`Z~A^szh~{;q%(c6 zRq3n7s_7r)oxja~KIxO?H>05D^J+h*{%6#F2bUlReKq^Os-Hjly68(Na82XB+(#ZJ zBWovZ(GNI|k#VMfj<#hN`}yYmYx1P3FW&S&+0VY|)8akwn|FbE&sDugYrGTecUu8v zqGjlzmRLqvGu47ai${A z^uwC>iLWp8Wm~tg0bIGfAA8YW0Pg9PCjZQQB-a}9@gx6z_=r3Ykf^|3+!NEsZSK{6 z=~avOps63&HgeC*@2l=C^URo~s}9^l`ALJ=W z;rI7(+U1`zMrOdTPs@Gu5iO*RG{p9!oA%FTY7FhCuV{A{^Bywcr&w!cm?wSp_w38M zSPsBDgwNm_X4b@dLY7#MnKjPL-7@ljrag8(Kg#ubh_~D-l7-fDJj3)YI=`XqdRnHt zcvsOLdlq(yRHot5@~U_lO5h>CzZqfO$i{GvABRI6(<-Y71x}y&6@J3cZ-LEyxcR^r z5i764{TGaYmw-v86@|bqi$;DW-^sAg=ipNB`vp0_vPQci9@v%8EOV?ha+woa!A#@| z;z_vLBZ*b$XC#ra?L<~dC$i=;QK!>h1k)Zh@LRQzRi)u}Tb4E`zgzW@K|53?`I(A) zDWnp1j}MPo0s1r~0r4st!Lx}qTyyAE9pLqeEB96&d^i_0(jbPHzbgf|d z+L^)70)IB_hCN`?nB!b9_qPztJ^m5Cg2}+l+KRVe0<-~BHtqy|+bj93S!EFZC?GG+ zw8G`S+P1x7J`!`kbx-Tl7tQ&y`YS*}OOI<-N%tD~gtj*H*%ro2g8 zXRH}B;dk{(;$5pAk&f(NnZo-%*8J|8u}1FSRK_okn&;{Fo+UPbWI-zTcPD+yhPE=w z8tVOqzQS13-@|XhXr16q(3fzG%l-Pwtiv$&k#Fyjr~Alr^Zb7xZpu-u%4lmVbMq;o zjL(a%q^{AMI`4JZjveUYAFVwf$B7jH5kQ!g2`s$ejVRVZ;Q4Yig&0VJEZ7Wtfwa_; zgxZHV^ixC&cIB-hCt#3mazmV z3pT@EIL^jM0V4GrK-zj?u#XMM2oEAWi17M^*N=ci$Q5ajA<~ez4T;;3c)=4P8w#Nm zu!C2RG$OoF3?u5va4a2P81%uzTb05&u& zfL(AziNEm4F;5f*h!B-#P# zkPjtL3drn%tR52~8w!E*Jx+-9OomJ_e)RT=2IBR~0QB}kb}!`iMsDwLNPtwx73mWO z@qoTQ=*}B02xpKyWofj zRRkFv2Jt|;!TC@EhehI$8Hda`WX5H|X4nhmP$4oT6ygB;hvY#q9E8&%Lqnhxux%*E z!#Exm0Wpvw67K+H#%~5>4o?*sfsG@2L$b)oFp&gwC+vn}fQ(Tg5DUZ|wF-)Wu*;Bj z* z$w1h2!lv(~I!*jk;-_*hm2;`YPbL1<#J`&GtI>7!36U9uUy}_5Pz0qwytDua1!Sis zLK@@%angvBb_7m|%nXDuK;O(H$bx)8=S=j>M9)m*%|hNRU-F6FDXh&zus^N2GKne&Qa z9~^_zA{jvt4GEA6*-!w;%RpWR@-mP&A9?eUHy?QmngZ^^2$4+EW=;gsWfqEDn*=A= zaC)!E^?9%rcEdp^7pmZZoGj91#fdBm1>D7)TY|jo5Sk*rfoofu37dfQOG&@yeYsaX!cSc_JHP#7 z2q50=nXn0V!!eON91so(kPL+1LE1aeeFwVlI4QCz0HR?cVBaQe+f)K&fUZpyB6kKu zB*a4sWI;Zl=T7w86$XUeh5WnFe^)W=1LWTw2k7418xkQ6a)5Z7iMRQH$UQM&+!G@A z20|nxL6*pUL4e%*b^vzYhfVikQz0@7iGP1C5OzQI-cQ*5gl!20(r+RCmd(Jq2SOkQ zl0~+L19`GF16DyHl)`C|ZN%Fa3yF{?@*wfH$1{8!2)p0_oDg}4_^pwbBO`$h%?s3vRJ`u3xacn6jelhWj2`k2?;v+zs zCjtT4PsBhnWI`Tnh23xv%IWrYKnO%b0w8xMa(8l#JF$N!HtfXyCxamZ;sAM1Wdm`Z z+6%;aia1XTVC&P75DzJk1^KW;>0a6d#jp>E|I%r?+KKyeIH2=oY!7WrEU!~(~E zD;Igs0lP&GBJX`{ejnNI8-G4v^ZUqu|1g{sIfRZwq0k!=Aq{e16BGk751khI039Dh zLjq*LDky|qZ~#t-91aB1A13{W_&?;@K8%4R$bx*>0egY#`>;afqhN@DL?G=)r2Pne z9|r;YK1ScisgMl?Pz0rL1Wt(@LC+EN96`^K6xc2D_ofgDNl-3qg#(3vtw#?4wtgZ& zx=%>=328n#2*mxQLgX0oKjr+Vr2i}c2>*=m&j|kn?~wH!Vc#V|4io{loFvW3NJs{B zo-7pkJ|2+w17Saq=7$oIe-Y8Dv)kKr#JQ$gJeN2YKEsK$drhC`o3=kRn$8?iFS6 zU34o)6rvP;B+60Fhu}_$as@&d#6S|HLoRHF5-5Y?qTCK39y5iMI~8(aE0n@IVUPv(}G=iI4&LK)m_~;H0PqK@bUvkOBFC-Ui5NfSd-{-w+#u z(Ho53VDtu~H#iltp#X}Y6pp|tQH=s23}PS&(jgZ%i)xGx`b1Qd5>ZW)ArtbTSk%RF zfX-&v+AIxnfa_{TSTpQtX2Q6xOM)OAVu84qWWXvYgk5j|PKXK-Ku_~5AYBXmEz00H zRETOB3=x3dme|q~TUugE%dJof#0zym7{oy;)};4d`vXSyY=C$cA!J zVNIb>RNF|17uAmAc4>gU?M{knkIwe!3=aZihm)p*141AI;vfmq0r?##LI&)DeWE&% zHX;&`9gzZAa8gv~03dy5?C4w|std5H?R6D%MAW5wMfJzF{)Yh@Vnd)%)Ih=p zRfrl~Dk^S=s3F7~nlEZtv8ecTQNve>8i9QYVWLJQi@GcvHUs)cBY*T(QHh&Gjp2A~ z9FTTgDBw>D25cFRe}V&!iMkwnCUSlvHe5lvD{vS`iR`S{WRHa;OkBJrF`50!TYO8M2@Nih=mk(VyyoP>6wv zfE}s%Pz1ZrWd?C)!~^MPa1GZ)0>`{!Ra#TvcxI5OSuh)&vp0+4Rjkqz0D0-BMa@CS z++a8;YJL)AKpyOXQaA<`q81=;A^H}c6qOkc$v~V;!mkYhoX}8Q)0f3r>i-4L!FZ_jYW#BM?$WZORgLCu#4>1mfJ?8;HL-j^V*D;QYPBzYjYK9dKCG z{m9vZo-HRuJ&-MC!%(#qecOn?jj#tJp+wYn-0kSwf&7P(MLjIARn#NFK)fQ-73IQd zQIAf9lcFA51=#U;s;FY(J<$|)iQ1Vc>d8=1CCDf_CF-e7qMpY84A-#>cNcPZasJtO zD1c+4o5vCSPzL3qb_YTPBtSakK@pTexu_QcAp#O09rB|6!)`bN6{6k=ffz`JY}gFD;RsZSIuHUekPO+d8Fs@FQSXLBD&)deD1!=7 ze~W-*$OGciZc*=rKmue#5gZY9Fc4xO9X3N5RET;%0+9OwW#B`u>tn9<<5D;+>Ih*+ zQh+jW1f54tiTb+(f*}m{!C@e8{!aX(0nik%^=NO12f~gL_6cF1#K9^+_c3H2%Yc)j zK1J`R6aVXchP=;^|5+gv!#*e%MVmq$$FAe~a6;4<$#6i_m+`Py)K`RkMLOCI>O?l+ z{sZ?PxL+gZn=~M=%1K|&xqp%;|3vP$S)ynIsP7KKNl_;Qf#Z{0=Skw6M8?TYPy*;X zNt*8ifV}%Y7LoxO-xmOSzAppx{6P92GN2Gj;kc-OMFR5vMZA9<6Ll&T_KEtD^gr$Z z(*3kb)Xx!c08WcKjSZ(ai~1#A)UQRN&YTcckptLUfy~NiK)xpsIPZ-XEeAy_HZWEx zkT2Q_fDAY++Ob)*GZxB4y9z|RV}SG2=QTUG=zvqAYbC%A(X|^yWt>|i@w+aArK7-kP6vQ07Xy=N8ps`W`Pg}F^~l5kPDlk1j^vJ z=t}}10umupbO_}kBvo{C2XKwe6Tlp!r+EQzzni0@1?8bd7$Cm|@>?LkMJ^z}1@c=U zzr}H=5Zy8u(9tpuk|7iFM29*c3`ie(3{Hz~6$IpIE7G?{f9u_FM0A@#z_vD|ZNvR& z!}&I(2}4F0@xl^-bYTU6jbY`Y+ajxNG)#nSD1=ft!D2wDQ zAO&(^2OJR{E)WLskPi7!0*9eObcawtUI*lLKwbyrbvPxuBl0>TuOsq0BCjLzI+npn z(Vc>!HzY$2Y=wP*{Snw75e*X|8w#NmPKfS|{hhJDGx|ECuQU2OqpvgRx}dKMVO_AZ z3p%@?vkN-AptH+y(Om-|0+8D^16Dy19Doy|BLji-k;slr2hv9(KXMJmlI$D76=tRhbO;8Nz zh%Oi1106lk(IXnTh922~j2^q-0GtrrGZ4Zc29h8h@?i&*!D-RG2=7IBFT#5f-iz>F zC2$xjME4E_!g^=HX4nga^*$-OPcTG493(>yY=zx$OmtrdghK*kKmqK6Bcl5Wpu1lp zWI`U0wjXKx9fWexF{F2_W80?SP3)m5Z9hU|`D8vG?F5L&D?;iw_uuAlR z2uOeuD1!>ov4Md6SklF&LIISD9!Q#jxxn!tbPvKm2)hR%cW_gf2%BIBa6T>=kRO)_ z8IS|{P%L^#B$SIDimstqK)PW~p*L&=^u?1lJ^|9RXq#s!TMNkT-L?^^U8tek}j7oxZAns-15G#6g5QGBZiP=yn zdJKBT3SjrxNFd!<(v3sbxIEEGq)9q1dVG%P2`Qp4j{tN|EEatQI56Ha27?pd?GD%r2jG-&HM+ua{5g^_}!4L+~K-`CtfVdA80P!9whYHaT zhd=`4K@niz!^n6f5D0rD0%9Nmu%T#^=tsp*3U0pW$3r0vu)Ub;DvpF$ApD68I3;=~ z*SIrF^po+B4qRJFBA}~;@TVLQ44I;z#{YCK6hN8iXOO)s0E$IFi~B6HpC#V2gguA< zIpRHcK=kvGfX?SLARn-IcN}2zZsP8)5d8w@UnqvXa6t5)48VpL6JVFJUO6SY6n`mcUtI;KMZX>bgzZZd{RVRPHwD7p#C>yz=&~%) zZ>7Tt(Qk8oZKS$2z1)`6Kiv9vSzrdC+ zkntsQzf6YRqQ4>z?Kyp7v*>@siT>IFdqsc4dD?TjoO9(lkPn5T{}~GC{wHz14T3Du z-=Xt6;(WJH^hwU0B<)FLevi)YN%#E$(LZqhhgE=WKO7eQuXxd?VnzSR`5!s{DFb%- z;rQohz&_e%`ZV%SqxWp3Po3twgR^@46wBld7h>) zQ8Z&ZmTVGBB|#3H6idfKKH#?!p+qc)`Ho&Dl#Aue5X%)UmYaBPj%yKCI~aC}RVQ04 z+G^HC6UC~_*L!J?S@jCV3L?CIiC7H^#A=ueTg3_v0>XnU#A=iUC&X$T0O8OZNZ%Ma zjfvZsI8E}QSgfW^VTV{3$3U4_%~Hg=gmjE&SeKCIk~BcxC7WP}SRv7X%^`c?0Gt%7 zc{*Twi$I8g1lTQBOWc;}kORbTN&J??4;2W7Jm9!hGH^Yu_Q7$nT00;N;$Sl%tMw76 z5UUNc+7!ZGI3`wDZ^#s@tpM`dBCj2`wvQDnJP<;lNURRQfSiuWVs+xWIvo^?@d>MQ zI3TwRa=J`}G*|_tVs#CLEZ8d+^=d2fn6S|UU{|+P;Cwf9c1L!1WJe(*3i;HHt*A1w zs1sY!v5*6V_dr(<()BnZR!_ouBBv+%dTte~mjejzg}*m;_f8P2Pc-aSPE0P8i*@NlI4BnNN~?d7SObCq*#ih4fF0B;t=M=d zfD*9=B4Z$F24=w~u?7V}A|Q7V{U{=J7D=wumNapTma(iQTq_I()(zyCP}X{U$y1;l zweTl`&(8;9IP&>5-xW&p`z;wE*ZKVp;_UVNozhbd`~5CH{ax4ZcT19L=l2Kjx%$O^ ze=P}BH~Rf`@Ne<^1M$D?_g|z!)n|TxU5U1|-ybBkxg9>+>Pw&%>-RU}JUL}wOJmMY z@cFsO#?~~ypN}+KBrb!n?7<<0TDCk#1ZfDM%m0Q!Yn&&4F$JjFy zyXIo`U(JqvJCv0;vVy|XztPiFAf*fa;aRQtvf z!<@U;PCd|;>$82KZM(TAncSm=(pS3j|Ez>L$nR?3vp)(q_t0nAP+Ok4!{cmgGUa;P zI&+78G176TBXus?Odf|~mAOveoi}&c#2rTtB;bz5Dib$U&Pq-=M?wT)=iiBLT)V+n zx-O)*%9^RXPo^Tzl$mM#HM+0o*x2FA=b5|Go^Jbe|`BL zD)aHpBjjpghe|t`&hZ@nn^N;fQbHvhS@TG-(9Xey_T4l0bTQJ*Gu(lveBKS5=Tv;Y=Y1h}+t^^v`bxx~#R(<9jrB%C&8w;@=iKWWh<=~8x#%%I^R%$HN{tdW zgEQA+!`a+4cQdQT@m!8gngn8AkGp_(%5>zJk{oK6*Ry3Olk=u5jN|Vd>^0?{^_|4@ zmH7)C&d88&aZOsq2!Oc^#gdNuc8DrZco zo=U7x8FrowlbZ`{OXpHf%u~=A{YK6L-rMFmFz;}46~4O`ioWyDWb&N+Hjhp2)YM$_ z3dd0+u>X0A@k*teVGj)jyQO#8g)skQIR;smXqry~M)lRin;i`k`s5+?# z)me2>T~(y&rn;*r6|H(mzUrxZsov67^-+CQKNX`cRsGcfX{TbjgOzHa8YEsdSjDL! zYN)hV!&JN)u12VlDuM4IUdFfI5_vk_Bro^Lel5^2tdiB0 zYKpo_rKqWDnwqXs)zxZ-x<;j`nQE4rt-pcbl3b**$z*Qx7OmUQGp z^NZCIIjyqQQgwq`rgGGBb)#CLa@9?0rMg+IQn#qp(n+mRd1|d%r`D@{wLxuEx2ghl zo4Q@yp*E>I`6lVzYO}gW-K*|Xh3bB_MLnRls%`2)wO#E{52=UMBdSO}DiP{2d0RcM ziq#YHj+Dt;YNvWqm8hrWSM{`dM(tA1s^`@6YPWhp?NKkPz3L_PvU)|8s#n!(>UFhG zy`lE2H&vN>OTDe$Q3uq!>Tl{jbx^&p4yg~+VfCTJxQLeX2fFpR42Q z3-zV?N}W*uP+zNWRJn9k|5V?q?`SV|QQxZ{)W6gz^`rVp{j5%_U!<%0Rh>~4s#1BB zmjd<~pPJPY$rn8x+R0aW+&Vzl;@4q@uC43v4X}%JU0qKH>H4~XZm5HGBi&dx(M|Qm zx|zO2hfrU*Mjn?9y1Be32jpG85!6zL>Q=h7Zll9=TfVBj64e57dM7U>&E2=%IR;j@QFk<5?_GdZbR! zqx5BZv`&<0Jw|%yv3i_N(&P06eYu{fuh5h9WSy+9l%9HuzDmx>ah;;4>S=nqPSscI z8TuNXCcX4bJxkBl>3WWytLNzqJzp=-3w5US*4N4*MhxF)Mfr95dYz>g>BV}9&eluy z4SJc*(aZIXdWFu_H|dr7X1z+^qF3uRI!~|F>-2io;^*rPtX$uyZ`JI;Wj2;(h3`_(C>cd~#S$%O%73EUViJuxeSgtvXhqb&*xqs%HgR^{ob0Lo3*7 zB=M}!Z_F=UhAgm}SWT^qt!CCGR*2QyYGJjsLiwI+YpabFX0^52S?&2!SqH15)yaym zI$K?=u2v+C$>COaKC>Hb^{{$cy{z6=AFHp`PexcV)}>Z|`NbMw#aaWcLDpa^jq3DzjTUYX1 zkSW($Q>?436l^Z|#ofCnokX>+JYx*l7#k#- zb&}4Ouq+7`7eatQNQg;DFQky(+sQxzq>)Z~LV6`VK!A{5f&c8zyt^ku{@?HW;Aid5 z?!MXG*_qkd*>ayxeIfP5)R$8Cr@ox}O6serucf}8`bO%Tsc)seoq8bkoz!smD@}r~a6FBK4=#pHqKH{S{v6yeRee)IU=HO#RFIFWjR4cj`Z>|E8WyJ(YSI zew4NW-dkD3;CI;=WAIz7@Z+0`X=a$u8d(!-W-Y9hEoMvDQnrjOXDirY>~MAjJCdzr zM|u75w#(7%7IP2qrL zS;)FrH_Nde*2_+1r?J!78SG4U7F);qSe_MFk(F4)*0ZzO26hhH$j)WwvGds`wwYbP zwy+D?RH=AISY>HjQrr8XeWpiu~+spQ`{p@P?Ty~9jIeQ+vmR-lLXU}Ihc)w>i zvKO$MyvNuJ*^AiC?8WQ=yM?`ky_DU`UdCR|Ucp|;Ud3L`Uc+9?UdLX~Zewp?Z)9&` zZ)Uf%x3IUex3Ragcd&P|cd>V~_ptY}_p$f053moi53vukkFYA6X9w9G>`rzU`zZSu zyPMs^?qwfmpJ1P4pJJb8_p#5g&$7?4&$BPEFS0MO``MS-SJ+qC*VxzDH`q7Xx4cK# zx7h>iJM6pcd+ht{2keLJN9@P!C+w%}XYA+fLG}ywOZF@FYxW!VTlPEld-f1}m_5S& zz#e6fvB%jT*%Rzf?9c2k?62%^?Ce&@S^FXAcAIOl>( zuDIrg`@E4i@n+t_Tlr$XgfHdG_;S92AI1;oNAM&0N`4eSnjgcDxvpnQoyqo8E5AWrt^3(X~{0x33KZ~#9eLT+# zyvR#D;_La@d;>p+Z{+9l^Z5CE6W`1);9K~Gd@J9^FX9*Tem=l2;g|Bu_~rZxzMT*9 zG9Ti@e1uo{4!)C*@-coT-^IuIZa%>$`4qp3PxBc*%jftWzL)Rg`}x)Ux%?XbJbo>| zj$hB8&u`#2@)z)%_zU@q_|5#q`~bg&zl6V(-^yRcU(R2_U&&v^U(H{`Ukm=F7kIDr zZh~J4dL4f~zm30vzmdO*znS08-@@O@-^Sn0-@)I>-^Jg}-^1U_-^bt2Kfpi8Kg2)m z{eypmSG}d)GH*Gb_f~j^d56QRK1X;*!mqy`#qZ#E^1Jv)`N#O({2qQU|2Y2y|0Mqu z|1`gke};dSe~y2ie}R9Ie~I7Ezs$eFzskSHzs|qGzsbMFzs(=u-{Ifo-{arsKj1&) zKjJ^;KjA;+KjS~=5At8|U-Dn^U-RGa-}2w_-}8s~!~7Bc2mUC3j6cr*$e-YU;(z9U z;eX|S;Q!?R;{WzE|BuJ`f8n)YxNGoTReA&M(;(UNi>TV(JB^;C1R;qCYFm8;xKWz zI6@pLR*Iv<(Qt|BW8l%_-ksiE-WR;ji(|yGqD`z4$BA}vyjU$x5GRV0ycTb<_W|)7 z?`UzdSmPbzeNJ?UweU;ypZ4D8z27_5Tjjmldkw5DUIzZXKYCAicY|;6JziOKic>^d zWJDmcA{1SsTjWHK=oP1W@AUHC4c=#AozWytgO?|65vPkYyqAbG#aUvV=o5MGMp#GO zE()UP-7HGp3%yr@fBiOiC*)1uyWmZ#d&GKiw%8!f5gWz1;yiJ_*d#WK3&a+2q1Y<6 ziHpR=qF)S%OT?w(GI6=MLTndqhd^4DRzl*v0F@tNiij^64PQv z%!)a&N9+~*#C~zLc&@lcJWpIJt`pab=ZhP}jp7C3ChJWZZ1 z&yZ)zv*bG2C-br(i?Spmxn76Ru%6WNE-XZUlcgc^+kIB2`J@Q`parp`PN%<-HX?dUgjQp(pocz4}g8ZWVlDuDj zS$;)+Renu=U4BD;Q+`W+TRtGaBfl%ZC%-R$Ab%)-B!4V_B7Z7>CVws;l)sR_l)sX{ zmcNm|mA{j}mk-H@NA;>x)oJQ< zb%r`qou$^PK9yGmRa7MvsrBk?wLzVuHmY;gdFp(%No`gas4eP3wN-6X7paR?zZy`N zs7uvl>T-33+O7swSq-USHKHnNhuWz|)tI_c?NZ}vx0+CsYD!(Drqzs^RdZ^O+N<`d z{pxD3lp1M|Dr>3>V@h>>Spy~bwJ&sUZP&AZdET+FITTnuT-y6 zuU4;7uT`&8uUEIJH>fwNH>o$P+tpjtTh-gt+toYNJJq|?yVZNtd)52Y`_%{32i1qv zht)?^Rn4n|>JD|Mx=VdjeN5f0?os!ukE>6pPpVI;PpkXXXVhoa=hWxb7t|Nkm(>00 z%jzrYtLkg&>*^coo9bKY+v)-J9ra!HJ@tL{1NB4oBlTnT6ZKQ|Gxc-zp!$XSrTUfn zwfc?vt@@q%y?RJJtR7K+P>-s|)Z^-p>IwBH^=I`L^;h*b^>_6T^-uLL^>6hb^8%e>6B)gYoVo9T5F?y-Kd*%vu@F?da+)jm+EDDxn7|U(}(LL^pSd{K1v_0 zkI~2KHoZz8r`z@MdbK`5pXfcTPtwoPC+ju3L$B4H`V^hk86D`X4t1CA);Zmyd-bXM zG<~{0L!YV7((81e&g+6M>XMH1dVRLupwH18^||^yeZJnLH|q=Z7JZ@Ks<-Kj^u@Yg z59mwurTQ{`xxPYg*MqvOhxD)>(G|Tz@6@AuOkb&Y>2bYVPv}WKrLWS{dPdLcIlV{k z)%)~*eYJkBzD7S!U#qXv*X!r&8}yC(1^OoaLj59rvwpEYpl{JH(J$4v>X+%4>sRPk z>R0Jk>(}Vl>euPl>)Z4j^c(e?^qckV`Yrmc`fd8{`W^b6`d#|n`aSx+`hEKS`UCod z`a}A|`Xjok=k-B-hrUzar9Y}artjAG=zI0Y^(XWv^{4cw^?mv?`m_3T`t$k=`iuHY z`hNXo{T2OH{Wbk{{SEz1{Vn}%{eb?C{;vL>{=WW!{-OSn{;~dv{;B?%{<(fo|3d## z|4RQ_|3?2-|4#p2KcpYlkLW+>NA+X+as5aAg#MHMv;K?ztNxq*yZ(p%r~a4zxBid* zuYOWLrJpvQX)udS$}q!?Fw!WajWNDyG)<=2w3t@2*eo$i%`&sxtT2a}!_5)qNVC!$ zWsWw-m}5zg zbDBBboMFy1XPI@T&*V+P6ivxQX1zJvY%u4Tjpkf)o;lxaGMmi>W{bJdY&F}=Mdo7D zZwAaI=2CN+x!hb~wwpmyHbZ9EjF^hqVRo8PGiI(dyUe)RZ6?g5nKD&(8;=DX&5=KJOc=7;7-=EvqI=BMUo=I7=?^9%D! z^DFaf^BeP9^E>l<^N@MiJYxP}9yO1d$ITzj6Xs9m&*m@YujX&&@8%!opXOiY-{wE& zzvfBvlzH0s{04uKpYoZ{ec?-A`Pw(W?>G8QezV`=xB83yCH_)>nZMj$;UDH7?jPYF z>96#U@{jh9@sIV}{8j#Oe!G9XzuG^+KhZzQe~y2$zsB$I*ZQ6QDSq0|_<^7GL%+-K z_H%xZ-|L_1pXQ(LpW&bBpXIOf`~19L@QZ%QkNoxi+5QIq9Dk#Ku793?zQ4)e>|fw- z@h|kZ`rG`A{EPj5f55-Qztq3XzudpV-|i3kWq-&Y_DB4Rzr)|@kNRW&mHsY&+~4g_ z_>=yWf0aM&&-k+kdT`&awV^{?@t=U?kz=U?wX-@n1X(ezD^P3$ZW&&^hR z7oFTWIZ@dq`*xRyrza;w-_UerPet}o^4!E&I#Vc07ZytxmeMW^(s39d9CX_-Q^NF2 zsn6v@=<*>9F~5(>_4N?kM`3|NS5Kytr|0W{nag@#zj1@#_*P%?5#)_hJg!y^;K2P80-S_DrOL+1QPddzC$HQVAVgsWd`o4$0 z@1gH{sQw2($QI zPX^0p0+z4L60)A0Ul<;n9-iC1W4yA@6h_Pxx{6)Q^dQb`tiT{NO497$lQIGtFmKrB`uk`@SWAtq@zFU`(P zPsq~L%-HzkL?eX>rlYE(3=Mh)n-FDa(5Wd=h6cSrOj1C~hM6uLEs~}%O`})DCS-aY z3?v1wh;0g64}^7}WO}py`ox&7uhY`;PY{Upby{X3>RXUbt?$eTi>5Q9UCG{TXQnBE zsxzb3yYcDFG}f`krGvocJIrxX6k-f`Hr+`L4to5v>#cJw4l+ddfao2>ZK81u`qHlsvbRVwtc4ItUt{#id=sqAtwN1sNUHZoS3uFQ;) z!pu^qveca1jw9i`wCqLob|hJ_BhDGgY6Lroy!Y6=m>fPl4F zAI363#9Ay)i?VTAlIp4HGDlDMpsxO9kym1~%;B8_QEu zWtf4iao{S+Wb@+Ong+>~5I2M|Zel)U6PP?4n}ER(=Oeq6LTW?k+5m!FTy)-?t05aX z6fmV0#QBMe!!B`ttzwXLLKu>|2uWQa5i+H)kDos}Ik_uUn%L>^hNzW+c-W*6wR1Xz zIn`>suta3QDLS3abuT&}o0KW!`KHlH(D|E44mUZ@YT7h92bR!15`rk0F@7flpYUGh;mj6iC|qsur3<30_7Jd9}SO8sYv;;Wq@-A zq!YbJ9!o{~9xb>`2`xAX1Ao)ZczI?NNxy0Lm^A_$DNJZpB6Jjzpob*rA!$GAKopXq zzyV8VY0inrj0jQx1Npnzrkb8dR)s`jr!E@hE@b5p&7^duFHCJ2owO9rM5ThdVEgo} z9dxlJ!8l#rVoRNI0TzyJ2bn&x)iu`5!T`ooXE!yko0`{6F|q~HUz!=NYB;~Y^UN0i9L=|uM&bqvK17?AQ~Z56Ws3KHZ~$0O``5G#Nj z5hhpiFRqV{xY$h_;$k;$`r>%HaV%3plQvT#E4@V4c?qrZbcoB0bQl#(ekj8R_ep5 zOL=16JehZS$0A@-6N|*Usn5ai9X7obGkqU6xzvZYK|pqHric?*5D@;pSf^4weaMPI zIxEY_#j;#y)l8|k&y?$HS{F@br!&0lEO@8(QQ@XTQruz8=OsX1sjHE&*p(`SO;L79 zHWC{bL=u|efhe_DrWONZ+F1fX8jQh=2$n!oxz0&(i9RY}$yH0M;p~eo1Rxq=0R3>(IW;m>Xch2}TE|{I3+*N6I@j3GHhq(%&@VN8+4~3icEwggsz|_3DHV|B2M!{NZiod#Yb%yefM|V84Je6 zt=SN;QQNN3db_Z}86s>z1P$WW&_K~bveb*Uh5397bZ5LWGc&eueHV!_oO~Tof})+W zVVPI#93I|1#m20xj1eo1Iab0sJ&0TZIab$VFyGSrM}iQ<9F0q2usidJy^zO`9m%pe z|4M3FESN#q>uQ0pUNDRetu8p&cO@GGLbqHAhTzQ1YmHiDEKPYOL6N3iM$ z**J7ljMw#dCR-5WHI9M>3ymGEb4#?oEoF;hymMwI9r)wU40drG22gx9qq$ajJum1k zI6&KKUChV2>qVdel;K)Y%dkyJ0=-Efp9G2yaD)vD5rbwr?oS7~4Bzbp*Zm!-%zzVb z1Ox&~>4p_oE-*FG_a&#+KwZXRY!zUBfbJSFS13K^ z9a?adLXuikZ<$g&@u2S-1cdT&;)fLy@f;es08_unlTktg7t%@HqLl&$DUr66^(PZ6 zr%75lQJ7pgq1_eHm_)b+24@^LAR>!4A_7M_S~KLbY%-SG5dAK&Ldx;UO3Vpi4&^FD z_c5#nXpFkz5alhz<##%OCI3|G ziRlE#bmhc!onv4Pg~f4Fg^?gmA(OU5CT*!JV$-%OV7u+H;Y_kg*+|T|D*Ty4v`r9C zl-)EE-87Qj)N9oKnNl}V2dM$n>1o_qnciKV7#SL$0b>T|y;(Q!p(KE1I*W~HrOe^E z>G67jfP5=KUk{(P1Y@)D2xYpnVm3(x$F|UjI3zaeCN|7b<9ldJS3k>ZNR3aVy<7!Jat3Ij?R;f0qrP`pDU{G5Y3|Lqh+OnD!pJC+huVY8O5nBVaDOT$375kIR zY+{m#s*OEMwD}dHCkIreV-i@+qdE$sEZ-k@7jm6n0dmoF31MLYhQ8eiW&1%Hv8!Xj z4$%CA&9$_=8kK{%+V$RC4YPl83oYKL=_Pgt^K*T9_wKUmR<<|fTSsAyy{La|(dIFJ z;n>dI<<#cUvDD@n^fhE@fgDA7vuSr_XL3^m9Z9g^ff5sue<&jL5|N)M>c&xw$X^tZ zx{1)snu%z~HHxe1Lw8JsYjVg(w@O57_oxruFA@0wqNt$AZGj81EKTECT1RJ#p>TaB zqSIUuqVoaBjhZ4Pw^4|0BXB~KEuG1M6MA_6v?E!FTPol#b_4|wlI+?(&MnjC2 zdOF0-BnV^69Jwq+&jL7j;&hr~X?r(BV;a7r^mu(iUfU2Ye#l4t7LpMj;@%6SJE}uS zOhqTHVl+QnTgPi2wruvO>n~)V8Vl|cYs}kAw-#r$b%M<$Vaq6ACXHaqK*29 zTtg9U*hfhCOq9>DArJw+(~1Qjsf@$sbcK9l6uMqE5imSHIa7fnZ&)Pb#}P0|7AN9Z ztR<0R?G~rkBHECSXsI8OBRC@KB%+Pvh?e6~E?`$f6I1X{!M_C210q&{Q+GsLm=UcL zBihQ0XuTNGX^4pYS`oQKBXYz=q%IEH=j0qR z!!imN^sVKP#72S>qewd|5v>y<+F^-ky%5pfLqs-ogiB*^NyMT<8k2TVB3chbxUU5J z5>CfJm`hEKjw$%J)9%8ipw)cRYIWoOCR#+B2oc${5p5q`Tn)tT@M(aJT?Q za%AXeRwiFCS68MdJKfq`fk9{8C>c3B3Q`EB@{Y+lSad>)ni<>YB6?yhF62I(-68B( z5X|nKgh1h^vpb~w)`nwnG6C`}2FRa*^Kuh5QW@JhItvl$FwX91B7E2uAF;YR4K)V} zHxgEt?juSUZzL=ZP{WfjV?uE~Rhb@}9I@3o;z9(e+&K*HTZ?a|0+ST#~>{NsH^~<3fo#C~0Z3 zB1&7fpf*a>qx+{u9g&+UMj6t&U7>FVlx%snGHv^8lPXuumB#^Sq4XG5am1gPoQ>mh zYJAQjQM<<`T*Ti!H$FQyHNGDb^~l(su@OgETP!Zp3`ZrVC-=oDn#$m&KyNR64W`5$_N~pzz$@(%;Z#MVrXuByfRCD$~MnVkCi8Oj#m~WlO{uj9(48f z`3YwB!HEk^b0RFuz+J1S1wF@Tuvs-4!3tvbi|+8)tgh@X9Hd3gw#-HFi4yvS6 z&__p6IDVy|>rkk>7U>gXofC7rr^SQ|h~x6AvU_TFKg`&o+&KeQuNcB$7=sZEU^29M zJ1~H~H4BYm0J}aGx)Ot37{IQBP27zEIQT6DldBD;Ft`c>m{o1!3Yawv6*x+gxXq>Ylp`{i}PT`Qz6C5ZFX>ec2ps-qY8l?RS4{;LSRP~0z0Y@*inVRjw%FpREK8bQ5~v{>JVVE z$IZ|%gCaDlHr*O!II2VSQH4+AQKd5Rs1DUewU&XSIuws8V8>CV0<}>E{PCzlBWWxF zUoGYuvtU%A9f>)`cJ7c-9eT#70%{sns1KEi{f<;mojxNIle>}YZ7e|_3p)B>dQ2Y+ z5!c%&(Wh1h>0?3U`b37Mj|Cmq+lZr2tpL%-!bBe%Mf%tn(x+A&d*@1H?_3ml))lYM z$ren~&%!=gvhFK1Z(Xr^)Q&>7Wg(nHp0XMcX=Y;ynpx1%4AWzpS%_$6qeQb>8Kjv7 zk!FbuOEU{Pn%Rh>S*-xk%)&%78%3Jg7}Bg(9BJlCBh6eCY37R8X=cGB%`6<#%zcG~ zamDJ>w2?47ReCh!`AZ8$cJJI--t&Cim~24Fwflg&V^A?-F4Y|PmpS@I-j z)1h|zB{oNaDKbXZ;beajz#6C+w$Y4C>>S!YJX#sv)##!_!*?q7ZK33id^mF0d zlpEkKxH9G7Y2=eGbT9>7=pYNa@IV^CIHcWuY2R+~!D0vw$?T%|-qEpHxW^0 zINVv>TnVzc9}r}5(*#12TynsX=L*VUI_N3<9`_C4ge2}s07lJ|A$J_yjd18P=u{6fcm)7LM4QKLi=YelOM%$5OvQsQa2^L8bhLREgfy%n z-mC){B{`(-z;QTNA8l?yKC1N)9d`g@y&>Mb3qoR-5Vth|#{Pup{{&@>kjaoJBg&St+9;6^ojkiaZPTb2azE-Au@4^SY#HI za3Vt~Ns)<@5+XxM3q^(!trY;LuLHMgXpRBke^_{7UbZ_4xC5$`6LuwXx)Q~LOiv;Q zkGsa$+@aX)VpkKLkWG{g6IfvRQO^N;FbQBYTzg@@v+^3Z7bZ^!fb-Dqm)P{?`i4kc z41A;@`H;6bc5Na(A!SLNf-1-%a7nciEe@<_;}@}S)S+EoLqaZ8m%7xY&cMa1aeLH$ zVFPL@mh5mS)^#I?09^8dcI2A-;zf-EaeRuP%plJJ0d_wADqYKg3lMIIDJLDeoR<0% z0LhZ>*mGPGYsO|2uuaXS116t$jyWwF80>H36sXO*HleDz=C5SWN7;3Vf?j*MEBsM(Po@?Ir z%pPTmP9CX2xjH^L{^*3$GX|WFpl?b^LPp8f<&tg4Ar+cym-iCg=t*|4C)tgj zBprGXU-Q5-x&fyZlSGDB3oMOV>UZT5mGxpD7bn=(X_{PXog*>9Y9f1|A2m^Kae^z8 z1%NLRL|%fcWAy=o+h2~CYG-w7c|cO9tdOK|ORkm!tCA!>xW`q;mqyCB)GtycGwWjn zssU>z8At5Rl?9Y*sb6tQV9D2q9d0pU8(Zo(dlDrVv^hvNGr(qAH?@_du?5v)li)f` zy<2d-#Q}6T#sSv3O^gnwG?R_WVpX+k8pMb=CB;DUgD^=?*hh=;!Xhfk$zgH~i2Iu- zpV4*@{5qlS&4mQMLXzsG1vMp$;Uq{+?MgPatBxA9KoVPbvZ>w4rgkU02WQOd-Rn-G z2IoN{Cs_|1IJY^?^^?+ZLEzG)IKp}9L{442p;%o|0Z7U-oSlxp$&}z^bRB@B%?SYM z(_A~HoXG1*wj2(E*T3pXQm6;SgbP~w64xna1g7`=K$1M8-V0D#Cue2otM*a#@bc7;Ap2yIrL1VOFRO$5ADlE zF|Rw1c&*j&9!Y&F2cS+EVLB2imZnlTwf!uw53aI$LE&f!2x^J$sQeW1z_XIR%_j< zSa{|_ zX5qb;I*>5^z!z6%QUL0#1MiF=f~L3~4g;LNpbH8PTw2SdML*P-yyxjiz3@J-`>rY8 z2yxJ2aBbBNX}FZbz#nUUqGL0Tx9r}DOJ4%Tz+(%$HnpT>ZU+X^UCQ{dE7$7oO+jMk zGZN;o#1V1JYa2Lm(Pzmy^c#mgSzqm&dd{KW)V7D7QBOUGzBw{(8(zmrR`hIH@mE+n z{?>gpj6!ncvt$urj&Pe(3qJbaIaHJ5DO%&Z$;vJG6U+xM2DxFtg4sG(r85buCk^|8 z^A1H&>BAmuo+Iz*4FqWAGBnAmi2T`Z9yNe zr|T*40>0;&OZ*<#j&lc#;JhOULC+yeeEK4}#P505CBECLgQxP`_61y>&A^j+)01Vl z*8s_RRYFzlJk4<5&v~vP!+E6B89G4>bE5UA0*v^AOkvT6b1E}0`uq0rVhx(Y2i}x^~!AEUKNKNe>vdurE|rcAYrN6` z$$Z?t8sR?3^ua}8d+r}EsUVWB&|VA}hj%k3e0S#-2uhc@;g&9rR0a=QL$}=q2C#`6 zA;@fe<%HfSuy& z6Rx3h4-Pu^Dj%`3y(b69jD{H;S{Y^_I>RX#@#t~Nyd?;o*U9L9U<KL!I?#7`-xscO zpa6%&ks)z-h-d$S4pg4b^wX9g^gr$|eILIrh+CA_yheJ!BR*DfhID@@#QVe6$fk5^ zAHFXF{U?0L@jxG}KTGtbomaSrgx_U}p4lkkyX;eW4r?}FSTr$*QM||u2UD@ZS-eyW z7CRw;H&^Wax44=(>=q7PhQUoJN~0%GBDyCY(G}{5u24sGg*u{V3?h6A0JOa8Dwvv% z6ac%L;pQE(LYCg&D&`|K4UaTTfH8*=u%L}gakim$QM*S;F_=@Z9Bjs5IkyRfQMUtx z1?|=hA*_IIvsJ)>T{r@S@!7p_2&IBw?HJoJyT8#Dfh*^5z-OctYlXTfp~)q{TNQIN zpkXbI;p#JknWfkLMI#$y1|Fg2^EC6Z=Aug1K3dx zLPt3WW3@>2pgIOa$SDapkmJht_2MN^cq{?SgVu5FPNSNJC5szj2-9?{0p|0@q)ko5 zvD!4gRAN^;lpdp{e7w&Fhpq`No$5-{sjhTaS2G;ro*f%5+xZIAu)>Y6?c19$GGX87 zDDP^5A%Lyp;Yk<=(A926PpICWpb<8gE7Rq1JK^nWNdjQt+qQw6bi>Vw8C#V-Q{9}1 z14>sUz}@_GfV=$=qR0kx+bf{==7MKq?_1l@O2$35p@URs@Uu;R%Yu ziJLeI=WXIB9LkBKa9GEkC4u|0s9A$z3740>UG-Dm88`;x4v)E0|8!=?9z>g&++913 zlBTzivUHs+OLJM4ba$5Kv@GfHEX{3M(&bs2tP zq?ag*^sY*gZhRK$Mam+*uTrF!DU0;ZN|9cuEYf=`MS7{SNbjx`>Aq!=?pqe=zGaaV zU6CFXEYceiMY@Msq_-rB@mzq9|ADS2-A{IDh*zB<9j&a8-oFm<)J|VFT1)9HSy$Qk z`4)PHD?%#`ZcRG5gj=|zc&R@Ty^a@Azan~%CZhgD^tJ`~2rPrc_fDQckvn+@yo8Tz z1n?N3%+a%ASv+W%&XNt3#S=^b_cd8_wLCPr$DMq{ugH?h(n}p#x>=v4oAOz@37@4K z?^(L6nI&5@OP3(C#IISp?3ks?j#;|on59dOS-Sj~rOS+2y3ClR%ZyoioGgo4ES-(H zm@JhnU2e?MTP|68uqsRMzGdmfsVprevb2=Q(hFf(vShMk*<|UFh%6r4OlR>B5QH@S z(jg#lxVX_M(qSa>}OGF4ALcMY@|^#KTKaKK|ZuA;36o z7wMhXB5_ZVxTZ+lQlxv;MY>mAqOLDN`mElSCg)gjm4U~n z_F>&Y^sI?<&syap0q#VC1u>7v1Sd&{N1+;IcT41fih1iToTihHo>>g9nklU<6x&+yU1p=!~oH= z22wFiFzqy?}q1H?WO`A<{6%NHr+5h@r>Tp)R>!^(*eCD8^muklEWsTE9n7E*#Rx< zgF;Eg9H(ong_@C8z5y-Q0y@MBdX=6l>)URRm=SJt!b z>m?v~)i(jbPGbUsUm8e2umhNY;AJld(InXo0)xsf9=s;U?lGk3RjkeheNCv^;9t2*o`3ufc10`f2#Z(Er!}9)w?=yw|&zKj3-n z3eS7$3jVvNA7$fDKlIc^kVAP-KfxbhS3La$=JH1%AL8EU;Qw2_TjAH@&v@#ACm&yw zZ74kTr6(Vb)5VARW2qY!-7bF3|B~9f=(ajO&$IaA+C+-#tKoa_%r}oA8t6oQ2)!Wuz8fa_Vc(>Pl!N#h%@RI&&xUzcEz~GLy1Kawmi&mHKfnQAY zhKJjSR<2rA^#-b5p}lwz=vWxcudOz8RNDr3tgSBUXkXR7YHc;u(Kd2NYT0rxU#KoE zv<(jC=NBz2yND+32tG}w}BtE{7%T2ozK=(qJ%R}>0VU}f7#TlK!pRd&K92Ty8f zDwKvxRZ;3+RZXoP*m7w<6kd6tzpc7?GbF7WSlL$Xv9X?kfwp-p4J|qek_c+6rfq)O zmb`Cse;ZKaK)J1IHun!gN}J6yHr8!p-GeI!2L=XK0=24*h2g5VrN8QJw1rmzymDjp z7#llgWBKk@Z`hW&n|nh810&^uYQvg=0qVg(+X(chJwLFv$~)RhZB@3q41JP?&HYu` zp0BF*Jd6N*GPt%X9JzrKZ6ot?DBor?ZFg5<^X=cN94rl2`N^vwv(R>+?Eus@pXRH9 zLKpN8ZeCg5GSJ^Xuxg;Ky6(b$$XjXYLQPp)l^s=GSaZ-@gu|==Y|pm?yR_%a)kQ-) zstv=?kg7a+ZB=))+155gx0p8sMWDUw1_x}B!J=!e={TsHy+SE}@~Rr+_#F!wsS&X> ztbryJpzDKer339{JE)G>-by1V*UZYN0IvwYu?I z42W7CQQCk8!_e^R;=*9tfx))wVj$bv>XMF)Tl?qPNO9o!YEz|s-`eWZj*S=eZ@dr_ zSFVEer7nG0$Go?su&sZ7$&x~~p`5QSUSmZLSSvr@V*j+lpK8Mj7>m^E&HeLM4uM?x z12Do+ZR^Ra+TpV}4*X#A?I$3~Hg^DevL4#M9#R($*8dp7dCyzg4n!_gy)zFsG&DFV zT;Ac$dy7h2`>RXZ^KGSSGq7J%JFr~7ZSZ4sot_? z<#E8?E1-|d*Q~7`)-m5;!^45zHawzZK4rrrJLZ`US9Z*E8y?j$FKl>p$Go)RF&*>D zhR1fyYa6cV0BRupt6~r+-QLz&ZMfV@%i3y3B6CG8^D4|-o5(z&mN|`?Z5>{wY={2Y@ObE-4Oc_|Y^?^v{ORf&SU> zWays_J3HD=cY<_EN84ca@WD1vdJTh?C(003J1x(qJF2Iwsh$Gzm;q5(4;=ff0@+^f zX}5~~|F;CN4-+3~U6_%28XA@_0}7uCx@$%CFet`AovwDp z<{Q0y)i1269O!IsYdie_;5=<%v9?acR~7B~xO7`}(CUQ$br1o zv<8$m)DJCaj|Qs(Mth;Sf@C$U!C8qF21nYf941vzcC1id3Gu-J&<}@xQ--F2{%?=U zJuBOxh6wrzfvW}ZJxe9f5UY{}C=nP84h#n~$RRBOjAc7p*+!(`FKNkLx5>TT`sY&#t$bldtxmqKf&S>URE(;J75X=?ggLeC z^nuR#bi*=`+r9<4TUKsfkegqS8-JU`cjy;|j_Rpvk_FjcTe4n-aF2Id;e{f_hh?^t^MvoYBJ z3m02@TRnDqd(X;M34U2MK#5{{{Leurh~>UlusO&te4FM`Ns zh&0&91sw+)T*?-RxReWRne~vh)t0f5ZMKY!Tx84G$i*FZfHo{ZtRG@9w?k~8V$0Y_ z#g?&=9kz^(>~!raLTuEv%f`lByKL-A*Df2|<=SOq}P1)c|G&#d9Q)G@E8Ib?Y2 z7W{8B?(tHdSDZh-;pPiq32}2j!6#YxZso-Z11slGv`P1>>%9iH?&jgGR1(%;0|V9zw7&AJOH9?r( zF66%zmXM-0DE#aVp#P5J8E_X`X~MD^TekqGS@#0(v)%`OX#EWQRrV2<>?`L1ACZp$ zAD3?c*UOE-O>#4EtK0_MF82eAZOGew?IFOS_Ibcj_7%XZ>Pq0%YBF$&Lh96g3aM6$)N{ZW)LP&M^&jAW)lT47YBz9?+5_CH@u0P> z5g%Pk*8-;MRA4<_AJ|Yg0v@581M_qqFs#GCR{CgQfkr%ad)*$`QFj4$)5ijj*T)0@ zqW=OsQJ)ArSq}i7rcVP7)kA@!HA$c?G!ItOl+zuL0Ma^}x5x zTfleBd%%y)$H1Ltx3C@Q7-2bsox#9MotuHTI@5r6J9h)`aqa;=?VxNpZ#wIMn;n!5 z=N;!A;Fr!m;Lpy_!gjSgQdsW!F7D-i;(h}B-2E^3U%I9^P@lUS2QY@!s*k6TB0E zCwj};6QI6@KoGNk2o|Fh~oLE;@=N zxRb;j@u(OghKtc+jJQfn7IzBOv#8%7G4|Z6$6h4Hj~YATLNWfLv&UT`UJ?4-F{tOJ zTsUIvCE|9*mo7eg?1f_X#TQxRU9;)+W%T&qog@8-6x(G<0c%cZ4gJ3j4TY2c?UpC!E+1 zIN-z+fRHvN(j{RccqZgBIwE8$a>PmxhfzV@>A7R3KD zu$6oZU=QgNTTcQ$*%M)*TYS6NKVODA9oi}NbT0*&0qH0o>66p5fraejw0J+>m4>kV z5ZULk)cKj|87E~<%8(g7;oQvmS(%w#GhDdA8Er~jUq1KEIwNCOM$gRM8GRF6`%IJ3 z6%J=mYv2}V4A1DAc}8jY3rZ={=xeK;H8-OH+&H+t2;CD0T}{oHl+h$(X2$%C^o-n$ ztr=l*nd?e5oRmS1;<|?J$VXSc>l*MVW+>Swok3|kdDkgn(Oq;wE|vZwD@sWak;(B_ z<>|;LWqFaE2sOJL_xuQzu!LXYoyvxaOiK{1;YH+%vVxI$WjPgHM;2AYjps!+#;zjh z)s+23OgRoSBA=J#$6uGtgLuE1(vgK_B@c(zvO250K2tQW(!UDNnmwPg3d)zunx#4N zsIMt9EixotXQW?bL;N+-k=cBrykWF<K>bUZgQEV8q>l5#_G2Un}b-=U^-Wu>>K;UU-Y z0Ax!=qj_1%_|u58HbxPN*0z5}qz=!$Bj+c^{g2IWYT;s*QBe-VzY;4;jQ4?D9ZJ1) zAorXd$U$IR+_q9F?M4k8CkfPw@}s?_Hi#ssnAp!P#?UcvMI9T+v7* z>i5T-6Q6V9sPC}HpiNCRMlMaXlE~|cAtU!CULW{XWwm-S{%MK-MJB~xRYynr`qBEO zI{AwIDRlMibF^$nz9lVw%Ur(HMoLE172m1m+ymF+kKe1l1C6>PSrv^k{czFtF40~q z)!D03pM&r?@D!KauX=E;}}k@?&SrqoU@d+0N43#!PJV7x@f+H{+lhc5;-Pc=p>s%mM!=kuOST zSP!uEEBS{Z@(u3!av7avE+b$2jL7aX9%*zP`LGQ4fG#8VACP!C;e)LcNKs^ZIdv5< zqN$JbYU0y}a_=~8H6*L6J;+h z%?|G)yuvySm(i#jaru%*Li9X{;vQis)WYdc`Y ziE#AC`V;-B^NagWccY87H3zifqhU!b?!#$h9_jVZ6w3uA#}b^&rUL&q zaVoaqj8RaBPmr2AI6ORsWHA%#E*=uEi5cPzu~WQgC0RF%kFcU_o^^)xi1m#%&f0DL zVy&`&wtuzWRGu1SZO}b+PuUo&eT+Q9YwWd^=~#R7i0tOA^ES%SSogFGV@u08Xn`%~ zRJ7ifz6&;JnY%>;;LZ5g7l;-TE1S^5TRN9~Av2kA1^5nga?w{H-`PTvHnRzHDcK364+k-;-^oN0ytrBR`ng=s($JS>$u` zB97&_ztYD={-gUu_UN~Zcj|YFrS0ELF>jyC&~+i?}YH3gr^rq7V3|2-%oIS8o2`Z zobCJ)xx)P?j*U1rBbPi#ya|anA@QcEgzn~(8o)6-4Kct_4^fX960qJRwo`$$BM2II4Vj4m`fe_O~ZM_NU z+Kl7l(kDbuZysW>!nGswT!rJGppmPH$qFwuGS91v(v*t(OvZhR^ag~41nyO&w<8Z- zA?MqaPJ})VZ_l`FWJkwRrKOm=i%HM`E?YIqj9vybtfF1 zadbiax<<0}u{ifYYL3IX7mnUI`rtSoM_>5=1?PV7?~n5%(6I<%7e|Kal{l}%^+v=b z3C|%JM{UrJaBhmS&`k8gion+#OZ0NOAeXx0=mxqwj$?83z;PT7O2IIke}jJ{vM_mo zz}h%*zCBAN>nyBbJW3y}yXfO|FI}YjV4dO#dWybIU$1Y_Q}r$SR(+ekOW&g((Tnvm z{i0s3SLl`cRlP>9)9dvH{ZGA7zoobOb(H=>Z`WVzZ}hi%xBgD=)j#T=^sjoq{!JGf z%h*O4V;tie&m@^-lVWO_+9uW1HH}O&bAq|q%*0B?$IRnqp;=~LG|SB=zvD$T!c*yR9 zRjp6*O4g@%CF^pmVVy2ksy3>P*sKO&?djXo+;#1`EQt3u!9RiW=uzKZvG zJ?MwL9`s)(U;^SJ6EY$3v1w&miBC)i(@}hCPB*8Ef15MR8RBzumN`rO$6R186x(<$ z=60;Vl;SJrGUqa}%emaSTzu_}cgBlvoWD6!#JA1@XMy<6S>!Addz>ZC67jwBvh#}A z>+E)RiyxgIvHtQWx0YK={Nkp%^~JAln%h`J+}3WPCEda9V9Rw+bI-6m_bm5ptCl;_ zz0OK?=edtqjopRrLhDHPIrllMsk_2mVKsACx+|^b9v+_6!b|aLTj^Mf8L+Zw<)xMF zUGLps<#=~{_gHz}-@U(ELGO8QsTJ~;d&{ks-b!zk)yjLtd&N46R#I9=dvAMNtU~Wc z??-s(`;udFNR3(l&8aRnzK)WpI8g+mI56`ogkLE)If@wkraYFe1!3I@ln z3(hGRU2sXkxPl1B2RYxG9CLDs-P0R^+x89*SF6_>u1l zrbnsRxnOqT)XH7K+=BUqnT44JPZE}K`Gw_OAyU=7up?4^d%+@pTCEC}7S1Smsc=rg z>Vma}4;E}Je6(Oo!G{H(70v*Ed%>=PJq7y;7Z(&4E-qAsNrlS_Q*oq0!&KZaKkoVZ zPb8Y7lz*R>=8K=gSW5i3`te&;SXj6Yv5IPJg{yuDU08zMp{FBwBvS-lQQ;*T)` z5v-GMZZ(uy@>r{b93qEUL#QsXPLt2d#n#nwiG1DqE3KKgZl^W#)^t0~?rqJm2igOz z*X_IQnbsRv5C4v}9_!)vNypxA@0U$z4ZJ*3wNve6Q`JlLlFewnx@=Bs(dALPzOFBi zrus&q$b*^--lz(xqajud5 zoNJwH8zB4oPRj~kf%7W zIj_mVSO=aYPo>&Op6MRpHkD_)*=|sdaF21j$cx;bZjrpg?duMdS5eI*r?}_1Bjt_m zW$u;oR`+^$nw;+5?cO8rb7#AA3^8Mr!l24EypzKY>(HZ6MSkVXN zZ~)wKVvsmP^h7K6j5q=9*K6W_@dnD`b531M^YJ;x$%*Q)yFTm(sjSb~_CM5L)L-n?wBN&iRh_I(w%1V0YrjUjKJ3@A(__5-8SU|~|4nvc|4jQjRI>U( z6{{@l;;>aqvK-Zlc5$fIWIyUCvLAIcwb!Z*wb!bUc5$d1Us*11w$JH}xXN8&xdw5;lNBbhwBd~-NwZyIM2GvV$*d44sK#3oz74}FxtLwQ-+@*Rb zm1#YU%CtV4%CtU*%CtV0%CsJVGQCTWrd<>I0#QeJS=WD~ zvaYYA9TEC^+WDYwpq&r;MwI@`^iAFk-VOQ|?sE!8v0Li8-M5IvhLM9+bRtkw6^9tk~{_DJZ5u}9)#JnFWE-X8sw_k;I?e%kxV`&mEZ{pS6q7bVFgsh>^KNf;j` zxk;{GLN=qHC!5hrVJ|aqoWXVWGh!(3WO@=-G0CdO_HZ@Z!}YYE$(qiVu!;6FS-W8a z!(~@_4%{j7Je1|(M3<&X_17dFrjV`ta^O7_Vp|0z`ZRVwXvQbF47q{6h@Nwp$NfR_8z(~!k( zCpDa`LY>D}F`jlisoQC{le&v`JE>V}FYIKt#zqJ=kF90CHabZ?!Z!0H+ssq6^GQ98 zolgzb0^LYAQVU@}&DA2dndfQelUm9)vz+!ksTH*6Nxe*ap44jE^Q2y-Jx^*4?RiqK z(Vi#u2JLxLYuUQqq+LyFJ?&~z|79EdlJ+yH?`c1i*0hsJyR?%D1p+&nbS>J+r0ZZO z(@I^>ylh_9^=UtoZb18)bVJ(Dq#MzGCf%5JGU+2|50h>}wyImu9wwbmdzf@5+QX!~ z&>kk;mG&^{ZnTF<52Za!`b^rxq=%8M>a%F~lD>p?FX>IRd&v~gz9mygwrARr?U^F7 zJ=2@^Dw*TGTrb!3BMUSqkOi9lWP#=++Mi@jru|7~AX%dsMAm3dA!{^)X&;g~mG&W- zp|lUl495J;a-Q#^uX-E+`#<6lYvEnrGcd+oxd#vAGo8ccY&7z zs{?BT8e&m=@R**cT`cs$fzumGlPFV%mdELDxG(wu6gKC+@R3R19TfgZQ+Lh0j_f>+jqh4 zQR)ECBSRyDMIqopx`#v6x?n%ZP$}OLMe5#Y#rv(=K@`anHifrTB6@vx3}Mjv9sX>8Q{kl%CV$ zB-+BKbEpUSkF$l1g;alBksL`5XIV*=AJ3}+|3&9PC>T;XHW#;DR zy`I}Dw=lObsxP;xPgUffn_B8RGSxl!N!}~LPvTrK>%4<;!OjSknYk~sI7?+EWu<1N zWi`#pjA{zLPA<17@JkKdj6j0R?H9Yw9gsUDcUbOuxfkS)$sM0NF?V9l_S^x18D+VF z86|g};-4$Qdf@j*+@|K6c>1uT+S~4oHex~7wnwZC$CT7=|geBnR$Z( zi-XJa`UjVj%NrD2j_W=ZxRhW@*2I|0J3U56sgPTl3oHvPi}%YL?qB7N4D1c;&6*N~ z_L$4N2=|&&xeM0I8=H4k-Xw&mm*}8re{g@^^?BFRIk-O>Gdc&C$6xt$-Ypg7?BV7G zR>fT2oq2bn*5uUX&CHuwQ7VItD|dPK=RF*39&DcXIAIx=9W3VpYkZfLAEgfL%sCe< zpK~?k1lHv(39N(L6xfuvfH3NU5Bn~#wR#5~TLT}Jb31~=^Ool=&)JjrdftYdeR*%^ zy`T39+$&`{!QsKNsMWRwuMbYj`!a8L@G8_!OAg#+weszx=2(+_3chk+F7HQjNYn7F zF;R!SydT!QKX@l<lco_$4?p-=!8mzjl6u{3iM7Ssn9p^TYXV^4sV4%|9o< zYktqH?)f)@J}G~2{u$s*%O9P8N&dL}3Hg)3pO!y8e|A<;{@nce`A_CA%6}<;Oa9WV ze);=At2F?py5Ev7f3f}m@#H?ZDm`{GU zQ;!07dLM0}$-02*i(ozE^%Pi6b67!KKa0{&J)Kyu1Yxul7uehG=zj)7&-y05hUN~rw39Ri_Vw{)ZSVbJ)rLRlhl)g28b^1r?pQrCg z{|0VN`Z~yz;RcGrtJ3#o^Z@=6UX`(goe1>HSb{6VS1I9D;Z<4pN#7>CgG|-UkxIkoP8OmbsFk5qB4HuwC!hq zl3|xAGhL=Q1T;{1gvi;F*&wq?W_mzn<_1zpB4-QfCkl6I6IztnKC>&ZCyu^>VWITQ zljwjOoOwnlJuoJej_Y$mxtXIgM-$?>B$P{z&bd=UYeQ=@$KjYj6wZ@`}9-^{sm6<(YP>k7=se3IRw%%y=D;boaGWv&h{BNy73 zxd(0w#*b?=_k=d$8b@ejmICj?%+E5nXYPVOk1j(S15aaoNn^~^(%SQB^efP}Lf>Xp zU>%J;`6`n+)aO{0)ernu-2Whn!mN%=lOJ4G_pBnEA%(VO0NSHrq0!u`jt>qGjYfNM zf#1fWogE(Yy$qFOdj8;9#`97koh&F;+M$N3tG&hC+ht9X}vx_=eC$UkTI$?l(a zN%kNLljsxP8{V5e9ByRxMd7_^6LK2(=|P+y4X4G@<#V&ILLQ%&eLv;2-?C*-qI{== zsO;;>C;Jw{n9II1dnR4^A>fbj{?m%d#8KyEFJSj@_TxA&$zFozA10T*JbO9t6*}Nv z&)yIU2eaYRhFtdB*>4l#c)x^$bM`0M+d}O_?X$lmWNLTG`NvS#sLS5(Q#lgpbSV#V zTzaB#!zdTXMbAX#)b@E%B*|#r!M7wVhjF7aF&%!s`tmuo!^3exjFN5p3GSUcVjuu(wvuaR_Ck@&Cl7Gvn6Ls zXf^8d4+FzmW(S(K%+C4DZ`*UW=j_Va1Gg`yI9G+{hu7pLh5F{EhSrAX)Wo4T*ECM< z!SI7L1BZ?@s5tj1O5_1J*aTc|EB_pinAhuA;@dr!9Y2ADCl!5aR04cD{PY33)G%Cb zQEpK&KE<6#f$oTN$ z+=-#u)V~R>&7DHMolsBAu1yWC4)qN64K~I++wH-|$aT!N@+Tkg|kXU}NnjONAi zO#FOQUgMIP8_eC%yiMLKc|9=m(LZlc-syS6^G4=fgxLU|55Tzpmb`~C!k$T^KUyP7jqvN9YqQ4h*C55ymz&I-1Pm zqZ={iIfq9`6F^PIIB6P2N;iU{(b8Hz*5b_LrqWT#!LIa{S2e0 z?HD)hDj7YIKRJw|X#B+eGW1T+r$`UwmeijUxISqg>Pmgu;DYdCJ|0JoX9n`a>jJIN zgT4yAzK(*kq-!#HDXaBQe+1v>nZ$1ObS;PHk(((uO^hXsiVyA?shHnS=_V5hUau0?drIdwt zP!6L;S%o@u84%+X^n|yDKMH@2{`!vaH)xrEX(?KomMJakwM37gWp-MFmO-ot>4CLS zx8l{1v+P+yVx2@X*6`DcT*WJLjc$zg(8Vp)_(U)0x^ z>B~e@tbo2vG}E*6ED_Li^xs8LKcpWLM`^6k7DsDZqg{yg(9emsSQEWcwAU}|mqk}v z6)n19UG!#gELKEs6~|*$^rxb){(PB7OL)R7; z(kf^%)-*DW#5mIwYrC(&YKUIqO4G+2FRn8E%n4$GImw(PCYn>sU~!EZYpxU5nj7(s z*SoMX;&w61+-0VV+2$TIQ_L~5&AsA&^LO)*m}?#}kBW!PBC|-$!>a1#V!q=#DdI6F z-N_bDV_o$z;#sV%?jROpef4qTIcFGFi?6_L6Cqx5ZC8m`vCew4c+GvseOIjaQoTlE zV^X7}Mq(@0T?fQ_wDwwj!0#~qS90IvzT%_g0a#=HF`maQ{5+1}=Mm=T;ox~R6ZyJ1 zo=RKTQ1$Z`{MH8${?;;xMuDUCpVmCakE_hnUiiWxeo>?eLv_2^aI#4Fjvn-`S?4^K`NJnx+n*p=9lzKB2TYGDY3bH*eDZa(N~8&|HQ05H~efn+c%*YW@m( zqL~Q#8gq^4XeOCSqOG|WC0L>aWBnsm{@*Nu{Kn$OT$;ObX>N|ve2-|4T>&%2F(}is zMPqX>N_I;w+4Z<&XLHF8aLKMuy9Kag2>S(qRI(i|*$zr}XVBO^AUvlVO1a`vuCSNj z7h#-Vo&7>%SHW*01v?9hMUoS7A|eGl41`Ex8*pI*8$>egHxR~s%iScjyBSttU={C( zH1}QDhK6m_6|Ps$t0!uC^}YHc*K6Q40Nv1Q2s#axQ;RJ}!*cS4mxQKPD7GK}9l#FT zPi?jz1^bzXRhT10ZML7I*nUij<@hxj*+v7ljpl3{o!B;V**4O!pQ9Ii$wJz&g#`H> z)D74|nzM!EvW29vg|uS}X~y-R#dad~jT&!4W@}OUW{vkDv&~37P2>H~Y&l9#*V9Ey zwx9ZJKTX+w>a+bcWy|qx#% zEUFp5&AYWZ7H{+R%yFit$YAU0%+_^;>1+N1KG|3Ywy|SOe{&)@WL-AfRb#d&n=Pt6 zTT~%il+6}pvqiOHi)v`5ncGAQa|hl8p2v38$jmS^u#1qat1Vksfth7yVYvjg7S7KL5Y*$%qS2=7~S!`E1Y**Q(b`=nYElP2VWPFPf z)^AIYV#}g82Uu1T;css`O@OaB*gt5|n>H=6m-&ydOk<{L&wBK&(?6Lsyyt#6p@m(3 zpf%OE;wOXmP+N~N{{|oRFYrB6WA~^$lgf+ON3=DUedj8?hg%LOw01JB3B^y$d5rM} z#-kaN3B}!nzb(>@f$IpZ$?Us>@o3U7_7N@5WL&5526s7{)6xlkmh~o~Y{hsf$A3hah`lje6yZtgMFdUzsQ~fyod2<#zn=H>U$WE zCe$}YeujLj$R1z{xVjZXG1xkfj z$7#VXS?FPT)RPqIT1I-;fF)07Y{^J(Wx?}hdIX`NcamFXBO~iEtBDpj(sM-L0=Fj; z=g%0T?N15SH0D1ou}j)4A#`>Vx-Qdu8TS*K3z@#2L+#^G{TRD5ho73@lCMr=&WYHA zXIWoxDH<&EamRqX7kImBkF@-Qa$EkO@XW1rqU}cNd7xo_GUGq!DaaopBS?m5yAc*K zLx%augbqIo=W?rnb>e;Q>Rh=N@eflR9DYV_HpSe{FH8A3IiKY15b@ElchuRC$cu7=4Slk!YJsqufQb?8=J;}&6qFBFT3sN5O+WPF}wHpoYD$HjzV1M|}u*?z5Oh?WDGGl%I(OwVAPP8MoyWL(I& zfKdFx^rGLsqB}CZlJR-=-S8XoM=mB584AF7`bLKETiRl@Hifc=|kZJ&o z>yR6IDC2#M&oS~-(6=*v2O~c(J%i~h8JiHQ?o3Z-WNXr6nfA-l6sB)syr1y~MlP9p zGSQOjN%3nB64b)?h2k7epGU59+-F6LavG8Z!ELcaU8e3xrWXo}Uf4q7yM zEywCwj@390`vK#>2{DU8cno6(V}Q{1<2IXU=ot^Zl44bU#;~YlTseT|@HYK!9W2{f9uwr^ z<$=&IjfEVO7g+NPoDU}uN1ep{>siC~>|4MiqgGB^Xl~`4%XkhUjiG>fggmxtMPn;D zh}u^0CE_-Z`1U*+L)r6~e-UdN#o9)(wowjg8%6R!(m9HCj$)moSm%RgCHO^*LzzF6 zC5N))P?j0W+J>^Wp`^{4jhQjan#owic&AT0=$Bfv31uJd39uarwj*mhbAIM=;?Hz1 z@iWCAh?D}M8A#*Dvq;kVz(Z7J53RwRlZFtQ>3K~cUwbm=#$=X1lksNa%MqNe z5uBnC%pbui8o?)&)zhQba<48`$NKQpA=fjbNVjq`;edLR|0+bVZ zJLgGPmidtJ66W+}`fJAP2-T@fpUXHxH$^JA%*g3{$1#j|6I!q7&wyVON*gmw7~7)H zYgrSRUchwF;LB##i$sez%mUy#^B>^)5(Gz1V#$?^&ogdg?9DixP;AAluVt-b&NGDa z6sG4eE@7O-_#WNGdX4d)j2j81ZK1ZeUa;_OH){gZ3z!bd05~raja~7@6hn#eomfw_ zoWwFK8J}m|#@L&2I-%HVVYb6s#hhmd_xUiXd|^!-{98x&75# z_V7;xIEGt5%$|Z)=djFOjJGo0$#^@XABSt0=CX=eUeY;(@lwW{8S64~yQ60^eFvfW zi0QF}>R6^ZjhH7UJvTAl!07jjZeg1HEtoAPnbCx3aj13UUXWeKDFS^VBuK7eecU}f?_GmVgD-q3asUBvWImK@5VhLR-Og6mPnIR4^i);yVgN3bOK z&8(-010+l5o|~0sJ_6m1G}uKPs)+B~ox^esDY*udA?A-_ZCnfCUPwFY5Ylihr=mWm z>l;G*J*Foxtr%08vySmP#?{OpNr+w(P!8cZbme$*D$u6T6Ku_RG9&i^q=4V!yq@)hFPio>#`5Uj&H91jWBtJQJ=2dHV{7LBOnmEOjvJ@N?#jL=v-}Vr zxxMR3XmOtbbIVk6Mi57G?IBNQ`fH!Vq2A_NUuC+IDHrJvehGvxEkN1jQ`PW6aA9>Q#rh(94E@SDoPxNGmV)Oe`n${8aIJ= zs@3R+H^>RR!w|pdJE9{4BE#vLeu;0?r*{|An~V9IIR9dbLMQy_`%{nrKQh_(i0tHh zBuGUs@OI*z@$ZTyod`*Ddu4x=I{adB^RFvMiUtgKJIY!oiY8I7A&=F>R z!=2-EorMse<|S_zf8YN~2TH*Cu%HzpIX)*4w!~5*<9rHV+oKuO(yt*#?-{{Y5g~m( z-q+1B^{;$eir(Mxe$577 z;zd5gU7#oNSMoOX2Bo2zmr`+p@$WIN;BD*ly~rx-sfu)#s6Vr$)+))@xSJk6a@OHf zRjsBf^C1?x{F8|JRZnqw;2b-g@7J&Jz7?d0OMHdG2g#grkl_v{SOw`xP?L_gnWw{A z783F=dd3@K!R0m<{1}&>gMURx|6cVX3oo(tVF>j({Cx>{!hSx%DelM8++xNt%aiFP zEUK@gG_jbDe<1F#HS%XZP0oyzUZ}rzddoOe~02New{7y@fFM0l%Aq!c+lULdX^A~75yJm_IENd5Q~I5I$kI;93|vc z)aR`u7jUX3L;ifU8dPti{V0v!PS%82`#l(Z$7(WC0co)upD(YQr>oAGj$(}|_4a=EH};#>8q zd{2x~BRmKdg@tMYg7_0}wY6=_6ypjnuTe&t3M@j`JWrMdVh z-lyht#j!qsTCW=GEL+xTF4u4W%cdD4OPW`k9bbwodt&8#5U~`;&lZ>52{sGOjJ{lC z53b)Yp>gIr50C7M@_Zj4+fQQHQoqARM8{Sg50}C!^pvEh3JLZqmk$X65@#>ycn;%)x?+mSeXB9s^XgI zegzC6kJ|MS86mq$J;3FF%zW=6|ec?Fh9?J>Tb1s`s){W-OG+on52E{JOO&zR|= zUSnMQljvXeDz0^_pmi-D%d+81?ppc%YS;=?toIPPevh>BxJA`Rdp?!T?EYE*Z%5jQ6{|@n*OYRJ-JJ?^vaU*T$Z&I%lv53k<21nyeocNsZ=XPUp;1F#} zLU&?qS@H6|WK?flxE1toY5A1LB;dO|t`>-SRBO2$=M^;H61{K4MEe8mH#w#ZK2bYl zYb%NS0{VB@?}0=bm+y&0W*6^|>hSyOkrl=3s!R|6D;wXhkA{!-uS>7#-{geRY-e$O%{vW=#m&wEbvbaV-ymvqTJH+@0N$9cQ|d)d;^qp>4_=-O#KKKHvh-|=7P5CJsyV#fC5wgPdE(noaHk5x|X1zmACC}Us=!f1|dJ!EDlFp47W1|%NKe|Kos-!;}3&qk=$=I3XI2_KTFXmI0 zipIYj|9zhm9gP>yiyRY`iSnY?xC8unv{z;xF(yG2k3uf>c~}XAF-gsSu{)Q9Es0w! zbXkcwpUIJTBh#?LrWyVpAdmYsnNf<}|o{Ls>MV39be)n`b`s^9PKhf_0VYNnDt^zf$=6+J4yhc921WOQ`k>nJ-*WM<=2NKX#79>d=gT5Fc;3j1gb7ftj4QO@_*OAd=D6_4=^V9fAtqj zPn3!j`8$;dQ;G)IFzg{(%Rg3DZS?*LeS5=*sKPmrP)htzqU#k2+1+ja? zja|#Eor=jEZmPQHbGYyK=j!{Pti=vPeNA&6ksl(MHII$FiHhH$N2|SS`Xfz$<}Wgd z`UbHTHWZh#>yG}+_#NoIOUE{yOG1_z2OX%s^75s3DDPEMPBd;cl|M{!k?jeJYGe(O z^$B4rxL^sM8!Yi`TTUq6mpuOv}f4_U&{9elcoi?wsUe}-f zfTQi~p}p_vPfG=jEh`&e(%PTs`kzFZs;;6*AsGto%Z?LEN_Bx5-($z+nIaRI_>10y z-YFjYomryKk5}SscEZ)~Rq_wV%|ZD=RCRq&rk*Psn69g}&WdV_@=q&r0Q=1J;F`=Z^Ky6iXa*2B+YoP285Q*Of zU)75G1B*)4_1S^xsz5qApHYF=;b%qmCFrb^a8>4_bpJ&B9C4E}LZz3HPfJN5YWZ~J z`zQ~-PHMb)~vK7vYt5KvTNm{_c?s$ z-~SGWFRqE2B3~t5|KV3s+=uU})B3fC#9A>^tP@{~RaTOk{j(5yMf$fr`dhv2X2^CUD*-xrAs*}A)bx~dH<*K{tYp+lzsQ&irYJj@jUaPK9SJ+>w z`_=vSS8A@BYwuDIsYmUv)#K_p`+N1g+Ga=8cHKa=)@izl8m61-=IUIXr}NZEjW5Wn zQMynUsta^`-CkX&JL#_KBKm^78iTLKAFnQ>Z^WxB@OAk9YP`NcU!bni7wL=C)%p^B ziJCxPidTQd7l3Y46Y2Z!YAU|}{(!m}Unlyzx=qj1^VIG5+WVvG4*j@(T-~Lg)K9AE z`11QAbvM5J{+zl8-+W)GX3^K))dTdkcQqGZd*7@cr0=<_$LV|S>Ir;d?%(QZy-jad z&)`e$U#Ug-Zu>s9ME`2EdKuqdudUYM8|!t|W_(?}nR>_Mo3Q%Ov^H(jr{);bR{h7c zH|^CIrlaYuw$qo^)z|bzb@i<|*_^C)n}KGa`p%qUCaOL3{dC=gzMrmJ(AUp(rsFy( zI?G9SvUNUv{am-Cub<<4kDZ<4bZdO~e28x640DF*4$ha(m%5{~%h{(pIls6<_rbT$ z`{)zh{_fxPJ?=y9Bl^GYLU*y=cyj~{9 z>+SV6x!wS8kje9gdP7an8|Do&A@5Rej0t;Vy|Jd1ca3+0Y3<$QO*8GiJG?tgSMM(G zF4N7s+nZ&&d-r;COfT;NZ?5U>&GY7&S`ZBw@n!e0#{z_kF zHxrZlCHFJeBo9a)XeJ41?S++g$5)(>6@7#yju!**RhU8eB8(;e3TKJy#m&H5;F^kC z;Vf|*tXjdUUkCjLY`YO`djsfyicO$53w$R>Y!UB*-YW2AGx0CDMq-=z0=NUt5oMTt)*HgJ)>`XCGi$xIS!7yoTknYm z*8A3WQQP{;+6Da9`WCp``b9Lcew9sxBaf6v3R^annV_@eu|moovIoBW(^DP~>?_X$ zXM`Lf3aHKkeUrRNgymE@6}~sin?c_qZv%Y?zU_){WXZe0nU3%JO4McZ!FfbJB3${X zd`uYmxLgFzv+_AnS1yrDMV5R)E(86dd=b9OlZU$?1zQ?7&jdbu8)4fsNN7HZ9Zf__WB1>d*jyTGjyU&urq`Z4em`H5&DKb6}+ ze<8m>*zNLL(7WaLp!drCpo?Wh*tW1O;o8#nKquKrqN$yXug}`3ZTkvo|HbYH`UHHr z*|PiFCxJfM9svG8dobwJ?9+s?Pq)tlJ<7g9q}bza`qC!qW$>@Drvh)br-O61Jrj4C zWzQ04*t6~DKrgYEAk-Fni%7EHwci!m-iohBC)w}YABYUp@Vz}z~5)@ zgUo*WH_*k(6-O#hCE@#N$tqc7s}z+Yl&Y<2gM%6$bUjs1^hLcN63tXtwFJMlYAp)Y zQR*ns04+fq@fTH~P#RTR)fW7AsvSbLSNLAK>YzFxR7cejoKC6}IGt5zQ3q`XN~}6o z9SgdLIu3MC)f03tg>QVR-l{kB^ii-ibv(Wfu2f&u7j!>`+*AEke{cq>fzUii4MM0> z)TKhIF=~vk)n)23ajF`t#)?kra&@^#QRCD&(VW^O(Bsu)(0@~Z6Qk4=d|lh7R!XE% zD+NR=1$Y&F4aWZsHL{4Z6Zm1p}r6&sO@S8WOk~ZkpEJBDMIQiwM(>6U*qe-QhlSohwoms7rsBJ zpWwSsp)6@sHNt31TS987ZP7w2t-!}mxY}qVPSlQeg`+*441S7EfqX4pOVri1bsf;D zI#q;pU0oNx^>jVxsjusUZlD{86x~p#fo_DaV@Z94J`(ax@rA}De80DuI7v6x%|!vV z$D$#%$0CPXV$hv*XJ8lIMRd?zbyv}oT4m8&_s~5=XWdKp0>21fiyy9g>)zsIeY`#% zoW8m*B++I=vY+k;$rJPm;vC&y_ZP?M3-P`1Jbkgg7YG4M z)lMucmrN09Gjs6bl+M~aRdJ} zOB`V&zN?mMY@$(#-;$?FPXQxvfCAcH4;hZh>1U>bS?aU4-X$b-RjYZa4Q> zk?Hnuj}r~to^Fw-?e=#2h$iUg4HS+$$UOyN2fJqo>7MDHDZ=hBcNpli+_S+y$2~{X zbXh?kLgJ9qo=5#y#J?2r?JDs9oL5+$$04D)+CTC%ThGiu*VBI>=n_ zP7|(sn|qr`a&LF<6dCSa?sU<@z1zJ9oSE({ailxjeE?zSx^tob@9rbexzJq*T;wi7 zN}qL~MH&~oixK}N?h^2ycb^9b{ZWKk<*vdVUv^&sz1m$3dX2kAq`9xTuY-QWT?_h6 z_f632-Sxl??gr7y{inN8hp%C$ySv<7 z!lHhyQ0Uic(8e>OzUO!z=p+wyte4`Yh!n4uS4$YLwukl+ec!qw;MMo)iz2U~*AR$) zusEK2z@iTIfFaYx>mr(>AB^6S*TXvwVbKo;e}FdtItO|K#j)NXZxA@>6T=sMV&J9T zr9yjSJmfj`jKR6an*^D^dDj82_pV1gZ}4uwU2gJj5)Hhm9{ND}txim=l> z^!L2mJ@l-o4=tK`)4k~kHN%?$yvMr-VP|@?L~Zn{?}f}9Zw~Z4;5`7}x!zpR=wSmN z^&UeU9`_zc9G>u=0{x8l3~+(B0Cz#3TO^^+y%ec?!FvHR%e)uCS?R3;=N}%Pl=rIl z8t6B?H$boT)`}M1o8Ft?tn=`lOzNFO{#|b?d_VR+27jkV&*E!uH{$%Ahp#bvd%V4f z33~0qqF%d5r(V0rre3=^f_m*Dn|ke{fO_r1MX!B;XqY@Oc_4bxQZ_~3y)zorF6hBK z+=Fk39{kDp2GIaGg}(ei(1XMopwAS;M4C7YJ$ncJ`l-O1(VH(sZ+<3LM9qS0B%Tsa z3nQL^t0fk|+1$TxCa7oMjQjM>xHsR7d-Kh>AK#37@Gg4rjYVVY2rE;xu(GTy^trpE z@9v@R-V^=xURE!0npI?70eU=o^A7jsL+H&<0_R%v>2tVG--!G4eYj8G2z~n5=&9d} zo_#~^**8GX{xMMtefr0RYdv8-Ax^iRwEh8lwe`9<+Ijxa?rZzWp;k4C@WmOUg&FwIqn9Lz)v z6~pA&@?4R|{eFw)DnvHsDsBZ%lhdH*HhG&U;(mV-`u%r;e;0cH621TFB17IS?*?ZE zMgkca3Csh3KE?w!#siOn^BBehIXoVaJRb0PJP_vbfEPC&@OV5B#&}@0@OUH;#z+9; z9J#i14B+t?Ak1R`4`YC>@O@9dCz^2YzX|vLC3^p#g0l@{fSl4Xz;@8zVkFS6WF$ai z0EsbxKwsR#NFW0v0RxU>J0b_OFBmfOs6b-Qr9Su#FgEZoHaG%(`X+W0alU<|js7lX zW%`P2j22D;eX@Nr^bEi_Asgd_fzUGuqlF~n`zO#e#>nO|Ml!}27W>Ns*&$j5pFS zpOl1NGL1KmDj9FoQniFrGTxw(Mi3*7uxO}Ss#cJs@kTcuZ#3ocMpukC3Pode3`QLd zOU4^C(nyILX>`LF19h%C4x@{1Ji4${QJE3NP|R9IM-*pZ?rMPO%HxV4#uaEU)nJS( z>hQRtA&)E0<8j4VJg!LP5rxI$ha-9Xa3qf(j^y#fkvx9TYJplHu8bQ+SQtMn#n>P= zahj1T8Doa+B31ntV}>LiGqmF|LmtKq-ylWbs&6q`*sXSpCh9x&9XNY1 zerSU6!w;Z;#3;gG6tNHV&+2E;zo=h8|EhikyS)iS4v$A27DgR)!KsIlhQ%Wdi5b2$ za2n}G;55c~qb0^0M<8qy-2@yObtLnsV>pjGy7Q>xLX0|E|9|AY4V;a2{{R2E?yoa5 z#u($AGh=4X-I#=sBuQ3sCM(G$$%;vm8Y@Xivh5_5>Liuwtd(w*Bsr2TnO16%D9LtX z+ioPak|arz%>ViMoS8AAw)W=t{r-QyxgO8!?p*V^uIqFAetoXbjkwrqi}vUx>jJTl zr2-kH6i82{K+aGKq*N)8?n-rBu2e^Ns|Tv%45c@^E2VLTQW}@annEmfY6@9XQ^;B> zja;QP8Y`udtCU7qDUDpEG#V?Vk!wk%5mp)_PHo~$(N`&rxHZd~#r}QPeWIJJUt~@F zB5SEPPPFD)bGZw(jI60;WG(f^7)$DnQcLQMwn}g0qBp8=|2b60V5K_3N_FHa)e%;z zqq9;SCo9#_NvV#`N_Cv9RL2QQb)2kJM;lbfhbWD$Xph!Pd*mwZ(Mf5Kvz7MfqqN7_ zN_+HC+M}`39=S?;gq8NlRobJm(jK`=do)(sBUfpUu+kp6N_#X$dsrwCsXb0t+T%2( zJ;F+RoU63QiAsB%tF*`IN_(89w8tq*dz32eF#^?btmt63uv>_;?3QSc4oZ7mgx+W? zJe0=qsD*aujk9DOD!)o~ahcK;SK6o8r--piT?|m_Vw_SJ<~fc zbLVpra=t)&1eEs3LwkHF3eX18Q&>`)W4v8uSQslCTpj+&Qu;y!ZNK4VuZG{>M zC^eF&)JOx=$SG)m&TeOMyn8Cj#8t|qg;FNRDrHirlu4FSCNZTH9q;*8o%{ie(6+EI{?cGs?b3L3Ft_pOpTA`GIogsn^Or4o?T>bSgCR#Q znUm$Y^!mtO>z~P-@Uxc5oj0F8lMv6V7wQ8uS#taTtpERsyJQWkS!QMp%WL0obnQFl zwa;tcU`XxJp)GNfC1+{VoTh6t6YT5qID2-}ocv<7wNokTT)1BTCYOeV zwR@Sv4lP+T*{@AOdPA8m<@?Gdy-mBL*PN@pauJQUz{m4+_eiQO$=FR+f zed?$GKWkY1--~myrm988vGm>#*BLc_Q~PHBWSfpPne*z$o?oBI8RzOREvMu!$l5@jGdWhCdEmJ14JOKTpRp|9mpL7w#V?IV zXE)DSMt+Q6WKL#p0_W2)Qs&+h8cbA2#hJf&$tuiPov|WwLdJ@tEjb6XT4!$jv86#W zvpFG9lQM$Itf@c8H|6!*^A|1+XCI0U+;fq~GB!2Hl}l!JdVTD|;++}qvuw}Unz21| zROaLmS7c_V7w*AzYQHRNUnXRYXW5svJZpJ)Z)WGrrzNGmrCW_2O1oU^cB2D5`|+Qn zGIpgG!Z|mq>wjaZy|3J6ZIBD^!J8af8nnvp&5_DMWO`G+$~(w6s(Y&~hb)$~%~0Pq zkS-`U(yks}Lhe*?x~>#YmtzekrpqQ-CZ$UvS;oi^t6gLmu}BxwdlSfM)vq!?tjiIJ z59v4g!T;6#58NiN#c-vCV9uq zjq>`;jp?lnd3|i_*d4}_5cgCvJY1t8{MMs=krybQP+r}kb-iJHh%HDO=NpmLu zFV9u-ALH0-!@2E@Go)J|S6A_0m9*e_q&lU|#Z~D_UtE#bwdK0*(mm~O)k*zzo?RC& zi@2|VyBYe^+?Qvi1qny;ygW+(rrlRvfr}NmSi$%EM%86CZjGZ6$RpL2oUi2Fs`$oU z^US;vM>TFK4rG#U8Kui&C~Z)Zzr!&eq0k0xWgVTD5}SqPgkG9^PunQpRr1- zlj^KZh@}X{appo;#FG$uRvve;wOQ3w_;wZlSB?+G%yufw#?kiXPbx$P^Ja5+&T)ik z(hjNrxsMR24TTS?EBLjFC*-?Y{cx*&H}&j}o>`qTg1D6Ss}#Rh;9{lvKUY2V71fE_ zcacwSb>SI%RwvXOxYD1^PCVPGgc2jLTgS0YKUqRP8Q&G8f4#>Y-mgv(;>6$TDrbN7 z9QRdN4>JDoEkh)Dvjj0EK`13?(Uc&zBxtFWa4&*kA|ZUWamCuebG*)blU`h-I_aAD zXbv=zceI}3*NxoqukaS3`7zJ6Po|-RU)#K|9pH``KY3LK&zTA8N}esQeEn$^gW^0} zT?*m(;yhoR=cC4;-j#9QqV~$MGT#5JD^&{l(JN*At#wnTPw((6>tgQ)!v1v?{wmer zLlyW?1wK@P4^@cFA9>EYyW_7P)xA{~vFA{{dJlKshkEgg(5xUdD+tXBLbHPJgSUuv zw9s3}SEqIQ8h8yh!e8MHcvGySrPw-JT&$yZYaQQ;*NJQuBI}4hufd`4lkw?L_+=2M zGa*1MI#^xh%F)%b4~xa`@!#p(MgHeuF`6f>;z_G`(kh;`N;H)JDdTWm8u%su-AJ5E zsF(9~^lF$73&p*BPEYXe_i7#CROkY?ihK2Cgk4RZuD@QLz(3-&(zsXTlFH_oq<3>R zJO~c~v#Od8!y_;k=D}kyA0CGVGHr`n-Ict_OR$Ew@#{}=kHzp5JOfKX-nRdAaarc7NnB3ia#93vc@8em!R0x)JO`KO;PMZB2XAj|;bf^lzk z8w2aZ_(ye>QBAzjKnKcE(}kH>2nz|HMF+oDmKA+038TK&7V^H2tIG+aa`N+pD6p>J z%#Cmp+ziaSLY|wlo`*yEtt>B7)^7L;zJ`6|sNC6RoC=#e+ZHf`V{KXLG$1BtLqlTn z8^qp%|3u2GZ>RidDs0L-C3&YL@08@7lDtz=l_SryJ^Y=Lyi<~QO7c!g-f0f+l;oX~ zyi<~QN~%~~ujJ>wlDt=v_e%0!Ng?l6#oem7TNQV!;%-&ktqLEkUt&ogq&ES41z$tj z2dlVS6?d!RZdKf^%05(@rMO!acdO!VRotyg6v@x$@~4%IO>u^xiW`}Xc^?1Jc*VC#4nBb^)KgG?-7U7)~8Gn zN6opg3{qGIDJ+8&mO)D8WRW_H>ZiiJzC|R%9qsV5!v1Q)e5ZW@gt<3=r<+?H!l>e+)K+ar02B;8keOQR!g0CNL zTY5*>mj7y~zeI?ysTcaM)x`i0TiwG}_psGHY;{k@2<-JEW5p%un1K!Ni8eoY^7s#) zJpOMz`HN!gVR7~)EY>y3a!tqG*VwO#zdU`Mr;qdWah_gUwesne#eGBL9#0<^ zZGZ6eKgZvHnY}GFTYa1RkpC;&8=X{}0*~hZ@p}G$$UaZ|e_Z+h@jpAhAH=edDU>q3 z&Z02bH-Yk<+*?{0DJ%?GLvf^q@$*vc;i>f=Qs%wzDk=7-Qte5!cNDaC6speVS++Ix zHu}r#GvhP;k%Ybrz68eDrB9NeJ)khIhKX#-$Nx_2b1A?m;yJzjc^l8rQV16 z)@Y+9XniJVS0;O+2-u4O7>o_deaagY7uw2JsxsJnf9f##Q4$E~Mmg_i_!#H%w zIPFnD-)S$yTG+(#-{2kiJG=|;!Taz5Y=#eE3w#7y;bZs&J_Blv&<5kso#SMkmU%LC zX8$yxCeb{H<9^lSu!zTD5s!1bP%3jC9Wf3aF%AoP92W98ANe0v@;G$GICRB0-{&0f z1ayaQ7p3?ayy-92NWAGR-gFjkI?KT7GTwr>fs)(!1pWb7ImV}erDJ>sSUbk&uoJ$3 zUGODf@flcr#vZ`xGxowaZ~(r?I+yiyEvskY1GDgfL)z>dj?rhe^^(?93d`mdD6rKg@s_>mz_|7bRXBNIQOZ38b%83W%#Dj9; zK{@fDoOn=9JSZm~loJoii3jDxgL2|QIq{$z-$~&+DSRiTVc%-hacOVBoA4IA4VzHO zCN#aM6_>m-jB#9qM;zyGBktBX3i62SgN0RuFBz`1`AJTWq@tqX4 zZgW)q-)_!*1*lAMR{h*fe+2sz+ta}ItkX<) zu|EUu25d>RQx97s6K+TIm&5J?J zi$TqcLCuTt1T2IUEP^LtF<=SQX|;dVKE`(bDIModAvN9r=nxkj;!Xv$hOajg=1t&=l(HQU1S9litSu zoglU8Qnoy|wG67@IgonwFKkzW)T-OqZU?@2U~{E)tGstwyQb>2D=`J_b4b7PT-aW9 z+SU06pSu)zPnY*}c~9)Iln)Et*9}gG^PwEZz&v=Sx+>!YXpc`{`2S4&yaL}PI(N)9Crn3!pOH1iyNvw1jQl%6{+%HIPLO|BkbhT@e^-!ySCD@v$iEZh-wAPr&{-Q`f(16n zx+xcYkO7&H1q~n@8bS^>J~HbpA7sbQ`YZ}BYpkiZvogXm87pq(pM$vD@FQB zk-k!-uN3JkMfysSzEY$kSxZ|%I;tQYRgjJ8OHqRDtDKh2>a<9T@!S%KwQQ+fCDUjnX*59^tssq7V2xH`jaFfeR$+}+kxnZ~ zr z+Dwr)Q>4ulX){IIOp!KIq)qB|pf$9Cws1VOgA<@VoCqD@BjO*rX;_k%{eXVu6|1-sV)e8BhQw3cySNd4x$GVUkCf zWfAj<6IKQgFD&AK)fk$9A5MjCwEKv&{WbJr{|f43Z-krRW=H^jg2g%xol$P_ zKIn>aQdAZxDvK0#3MuLoQq(EbN>@@VT}iEUCAHF(s#bbi^=#|Y>P_g5+16)lvER@h z<$P}`M|YI-y`>!8QEm&+!2%nc>Nb?ZK}z8u+M}FrFXeoDDR=guMZSjp)u%Y$(XQzL z`M*(}MQY7*FC%Xs1(yTyz?}eB!$i0SrjW8pi73JZiZFp9OrQu8D8dAaFo7aWxP+BU z__&0NOSrf%!#a4i`V><4Dei0BZv(u}{u|hcZ?gY3WdnZf!;eY%S)}|dUtjil2H#wG z6dr^5@HjjH!~-Aq@e%I6H{mU`QJ}gK%ba#;;(664UCSlUFi6)H`B|cvpPH6`wFN)Ez>O2{l9W(P#W_)m!{^`iWnw$q}9AahAT` zT7X{OZ)j~8L#{wORrcN1Cev%Xzjgzo#r;NmmOk3Uv?|#zH|yuge$D#%^lR>;-z@tw>(lAQe4c&>J(q{+chg&Wy#AojZs%1d;1#A=;3?0QA&T_F~;eP4RoCmH)onNjdRp^ zb^T;dUgKOfUR{4RUfm!yUfrd#H?EO1KesgFkMxT58H?!snrHlp{;dJydD)xQctQ4N zHD072YsmPE6|o}5DyxOn!dNYPuo^GXYqg89M)p)S*2+Gr#yZ*m)OeMir#Bnx>1TSI zvC+E2y2E(Gy4$+jcvJQ>HQu6!>3zoAvTv#JH`%w;ct`dvHU2L9kQ(pOhx94qJvm;T z@qz3yYJ4nvj2fTNV|1Odjb5U!8{1{iP-Ca;6KZ@xpU{tuU2?oSW4HCW^|`T^UY}nZ z-^f0m#&`7Y)Qto5<#bFT`)`_t?73;0^wTUfEjwg~%nW)*US(#=9+75C*%#70PWFW~ zTg$$X<_WSFq}f6Ce>6{)Js-`^vgf0DsvMWj>>~R)nq~BG+-aUcf5xxPp0f9%dA9SN zD@>36i5cd3^hs=JULgA+nnUGCDCR|sfzr|(P9MWl%&X{E*u$)(=ip#7K@Y)e%vtpH zn{GZ!pT7Iem*r@7=3DgFTWtPaj%H`RCr1x4Kaiu@nVaQkcIL-&d=T?9+5gVmL7%%f z&7HEhowpAgWdArz zm;K``Lyl=@nX)&W<;c~z@nw^y=d$d^v^kuu(YAVOEvqEwlJ1Zi4 zu30fTj-6E^$FZ|o$}u&p7>#WYQubK5L+1JeKDo3-k zPLtzeSZB$;W>#-GE{1is>}6(ovX_~4j_hS-^^?8KtaIgPc2<9FHe+DKMK?Gdx`SNg z{4Zxf59kN7MOS|~4+g+*U?7|igJ3X}!v!z|E(BUjiHl$u&}vH1YD(~3Nn8pQFamxH zBjGX_1((BUxB|w&l`s~@!Fad|CcxEj4NQR>;6}I!rozo|D?A7f!5nxP9)Y>=D9nS$ zU_Lw!3*ZS@2q{Fq%8WXe{V|Jvt_!H0ySkQt@(1J`n3$!8=RX{5;K`TT-8%T2V zxS%zepf#Cz5&i-zVHKWwh~b{C|L9!L7$b3=>lt4p&ZvTMeKy<= z4*>B)e+Y;lj3*Ljbiuej4<3X0@Hi|0;)PDU(1{m}Iw)HR#u*tTt`kl=VWhtUe}{MB zJ@^1N!-ueiFP9&&-3p(;KVTbt3fti`*a4rzPWS@$z}K)BzJY!4E$oNy-~iul1!!;< zj0gOeRvB@FcQ$xugLgJ~XJZ=h-o|ve1MY;oU;-(KW zARAi2aX`Fc9FI7oc*ITOlz9qt1;Uw8JK`qcY!c3l+7UNS2f7?m#0 zhzfB=FO%Q3;|_7q!5!x`z%2*27||>4?10Y!f2U`CoF4UYXE%HW__>=2S->;WCqC}x zKqJV7#*hbo2tW{;LLqQpw-`bYh6qF<1}%a2b$MTU%*Wk+a4uW`L*PQFfD!Op7ztD0 z2DlM!f~i1QySKotkO0ESeE=Q=!pJ3zT*8Rn>v2ZaiZg;%oc`l+`i;lwH6HhwfWOgS zJnnOW@Su;l>gzxc@Hk^t#p&f8XC$h)?{{!5TnCfkdf*utT`Eo=?YM6m+z!MadO^qO z10DB$3fti`koU!J8LuhMcua9dV~R5tQ(Rm4e`U!d+ocdH|7%MhLg+tI@-!g?iT(eh zrB4Up{ZE!a8abs#PN|VoVn@X_QlUmF)JTOIsZb*oYNSAoTvB_KoVy!zhd7Xv{o5th zJW7|xaA!U|4h!H3SO}zgRa%kj*0p_Sjz`sYME2NthVx5d8B~F61t;5+EQjYgUI8xv z{Zv$+ik0lIg4IyJea)wE+edWm%&rPBYFQj3zB5hsscdJX0LMYMez1{bqG9AsOp z3brHQw=fb&FaNPp>sU$`Sz^)F?k7vF8@T3ZB^Q>^&nms@ms}p2$wM=FXeN(5)k8CR zXeJNMicaqdi9wnEDZt}z&co-gmx$r2El3qTLu=)rhi>xFO&+?*Lo<1lTppUqLo<13CJ)Wzp_x21lZR&V&`chh$wM=FXeJNM=)rhi>xFO&+?*LpOQo zCJ)`@p_@E(lZS5d&`ln?$wN1J=q3-{vM$JhYaF z*7DF=9$L#oXUUSwqvY}^xjafPkCMxy~rR4I^cOLrAL*IGmI}d&5q3=BOork{j^bcVRd<0wJ z6Zi*ggHK^Qd@4ovgGp6TONALLvMNLEf2lr zp|?ErmWST*&|4mQ%R_H@=q(Su<)ODc^p=O-^3YozBLfenbPCu{qD&G*Qja3=JEv!FMe4Sm3azHkm;&;0+cX7Cou6RFQ`Yc33;~tN}e0Urdz!R_#Qm_b~gvIa_EP+44 z)9?%|g=b+IRKaubXIKu;!wPr-UWC8EN>~M};U!o@Ywnj}ZFRX$joN=fGyn4%-ujyP zNS%CmfAPbui&gZzS*5Szxzn0>6_&*+EQ?k2x>-f9n^phQnpi)`vsF_ItAhb1SYQLS zfd;jKh7U5tDkGC^7NA)TY6p#mKrN`z2&e^Rur*s(So&HwVE5v?^p2ue*G)8P)d6Yhc;fF?HYfqNkd)b5&#fV5#Q zhNpnEVN!==J`2<%nN{!{{27)5*0@PMlKBF>2!8?6i@6F`!%MIRw(=f~j$(eo{y$(F zY{wei$@UA_1z*B$_zJ$}x4rNU?Bn=b*bm>q0r(z>=QQbxTf}dR_-thW@mX21IassA zVXHAvk7-f%(dw|=*-qQA9n`aY4&3{QuL65G_cd_Ox~~HbXbVPM_|Y!}P52%6f6-S0 z+WNW8pcIY)+KRcyLJMe#Tg0`xF9@|QBTwYF4nRC}I|6OpT;iEa+dh{zZ!T^7Xgyhe z)GrRCyLuMysw3)ZF5~x6a5)gy7-2W=QbxHG;TpINckhB3Knv)fRkuSKqP|K{b}*Yq zoDp;5F7bjHJmSpU5og|x^cM?3+c};383PE*BfeS?u8ee>{(2!>d3Ip`RIy6c1NCK} z{D*lnj{X&6N=;im(#H{BGwz@zH};?pTTr#(BmVpDV}CB&N8vG;50AqWu!QTE!m~hp zXReDlqr@KiBJw)t-{kl$_!PFoXFzjiT& zbua7HPkV0Ug=0r)E11P$jkbaL88&O%n4e*v&Va*ujvmy*dUKYxw8rUbG}n9REA&3J z@)@EpVm8P{`e>K{l`s{iLlPbU=2X*{a{U^8gT6`MY)18MwCmYt4KoDoXj~)52pVCd zxzU!nA-ftq%%IVSSqFv~ml~su2}Y$c)tJt_0S_4Sj77#$V}-HC*uWeCo0$n1J(edU#H zk2mvJw=)Y^pJ0Yrw>L{!pJ=vX-N9_f`XsX>>yBoZE5{AJ((HcaxY1XdJ;zGd`b@ld z%;n4+(1G5Q?SygqY5l_Hl(Ww66*f2ZJ^QS%)k=l0R@hqbNmporz3F3Xps?k!Z&Lc$ zohD3qoU>I}a%(-EKDPR&x7iD7&M&ArUzXlB%&T!PC+(h9Uh{kFx~+^~jJaI%JM-+x zV{&43f9v6z?TYl)rYVs8-DZ?=xpi9AY;R0&na@a_XSSmBwr|aLWX*eQOdsOSuF zn&YuG_pRAB7*+Fp^V3^OD)s)gTWenW`mA@@x;#fTy``j6$CPxYJa5iVUzf>TN%DE+ z*mQE6UE{CWd(y{@|DS&EsWtbhxjxW5ecr7J7dpPCpZmu2Hgj5fo5y@~(%mMEXeYP9 z8ux3%*Xoo$Z}q6zGRnEU&Kj29I-}FujGFrzW75aWYLvc?5%lEscFq6QK9BK9&H1(I ztnC{cM$Cfh?EVEvbt}!Q)eE(kV0oG@cyK17hFN^ir zj0>)bK70w*s6QxS-Pb2$>N&plto!*ovp(0?oppa-FV^Rg%W7hPZxCzx8?$b#*7Ol( zpPs+0@jBMIYJI9&pRU%8oUxqm?#MTeD}N|+WN4h>$T-u(8NvG3&ZVq-I>T9?ss8H} zweGCeUDWzltaY^~w;e<$b=;M@4w9Z|Bif1+n7M}z%A_<)`G!wqa@;`V2|u}OfhZKk zBFwx#C8AU`7cE3OZl9VxD|=D)%Ir04VyQ7I%h_s+1bSn zJ2!kKXF;Q-4f;a*KVw5-;&d*QRm!n`2{XE z`7gLBefvNCoPnR=rk39aztZv-ncptILw+ajtn*B=jb*-sqmhiQsNA5=Q4cO{x+}k9(_NeoHywaG z#EpW@xX_k25F)@Ct?5wCt(U(*%bIH#$G%`ozD(N!zvrrgdE`>#)s^zxaq?XLE#R;D zPv&vrh`AK_ue4k8jJzMSkQLlha8GcBa;+&>3>R)VD|~JE+QKn~YYW#l{iMx)&JGi9 zenGz5R1ajy4&PLAm;A}5zko{|WqJ5|RxO0#524~ASdzLlWW}aUA zZhN6~uk$8nyK}a;Rc`mOue1MPFLsj7Tb%92*)y&4?K7CsW4isAbGP$X^=^7#T97af z_TW9`yXt`{L3}pYvF2DKY|Z?catW+dZ(me%UH`y-={InE&6%E*<>@n&`*JV8BZDQB zrhJ|rS2NyV<4S32yt@So#0!- z4j!mo_*GsV!FQ)Iw&Bgp7<-FxtC28nGo~50W2@c47Xv*wl$_*Vk))^7Oz}rCOWY@B zi~Gd`?yu#216_sYpU*b^bRD^VnaI)?>q|4wVkWKC`dap1!d`qye<`zf%~SLdPH_C8 z#s7eMj#$mF?SvZ~P=E1HR=+pHw-1O0M|()kJ-NG0A!JogIa^aYoD>jIX zz}_D&{;;~{Sl(bd;~Rc~W&5SRn^x<4Xtlmq|3=@Zf2;4;zoXUgLp;eFf$jyvkJ&C7 zG+7$xarA|&m?zPmV?Sa)YR|Lh+Y9U`>=g6AJZV2|KVv^@FSY+iBx=vhoi=D8i z*|*zw*mv18?0f8c?WBF5J==c3zTci@&$R!@lZ_RP?E<^$&vCOLM-(wf%xAQp{@mHg z+%UUnL%rMiO3p{gTrjkxcB+{W_Iu}`%cSkD=IYD}^PT;mz0CR6IgpM>8u3G;%+&B% z4f{&Nw$!lOG)L$~h0H*7Ch3fM)vfcbLDpbW(HW$%UyHrs8?jG(EB1@; z!~yZWI4G*ghBZxR!Zee~Zf&OPbTyyb(_MxiZeVWam|mhc(@XVZP&mixE%cUpEB!b* z^Bj8Tc)gu|g5F*~QSYFig!(yI@1&oich*nUyXe2tyXvRuF?Xi>M|T$Q=aMe!{ur6E z-k+9H?*N1Gup^lh*8OSHuBrQDM(%ole0#3<$5-fje|(Rw_s5s%dViXdeM?r{lBpX+UMJY?7?=q zeStm1zR(_OUt|xnFSdu+2miRUpp@qFecUO;b-71j&Zi?Tn5waQv;y=1Mi zUbePa-&*^bi|c^(y>(E|#>HG*x}1ZHUK?5TyNEbZIq#Iy%qew_ahf~FI>$S$oi?M>Tlt1?QiGr;P2$` z;_v1!^Y`@k_V@Mo_Yd@!`-l36`$zak`N#Oj`zQLZ^-uQS=)c83&3~u=9{)`LZ2v?4 zx&Hb7h5n8H#r~)L%lymzFZx&e*ZS9U<}Lp_{`dV`{Ga%@`*#X0x`q4yGk5-pEB@X7 zz5f0Fg8`i>lQRO@f!u&UP!K2%bPGfSrGXZK)`50`4uMXAE}SU~^bGV4^bPb63=A;C zE_NF8WuwS`#Y}bGtkan#yNr42dXUq;XT49aoGtXpxsMsE=P*q&pOxY zZ=GiiAcr4jU2I)yRiG6wVQ#$NGAG{U%#L@NHJW}&7g$5A3$3BnMb;SWN^7h&&KhrB zWlgZIwkBHFSd*;ZS=U;X)^*lo>w0U7b%UHekGb=1mUHIOlj--&mp9G2-I`AMtd*b_ z3$UGI)5y#?j$O+!s~BZz-ts?+%s*cLo;Z z-%~i(zc<(}&@;bx{>I?J!i->-K%ZbT&_91$aBkuI{{4YLfhEBu!55ppBf}^^JHI&a zTtTbA&|uH}A%xh<{P{)xKt`~C;L`jt`OEXC6m|{{4UEcf9T=N`Ft{NwQHCf_X5hvW z|6XjLbZH^aJQRG$za5K+@>4y%5u6^J?th;%jJl=HXfaf4{*9DZ?V}58&J5(tSoWng zb|Nlg14pH$jZGIzTbf!_+Sz^hrB95SBCg?TsX}5>d#C?PE6CixCKT0XxS zm?@VgSglQVa-Do$GjO9^nylyC=DKrZ0xV5daBgGGIW0=~2Zsy8pXbkuq~m}Q>>KPG zL2m`IGNX02b`UKT>=Lc#1JN9=X~8vYaZf&rMQEv|NgwVqwB|0Be_wiO(v`D)>&|W= zCtzvPmb0>6ApPWTVC}sTK0rvnA+*Rcbr!!3FvoOYd0=^@o=@_`T40{goAj4^T&cpd zN!JMB7r2xEW?OUC@Q?M6ZPH$7d22Xx=xn*ayb14=xAd^HJ^VeIAjlsMqbyvu3_HXj}ORg&3UuQ7`f!N z6I$cdoI7-WU=x#6FJDfYQBxcmv<9~2wI)8L#vE1j(cJ6l`a2|B#I1m5e=pkpG^O*C9 zGuL@k?agFmjI-2v)>-CMInOzNc9uKO zJ1d+QoEM$HI4hl1&T8i+XN~i+v({PXyyCp-tan~>HaM?48*9~w^R~0e`J3|&%io=M zo%fvgoe!K3oh?5&+U$Jd{KNUk+3I|(_O>~n%9xfr_t4Ua@++rS@5}h%W|3w$W7X^+W$&Y$GqFT+utN&5L7E3z2YaEghXqFmCk3YlX9OPz zE(k6Sw8tjtibc{ZxPdaYb+99L$$&t4U|3*8V02)7U{YXmU@A2rD}&vFd4UB z0&@ckf;$3>gZuN{z*6$Vm4UT^4S}};?*_I6wgs4hICPMfx<{!&_;+n(Ux$BJ@1^U_ ze#)vpT5ZF>tE#B6s@2T{>y&f%I_*5JPCegNr=RE6DdK0nvk+8C~5*Zm!#ySzYtoCO+Z*+NZezH%O1_e7Are z)rHJ$+S5JL?d6{3F7xSbkv3*tpY67F zkC$`4${Amo@3oWL!R_dt?4Crw>{FQewF`5-c6Cp4PiMB*?rz*=$z@!_dIuiJJ3Df9mE{4_cQ0|VCH`v;$BGa?xAwtS9iFa_tpK( z=eQN_2%qcz)*b0S;PWYexy&8q%WyAuN4sO(tK4zS1UufH;LBt#*op2nzAX1z_xH>Q z`#ZPN*T9|ZUhiJ#%a-*@_~#V&X7>j7CU>fPqs#aZ?yX1h-P@Qo_I7u=dnfb8-sR44 z@0N4M(u;gGGra!I-Q>RGzU%(o-N^i{>zUQ{b^4UQ?QWn?`78EAc9px$-R^$szVB=3 ze(tVtcQUi%XdT5Jwx*hyyVN9I)(ePys-r zxu2)?*3YQ{P_gk}i;Gm&8CO$|X~uZDrnR9)?U5GR02={oI`kH7lD}Ha;6>%)mvXId zR@d`&BeYW4Uz*m6>(CRSZSoiSt%U#Bq1NBBHni!+NJc8=7cF1@cPI(+ezRb#e`aBjyP^)#7_5bp)rgALpyF&HuW% zzr=c4)djssO@QPwB> zRn%zD!}44!pIeUGf?0l@F;%?An2;_*z8$`N6W7VBHFdT8I%d@W zZ#8Fk2KQ-n)buD*qpUC4rDmz;s-xDJQ}<2{ysV2~YCnrxS^AUuGy1c%a9O3ltTX$P z{<{8#{-#|ZnuK%0twWnadqNL~mWRfM5}_W1S2)zZ_&_MT_?6;!ix(9yFHROeTrA^c zWBcZ#*5*@(Pffn8)4!iu{pUn((e9!H#ddK{aY1oOaqHraMT?7;6}?!rwrFF~J4IWH zwijJnG=(=e_09AlVf1eOWA^_+KM_mjf_$0O@n;zmG!+vx6%#aBKO|!`DN2{V!2T|4 z7i;Q+csflq;XN1YPpNlZrdRR4D|zFWXxH;H-)q+Cuj=b--(9|q{-k033|}q{O$yx@ znjV^oA1w?m4ZRq8CG=Kkb7(uhb};OQbHjz<(s0{wr*QXh@9==|(D2Cc_;6*YeW-J& zd#G2aUuY01VI;oWJk(mgwf3DJ;H~rZ0_OB6)C-wWzK`2ig!#>)js7Z9&`b2|(irRL zQ<00Mk}tw)4)%y>`NO+}Zwb!`&koNEFAhH!ULD>LekZ&&yfeHnqDQhK{zy2|BGNw6 zCDJ3(H!>(PJTf{mF)}4GEs_jp@Z1IAXt+hV9d>NX(3a4S(B81%d|tRX+&tVa+&Nqp z?h_su9u^)Io)DfKPK56XKMT64=Ch=Y6*_Hg2(MMb zBD`Ma%iTKK6PtwCYr-YQzRs+0Z_t`JOMjF0#2I`qD!?U;FaCFl`?MUbDdRj%*6w6< zrcd>~MgwE8G0M2!xJ~9T939 z{bKHW6Fs}K)Yt25m5b&u>eG87SO0)sO8Jc1)L(Qk1{%Y}$tvY`Cneu0${3yL4KcuY z%lMo44P!L@gE_=LHNFuej048^^gvWOd}upcQc`Fq5OYJ+Nrd*mUf2iwf%+IiL<^IP zgn7TP3FLxd7swgHS&$7mkPFnFgvrChK`4MiD26aZ0i78}Z-<*h3upzcp)F8D5pEA1 zpd)mG&d>$ALN}leAzTLJ;^Cgq3wlEz=nMUzKMa6@FbK+F2n>Z`FdQz05ik-)!Dtu* zV_`f@fQc{(u7ygN3{&7nm~>+av}whl1S@F$4IwGufhik z=NB$1Twb`QaAV=Sg`X7eD%@XW7G)O&i=suXiaHc^W#;mJMdd}87L6&IRCHs}^rD$X z4;L*gT1sB|O3_+dX_RXDeBQQ@+}m4)jIHx+Iv+)=o zW^(K_+HvS%KXG3tH;%H765n<5F>>5+YvQ;bZcpsi$v?ZY?n;c-$=`ah?j>U}rO171 zJx8tYS8HMs=ZQb89~6dk2RDpx$8Z-?g%R!+?m*L5}6*kCo(JYP-I?YA;%9#=0_Gqo{l^hc`>pE z-(tz+ivpv3O~^b$xRHgCC6Q&36_M4ES0WoDn>eGkk@q88BikdpB6~Tbwvhu-J?ciY zqj>^RD7VpqXgFFLZ53@NeCchpW3)@Od$eb?PqaVhdPI9i`$Y#vheU@*M@Gl+1;ZB| z5gi>JADtAP9Gx1S7M&5DDKet_Vj`M|-Wg3sXGb57&W|pNKF!&=(FM`P(WTMl(UsA) z(GAhJqVI~#=)2J^(QVP4(LK@qF%h$4S+U$$khs9yrONVMT4VcuWebrN-4)#%JwT%X zH$pSUY^dhmCYUvF1UG_-f6u9>L;&iWulHHr{fPDM!B(xmeEou;nuC zOcBO<&ZnhJPOM9GYjpdMxg4YY3$c*#_;6d^K~r}y)g3H#2Up!8OWmQdx{QX36mYg^gB^dfXiFXEOX7H3vH3E%fTwugdYQM{LORN|zO^mhhmrbt zpRjX0@1u#9SXtflo|NvxDbMd@6vrpk=#85hrO{$U#xo6%lKc`%@Vh9vHyIx?qT<0H zwFd9!ebY8~fUwDn6~;>N@%GWeXf)b9+B(`k+9}#KS{CgU?He5sEsqYXjS(X7!!w8C zNc4dtV}l6BHpMo_w#9bE_LYdE$BS4ocW)7E8|x739P7q^_<5data+?;tbMFgtZS?+ z)+^RGHXv3W8x|W88yy=Tn-rTIn;M%In-QBCdq6a8wxro}%~m#hrP&+J-fgzE*^Xv= zVh_jW#}>t&jy)H9F}5bQKK4fJ9iHQp*pArl*uL1o60;R!MG2u%x)8q@+bj+ma3?olClv z^eE|F(ywG-$&ixaB_m75luRhOwq#1lEhW=S?kSnY|BWaaT{6C8Qpx0!sU_1&W|Yh< zd7xx&$%2x_B}+?|m#i#VTe6|#t&(?3wv=ou*;%ruWPdZ!%oe({ou)0i^O=u4*V#cY z3f=jfeiXX1leWIP^96k=bZ3{3D{1dRIYFBb+DFmuqXp|hc1zZS?N+SIZORqefl!Lj z4utsUFg7Cl7ulpXXE!~Xb>}PkH0!hwIf4B>K6D=KL^`m()IN!Ig-zOVzNV*!PRo&# z+22b`W1Ti6lt#`s%nqbG`{)s^)28GU)|c6xS&y<$WqrBLmq6N>{EGDzHszM}p8Ge} z@4K5=f9Sr$dW%cjLTju0ch>W*;jACGE@Az=H5!+zY0s?FY_#?RJ^fm;I};PVTUKSm&^R4ei(NvKbwc z{Yls?Gwd_1bJ@R^Hf{IVXIcH(|2?hS?zMYc=doW&JGZ1QOJ@re@ql%Kv)^4WY}))h zZQp0jwLRLl+qD0A#-_Bl`&t)sG!;EQ%lh6v&l=CsjkJ!NNvoA}W$SeNCe->LX~ELp zx|;k=>i!?pfKaP`Cb_T7cQaMKn@zs^uxLn5_&C=;MO{pQ@P1wdl`77cttptBa;vpf z6j?jS8;i+_vqVSP7D9Bgzqh{^#4!=Ix7#~~meDU`2GDp796P_h*pL zXUxfXg!N+?kF#Esfo98Cl7U^5@m$8AS+B@=f%RW9u!%EX%XpvlhZ!HT{wU)k)*okl z%=)VgEXR!RG7hk=&ZwqonVD&_wliJU8JQWZb21yT&dY4Vx;V3#bvTn;JhNG5GuFq* zUJRLSGmmHetIS`q?w8q*bwy?c>nk#^kXDm8Rh-5+!u=Rk=4NplJ=a%h8CpXvUn|jC zQO_ku2Cmd@Q)2_K(bj1j=|QyXsQLY`>wU+#i@LHWsBw6T67BPJ2_RdZ*f&$EHE;@? zrcR;L&N+d*cf&^;{F7(st}z~D-BUb9Kc<@JpsdQ%L-oq5+iFTI*~av3EZ#3_O09gO zfRd}W+`8vb$z?X@UC!n?&fq!zTmDen4o8)Qss)a0h4p=1`>XoC5~l4{+Gl$F;EC@2 zkA}^^@=Ur2)z!g7se|dJ4->~=C)^-~6OeX$s+FQJZNI&~Dw#SH2w zR*9K}$;;vaS&t^>P%rVmm`4ch6i@31^aJ#BK4|n4tBwA~K&{9aWQ^CM*cjJnr!uPZ zRIRJ54bghZ+7PV|p|?*PX?$bG5SqtHPoL_X z=Ukvq^9i4=-|GwVMRPWz06(Jt*|*lWp7CNd#(z4j*5*g7wZGxB)aIzz-=NNF8;spH z3SXsm=bu_{hgxvSx>IS#k#~}wkE|7{ZH4v|EzN4{jWki*v$$VzdGV#iV~Qsg-&j1o zcqVnE3yYT)zeug=Tg97;w-@gzJ{WRCxuL>PX{c?e6Lo>TLj$NqA4#owW$2dBjL_`R zJnGAy3#|@qptfvlXlH0&SV!Uc!(kL%dsJo*l;t3F+i3Lo6jWL={7`rS%4`Kn?2YjI z;ccj|BkCPcQ$r#nP*T^TpYB98%|$CMi>!>Sk8Fx;iR_5%jf!XnN~ajxwOzC`c55H> z%&_RF=mf0OMD!jk)A`XQXp}Y4jo6@{pbPfLOw>jYJF^vbXV+NISU>E`OJifOEpLoX z$F6)hwlKC7>+zM?TUd_UV|%a~U2MKWtiZMkTLwik&yUq!Jr%M#=1wd02AK zm8`~!d#7Y87TmsOdb6x%{$}B3Et<7&)}>jGW__CtYBs#t=w=g}O=&i*S+dzf%@#C! zy4i|mYq4G5Z?>)3ZmdwdG^eznw4}6kX~)uTrM*h~mkuc%Q98Et+R~||cb3j7om;x7 zs0H;Lor=0q(sB@V}UB@j&cT(%}P|^G&>Zo@Y?Jw4gGm3Mm#f}!YC~jBW zskmEFF10tsMJ1%dQz>Pr*(CL?qIO@_*k-C4+d^$7UxZqy9HynJ>ni}>b|LoqaD3LudgQb^9obmo-TTe z^TYr~jTx(VY9=X3q>T zAVENqfB{q#R4^+>1k5?-gb}l36%2?uqabEM%vmvDK$sy(9LyQG@9MRC4thN2`|iEZ z^MC&6Tff@1tGcUJt?ubvUDf?Xun><}6|4!?vPR=)S)bvY3mMU_=jywru9NHHdb+-D zPe!;$x>4>3&V{G268SWDx;uk&;uY>nRwV0Mm+@|*o9^y*_qcmmo&1P<)Xik({EN(s zml^UeGb{cL=Eg5@U${kXv0LJnx^LV%_iY%4Io<&9O!(|(GhpRfNbWr?F3i?l9<4~v zhYRDc$#2`mps9h;!DY#WKB|?tWUm8zUO-I$K1Jam-ywfIKr3y>n!ff$JXn7?)08-k}Jy9 z<|@26S2tHLS3lPv*D%*8*ErWC*EH8G*F5#b|4*Kn7bM`WJ!1%bgtc)6{jc9W23ium;=V+MBYu zb~%1)Q)*qVcBDTPUx(A^p4|`nI4O zSWi*dZcXg>LQJ-z-^z9*M!77 z`&Zh(+N*7D%)M4^|6faNo@z{7ljpCw{+cc;TeEHby?%fHhUox*$@|ys{`+^lB>Hdp z|61aozD?KG{?}6c=Ki<;#J)xUmiqVh{HGiy$0%4dD-CB8IvJNJsHDngO`larpOxlz zGQORDKf91VyO2Jc^aOulJA9MHX4S;9Z)JP>t!y!iW#7tHHBGjg#q?WB7QU63ek-x; z+ic5hx8_@^t!zc+qv)0;mX*!w%y)%vC8pm>Ov{qL=G$z`l9qj&ZJDjrl$9-4q-O#- z7yX`Vms(VHR^jvPg3c-E+=9+S+ZQaE#iWd;NhysDL8B5AjX*fF#pH9PP((u_dd@c=T{Pg793u*Xb8orc<%(fzZZW_LvhV#`Y+Y8e0!Zc+3niR&b2^qg8 z9G!-jrr~92czGILk%m{M;ZV>ISXbnzU6mykWAv2U672kMTFz+QQTKp9W;~l02?Obc;d2z-xA*8`pLJ^ zt`d(9lF;;*6tg|yI*Sj)t9izxZ0#-L)s~|mUT^VgQt;|zY)~$Ff-=H&Ji(AX2J-C$ zw}+&=Jte2Z=i_RJ&&TT>-b)I;nv4xQNS?5x#AQ4<8OLu_@|c0#oo;9=eYwRfUOtwc5ueL{~dFG|xzLI|XYWl70tJ=OU-}207wj6NeCKCdVT-rF{c6}ue@4At1XQbagk$(GR`t3~lmS@)l2~Xc9yu%EUoMtHT z@%(}pD~VMn@Wglthovb8rlsh?qK4*R;;YOd#3OSz-;Ou;q&e?RbKV&H0FIEqIjp*x)fr*#J+#TfUN&7D*|$ zSW3A{;*;#9@~yp$aFxBBlnFf9HHg>RD~WHiS4n<5M)EVZ&6at(xa@tUlnPc!Dfx{? zovR4%;JM>cpLJ=@YQo6TJM3M0XO*LOIF_Y%);fA8+2lq_S;vt=eU40PPEE)|O~_B( zk|~b*kcaw^hx*Vu>cf_=CVi~klJsiZg>bd)Dy3{U*@E4Q_!`??%Gw^p*V~>_)^Z$C z79Zf)sZF@r)gfHPb4F#qb&0RxS);PY`o!0}2I(FfrlpQg^Pj-Co4cCrO*Sr>KpW^STKK1Ii#d_v0rU{H zXX~`{Tf+73JK2`|o_MueOSsO_f0V5zoD@7KIfLg3R|hXh*HQyM(LFd!&pvZxD{<34?6Md_cI)d`QYf z^AX`x#tx~2`HXNfqlnbgd`x_T`Gojd^C|I7=56fNl5s|tjAg5M6nns&*@N`;6hkj__B%!P7Ra}2 zg47d&)Dr^P+SmYpz!KsK69e*dM3A4qCinyPIFE1F2j>%?99%%WI=GOnbqX#b>>ON7 zxMgq&VV6Mavo?_WYzn9k=fE=wmj`DNE(^{kPZXR(*phc`xMVzSJuB5U=4??~aZdWV z+MI|ltivKFrMlWa#Fp3ChY45PN7&kU`zYa9`<}2-KO8fuN`jzuCpRYLhaNJJ8}+jY(N=nh>9CO3BmF z6ceAo)6&GR8W7)P8WN7<$!S4RGrJ4vYwRGx)pjuH<7Fh49@&xjSi39nb#^!66YcJV zf7pS9ci4kSUvCd4&K*s{33e#qRJ$kXYwcddH`#p&#|8CBS!4esTpiE~j^Gx=s{?9| z-%33v1x=|*>wsFZuMMP345%C4OU?0HYL4Gx6Fe4c;IUW$j};4au^S1uVE7^^>JV7M z{epn7V<5Jg5Qt@d4C)g893*UQZID_Z5L=B4nv=7cYf1VV*NSkpD2Egk4-Y-%fC?38%WYd7iS!EBnfP+ICE+r8!dZH(F`|dAk!P8u$6AZ@ zbG2!OPQ+JuE*HAS6jbvwYEbyB`57_b`JLGaR~DO9lQz31 zHm4>wwDi(u~!z$%8Jdhw5+VyP1D43Su86nBTZRaR+f>OnzXE}SW)wd9kWU7;nVlsqE1TI_(z3Fdon;&^+b<(vg?(gpmT$BDW_Fg} z^J*)JX<3PBS&8X>C8lL1ru&r?~Rl1=-VyEgHu z9LzrZ4&B$xl_x3Z=5FNajk&qDn%k-5s zjw-pWWLnAdB@0TvDOpwWQ+{e`-O|RTC8h04`wAmJ+L!HLHmvOMveU|LEW54j@v^7V6;U$x?%Q%(?pXEb%Nv$AWsOt2 z@=mOB>R!H0`Oxyi%P%Rvs{ESrTUn{}MEO(Y&zFD5N~BN97nd(D|E7F(>!5Yqx^C+R ztTxKG?$o+BtBOXnKC1OCZ6fB_wQtj@&FD5`+FaM>gSKtj9^3YVwyP_qS3FcPv*PKB z7b{+_c%$N-iVrGQRIG1jnESSEyOHgVYIj1rY3&=fZ`%HV_D8nAy8Zh0zjtWZu}`PC zQ^QWJI<@V5VdqP>+|;GneRtl!>A^0Qrn0EAQ{`@zdsZG=IlS`t%F&f$D#uk$uDrYQ z#maXpS5*E~6;~xyb*mayHLGe})wZf*)z($pRUJ?@yy}RmSE?3QRV{gA$>&QJR_Cgd z>IT(~s+(3ieqaSASN$sJiOsS2k|q$=mX;%uF+n+1>1G z!2!X=!Bxy~zR$&f>Em|v@z!ofw+nNc&UEK9|K)m~*n78I$a@ribAN`T!)br%<3aTC zp7ikn^zo=dAI~ZIyksToCjZReURtlT8Ee_MC>_A6_Pq*yd^mG2uP&WYI-6OSpOt=H z`hB|Uxn5bp2TRDtX=-)@-G%2 zyzGnRSFz7)_@)<}wR|SwwB_3@-+uYP<<~C1Z257^k6D&yPYoeiW|#iD^wFh{FCDk^ zTG`67ez4Wj&z63)l;?k~*m7ydCC@Iov+B;uzdYHt>g2^AS6x`OYt`VY+Lfy+S1f(0 z^0vy-%2tclFJ4)hEGac+k^lO{g}W~7ws5b7yL_?y(+j>Hu;7X#7LPn{#NzgY$|jX9 zD*wfp)|`Rc)M>k@qM~AJV=6`g=i-hBcUUep>9DxN!VaHw__)LS?T$639qnoRN!z$$ zj}E7`YtycMJI>?suhE^2-fVnQ;~Sf{Y}!gbw|W)kwc3wxA`_R|74fuq&e)Z~ZNV(J zGW;_7mFJl6!J4S6ayv@?>|bvCEJk1VVP5zy=w3X{ZBee0CpK5tTIpN=D+iNXK7r2) z$kX}w=g}kX%QB2UM|c3FD<6#|I@!>e5SZXmMi;IsPVzYhi2c179Rk^H&2nz#m5()xOrOfiN#|{ zzauR{SUg?7jlW~o-g~TgDTzO1ZNR(o#0{RW`aSbLXEO8i@qb(|Q^iUnc^1n$X23Bj zYX0A^KDje`GP)~HSoZMce^>|b-&bwk&Dw=~@W}63p_-4%qQ|1r=!rNVFN}-hX3^?6 zj_bsgantDM^jXTEyPM-y(en5k=14b>*08?e#duycg)5?%tC5gvlv>Q~-rbB~B!3hm z`0sGf;63w(Z)LZ%yVyZor|e{RjDEBO?L+oq`v|jxzYM)QJE&*>48ouVGk}}0mS<>i zTyT7F0yBQ)NhB`>v%>xPYuD1XawWV?sA=?*Ywm7!Q`}T$=&lZS<=#jUqo1`I`>eyr z=Me5V4&{F19^7r*lY5N^1c&$*!2#w-M){9ojQ?mx_>WCC*cQP`+cH>XTLr6q zyWksJ9#q*buD0#!>ez0s*lx|^(|2`wyPGSuySp-bwi|3Ob%)x^++p@|H{9Onj<+|t z6XY31cAPuO-sUc~x4X-H2RGV2<|f(4-EDS;yWKwF?yyg~JMBz2&A#itvR}D1%$oi# zboTo&v_FIq>uq*2yZC0oK;O|HX7*tn&Jc4bZ(3;?9OSn#=lfD$!d&-qb5q!fwpHq z+)Dea+vLl9YrnJKB^nS7^oRN({$ziaKii+<&osk>BYcHz6MW{|vs$N-DGr?ZICz;g zJLPtkyURZ1rrX)>Zu_*m$3Elk4X)&w`n63x#+SDb%FKAI+M%ws-NUu< z<$kB&W8a*2Nsly>xSRTz?_#&&KA&gIyMIt_k8(UEpONVXj7uNK-IwFJ_wot%uRaZ4 zv3t6-mab9$F;Znx-IN}u7myBtqoQ~34z``mG%^;`K-yfgC+ z-`$)S9BXR_Z`n)SzV>=|fL-cV1ua>J)F;^44-19`2l{RO0KY?cc6big-RJUjoe6%| z;I?p??;G43Ob_l3o(-q+q@AU#Zdm5`bH>?V6Ib&&uH<)iyZQtCfo_;Th&N~*><)5A zxue~&emlRn-=3@b3*0UKM1PX|)P3oGWo1<0ck~1OZhlX{hwqn*{So0=!R`K3S#=d` zaQpb({m@_(Yo&(!gWbi!I6ufA>5uY*gZqN}<1YRJp0M7>U+B;G=kY}K{?S*_!lK^M zJ4L;Uwkz7UXzQXrNvEW9vSrdSUKB4c>X)oYzDZUVZC|uaQQxBOMLmmpBt4TJ$u3Ek zWUHiGT*WN+W%0^*ar{LxG#Qe#;o0qd3yFvO4LN^o~AAx+YsE zeUiROzhs+a+hn_BduGM=PX;7ABs(TMB?FV4<2BqT9nU?Vb&S)G<6h9@WK#TXG9{Us zR3z=}_Wm0`-+$~siN3LQ;;-TrrggN!Txe#PFYWTMQFt4_$p(i>SY$4+znRCw+U5(} z%xr5r*#2Q1%NxAxg<)NLzg-sAvkSudVFUA(T@elo&kQf;x6(7bnd{W>wD9!sjPTO% zvT#Z`)qfB^>Ob@!g^#&y!pFlI;jHkfaCZ1~_?BB9z7xL7dVpu$w&8Q(d;T52z<(ZY z5q1bWhHv{X{AaA{`qY2vzY6vZKC!3xg-Ls}uk9Gl^zZuj{QKrAGbY^6UmWgXZ!s&) zDq9>53I~Tf_)BeHe--bB?8ZAJ2l{z_6K)f37w#DD6b=k|OJulfxLde;&?;OWt_Z&gR|l7dYr=J5wSO@DHvB34HT>P} z5^i#P1^Y$D{SaBVEDEDI@=+4ij_O23QG=*q)F`+txIDPa-xoD?XR@mA-Qd%xUQ|Dr z<{$PCxgVp*U+o|9*F<&wwf<3moqx<!MV7PD8%8&E2 z{CKyUzsJ9ov}HZ*`N;*zg~>(9Imx+pyKud~H!8O0yCLD0;YvT+KM)Ry8i!kjYyAZO zlx-4zANCA?u#LkX&BNgz=F#xaaA?#d+%szCC;Hibl7HGy_Rsj6{j>Jd$c5WR&BN`Z zT-ZOV6%GhygnLCT{4M@Df2*J3pAUP5-}$NG&*mZC3i(L5(ck7@uv>(`u|{#Lpu}_! z@@7EL+FTu65$^3@^tbz${2hLdzthhR_la8CZT!o2TR+d9?grU2{VVn?|EiznU*mV! zPwsbqbN}If@pt*x{U!c>Ki$6(b_rM6&!WKJ?cd}*2lAGKt$4FR@AQ2JBUlB`8x#CW zSudQ-W4-W;$*ak0$?M4*$(zZ@h`C~unZt4~vsUg49x?YbV`Vy{9S<;Pv1;>SJI6g@-*TVXx7`B!o?B?&cVF8N+!yvkx5$3v7Tb^A68ni; zY8Sb6_Qx=`KZQB_b66{QoE1Qot~zKO+~kk8Q~WVJ8?D$h;XZ0p?xHs19%^&$ptj)t zY0Drst+<0)5*U-`?rACaPRr~ja~d-SPG`Qr8O#t-=xh>u|JR6khKa zhxhwRx07EIzT%gLpZVoR-l*2g^yaNaeN11|FT5eVF}x`p8;%RdhZDky<^}VjdCAN% zbIr?Uo_Qr)5Plwh5q=qd6)p_F4i|;_urw?S%fr@To3L$I5uO~LVmg`5W=qr6Y?EB( zS0tAvHzn7Hlfud2&EYNKt>$ubg?ZLIXI@RNNUln*4j%{~3?K4U;ltr0W|>)TR+w*+ zE0ZzFHQ}q_YvJpDS@=ZwWcWt-rd?y#+I6f2z9?Olbwju$Txw6Yr-mhA!?0a)V{&;? zmXxzDhq2P=>7+Diovw|QXQk;=(>{)C#hx`g&nJzd%4l)YF#aL_D4rjE5`7wd7JVLl z5q+7|i&jRfk|xo_Xll|pX_hod>L+!h=i+OkY0>oPmgv@Kax^|Jkrh8lb5@A8NLnWQ zCasc^B+v62yZ+_zcbmvtPI~_1yH$9j3eQuJH>@1UvpSBBPw{8)gpN@>lSAIp za*Vv6CD}Xb7IlyMMV+Evya%v-)FPbVIodMXDry&1M6IK( zqc&0BXxn5T)~db0eA<)aPvcK=Hm+x{v)9HA;)Zek_^tT;_yg8N&y8P+UyWajUyt8l zRrK5OJMp{md+`g2_a`JtQpDP%7Ocf-$vUKxnl(wIa!2Jx#uZ^vTps;UcnbOS+`hT} zbNjJU`mo&a+=$%axn8-xxvg{Cr1a$1bMIWgl!3Wj;&!?1dCp}qYny7b)~Pw~E7iA9 zedzXgheS&X>-3J`DLC>TC3!!LzR5=3V{1|B^^d_ez$=ag5l6A6b zuW0Y|+350&be@c!J~>>T625|`h4YN?XsJo;`k)!lxw|I$Emvt?xA*Y;>1%is+;zeA z!Hx0PJXL)r&lF$1*&CbIr0;CX-q`d*?$@Gyb z_@WbP1x05Rotcg{`({95HVY|TGLCrp`=jxCiFhiC#SqX!VlXm=YWdK7J|L?vj2 z63e#RDbYBzy%N2PZUG(G&h04U20|?FN$R9T-=p$-9-^<&Eft>6VYu2(i58(y25GS>{vk3b}FzdIAuyI?1{JsgN+32nQVFE)M=8P4Xn|l1@ne)=JbJ7W+<_ja1W%yHE5Qfo2}-a4 zJy8iN(UX*5BYLvpBJ>o6Cjc9Bs^X*%Pg9)q!|93>d!L~=sn?l`I}bfeaTCz97551$ zeF;wNe6HfEP$>g$1$w^Xq;3}|(cS2UN;Ct#NQv%2FIJ*o(P>KjJt})?AYO<*sKmwSLrUBXeOQTBqmL+YjLJSBu7f_V z#FePD2jZrv><^-!QSq~xr0>B;Vr#}xwYAkIKED?2?~LS;eFI~t#>)Oc{+?Lb2QaQ`Y_XF5J*Z0@Sk=L+N)%7u+4>6Oue`QK zk#n<^_CRnVDs=@pPus>ya1u%%3v$l3*jixhme)Bca{iXTe?o8yD*F?EIToeQ1jcxI z5vsyU5o1df#(jCvxMIek_>jO@u(4$dt4WM4R~R2Qwzb0g5@Xva!7XT8Mb3k^LSY=) z*mjDX+iZJUivF)k^ zbJ1>!9Mg6yg{LtY+g;(^+=f*ZDa>3jtgTR_&wD9>l>COej9=j+Ge`SWYBDNW>}JE9 zZAG@Rx8lT)#74r|u&?4||N9lV6y0BOhoT1*xC|YpxWmu`3tWyKq`2Ye!3Aza4^iCl zsBBBP38Xx@6HqB5jD^D$C&%E30&*;jRNP7Er~k^DTy}(TL48=`D&n)mRdX~bvEA1!gD~X?@u?KNY11dIxK>S+l3-UXGwOuK`87h4bf%y9sitmVCsc`qlu;wd8 zuIpL(m6HB`xSBWwL(pp!xdyk_Dsqi)uTy+W^m-)_Uz7R)caw}2KLfe0OnnRg^5XyE zPr$tHXv+|KB;)I^UMNYptBUW5`C(`ujp*WZ9<<`d>Q(TA~O(JJ!DurWW3nwc_kWv zzMw<{(H9jjKK7F0#rNhY{$zA6%ws!ZlUEe(A{zUeBEJP$U7Hddfxe;m3iQnaZBX$K z2tGsKR=l+RodQy~cNOkR8rHX_m}2yOg*%nTexR^c&9LG%C3qSAsDRXezT(86C7&R+ z{6ul$JD(O1yGotFi61Q}AT}1?1=d9wEBzsey}wjgDW&J2uTZi5LWQ+c#(u4E|J2w; zim8h(R)X4SrDE!#RSNf6nK!7&IEP)T1ZC(l#oUN4SGXT*>6&1e`>cc99 z)z8MRE+EIk8if@+#;z@}2f9viZP04Pi#^vXekb%>B@p|5r*I$G*zXk?Gq67>!ASH+ z#Y{qfQn+7i?9Yn)R1ZuQezS2W zLYarkK0toM$?v6e@nW-s0AKTBk3-;4eCcfTFeQ|B4OhZ*QSm?FO&C#N0y;+Ej ze7@ojLN8F9M1r8KLhtEdV}J=L~m5wujoyR+klQ$!T=qw_#IK{d+-C%iHa8=pQL#4 z*~y9*U%pxK{ZOeBby)=u9QxsPsJ)^+4wg*?)~zbc8;^EcQ;dVkIrMv2+3vr5cxxNu%+A7yHa{a<{H;n77B)6fo-}NE=c63MB ziTEYxE-;Gto#+v83i18WGvO@a73kTDj2FspW5Lr`axRwZ8jqjKxkHE~UA7Ch4tj+W z<7e(lC0>DErI^;}7$uVQs};FF=B`o94D?#X;Jfa6#U6v+sK{?7cast}LdEV7O53GB zz?7rXmtY2?Vt4v2ls=LE03&UZeggSjBKM^PxyL1cZ-kIObJ7Q3zCgv+AmidZuOmh7 zZOb@XI+oS}6}yA&kKUn#VjrwZw=eD8i#WX#q5 zq0U=S1)*a7935j_4NelN(q3-NWqOC9PK=!4c%Og9wYP3ep_ zP>gK9q2ez>8x`n^Hdf4)Xp;i6ou&o4qs~zitU7!D00s^ z%queH9hL&;Gk+P{2HJwOu|n}<&~^pzXBi(%*$%~rLTTTQuq8-4b_J<7$nWoPE0B8O z+hNZFtI=MHTxW+;S78lo4br}KAoT$MAS&$?z6Gg=fKP?n7WfsFItjnS_KN(i2>Tbn zhr$7h+Y6OG2KjB4wt;rwE+*Vb5nm1mDv?EZR@^dFwhNK?n)E9~F*+EqK_ou48|+S8 z{Ah?0iGK}+JxLe8kb3M*9mM|oC~}P)?yLCwP^lk8;tTsL^0!XTUvmDFYq;=0MXs&F zgWzED*Fz6cf@$cXihmeAOz{t)!xcGR!^4#bLxdv~e>FN%@sFUR6n_nRgc8YdaHQg| zMUPVaqv+9!zYaY{@sFX$D*k%(IK@AX9A874tB9cY!}pu_>5GQL%;aC&+Ok42AoZNa`SM6ZV7$ zm8co|km9A?vJddH(MJ?7HjsUQe;R#E@nVn175@x6L-AspClvoI`lMn%MQ19JLuVD( z78QFz)Et$43v%9){XvvNWgmi^!(_V<)k2>uFaUjC38XGB6xa)WQHffhFDd>ObdKU> z8*|}h+ITBEPw}$7R|@n(UoG$*`kLaUZ(lF)Gx~;N#IA1^*no=PgAu#FU0@^nj^f2H z-c`KR{XIqIJB05S_znF)3I0SsRE+rKM~aN^hVvEE9sO95vEJ|##fYt>KS0KG!_O3R zHM&5Nah>q<0(+xhC|+#&rQ&Z#zf!!|b)n+#K)+VJ*m#lR??e|XUhG|2U>~$fiCUsd z6uS+&RPpqUjM)h?CnEhjx}5%!zFMK!)6s7fHway+$o=YYmExs8S1a}`bdBPrZ{>If zKMh@{cU$Q@;3&=hMX`lE6Sn1CVN)(_Q6@NFnN%8n*)K!uF757&n zY+hm%e+pVh@u#6J6_1@uc2eT@D7F@2e6?gS>`J^NI#h|bME6wUtx%3hA?|_F_d?tY zJwS1p()*!@C^7wBGD?X@phqb2ap;k76!}j?Z&Tt9D19l!ozdr&cmO&_@%Tu| zT);09QT#yQErX_nzAt%;xTJB+3du;6W42^IalR|z_$tBPiPUR>l6-`I4&RV|G%EXm zgfbwmHK?n{*ixqPaT2~2%qxBSX zFj`*;4o4d(hW^YqRDuzxv=a<{mv5}dn0LO3VopMvDl-0^Z>E@&QLziiIC#E=V({C1 zOGU=T^Q{zfDvEOp!MP}g7R+^MsUqXb`7*^!M#~i$^Ub$b%)MwEMaEY1Z54ALTA|2z zYrdUg?nm1zGX9$1LNU|P4vLHu=Q}Fq0ko4MW3>6sioyT#TPnfRD968G-bA}9!Bc2A z#frT--UJyd%y(C;*uIA%V~6>kij{uorN}s9zPBRt{_`@w>eEJy@}&_&UgVUS9kgth8@u z#fcB@qF8C`AjOG44pywRdsoGYt#(sn9$$WUMaJ{;LlnC|I#hAeS9>Tj?<~*xO>ok0 zdntApy0;?ZdHH=5nU9v=S8>vx`zcm@QuYB(wk_KQdmbv=0w?>C@?ft*4^rGnRE{^W zW6(ns86V6as@SX1!xR}W%nw)WHR$1rI}#nC$eg3RY!_r~F)!N!nSYd*^59NIr3~0f z=uwJ04Lw@1lhI=ocRG5kVsA!|Q`{No@rukV%AcUf7-arL#ZE&{Qe-?bf3jllLZyBn zW0QHQ6Uh9dywn3^oH8%_2KziJ`vVzc%b%&(7tpg58F$N{t=JdQa}*he%S%6j%+1M5 z-++wC<@ED)ue(BE@}%UaZ)+(MuE=Z_1BW?0e{?ii|(yFH`LM=;exx zMdigtAaii?Vi#~V()ZvNqt`0-WAr-3EkUnW>?i0Aid%}_ zsK`8;{7s5mhmKY3kLWl>#+>rw75fu9L6LE&y!aE?pHcB4ka4NJ_zlQCs=W9L$QX0} z7R6Pfw<@k0oubGbiu_b1kb2#&_@mJ~6f1ef&wy2`CNI7PM#_pmfz0p7iw}Wmg5Isj zoR0iGifM}8tH|7w{C$dPhTg9P(#8iA(;OAwfy@s@u=2`HX_Qjv>_{7gmW)Z}L=rWAcjk-0Vb*@`JcpH}Q9^clsR zhCZtV=b_IjMvkrL6}iuxmtzSG$5{SFMeaH0UsBAO=o}@u5S^=-v(T57;39OMV$Mci zQRIGg{#C`CgTAK7ee3+|ia8g3LkUKsZz|?9^esj17v|;I1G4~qN0Ix7`F9n25GuzZ zxGw1Xiai+pKyh7BImW;qf_|j9Zs>f)9*W9w1#Ti3$bg?4$m-3a0Jp!##dey><*>ko>Paz83o+WnIvWBK`?6)QIQMUnCS z{I7}?d;F%zcz^zP#Y-Rkq4;CbKNT;1v_bL5p&J!1eY8pO#~V2eO)2LI8NV#$yii(~ zgf?hBXiPfCRB1CPA^jq>4BC@^1-b=vB^~>eb_4n|yc4DWO8b+JFO&{|o$0&n(7`Yi zAETb7d%-aBKaU=ySo*CLKNjpt^f1NJZ>5JTmVPT80mo35W1>{HbqaCnT6(Gy%J-)! z{%iDfB^-^Op?LhU^h`y@^-9lD{9^QMMaHp8&ry6Odafe(K}*k5JpEECHUb&5DZN1P zOVJAz8RsayNMS9#DV2JRAwS1R>D6$PF@}CD9Sb*;egk?7U`z7?It{3cjFFT+0FM*T zqcdO@ar(D(Hat!IWb_$$jQ~Bf zB_v`ij-^tL4;iN{#qUesATITN6W(I`m!q89N;$8YXHm{+f}u?5drBhyBmD=-Rp&J?(LdA~QK*kD7KZmc_<}y_J7?LYd=~qawZ>jVpB-fyoKwrsNTB-C6 zcquE;Co*OOF6b>oT>C@_=ULm z#;=N%e)&zY;-|kWa$l(Q4@K@xmHw&7J)hDIN^&E*QAx0E8O<&$Vr=0jv>w!_J|vbk zP@<<$wk1UPM_D6iOdKC6Yoa8jXj3I=jW&bk=#lQIy|CuOp~ za_UeEmGTfhgSJtk=h3!GBKxmUqDqvu2@$p`Yp*0yUwl-Ee?YszR>Y+a-JvJ>KS6uJ z*2F(Y`zVRnpfB_zoqj9ZMoFZt+bYpSbUP)Qif*qY*rlw$l86lkD2do|2PMJ2WjiWK zU34cU;utF%sKoeK+0IHd4c$eFrlW&kFm<~H-BpPuqq`~5cyxCq#vjUtz)$>QCsv;CF+1a29Hyp9_SNFv<3R4B4e&) zGhr5aI-^f1(N^d)O4JU0R*5Rm=ai^5`hpT|jlQTva;(3kM19dYO0+FHS4s9kzfuy( zyHH7FdtbvM<~^Q-u2d4)#( zmn(_bfa6Q>C!kltRrqj%UZceHMfq4IR|_4dMY%SlR(^Hup| z;5f>OO&)}Yh>Klkz!SueKxZnsQRplshd-C&heB>7iocaVPn-c3I#6Qzwl)4E#1&|)$lR0Gb(NU@Ze3rA@q^a1 zO^AL#v5^qBMQNuHm!kNB5Vt{lE74MPuoC@((qBUK9eN}jMZ6lto~^NCZW?;ClDiwd zMafO)vfL>-e56gN+F%zUw+~9&gxoL`pKZhWCU+Q09fjPX=x8N(06Ip= z9f)41cKjf}OX9M|ir=Zwh$l-St(|~s5`lAmi z(M#x)O0E}*p9ne5Clzc*$Zd^2t>ieKD)18_O~+p<#AhU(<3Y&vL^($ZxjyJzCD$8$ zS;_T7Uscld*N8)!{yK5U4Mg8ia=V~!D>1gLct^=?kJ45lw;j4diJnE*E4dSlp-4(@ zS2Ti{{G1EgZL8$)k#-}M+-~SmN^W=bcwigJ7AQ6pa+GV|P|0;in<}{;=mAP@XY@!V zHv}CGS5x*{l)4E?G5V8|^XSh?PSSr-a@Qun#VGQy6 zQ2MHJ9C6w2cqLkbPJl_IAC68|q9agg&)uZcKb6>Bh^2k^0^5sQp!dTA#P>xXgolYA zggyd~5|{curo_jhk1O%X=nQy*Jg1@@vz0T6Ux9Ky7vgKtrm0v5dv||x0CXckEQi&fzs{q@?(vGFDoVe6| zg%XS1egJ&Ei2kdJm1GTy-wVlFG*OD^!>Za)O!_*su2Qr&S|1vc{w>-Rnh|H)Rpro{ zIQyt-t0cdm9hKx)v=eNN&(rp*KG2sq?W*br+YzU4syL@q9YFjIbQl~=oc2}WH&ysh zjy6@%-$Kl`s$Nl|x6t{3eR5@}l!2msP};wQ?bV7?MzgLe@iuOgN zoi~yHcXTY=N+0cq;`c%#=~I;=`n&ozB`5a09quFl;i$BM{!actKURu{pr62J+cm|+bs&&ZVkHK5CjA^=s&9`dG&A?V|eGuhZMaP)f z)C%KT$1>~Iy0Xw6W6F3IXc^;*fvH_5sC|s7V~UbGMaReykPMTHXH1@$JzEYKCsm4a z@#z0+>U7Y6;r;q`>(;hyK3}U=7!KNH=Yc!zxWj;c{rmObe!FeA>DISf-#%OS?$xtL z_pRD?ZQHfWmYq9w?65`qb`|+H`8KV~%SuaHwQSL>X_Lma8rEvqpnko&#dT^IB|glB zIX-oWn|HG1^~-Jj^7=xX#yxuVXxyfkYh2!|&DOoj8}~?Kz1qv?UOgnCv6DP$EGMar z>+^*Ze%-KFFk@paJ7D8nJ7Der{yK(NRr_LR{aqj5RmapfI z9x!0zh+37un@yP8j+SsVIsYX6k{t#_b1Mf-BRYcrH_RO{4H-S4a@vLgqg~|)PAR4* z=YYMV`FLAB(|JILIyN+Rh~cfAHVlsCTy((Dh-cl}VRjEL8fuX(SHFJ!xTtxj9=3;V zzK-X0r#AS{?c;r`+x>eU*-tdTX8(WPevNH-8|!~)Q>_{sC)MV7-M;&qjW^4) z&c3gC{;jWS_7$%+qy9slyR-K4F4+9Pw?%w0cTP>7asSj;8@?5P&Dxvvvv;XIHy-k@ zbbM-@egC&z#HZ{tzwPoDpQ@=RZ#jMXpX*R-K~{&NPPX+ww`H?Do&Ohkw)~HIX4dSh z%Rl9jcI66nHtp3nYueX9+Ls+(0Ie*FeTMXfqnm;RM$(~!4h z*&azGzdOg-8;*D*zH!5X zKc?Dg8>R=tH;#zrUu_5e@k~(b=&SfMv~j*|vXKi|@h$b6`87WAd-1>fMB(q`U;QyV zF7f66Y|H=tcW%_i2LJL|)84NLYNb7_zRN+qX*1tV^A>z}v%KoVl6SLXVPk{MeOPk4 z{^^$0m)+*ROy13WInB%Osv4jEd*01_+O!j&wmG)G6UI#chX3mrVY{38cDmi&)9tE{ z|9!ig`8eCf$7Q?09W~pn@pZPlnXk)sB^UKopO@{{_&he-?C*tNVZUU1w&uF0wkaQw zuZ2Hy)x(g)eD@B@5v>OJ5w)i{=B|$ zO_e)|YpS|j!E+QCZ>(i1EgUt~tBV^C!sG@@LC@?25VPCe?EcW=_9 zaU+iH#`!?BO+|TkuF2cAYg67!V{OW31@&%w=ZJx)?6AvqhaIzU#>U(2@W&<$xo*V9 zTkPO-?;A62$lWg`!dEosHLRo+n;s?*6wtjnp>Tc8Ye~w07f* z93yOJMMcpaE2=OXn@xRkUI9bxYH-ylZ#QwS2=~^~(Rv{J2=_ z#*OX2cfz(D11E0Y4I368a=E?j-?}0^csJYSZ@m$9x@Pd7du-MvHGPu$6!y;gDErK@ zdj6)h(Xr7AQ*O2y(8mOhUnJ3JEaIZ@V#8ZFM*csny$75XRnj-yr@L?8nYoj5U~(d- zVHiP$D-tEBL`efPqC`o81PLPuA|P1>R0K?@h^T|E3EW-N`sfDps=KSMfkj|l-E|*f zZqNI#I^BKyh8cOk?|q)%uIrh)r|ZHnE;l$m6$8(Qo zEIVAc{^M1vKVDb=__B=SxsL|YpBLj!pAq9;Sp3P}>o*VDVE%mKxcT#KgEwDy_h)d4 zFrIi(>`tYlGR8kL8GDx^gcc|8&J50j$LrC(4T_g;#;Zsc2vwVj<6&cO7)o7?jeWbe z<)yfzXJw=%C13>|MaNk83W~C-d-Sa8o|S>aQG&Z;Yl{)$v0YmRlqDA=9Bge(`$nu- z8+)g!UT02^TpRXexjBmV0K5#(2F}f1Rd4D&+xRGz5@*OhiC3zFyJJLSTb9FynE@N7ROzH#;~$d% zYegwfS5dFrselS!ht zt-ySxrD^5qsgj%Y%n>%#@yIy}>Buo;c|3Pe;{Hrq;f4FnZ%F6REXGtb4 zdP^MFJI4^`J_aW&@$7t@ty<@7d2|)8uQlL|>8iHMIZ?bEX4J_d>e&+A_0)`XRWB{U zLaGW>oT=369x5%t@Rs&b)!&^E9Ugz&`~YX`u{?(lKU!aRn9r8!`Q~}^(bK2RLoY1; zbPqA0@SZp!jN1lpx_C<;Y3na1F+k#w^^7vbGAf0V zmXhGpRruB7JUBqb(4iKl<;6t`)NFCFy3Xt(zWPK|KlHHq8#7LLMY8aj=gfflt>@jR z&1b&-hxt_FAyF-oM1ttX--gUKrs3PE5TO&Ls4g&Y+(EO2o)$!Op#`8fM28sfhXI_I zlL37Qjabp$>xgBGvbH$3&?X`5x3K=Z*@XqL3w4&gHuh5Jx|SeitY;XXjnRCbcPg(& z=z69x>q-f;T`Y=(!QBq~fU|1DG(_CH8_i8_80gB)QDD-7Fp!e}5U@ZAPjhf^9CBxe z@_xi`)4>bVu^+%84_o6~@+G!Ot}*r*IgSCZW_sXRx5wd;Wt^2tIS!xBPU8x|3APc2 z;CDWyi@zg@YHTcHhv}P{UjPG|-$RiMxhL-RqJK|IYjJRZpQ%vd5V02W zGf5np@y;Fj)!aI$(X7?6zY+#G>=lS^*f_A?gnx_J!rjs555k}xF$#=1I5+I&L#i}1vJHtlWS591D-)mal@wu?=X^M&#h{9p1shtP&$ z$S24&0A9-@=?9qlAPsySl)wEFoqQcH0H#xmFyteXd(t@?46WToCq4%b4Oq`hADQC} z#J#1tpFRY7J`KK#JZ1aPqX{s$yTRcj)cHw1)e|oaL@}l(idb*#s5n8^HoO+lFUbii zl>8Jj)!??s^LNE>)OG(CKN;^Y$<9uP%*xKo&dbe7&q_yN0eGab6yg8!6?X8{l%^EJ zI6xplgG{0Sc+=8~Q_|8(Q$)X-*VIKlAMCm4q0K@u|F}(@3w&6!cC&eN&Gt8sANRcb z(o2@SIj*bX8#6aBP5j%8XW6zMdza_PHVw#Y>U6$i9H{mg=4?}s(dutbZd3e2@{T;A6OEpi`wzYvn9!yTDQcCSPC+3-a6KWThnW6}D8A#<(wl z-F3b*gj`{9GRXwjGTt!XKXgd6J+Tj0zr0sFzqfDghpSe9a{G$oH>l<+^^$$&ne-RL zxbNtSaPz0zw;sC9{P~sR=D7_sURnF_1J9e^-%0#QIRA$4dv_4ce3v6C`J6nH=5y@3 zkoVmyj9rLO$SJ2O2w z5m(+WqDx%JiZjFRyma+-UEm{DzxMM{_Pw`t8jKq;+P?bEib4#F7E4*bFfDLrmGLd- zyhMT7C2kGnF$ae1BRS7@5G>p_S#G8guSgiSgHN)&U>%7YAkQZcz>2a-2~V@ z&*AqnQ5NFxh~)PgQbeU1+&22l=BLs4{pG*MnJd&w@65}X^?Y=O|N8ZZ18Jh)}r z63X*;|02(KRqpqvx_Q163`et2{qU*Izh45~lU@BVk%UKY)pPe&lakKR*of3+G3| zL_0sw)1E%iB|fFnUxxF9hwb(0DmHEGaKoc&+BhxTwyH|O%@O~B&6m=6TuVHDyy*we zyMYzzt>-$c4+mfr5q~~xPN8`r8xDX!jkvu&p~S$FIw~NL@pt|%%Lw{A?#klo(6b!{ zW@n2qB&Xy&+hG-l%PIKCUARD}s(Q5hhNlnbdB}OTDfh^E-1jxJf5<$$#L}OKNImoO z5Y{s)+mP>ro@A@T0}P+8=81z>$LCR|gUG7zsng+qGsX@l6P;64U{X_TA!t)4z@`=% zrA%S`cePD%FAQtX`}0BX<4c!Xl-CmV-MgC=^ACHe`SW z;SjWAv>|~Bk`aDhD{UF`6%XFxh3^71MLx+u{eI?+M)MT}2`t{g_y8TQ5W*Kg4S-Kj zI{DixFt>z9osPfgQ@n<%>qShmVvctuC<%P~NQv%;w{G2i{N_*7&;R&RU=}c*qwZ>odH9}t z9#+=`Rz3LHTuD25Ug28=O>su*v2)|Fo=W9FYj+l7H{V$fw037P_VXR#Kx=mv?`IOG zwL6RV-xf?OcNXvG7R*6xik)lVx{uJhyeBP~7Vazzb1~-{91sDXN9G#PJWl)-^IXii z1~!b0yAq5Qccr_J=Lf#~9Ef)J`9=C#GBmg+i21tc&9UTJjGw$K;%YA=<+Oi*bl#z83~pn~Z4>Q%h4-5;BBIb>f`vF+jelRQv5PM&c>lT88YhM`l z1%{213xauF`@^sa3>zgUgkdQsg!jn>8<`u@h&Z{UTNH}B!yhf>hggWSpeZ^2Oy~jf zu-o1NP0>;`#BK$Sp;!pN!@16$ccqTecH=h{%4>l2Dz8D4;9NDo1;_m))(04ee%fX} z8?FzU{{Wae_AN=6@5~n^j4LNC6EOG6`3HiczJ6!3r5?;?J=pvobGmvl%R-*RINO{S zp__cbU?J;D3G-d^;z%8b@8q~(PAP4|VVd6s%;+FY+>Yis5is8arl*&DYBoNJ5illT z+Ol0PVa_zSkAOigwOZ}^)~@C);V?>uIZPb0*RB|G_dJI!z@FTN^={`oFwc*E>c6~} zol(|;=!+_XI2fnRXCw|mo!2P?nT+&nJ=&pE*7`QSY0;~o^^H|=$)|$Kr49O82CQ{yC z0B<&52#-T=s1>X?UW=wTerYf1H}3ua<-LWBgHKND03Pv?uZv7bbqXvvnVQyOq=)^W zFdpHKnj~V)|Ehm5|5wBu($^e1bbb{AJ>Wf_m*w3lU*9 zg&)on!9d=P50Q7uBy&39Z~fg1dG~6>Igz-K&yT-@m{Uc>c?*X*rM&Y?Fo-$jw*W)( zPJZib^NAKMPej;B$XUJVqSTg0DP9!l>UcOmts)I|~M9*RgZLY)T`;f}z#h_DwiUz6J9G z!$kPXNxpjKvm8354q%w5b|+v+4%sjfa>&|?Af2P~4DV^Hyw`jQVE)E(=#(Re(xFN% zokB58-h(>EH8Q5byvuqBRB`s7{PL1VB4h#N(6r{$+FvkliqgT~R)IeiIYJHa56h&6 zI!bC_*KlG&9K1^kicKh~!BbLEje3*x;0;JEe(iscZ@zKi=HvfOKl$NRS8dq3b%Wma z{Kp@{l}NbYJNgOYX%PqP$xrZ61TPZIuYrpN36Eh4fk7 zU%dQt;9+&*7p8_lx~ZCHuikZq_#$v~(=+PZe>bz_ni}CZ#ka7gBn(jgzypjE-6JY_ ztr*8zcZ!^dwT8hMr^N3fVc_p@<|kW3yd7~iDbK+LgFJ_iLt#J@@VSAg2r97<1Bu0D z9J!Jza@karTmeB2G8PTzyLmCkR}z)PlvKKx)2&>_->CEk^eIhI;ELa`6lpz zdimF8?4Lc|_Xn1!w+A{06!pOXn2`1bz5(PIV=wh8q78foWW%#>z%$Wv8W|_ppOoZ; z*cc7@bDRhZR|=vr(w9ORDQ!}89};1)KUJb<&n$0+;kCCYRUI_`&$U-{pVrfytj_<& zR9?V6yHs6MpLW^iqO{&--=;sPhyP@jTe#4EFwf9FF%EheaPugI{x%rl2&6g{oNsZ5 zNAVyF*ZO#IM&of6IiBY}v}28BytfotL|#{-&SlOeWD6|ne$tARp5$XmYlEE9`%0M5d>FIV(`0D$ThO9XeM4VQ zG>O};qxw?rg|QyLDcPnKiF37{?l*#A;E#*~V@{;? zxnLfOpfApfx4#WTel(AaV}oD#w+78`6qq6djpPXO-q?bOH>?ehG6*O^AenECucohR@8m_L|+lg)E&M`CFWC z_x#_9>sx@Ky3MH;&uqK@225%lsJ zi(A;#$5-4+yaby8FB2BqAsc{P6!C;HSgkJa#x?$q3qE^YZMJ92qvZ9nRGb zSHWi*M3y|Ja6iAt?&mHxmz{9X^#!qfz{PDLY*62O*@{+(;Umn+EtELpFwV!Jvdw#Ta z`i}Y4O-J#~xtBaQ=eh^F(#uy4zY{NC#QfeeuQ@QN(^=gDKaxC`^PI72CEf8|vJpnn zT~5LvkM0pUkLw;lKKM*NTbM_wl;1+^e1J}QqhUE{l2)*t0Bf&>n@Zz612h>px76ZkDA4E<;l2XW?eJ2f`(@SkzF(p|jIa$etDTN5BCy68@BrYg3 zODlu9x||QMB_j|1@L?nzpAhYlv-{zRbsw!>{n5JhAFp2hv6BP;g8Ar~)8?bkAH7X@ zkG~?kx5;$)a~ps=jLDtTw!HaW&x44rFbrhz zWy)`YYc~$!yjCes4Lw?P)iuxNXCnF{hUNL=GKDJgQM{}U8_$387b*z9Y2ysa;i{v9 zGHG}WQk|4KE7c-z=+SlvZkI|hzW7U6WPF5!BAkb06+_c!G902iRyIS(jN`}qbIQwv z(y2pPRe4n#RF0>oCVLfFZ0?|TO}Fk<{Qs0L%@#cJzB4(EI{KD8F4`Rj`dCa&zu~v9 zNPXL+&av$h?$bI-uER3=b;5FuJ33E!7 zHgxD-g}^}0&TL^GI%jg8GorEu7zZDmp-sO8WBggPl`yWe7`86xswnuNb{c2M;jemC z`VN-UINNu?Q>pavIN5g=zV2F~urEkUDZ^QV?Y?ug~oq2q< zE$x--TQ5h0!TrnGE4Bxut_KYrUvSu7#NDNOBz?l_PaX_@3-#Ueqtnm@)A0geI<*Lc z+*L_KU*~8rv@ZK>L1*x}an={TzB{;1@{~|LOAC9<^GcZ3&o#reOfR-6xJR5RoJ)h~27OZBeA<`|T~~>Je*-JFb4aoG!5A7~4wGL@ zTqd9)0TU%I2$)7Wk3e(_FfxZUY##6T5(ZIyf{79bM7%r3f|ni58SWYQiH4CB!^{-zF*9u&hvb>39(=OQ6SaFEpO4 zh^tmcEwIOO+?O?o0sz{}z#bUeCP=*KKw8;jRd*&lEF zWcl(>w!J8>{OcFu$``EsZG;oHn1QE`n1QXpk$e_MfMdLp!5%_fQE*qG>}^ijMynRv zYeIE{0E@3EHrR7w7k8Exr=S9gs%lY7E6gKb+;GF^N6ZuAqNnb<>lyPc&%3KXT(|Dy zhQQbAZ=PCr>yy$h)sOJGT|%^jZ|u$pnaX(a-J4D;hqfd!lnM+1^KC(uEocq z&5SP&B&G^UnLz`8C$FZ6S5r(L!Zx`%S!hp_+`icGk`u~WjW^3%X<$VH{s&$W{!mjX zmv!~%DeGs9pNplvIlFBctxa5XX}4*-z#Ct^Y{%I9+XTMWjz8FL;pMkJ8Mr%sFWJ=a z`FdUlebd1M^|G$37>5Y;rg)Ok1N1xs3}NBNPFXla^86(hjHjVRpz;0`yd#yDm4Ug_ zi&HAP#~@wWU3H6PAS)?YZ(CYS1zr>E4LZ*CUDhsfZI``KRNH0Fpv{6V5r&b9$i>UuDmoxF>a zP!C_B^hZ~e6|~8aQU(1PLThbVs(7h(xe$`6L zEP=hQ)p=3PrAfnHt%Dgqm7Sq=u=eYymb!w(CN`Hq!HX>cj`wF27oneHWl@*nF8E?0 z@{y}zv8y75J@GXexK_iPQ;I@%TO4%H%&Mw}V6{slnF^j+Lq;VOB$o}?vMavVKkk0P z{OZ7d(dNZH|EP&K{Rdv3Soiv#4R6g`h_m_g+8*6h^{&`kSBSfA-tfAZ{P(|zaj&jh z^!2&7?h^?QKOo}o-);VM_*wI(ZQupagU;ni@N=?~BfZVIBhfjd-cGK{eE9h+Pj60E zS_&PsZds_9CU?Aj(%{mglNKgBZo5N__{@AOC6y$|(Yx<{nk2}QKd#&LS+~GF>g6JE zT>WnM+I9PFzC6itq`{ISyCUTXe6_$AvK}z(ciQ0awClI14f`tcx3pH*{HK);5q2HZ zgYpt+e&~T_<=YnKA^TavY!}h+oEXHDY&G!|`;^?aDEX03@*RTKQYm5R4xx}=lI=R_ zBeo46I=kp8;H;lvUk;rYTB*_8k9o6^YgdHRI>bLPOQ?oknGaTnN8Y0i%gxEw^ed8t zGDIUM5e}__v^fL413dWqc>Kd7reMQ8;>wf~gs;$p2_9=8VmQ^~6y zmR4HnElsP0h{Z53gVo>vKK<9}d$vs9@Xndj~+iRDpzms(|yA&CKSQS zKd#*WLHErsn9rNPI(AI-ZwkDko*B|`^}zM8)_`+1cZxdlO(=_+k;4W# z*j1r^3CQ2~=-_5jUwER&a4QH=NwI^UJmR3klDz z+kUieUC%o&*?#Mo)j#BZ{o?2ws{1Xya`1%SnN?NCcddGP#*Akc+_2>KnIooDC$&qy zX!6z>%U@l{XP?)?=lTvyZtUSR>-Nos!60t(k4PBQe1ax8*O&)(^j;xlOZabhM*VG? z`?rW8NqbiQmShFvhBF=oH^>3!yDTgAh5Day?&UnEZQOj7VpeeNG5hWLeMQO-a$UCF zO24J~+4iD!k(|N&{2jt2dMt{+$M!M(CY)c8Aq-Z5Eu({PR)M8$ez9*8%rBigwQrl7 zjs6+QL4F|y>7&-v^g(lj3fQ|;`A_UZa>biSy$mQujbJXAjaS}wb?t%cuGxL9_qPe=m$?gHT|Q&$eZdWM>+Ky^Lg_o2SSEQoQstq(B`fC(t2&)qfj;J)6ORGgO8g4Xx^jkE_cwqA< zD^~w)>zOlKA9`r(uf%w>{xiMbZ{OK(7OT^K)zI+T{D<#YbIZ;h;t%hie~fX1Eylfa z(2~SofG`kD6DqZ|ElK=O*rR4+5?1aI`A_0rxEwi zZ@|mgM;fR3`K(|ZJg`&wXT&+EhmLjq7QDR7^;_a)`P=Q{{wTk-`riRYjw53XH(AxCH2bj$PST7Od;BK|nu zp8y&mwH@-dgo+f|>SofCx$PG{wDBPD8*ACBe&pN-WKe_Y-^BM{!}q-u8;8Y2Y6tr@ z4wH!~w0DZQl8Dd!Fg?@()Y>rdrW&9f>+lFqMm$-Mx<}9)cgt@6&MDwT3X3>dW^{e4 z^T3v_BRLG6C-dBKmn3h!AS05B+n}lG^uVsv#&6kWb|AhOGRjw!RA!F3b%o~xFi3|U zom6#iEYL#DL~|GYO>~D&Mis<#e{4!pJPNrG&XvS0#EMYpESr|VAf`nTN?=89YmnzJ zpf#^+5r8i=X{lr^a&kf{wKd5Sgeey-7i-{MP1KbBQA{^GXc?n6k9y7g?_0+|6?^*h z`IEL*U3%zGe>!A(n*Jn41wQjkx!2)ezPk`#<19Cy^!P!y42q#z=#kQ*L>LxADarA1 zhDXT|88Q*3jKimvn4w5&IwZ~cqvp@sj!!wdeEE~L$G4g1vp0UfNBgMhqS=p3o%+aZ z?aiikd%oZ3eD5d374nsy{;D+6<76#+&=O^)>+5vw;jg1T4=z27LB7bhRAv|kmSev( z0+V0CeIFkM8*=o1kw-byrb!JLAPA5p6l3IiYG=oVne&%)nA z%x0g2ap@X~5BaDiK4+DmT9}7?{1WDjh^#>jTNix%H?=Si`lr%7ka0hYw^&Yv{T9Ce zv`9SRzX#vgzx7?KLIyY55Pz3&;&9U`zvLx8uXu|CxsgZy&ukp%4MP<`mwm@*&!xI z!Vo?#`us~dAGt>iL$L#i^Y`{Xy6GH-^LEu6{aZo$pr^(6k!#1deqxwM`5d)$M%*wh zoi!IsE8n6sBEJ>&j9^`mGd2ujG-2yf)aG-*`QMOzbRR;cS)A9Sp?jdJ#A*tBQ0$?I zjb(4lRLW>7Xp@}<*i1?kOE2S|fv9$a;f0n=kc!lI8sd;j3{miA3rNqu8zF&?l6-vO zh2vT>O1!?8a#EYR^bBMWB;}c<>cYSl`p?q8N{NZ%2-(~Nb{6%G=KhKBk~*0}!OSiA zAG0}gs~GueR+dneP_GGm_NKTvXHb_egR(`{TY)bT*WWzgZ~Gtobbz+#TxakY&&@H1 zH+jG8-p_8EzXxc@eH}?tv%M?({W`S)5=SrjOYP~l`plWHPt|rb&3*Cr(|IX15$2Q{*^@`kLvmeyYn$cIKz^>%lTE^q?I&TjN1Ml-NVIgp1VYau z=-mrEaS7<1LpD=J67KLpws2)VBtY*1H4B#p(Agoh=%r?wzRy1D*t<(! zZr6)De)^H=Q&T=Q&tKHPylh}E^Jn$E`jPpnf5NC9Jw{FNi%SAsn@q8Mw_7rqyvLWlX|w-NM{Fhm;(vrVz`nOwB#h1|*8uqKA#+{rO=esi>EuWNj;c0Bl9 zwqY=*bxwK%E>S7<7bSR+)EnibAjdO1m2w>6%yu1>6gn%PiOPyT1qFS|M8&6p&(wNt zzFF93-oU~0FBV@kZ42zfH;_T%*^F0Bl9YUZZc=;<0u?Y%5xtVxlqiU8ldNKP&^VaA z3H$7#kHx*oqTi4Y=XLK{TWKzWb0#oM&0pTXYEM?KKd>xtpL(suub$p4KR+f~A_nkE z1TE>zx?o^q$k=qqnPnKFH_rndG(pbeqPLuf><9U+Gm7jt9yt&3tDI;1FXIE-NybP+ z=79{s-ni!ZZ75G$vdF!zyTsuZ)=n~C;(S(lIur)>xPi5g1Rtcpa|i1(3&M!@DAtzi zLQ`f~a@}&q!n#gTNS?#1l@f<0up$Fb44~4k7|#S$r4^@DX`bRNDXlys&A*vnA2+`? ze|P4@XD^A5U;Olh`MLQ*iDVsp|5CGeV4qqqUSBG@o4=?3EUl4TWUrBV7Wm`eagQ|K z1Fn_gW3dN2ZpT|eJ15>M_o?;0#5{OPf?^LJi!XVes6BgP=1UlQ2N~ar+K(q@ngxR^ zFkqtA4|t!W+5qvfx{_fcYXic0beHHJx=%JO*l*h+|C!%lFaJoj0oZTU)p1l7r~krf z2m93FJN)_{dYu~Q7%@nF3+SGqpzmBf*aN;7*VIEBn!5G8 zp&I`K>*jCs8UG%iqceU-1Z^Y?ojZnsuc;*%%HNSNJC(n*Fi#L>M>H7twLlAJp6y~| z#MxX9UxNzp)vdpF}H9Rn?}*5({ea1(JuPQI>+f zVQG}b(MT>mz7z4{D3v0`UgCS&LyrvK*Lq;0a(|gG|mMfhMowZW(Z4vhr=+ez#=-HF*-njkn z+<97I(vNQHrKeKwkL>`96T~IoLmCq8vO#2(0&i1>lfYBzG-Qg>jXDnn0M4JVC*!QY zlWzonM#QbMLMRnID|;3dQgdIWT$IaOx8-<*-_deBR+8fp&O0=EC{0w6PS>-#I#H88 zNb%9EC$1m1dhdv7t1i81(XtJ>PjuLEbnHc2*NuBBK5g`R|Fn&ReOF8wpL^MY{%dou z+Bb|vs!rhglF1mlj%KrBxWF-5vn98C4apUD4 z^7=Vv<2(lFEY6y2f_|$MqD~{2i1nQE_MZ3&g#nJx3Vs zokGU@I=FXsk2^RT#_8X?_d~Vdjks-pa*zMV8K*~~oc%yl)Y=coIcxuDKlC|r+_e^W z+)wVYJ*PMBjOgu}Gt-_E^_SbCjpI&P>KgB2!y{G+AC=83p7*SA!#Fd*!r2_Fm)f{N zZcJ0lgYd?^&OArSFKf@^8oyIPw+DONyV-{KmDuAnzXM+x$MEj&1ilZ_20E>`h!4)^ zvFTwLXWIc^$cTN-Kj>xp(hwOz4mV3ixFo|A>Pg4~V=`r1w1H$8?~)85e{NAm2o6Ia z;~ZfKSt?hPm8h1MbXMUe%&6+4W}#DYMn)e^1~1e{EE#d_YDY#qInI_5xAnbtlavwt z=J#KtFSUh4d{S|H2#Hy}dtJAPg@pRW?zST#BvuTNLL#V8jbw)LBV=q3R?wOfbw8hQ*3gO)=|GU6Z8eaH#Y z>d0uAG91rv7|45$m-1F9g9cpQug@hl)m=KZttdlF_^ga1lol#IM2`enSjYjLsw%fs zWrLH2Yeq50b850E#i61yQB6b4$B@+RSzS}iF+xLpJnP8yV>cff`R_%GmfkLfZLiyI zZhOgdE5;w*JgVsAVmaWRhoPqdgk7rYyURGR=^= zmnkx3GeB-4E(5Z7P0Z1Ca<^zBGFAV^50)+eXw#gA{;5gNJe{06XwC552k*aU)|Nqo zw`6Y-`qNJdZS$Z>1<#y6_(Wmt-~*>#eEzE&UR=ER!~*anubpWGnZ$Z*KGP^{9K8Bv zaGZ33%J9%*-^y{=a)X_DNRI)Y<>$f(J;rmp=4fZnLHpnuA009dJ!XBgy?fmGCh4(P zf;hUyceuu{aLwO=GEIpFVYoB=1>)Y(o+AwRP9fvaV;1h6-Qy09&|_YZ-`Nky0)~ey zh;xra##-ZN$qsYip~vL>&|}vA(V9qC(709Wq;{D(}q?fGmI|Xi$ z_IF8-$#GwaJs$WzxOUc4P@pzE=_!VXo~j2vtfx-ut6*o-`CoAiVwGR#pyOYTizrE0 zt3n%TC{!Fa#VRgQy_P8Ow`&0ohku-_5``_?96Ibp1$5Za1ycqBaolCu2)vM`=wJp% zE{D~rQp8}>mflDyq4TajG;7VkwDcp5iD~^CZrJ?6vZWt9GV_i>1Mir%cmKicA(IQA zfQRSL1rrBvMpEh1X494f3r;Lv^y1vFo`3NaXb=ZJ#acmwe#95P+0CoeF0v*^?PB#} z+b3a=`%0_K zEfeJ4*~Bgn?%mSAEU7U5piW$K$A`<7et2;9wjqPJ-f-Uo4}oh64(ngo9a8@%f8yXf z%)rs7%=26J-uRm(HyxjU@}=WvK^pK6^M>)V%|DPgk18*qXMie>a$7Klf$VYd7+~&a z9pIKd`*5#!!Qfv1cqj~=OXNV<=Mpzyv;!o?41#e8TO&%^TA2g3WJFFBBf`&@OPS(y z!Mpa0rz^3s#nTmd%DbqgBu7>oH>re`rj4Y&d%gUxCkv< zT^{Jk5YqOjzNhof3ZAa&u)oync7NT_@b&J4|LOch&i1+Uw+$S)ZT^CtIfpy_Z}v8! zAAVAJwmq<;+t_)FkI$d`@}e6jcDobiCCRrLpkrsqw<4vzGRWT_@11y*5_Ba`OGzd- zG8|Ay&9)K)kfER`K$8qg(03|Z;S;G#L3t@AC@OE4TIr<}3;DbWaLs~~5(cB!dfh~t zij`U#KW;(`IQGQib-??I%kS8DfB$Q9p2+NNepA^&V*cQe%lA$dxotaQIepDq@q6So zJxMD`6-&)=l{a72ZFp56A&wW5YEDxZs{e|^`er<5(|W0=Na;u!%_&$1dbo@B?ecOd zpP5=Nz*xrnJ61+B7DW|-%qf(GQCVJ?pOKnKuLt4n9m~mJ(Lbw#H-X>YF|x8++m0J1 zC9Yag(j_6IQ%ZG3_N9iW#my;SFvFwm(zJg4pG-=M*eB9Yv`?%TufQfy&d)?gZ*^u{ zfyd!%m>X>zIW{srL3*?^-ECDl&-NDJciQmuU1xrJg8<)UThR3#wwE!VrAG-*gXg#G zXGeb`3B{#9@uZcZdm7}SwMr>%{i(V1XLLBWmVW%*98G?y*?X&)e@VdI?J zt|7O%eA%WCmoEEo(+v#+QWG1Gq^AzL-)sJl15rZYp zb}u?+@aXu$q_V&)XWf)uB(A|??dyWI{>NoDy4r*843Y*UPY|~*v-D$wKPe3Y1iDdc z6OVP;3bF)CIsoYv zp(n~CPa4ixWrd-?xny(U_W9o$;YV!HfE5oM4EUS_rVbm~v#M{`E**!PwbO@gTXORE z5r=JE&W@!w?NB=ekJ^`ogNORNweRco=Gt=CbE^SvQz3hBZ|b7Q+2go-lTF4l3HH{N z5jGj$af5OTFjGS9E!IDqh@b6wV3W;`0+SYmfsXixedj`78`p24i=K)6ZS%<(iaA>N zYo?AUn>i2WQMq_!DTrhx*vtenJ2Mp`S z7#KeuJVukY!?(P6)2#u9z}Vr`VO@tgK=(Nmsd>F(iZ2EcTYhd)GG%p(KLATQ;KSnu z(sV+8OvvJ)nHIig{TN=Qar|3pX=x*{N?H$|k8u4^iHozb1hJg|DZd{%g}+ziuOUNV z{NM&Y1)>*;4A2WsF*EGB901TN*Snt z4AnjFsLKO_1xtwf(LN3AR#%)WcMiuIt!sQ!Khm`!>c`x?vFYRZ{kI1XgtR?k-a}kg z@(|wjVjhC;$1_Xvk~zY=5xi8R3=lhp9&H19#y+5o zx>(vz`hNe&dC>4G+B}ef<9IT@NOIAdYc9fjM5}Wt@$oiFP(056Y-LtI4FB*&x{%`u z!8Cj!h?%0q#DINTo{ku(O|Od-rSGK|4d^uhn^4oEyTw7}B}w$;k$m5Uycvi^w#rUc zUOv4x7{*uEem-sxqJ3Mf}AJithqvWY(MmjVB3#;9Jm#i$a*jK zq0r;6%_Zbak+$(b+y}FjBC1x%%uxA0hyp#lwlh7%FYLOT6rdb7ErmV7Q0t+06VS!w zl^4bGqNpx9_}%Iif8Ra+i91F&ee8Yl&TF?89;rMNXjbPZ?AbVV(^a@5s_6J)>~dV{ zU02_y9^CrOgdMg`KagS&>h&Zk(6<@?KxQ=ENe1FP6`~TYBdU#R{S$G2G?ZejJ1090 zMqU9J2oGk)`c!WW?pt1UhP+Es7y?s(bu^9LW>X<@J!nQZqNqqwx^!;euBfu8vaAGC z7nYY~q*lhGR0`Kh#3SemEU%SVs+MV8fYCZd!_(k&EygohrJ0$+TUD|Cm063h>>-!m zz45X7HD>SId-sGh^;YdQb7YY40ZCj`{hJ^A8ds=!!Y^lC!@a zYCe`eZVafAZ;sbHie9l3c8oR0iIfSqt4jlvH$nHQfqXwA+R$5mFFShIJ$_0|i#85j z*ccpVe<;(~ID_)1AnnQD%Jai_jv%G;UAo7~@$L5fcwY}ZWsm!=Q#-rhgY)ckf7ihu zzGj4@g7cH#R?gq7;9AXg0QNjMKkkF0g7EA=XZ(G&a2GrC1jplEw#Q);IP<^2=A=bi#PA0k9P_gC;vaw*w@(}C!AetVjf{Xy~N!e_h!;$ckZjepW5TEU*-{g`_Xf;576TA(mR`LivY#*W2t4Aio4 z63R&!iNA;4n+!is92I-VqDY7ezR?v5MfVsWK~sxoF1XMu&rh)tvK>*4Kr8^Cx(Obuh4f!kjmAxLh$D1VjYqzw7AQXnad z{2Wq(l29E`D4_7!Pd)*XJ=*7`BF%e=SV zV~{5s@EO#lD_4rAt-fXjS2A>JW1Gz&Cb07kbbo6S-XFLEyc);USqZVc+ zYZsyP?9t`ot{1nfEG?$^5!TyTbhf=6Ev}d9VV(Ep|1VY^Z~M`HnE*j|ni@_B(o^O@ zPYw8@Lft_;g?`kxHxHGu$>yOJZ!_<(-UJM6fE~)SQYR8mxyE-XGS6AUlMN-|w+l;$ zGCcBJ<+$%AF(c|cJEPAJAG~WGw&`eo#JCsHo(g4T^S|_R{RX9|wf7*QSt&V^Sel!D zw?PCnE5mvZvPcv~q=1yNv2Xc$DU*|`@~__gZNu8Hwl9C}megP6Z@FR9OE2zNyH7KJ z6fZ4%FKLrdk3J*RjkS;5FlGMxZ@m7&o?CX@vgHp8Y#a~jUn-rHG5(RsNWey|-u5D#SSqa@)s3#G)t&`|vMJjDqB+6`T-ZBtQX>A=> z-O*dzFl#_razVnV9%acfEw8D4#n^eVcdF|2Egd?AE{=7eo{xJAvc>&n&=pkY$ssN@ zD3{K64OGVqxTSb(7wviT_=TIQ6mEWioYEAoZWkjP8*3h)``Dk3-L`ny0d-#h&)f#y znm_g3_XEAv=Wf|?AM?xx+>!7t@Dd~}?oNBp;2+@USm;-0oMY`PIaYuidn?usQwF)q zglAi2tbbHK6d@c?IP&NWKMZX=P+k-3fhlGfMHG@_XFw%gsPOa{2}AN>wUezKhI;_n!l5jpboagPgp(PBKaJ#PgJwvE+}HL6m%&; z#}XjV79`}C)tq9=a5#qL29%YR!lHofLu7aOBqMS!Y(Ya<{jt&Bl3?WeMfc7CAJCTY zX{(I#UzH81nuBbPLKlraZn;Vh6Y1(;Hx7~4(ltUUEvBX(LBi6(j7Hcf*oPA~WDSvo zb)xXRmZq&tTB0rb+M)DJsZj1Z1{0Jst?9i^vX>AJhr8W!WrDs+9cQM{E1goG7DoV4 zUJ656vL_FzE|xo;jX}LmIt|0&;NZzXjt0nqqn^m`)>eoLOHQE%(P1$}-z?sem58Y+ z;J9S8u{k~K@U#s}S3KC*nAGY3Z-dQ<7UpI>U$4d49()XD7u#i7phYGfX`pW%@ySFMJGvYoH69d)!iMZekewYPdHy0` z${Sz_sR)qq{zUu&E|awK>Woq^%Pk9S*^i^zAv;+$h=FP^UG&84N8g<~AUWTc*0pry zkqwKN9yn&!s@LB*<=ywigJb*Z>fK)Lo;%IibhxofqA_eY5AM{+7}zEePfUf?tz$Xu zgn}p^yzHrHMHC#c)<^k{(iO_ejSoFG0{WufI!(lC9uF32r5LmX$DCGKR$P>ymzkEB z5MwCqMSFShP=Me1n(a0U`d_!~injV-Qw1@vB`W+^#y&4Zj^n)mcuw?us;%J{pJ10X zN4(1!0kbm_M!A{iA-e?9lkLj@Ixm%rcT~R*BPh%@gT6v}V!lj2r0v%Cu!A1J?w0fOxC?h0 z=iS3^!oR)K`gRxK`fczVcqSI=qu{l}vJExB`g_iF@WF#XG69zqcyQ+EvUqkQ<81`JVLuni1_)#PH;Zjpl%h*QYUR#cD zA&7@<47<^B%=y4JH&#p|JNE#RjdKs$$~_=lS@&Wb@*tXC<@E$%@QzS)y()7Ud98+heiO$A~GF~11?Z}~N@eo}%m32T%tmBW}dZWLd040rO|T6uN%9csqVeYc}r&4TPZuvSZTLr zrTJB*4eXN3F+cT^#w%Zm!a(Q*H+G_>N1>!s97o4DiBBUKfNO4Qd2vc|43a6h_a@RP zNP@vLLK3W8UY>wJm3H}u&(0ln`_=bv>QnXXhvuSQmv-uNd5>A@=)hrh^kqv&F1R;E zED2Q9bs5yJQ~N$7b0MEJJhp@&M?Q55Pl-kH6?{3kW0OM%EQq7qASr-bM?KxW!Ei#! zOplL?@hZt8nKF>AY$#v@q&WA;U{e4F#Qg{PPp$dyWIr>F zBQHwi@%T#E2}^BwwiC3_vkLzCyE#!!pk4qxCweO?fWi0AG$)~^J!)@7{AQDy5S*7_ zBj$bC9IW;Y!oXG=7Yai>D&Mt5Pmf3*ttTFZdrBz$4j|rjAs(f70I@leN3)Puxo6eN z#`25u3lhq*2gcmCO#kHksNsEeeK#84;*BuO-;3$~&jJ*v_-;%W^7IH0-TM1p`S)7- z`|J&&Z;sOMC&<6|qQ5VG+x2^#0sLK~GnNkz%T<2Vxp+k;JS?b8jDdEDMRRElCxO%T zk#bZA?!#Tr<1y;7cL?SbAjhkqZ2>!}(^8~zH*~zuneQW3EMi|!CLax$AkLa`XsT0e zPXk89B6I)BSwlyqH9ql#O^UKrD|`3p+^2sJ^%{}7WYd7&;_E>64)Yz0Hn%MkQ+F)t zGU)Oy9flMCV4adb|4Fm_HdNDt~S;)A*g@3VNrQ_%qkyPyAN$CyfXB6Zg0v zJoD$}p*&*oXCCt>{g(I>Fs<{aQVRYY&b%jaJ=1(;#JmCU=jtE~`19^?7`}(lc{BKI zux!_0cRTO+L3hCrnF`So{T;u3jcQxHwrTLgQui3s^o7WY9{X%8yqsJHOb)C}Sq6+K z2N~%x)GLL0Hlg7o)+>vEMIC%7;2r0Wl9Dr# zBYwgEvF}OI?ul#XZZBwiVp-k(DUBN@ELhXHVoLpPz4o02^H)xvwS4qrYXXVtnPoFJ z&I(kh&65{ySRe3%DM+6%{+*TO{-iRznc#BN4n0Z>DI}*3a<058CD~cYU{JE`Cx^Dl z^Ou4r$l_L2FA~SR-YHR_5U!$3=aQm)ICLGCqZ7V~^yNBh3}1e_;pu02be(lJh7us? ze%u|pVmCdSu66q$r(yrCJw&rr#Ortu<<8h8+q{>MUD!kW57;i*>Ot-$5(%R1AuJj+ z;lcrz{~eTdj?jbSXIkhQDHe7K_{)x~8$}A-^fb-tiYTBxDleH^t>po;Y{VI192~+=Vr$Z`!g;aA3q* znh2VPk8>o5q9XPxt+EMwJ^5Hq5pqWo)36@!7hFvAte+%2B@=|M37v=PpeE})I6!#V zOy-h=EGY;v-XDvSwzTr@96yN&^te}obEWP`X%{!TPslogEo-z1R&d8z1|NK`!}I(R zYoK`jdVfYbZtD4HA6-uQ{RWwshHfpUOhI317{Lt@i?SWSe9LL;fJIxK3zV<^?b{X= zWM@*H1Jd>pxVL=3GHpL7<6UcwX1wYTN#iwi7o%IU#bG;YcH9?f*ox*iD82-`6eu_N z6RGzuoEUKT<055|qYbuE#chK<8dTN-vdA|zEPmxbH~}#nv``S{*PN{MwB$q|xOUqrsyVAD&SAoV(`vPC4NkhYXYR!&7C?KQTBz$*@S@HgMhKhKcTz zM(&}5C+69q$afYTAE8{c(Up8>j03%u`vPPTzNsUp&ytmkpewjHaSEKxh%{jXVU@u3 zVcR@t&=viCSL7|z`?&jl6kDoBmTCGkXU+N5qe?YhuMONXYS+-g+sCV`&mUB88FSa* zK|99>R^yv8Uw9gLD(uZiG8O3NO7}Jt4Ml(R(WwawFB|7FQoDY1&o>PX-|ShiW8lCY z3%H2XsUAh6&?gU@P1_DEdU@`=6N_aXDd3 zx5W>%br%AU1R)DlCG7=`5mtvr&PPm4MGqy#TyNdAq${e+GN>+ADGDtw!%L3z|FA6W zha8cB99EqlB=hR8?}lZpj(Kow$)U&EkDVHo;QBU^Sn}cPdxxFAD}w4l`tsQ!`cmF8 ze2+HWUE}V0P_`F%pNQv=2jM9`AotHWg8)sGd5{Q z4AT#?WNs9A>U*&uI8L!6YyN+^=ka#1$9-iX;|{#9)=ekZJTKehh}$`IV%fHU?X!?v zXFh8rcO}kui3w3~qkQDoqK#I|IKKKeRXeKI4ikxZE|A(0}{~xW5Jlg*+Xid4lt<7_xw5B4d*5WXX=(YpTmvD>6!xw$#&D(%XvdW;@i+&S)MZIopNw5F8w-R;|T&!2Ep z`wmyvE+n}NnE`zcSpqrWk`-=w#Wpx zjkquB_*(0o6lt>r;cr#GjtaldmVYdFgYfHHfWIvSK8WWXVs~(UM;98tD?AW&maLO@ zo&A<4UY>IOxBo?5=Nqx%+WOmuM_PNe`=(CaS1Z1sym#WnJ`7Gn&wCGSRZEws z*K3IJlMM?au>RXVUuKdzIAENdblc!7ZmYfX-0tMv=kDBZ{_Z~W z+5P*qf;msmOrH7l9Jx>C*qAdx+_i7?2N`$nIfHTP1-0}TU3F~_Nw60b#inu1BX=b< zk5-2}`c&@ehCV5Iu3k_C0dt2%h0IS6g~ja_9sR9dQ21gdmDm22h)+B~+rg$ms(GCztY!tHTl6LIs{uI|MsHg{(DK>7X?D z(>k4stY0RV|C`x^Wf!d7 z1A3ukEJ%TM9}ZhGcXbUDL2J8Y!4az+Rvyw}h+lcnJ)gr4=}i4PWVBlq1qs~Gg6`~f zfP>~}WiLyLscf1WRA8E-3bb038|lsnbv0>%k2A`a+TrlTR(E!--KgoU)^-@Ol-I?w zcPQ{Dse6EVUyhSq%;T_&UE_T2X`JdbYMs7_3y#6B!wz36Q7==_fzr@C4NMZ5&B(6~ z)`41Fw`}=&Y%r@-!#WBPpl}9fXITvp(<;glAw@nmqTAt38LF#7n=$Bv8xuoYFQgwa z)17)>dzu5To+{{gMoH;fla3V z?3NwW!g98|sioDgW|~!AGkA;Ducmge-7tXKTb{ErHf6UO+2Im=%yBFA1AQ)H^;bOW zlP>?EM@zuQsqhOZ?D40tj1_mHdl$Qxd8L%5&VLy1kH;TSyj9i%RQlL7+e5ft&=wBVY0RFHMB!RBOXK;^gqy zwRbuaTE^2>)RBu`xmqZ>Xaf|FQUHpM8iqyH2n1w|ROT*(;1YCJdt!rFHSLipuF(0- z&*CruH^_w1WXo~JVizleP4)#8O6TV9)$5?wEjl6s20tg$k!Zv;lhowcPo_0Uksr{R zsmXDlP&y*!Q_TPx(*oy{>?ci>X2^!C?)mZ~PX zTXL-ZImyo;B6({cX@vQs$pn@((KjiOPC#7Gg2EZrP5PsoQ7~P||pD z{l(=~$-YawOn!2K`j2ZSmZ<8Zsy^_MZ8kseu;;eb(-gb>6_evliGDpoDqSUu8sO0d zM<;dZ6PH|7-uv2%)zjM^8K`4swPfNo0hl5jA7dU(r}&t4STL?4YSDlVRkig1QpI?D zmKGz_tMNTlh0>|O3wdn0gr17huyYYdsyWDnf&OMK=_=ws)>Ys?(p6UNI&waOdDvgm- zgbEs}S_*s189`RWEGeBxQK%CZpp&{~7CUb_qml;?{AwlilrvQTAU<5WPrUq>j~3i0 zGX7x3$D2QyTUV~y)}+_Ie(!<@E6l#)0dun2`}#?fXN2K!k-r*Em0$ovAfS2%ji$i{ zBpaa>r_v+oh|?z{5}%x%Opi(@DTyiFP<6|)5zpOL;Vl||7_<~oQ;EsGXG9z@_=EY~ zjSD{di}_R2wpA;)B8hA=aOhj{;DUQ!SIf+0GbT?$FhD4Cnonx)L5EdRFU71(beTXJ z6ZKHDkCA|7W_iSgl9!X7irmmjQEBy3tgNw`jZ{{ag;i6h<4s#e%}{d>e^u~!_PS|{ zH$C`*`Tm?2mppNz;(@H$bEd7EQ2*%e9rNDEzH58CNn@uCxUsV1pi@(Kj=KA%_LtO8 z8rWxOR@<_>Z>--#flJ^Dc|^EYkrk1h<$*g#>mYQzKEmZsZk#!k2USbPv=x{XN>{wK z+6JAeaMMG2q#cz^xsWBGFGfbXm9(~H%dS=zv-X}@4<{5R^Lvuwh1S<~$sewxr^vB9 zUSBP*?_y=Be{hHP*;#lo9^9bCVh`dV9)cyRaLrL1o$s-nAVS{vi7Lb|wIFYk%f)FI zi;HDflS;0>wfl=}6_u4$D9OE`jl2BfzE}0mZ+k^{zoG>fPg&>xHG1jd(%9qZfjdsN{K>$p;V%fN>9df%-OBVimw0%8Sd2J0a98-wBo(MUbo+QfhF~ zfRwHDY%u>X+{#lL=e^dj>WxLKXK#Oc&TF?m^w6SBd)MAFaq!Gu8*ZAvQy;bRSl#5q zOIJKuo|yRB-kV;S^~lEA3wAstY^PEJoVWn?RvHwIQ{y8A3s(9NXG#sv#y!3bl{Ac13UKW&@gG%e7*eq zr+WG4Uku&1a%laaejTev47q0cgu5T;T6AxEx6wm;j~zB@?ub4^`wZ_p>$(lhFDILS zP!D)!Kw-4?mk0ZK(DIRmjJC) z)H((7Q5Z@C)T>a@f8w2n%8oSjN{fd#4^?1acH zl(3YXLgDVhap|e6?*K;MSQus&9r#s$b218d$4wd;cUOajn~mKp$(F3m4!gJ;mG;+6Z7E9lB)H6Nuk6c+~3QcuKxW$Fnd7nX67&fOr@aS~s%ATrN{ z@@!8U3h?i#TrT2=9_@;otFKe8>P-MMV+DE6zlnHt80s*|L(>g!q3i3ESkLAciA{rmB)FooGWk|kMDE>aZFY4B%U1fP$aiPrrk@WX^l%Aqzl8l(hY`n;G z0Zqb}`}Ey1V)YT;o-4alj_Y{!s;_o0J#lm5v9z@d zc0E%*?T;&N-#G6j^R25F*6ph9Gx5%=)a>3pI@R2>U%lJnvsu?%UQx8=*N+R&u50$s z8Mfq$mzGYx_QtKV>+c@@)#VdLcI;9=Nn@GN&iqN;2wlmtiSC8yqCjOlkWIK*@tq2l z!7eE!i)lh+6Lluxv`=cXM0xrw4@y%8)4}hNg+o@d{U8LvUiIM60bUP_#lTg2&7TDN zh0S*gwD}AJNHf9ZEuw*Qp3ynNAH=jVaXO5GFrR3rb3q9~b2F0VHu5kG_6* zh}ITJR%I^r7;uDDM!48yF{S=%ulYZY=oFXleNR&JJ=i{|t5)}UX22d<2At6gTX~4> z6vBPCF%>ZfjKfdSMHDE5WmfxOt0n}$O(Xel{T6q|NtlA>q;-1}$gW?h7Bm5#gIR(pQV#oitTX0ZC}APn-W{~Qj}{0`$2@8Gk|d|u*%w=x+Y z>=oWnQpe%!r%~OPYp+m!wGOLt^>1?RPnv>0dTCadrtpn{4!g*$!@@L}J{sza`~aiX zJMi5C1-C%RUR2q8NO!^1NA?Y>b#upD8 zwWzTO7q_~?9>RC6HZWb0^U8d28}BXAX*u%+#+fga2);n>8qpH;rr&}u`rsd!^Jbzk z^9BDF_jnP(7nG~-{FeDb_GxqHlMMo2EU@QizPK@b&y`~2-9He70bj_Tc&>SxpJaT9 zFC;!xyUlzW$`@7-gsYBGnyekAN+V5ax#G~qjT_74`LnE1PB0{&C%MF+*AR&jicE%u zZxJCk@`|~OOepcXv>LABoJZenKh(xYLO2pD5{o# z{KXM}N7V_L`ZA@AR?q3B*;yIsspz@GbvAh-&x*3TQqG->uTWAPEZP53lFw!FJSmR^Z6jEU%ZCi^dx zx&dJBkAspx%`Ba|$quN$SVG}s>h%l+R`yUfu>*reCt+LKC~eA$sr?0Aani8M>^rs= z4fC=DZ++3V0JWm~7A(B0vFj!IWnXm2ubbV;e}5P9-~}e!xA~5H)rXtzujz2lp}|)b z4Xg{iK^so?$`5#VvlcdGp)vy>z(rDqJp2 z1T3JKn1Znv?7blN8YMRDVnghJ1yN&<*ki#GqiA9h6BAR6(G;H)qb5G-?Mb5C;rBhW zdkY4i_xa=ZzJ9#Got@o1bLPyMGp8al2nCWou)&Ze1*GcXp*j4Cba~dgdf;3}-DJ`v zh$BsqBt^l_KsHm_hA4%P7X{T}7b0q<6T-vg&}qvzNJlYW6Zc&`d$v*zK5@eKZz5@V z+j84?n6azZ<}PRFc}w~%pGdyY#BT&mlbxSvmwfPa|J8@u9saSk+o2PHX5IcAp)1tZ zfXEYNZx^}+@qGB;eeCQ{HIKCSdaP$DF70-B;F~uMV9|5nYnMy0>U#gp*bW@;b$PzS zFIT`xK63&dj~@;CbEsYTu4(PxJ)#{m?0mjU|DW{swYBg7-#(j5f1!uf##DegpPx4NpB=cZ z4O=nLJT$aU!p_1xU9B#ZkQ7Bd=7ZY7|N_@c25(5n~QsBvhuivX= zp3L*ay};X7<+HYIeuqWK$8D{z-qy#6=Zi5y+hQN1-~;gJ1Rn?lhllh64|WAP0Ax35ld zF640ptbKlK!RfNrYPUPrNbPpVT6WMF#tWR+h!&@H7-|vNY5m` zM9(y7bgR=I?eQVf0Bv)pZM&|`U86;+{aNR>ZkJaOz!QLjxVJ{JAuL2wBa2WmjbfWL zMW(4hE5u$W<%+GkHucg*Z99AQwpgRz>ud3KC;ir1TWA++>mPY`us_tk*SU^swY#ii zw2O62?{Znkweae~*F`(otu(wk_$9TA{Y1>6mUmDeOO)VY+T1#MSZ604AqI7f9PF}o zX`j)a@7!nT`3@S5t`w=(gFOyOR{9uGcsp51x3j8 z6*@SiHwZP8<xjC^v5oCe(zb0$2f0in3PQ%q z+RugtsWUybe>To8q$35g9nWUWs=)mQX~Y#Plee-1&S$d&6h$bPX-~I}RmnCfo-J^3 zO`EgF@r&BAUN9cu0_}o6I@R76K>uwq$!#&_dZZf<_ccOo%Q{27MZ%s-rjB}2J#%QN zII+2o+=&7Q#H^ejI$sppJR+iLc;SV`p-sahGsB9`^Fzl=BGbdennskso)+5olO+Wo z52nnv18yuRxG|7@`(P)#pZm`E@$cqvBVZSB2|fgQ1M9U|x`*F&z>6S?&U&T_0k(!q z7kFK<=|rnz_SD~4&pO~`Jzd}hY~N}S^HBD!1~CuCIE)&^?7qOa1~c&(4dzm|t*&M#69khcRiNNA-pGby(Qw7W!+rj~3OUww5&!jn-E%@bF@ z%a^mF4|c~t9vR*&VUPTj9P`N&^E2O%ibSjHHvo9Rp+SF)G?6Q2WGj~GyA{~N=WUb5)7pg4yBl!OtL$u z!w}=Is_EqO7YT{HakjXQlg2}r9l7c(@j;e&lN)rkOi7c4@dP6eK;n`BnE&Xsfx#=R z1KZ5&#W!w}lG1y8x0JV8iwk@>4@<~wl#Hl^EY5vGqJmmH}=|N8PJ>0kh|Cv z?$tQeb5FgV-PwBEJ^+HbXomWt#AiaJdRY-(P_(hYjcd>?shy+lXA;CbuE2|NQ zhm~moJ!jO95lp8(F`b`Z<3Z`W^BcA0KVRxHaIO^O8M zrhkqIvYQ=;;fVHzkL6r6XI}y9it0zj149EEi!`qIZ1j8vzk3L>8%#L z3iN?WdVmE515Fm4_Eqar{;EK&4r@)xkXf%!VY{ZjHtR=zu2ZpF7{9{U&bH$;x?=etv~Sxt$#_a z=g`{M+SfCjq#ga8@BL2N>1-GL1pNg+8SxK(@-S>0SX1Y{V$acF`>}-!Y+~J_{h#lK zOpDk>d;25DM*KiLSEEsTe+P~rfAquqXf4scYIMU|YL?|L))H;4okXs7FD#}U`vx14 zMPH>M`hMI0gucd@DKP&J-QS6^i8yYv^PH)?D6O(V$%Td)y} zMP?goFci-90h}3t=R?Yep*}`9MeOG$V2K_kjGN@Azz=w)uzw*k5zH35MrXP<1YZPSP+$NPPB&f3Uqk}AM3<-Vb$y01Qlyvt{MjdcKbs9+?X1f0&p{_`T<9Zmi-G=6wLVcZ5e z2$|4>u^Sm`<3i6_C-$SE&~%9srMSCZTtc83QT-7O(j9oAbRZ#iKNDh~*n=FHYBG9R zUaO3!)54=uBcJZuuj{Ho86Ep|asZezaYW}X;hugA8%Od**7*|o$S<7=Q>iuE9-~mK42hCM2N1q^n99}%cd0Q{-Lxxk#pko#tp0Vn{)$43+ z?6{MsIlVX!IN;-l9X_0rm}9YqF~@@cVI^SAXzj$$L_2f@uIE0qS@0}-FR+O1H>XUwxt-s+fWOOk?kwkb3|IMkY}%{S z^Dj>2FSGBK&7KW?lJEsVP9{hG8X4MUSxzJ4RzupraKT_Ut8Va;5LGzTr)}v~hN~6# zKf+Cb8(1^Y{fcBFDNj4W;5Iw~P7ArDSrN~HDuvRSs%{|-;LFA0EzFuB$6l7BAKX_| zzQ~IbpH--txKoj4)qHQ*ZMX|xh-mDzPi3`0ND1T>O8TuRLN}5D?Jg;;u^6SM5{f5L z@OO+g#u{r03-OCKM{B`B?rx;HkE7tAxb!9}1&*kw9PZyVLr#D%4O~6^gE6e8ir;zu z5eh*yIDeicA2`6TpI>rg{`?zD3O}Ad|6_LEwleS~*7y4#Sl=^e_`V;$=lfndvXq&s zE-=&5BL4UJDt^C6et!FQf*l@3Dzdl+^20X4+Ius{ekZf@{t zmfSquumDt(3hx1dD0e~>u?+pQQcZgBr5akDt}LpkFf^#BuuZP0(B{wZ6y9f|^CKor zkUI93$=~CRKYwLxqR~N1hHX!|B=JERfnEvJ$`+@Ds2X76ehpgq_V2RLCkC4^K)Q zmdDmfejT_vWpJ>Hj%$}C4 z$`yhp&KpaN0mwUmQ={}krz2hv!V|IY8f0>Wa6_dnBQuRf(L(ZJFc?LWEyEC0*OCog zVJ@I3(b)gq(a?~xi~O(8gw3E{baZeq5>F>aCt6~H>jl??_B}`ng8Dt!>U-Bd3SIc?E zBdqc3ud~KSjPvj}fA96z`Fr@=(D=cxhDCQaZMw7Q!Jn#+{wK|4B?Rq0n9C3;J}VXm z1q>U8q;W{;qfcQ&xr^Bh1CQC?&&>@c0w^{OpbON8A)ALtF9sM5TTk0o(Eom~?Kr*j zVm~mD`L;>kJewW&mP^xoV<`vD9b@Bd-@b5q`t>!%*QcM_Q_&GwA3wap9y@l7U%GOQUrz5>!BSF~``f$j z&7FI1*Jb`^D!&G@1^*ug9L)u+iK@T!E|6yQxPRfSzW1NiWv2hNPnDsXo{_2?!_Me^MB#h*p2KQj zOr+YBsy~D}lgFwWKu-AQ{zezPNr~=v6^Qc={2^Yp#(_Wdb-|zL+e-A+@JM|fIO6`U zc$5-6fJbI>zpKv2#B1=o_I1H0Jy$Ig&(-iMyW$?tb-}CXyGZoa@cVFI7yOF8@F;cQ z`Juk9c&5I}=c2EMZ|dv7H}`kNw@Y6Q@6=bvyEKdY(^`Zq?~id~{4#81v_`SFz5w2k zC?#hlhLYuhbq2%4eneZfNSCYGM&Y$!4oxy^UJDuinL?h{IF|0+iQp8h&>#_ysamnk z&f2@0UzS6LY|BOcpB2|<4cR(G4&j$q@7>QodgTKDXun)_jWr(RRq;{Mp1aG+|1K^4 zyL{Q*JxL!`cn#oJu3h72PM>CN0Vd$Y+QWWy7jZ%Ga}Pq5Bo-Nr!T}J6pu z6{Z@B)VfhpR9r$rfYB|yfyK;dd)GaILIQ+mEecAZ(ZtMhH~v<1OYeGaaj`ApJLWb1 z^6TWGIjx^cFh==gMe|GYlk$Pq2E!h+caO=oYB+|C3g2%qw6^uOU9|I!F=Fi`F>MXj z$v0G+iOyO{fRyxzJ!+q|$PR?MJ~HOPANv_jO#Z|a^%D~&L3dS!(jz6o-%of4i}R8Y z_8_g3>pnRWYB4$Bkb&>B7ude{ZTGs3T)S|=x(3~v53irrFfpM~3Njf-Dz_hGy!39X z=>-M(4W}Jkcx%wa_}E5`EeX#Ou4N$uo&qdh*u8*lv_QFO7!95+&NMM1xB>EtqF89x zr-C-<>xp0rlZgTwh)-LZs6m0MHQp|RRw}b>ty!Pj%#;7;4&TpuY}mPT13wJOkvF^j z+U1}26fc>L^OGijny@k{CP?!F1xR$L!fP3`Fzi&2KM@Seg#2m27A0g*`QwAS7|PN( zL>TZC_?D_7H>dktSho^9C*K0|@oWz^D1+ZzFaj5lDT75E3Ggi`J;~LM4kR(zP*H*6 zhTw!^A#$S3TIlPGcL$l>P2^FDz&8KP0D8aGY%${xi(-_A&1&4^DRa8=!k$wPc5PG4 zwo3^Cy`hEqCS^Mdydh7${}B%pYMF1;#XS9cPHaHJDcv*;umnMWknTs2u+At{1?NEo zyN$*<2ul$VQ3gJXumC`)FjLZM`r&DUXPG^1HB9^VbjLtTvy*JzUEYR$`6-`#qv{5q zbOT0$Hs7#+13ayi1xX# zr{sf&7!57OnuJ_oNECFEnw3mN%qa>6j!#S#K`;QBs94Yl=)+5ZYy$4!=i~&qvg!kN z_pa?Dxz!!+{s{ofmzUYnY?8d&Hb|of#GYP-&2#t(sM3TF59QOaz|RZcaqb?CQ!o(+ zPLL#%#^NX-UW&wU&OW$+M5_k9uigW?*FfPzOpy6`5F!ySNSX*Mvj!pL4%j3}@9k*K zdVkJmuw5VVb=`O5S5@V!=?~;hwlG_eyy)IN+gyM>3a=n|`8BbQgC)dGE`M-2*O$_1hJ>WL}=^pk~Rn=u%F5m#aG*B*dvp7BCn52<4-X{;m zYPM67S@MJAXE9Hhv*uY zwcLIhpZgE~g*%h#1hRRIf!}2c|`JM7|7ICraA`ad-c3-Ue zf} zH1cNh*Hvp-<%5fcCfm0^m}Y2j{~8ZxS%xN{tF4&FyLeXsaZTuTpt1vRM)quq!j&ad z6BTnR*yclSbE42zoWo}<6Yr#QLUPHs{Ew=$C1Wr2sjBMprkry7FLs${?kahrnY;qk zgi6zzW9(Zo_L($x^+}8wJV|XQaH7M5y%p`y*|lcB)T}4D4l>|+U1tYArB>Tvh9jUv zdOOnDVKD%DN<mhXR4|2R0nmg^iWEwCG0poIcJC!DLI2*!r??zaA2m;b%;w02eUG^bzP!ihM#HX@KR?o?5)!*l#A@~TyK%X?79!*7JPM*=`#MlSFvA5zq zF=!|G0XrI|MT?9iiNPsBh)o^)nYXtjc?Wq1`uWf%0d1BW);`G6E<#{$#h=0#eV9Co z4f}@q@?XETeObkZmF(MB0vfed{`Ag=e;JzC4%yz=UNnELfDJGV60nf~X_8)7|1Dr6 zTDXjM4^VLZtORgLvf@FLB=!*SNia_aI`H)L4Dj@iHOIveZ)CbSLkO`0!zTX&7Nt-C za@FRo10rzYR)F_WMjJ$7OYmh!e2WR2fu{PzCJAy-hKg_laKNxINeZ)s#YBeVmJoBC zCD7tQTc(3KJ0KA}n%SWlmej6yL$7X1z7r_hcddNdZz@t(Ylzz3ynLKoK^90*ZotIpTR9{nHP@X&f*=nC1VAE+2nY`jM1Ow(31;G{ z?_PptG~o|ZXm$WtS*e6$%IvdOeOLKdpTMiO!*UM|F8NDai~}gl7nAaEKFNW69Vhs< z5g`CZwE)>eWvC?!Xh+5LQGOuPP(T>3xvo-?&jb<69vK#DPh<;)V;l;aVmZNgHz6@y z=(?L_Vl6?_P36+9WJT1JGV$K zvw}6dVao+Kxcsoz6QjeppTZg=-L;<-MmrLs*Wk8Hp-Lpv66Fi^e~i%oSdgd_#!z!; zY@)fbA4!LZ^|!<(LIe|aAD}E$@Lim2)X7!+yuX=WzR9|*TKeo)hZ(QpmyeZ|9g&}5 zwsZ2x#y8h3c|YG4CTDG5vS_2WXVz4x?*Wzs_ql-0R-khNNXzePrRRECW z89L8t^afo!!XOJI6LR~Qj6`n+6I8c$wKJxKLcSdIMs?VzzNEjOsQTxiH@n6esx+%k zZQ$TK1*ZGRiZArd2M$2rTxL6<(cR3q7MbO-wsl?$-<>PyE_|QOp>>}2=_b%!-e=n? z_J5lXx+}Xmo$x-Z<~xLE-9xUg3IJ091p&O)ALY9 z1&76A$!tnVghPU8_d)njL)K7VEO5CX0uoB|AkvciNtPy=q?;2)O3LtQ62ZtKluan; zu%MuxGY%PkK6~V~QJ?ddj*&7Q>T`yA1~aG6ST*lo#U-E5yHpV24p615Q_lSB26pY5KI>b=*cM01C_9`0G< z3}gB{Ql(I!A|k61-QiBfK>o*D`ez{owSHn81jWek5M&(i_Ci*7RYLM?sxL}5hr~Fl z?nv5H`@+;IfD+QFOy@$%TgUnB!@m5+QQwTFzK59Qv<;663B zHA<13dv?YA_Z9`dz?yvM$yz?0-8w6PeaM=;@FIWv@~+)qP2Ibu__H}m*R^*RO}j;S zDF9uQelrZ1fdvI8YuMx%I4N}FbT*M?S4@zIB8VcUUPL(6o$y4h6e)~_kvJkOC_3Au zyn1#8Ee4^Hw0!FV|EWZ6=>wjr0nOOf^DJraUVe>*Rp)EKFAjW>HMPTfbGDsv$_F%< z_4DQ&s;yw?B-UmIcI$~4gRj)`gbzedvawUhuU6ikgk7-#K&FVu3c?x{8Ux`sVsGz% z5(o8Ip*;ZYl2Z-De=AOW>1t4uIr$kOPo{PxG)9q!WpL5|_-11rfC z!)hvwJ&9+q&435IL?#CSEgx}9V=B%T=_Kz25@tJFW21q)uuv3u?FcLb-^y5G@d6&i z@5RTZHi%1)Ml-9fUGV9~&g336SIx zrDaH@?(gfR!V(G0lLaM|#2BG^gIg1saG?Sb7C2Z~D3$?^s?O`s@;mLku+mW_PvIFw zeXzj^m6U{rxKD^->?`}t7SWLWS`!ieX{;|w3EbS1!w18YEHnj#nvLKmNsGv%Je zpU<6tt8~G>VWI8!Z``}TSH$Rp_nCLY?hA*kJG5{0;KlvYy+YS9!@dJdT|0J1FV@ZW zf$amug^ly-{a-;UoGlb?tBJ?|`R>J>z_iOZzg`+S%?hu2rmDYlps= z8SU^x3(ZJ5XhKd&eSD9&?ilAIt~80vheBEyZwFe zm8R?9NtC~?8+c`iluD8_W!?`)rUW4fz)=L5kw|hu*9;_R)UD`Eg%v#=o^_#;sIL+o z6`C5Bif4qR#JR)dAAk&P6iiDl2H5h2qXA62BvyhkITJomng?WGeD1Bq3tpeJZ2F4h z)2j5PBE9MA)MIXtU72^#B9vLd2lZa$JvsK4+{fIpGb zFWAiP@a|6kW!??dMK-A8T>PUqaFkROxt3dlzej-AAu9syjY#MtL?%)|rvW`AGU-kR zQAkW?wL~UHC4x11nv955i*VC;69ra-Z8!C^h%E-p8ZrT43(f|FC?U?ueb#<4=l8ct z*2(oYy}EZ}!RGyM&G~#?=?gEEmhO2WbmpBMcbV*C89R)*?`VNKm|Rlnh&Y`F z_2aGeB13~Qra%^`M?TaV6DlsEM5BGDuy3iDr1W&xF;zYIjr~%%U|Lbh%snMfubTes zqWt^?wFks+@M?aKzb2<7(1^ahJgsshjSuTupBH!^(3mLy%lFEc_IW~HVMUFDn1Is- ze$qTaJP>0N#x{`;Mk6#aCS-jKGW+^?A$1eYlOEM?&qh*f;hFSscMzMY9{dR~PoZb8 z#~ckAH)HPlqG^SNn4sszPYpSk@b;1OKgaax(Qjyc{=0#DRwWG_lAE19zN}ZP?A-oc z8ZIe4yg6-1w~)|2BN`4Z=_cl5H0C4RIUnBerNDe>)*)IY_W7_cl3MeDBZXr=7=?3qOP~xblEjG>(y#(=LBYqXPKa92n*S{ua`%PDjXy5ZJg;a(#$1hR1LUG6f=`B}&dj z)M{4j&Bz%+x5P`Ti4qT*5Tyk@4)n!H05BBH6mzDpG9>Ve$VwpH1Z*K=B@>Q^kL=h# z3qEnpGSX5K<1IKlga(^^CFFh5lR_pWnjF&zD<6r0I-1}mY{!>A;~|+s_@Ih>auq9!X^U}S{Aq9FDw3hRnF`uj;u>xvzmW(p;`T_r$_EN zyJ$~Vj@4k;v5Z@1Zl2v?@s#`puL&4wzor^U0aE8$HK&3d60`^*fOxDZ>00SG#?YkK zor3HP*!7F{+EehNVWhCuvwGN-*sMpTR`%wD6IA6$-s-5z^kAdfA2Gc&R{|cvlNaL2 z#FOF4=4hw6)!G-b-F3DvV(aQ`Uo3rJXZsTAojThKAJKoQYkwi^QFr`IYcy6!_8bNqDj2(|(_z7X3cZwUATAea0V0 zyWrE&uH6Ue6<5jM^ILVE;oq=bhQi~MBr&@Og1*Nzt1XFzqa0vVWLR`~bVyKuKWdgi z>#R#+GV-E}95?<*g$^U7MTW9hW=;G9EdKuToUPx?o%_vJ@skJ38`;5a+YYi$_}Ip< zgQ1nI!>!i0Scl3=ehPo^Q&B!wEiB*jUoCMi2g+5TK|P)-p88Gd#HU;jP{&2Yqgs^7T3%W&)@q{`;r>y zLGWJcpDEUmfYYPUrGK5% zMcdmwR@OAfi?MG*C*Te`wMYXsb%X_Q_wdPo|Q+(u-_%a6^H+a3SfvjnI3Ou~3-puwUxOM{U1Ml~OY- zFay;~cXvYpNY^b>93+}$8n9(Tm=Rm1UG^psFi2_Jq~){U^8ZXbKBPy5D= z(cNFRZMgl{i)UZlHGsCySDGb#c)DP7S0B&Er{)fw{fxIyd9j=KtcBy|Y+t!xcA?lr zp@6OVOFfKr7(&rlSf560^ANC^aO1&pB#>oFkRsM2DQQKbG8mO4vb5UQB^gSr0M{ic zklJA096q%2gu38$t$c298&ndOuT-~CUN0}V<#s_m;WDEq_!RA%Bx43(0%1op>)8}> zY{Z;qLh0@}Yg4f@99x3|DNjcr>;bqZAR*4AowIeO1)hbOt|JZp?9a=}KA%0~qZQ*F zWer-d7{3W6r*o9|k1%=V3eJxn;rEO6vIcqQ^QXK#@z$A_egGW$K0Z&Z$s=eWy^f}D z67ajUFJdRPwWN&;YXJRWXCGhFw|X$_?C`a$9<1BhA!n({7`uh!EVCcZq7FGr7mbCA z&qdAxkvEG^aFw&j=p)7+VsdIa(=|#N*tPZWjduzP?rhxoN7|vVl8K@;Ti%E@NBCDe zTC`gH*TEN=p?Ftm<35w9E?ec;vW2^J9j5vb=)w%h5M77}P=G`JFhYLP68+#j9N#M6@|R!yPeai`%xBl3(XdjOk1`Puv7AOn92XlWcP%>_h3wJ?;h0Yg!+kiP4uI9P5gA+PkWCZ6MvsU5oUib(U0D~kU@V_NBbhS zq|Wxm(!c6#Um~5Wv%T;U{g=A-r@cgnr-(h~e2z=|GSmKY`_`|{IO_A^K;1gry(w)av-hYAr z%HIyue*4LrEoX^qnJM-t? zDL;BNucU3eV*W+#!i{V+FE8QMqIe^pZg{r33X3qWYFc%b@(gi{DmpWYd{ln+el0ZMe`B2-BmcG7!EGL4J^fDVSbX zkNvxIUen7@&*(BcZ~Vj;M?5=qPWKs4Tu#sH^6!%i*TlxIBc>#k{c@y9n`2)WA9(4& zuHS#(gWe!QVD>{F{+Gd>Uw2z%JxboaN}uC~N0_t)1jft$m^VoLEy2w=a^h zNjje6?7x`3RA>7VyRCw7CiX1t`Gt?@ztpwAkT13VMUea zVuI)McCWJmtlyiw{oE+ulKJ%;HA+Zml+4@C&5zG%U{hw=ddP>X7ysRSaQO6j?7eQo z6D`Rp(ecB88_l+Wh$%=Q4M|fUglbX3TblCqLzgXKOE;39K1S5b($eoGNnNb5_L?z} zOoSa?vY=*+?!_byx6PoGYMKs%jE`*6swWA>s>9SEY{l}(;=4_acS|5aIC}0 zCORTaugc(KF_{q82q!jzSyNa$V+NY)Zhw}o?5&eGrjKZupZ(e)9EOx?(JswUATXDkG6es%X+nM+m&Dx{;EnZz-SQh1eggC&x+Dpj0s?H zf#O+B_IOsMmyILa=bq~JxXFIMVIn*T+iAI(z!E@7dAMH-e8i(_*aP`^xmo_&)x^Oa5P zWOaK)Ftnua&~W~IjN3Fkw}f!`IA9STpYRJtG%E?Q$czg!@@U~~8kcyWfO1kw(R^Td{ytt-pC^Qm>kdJ*=O{z zeP+AF{>82I0S;Rtwqq4wNl>AlAzxv`K>TJ>PR(!1Ms*y{w_UP2C1|u-w?`pq^@T?v zDzlM{UTp>}?bK^!?-6s% zZh~lW?Ux`}oH{h?0jNC%nT2N_@y`(zhJwR~(L%he< z$~?CEHh+e_cAJ-NhPQbnyKVd0cAj11DfA9rt#-sagy$g4ydWb#Us>&dOT;Qi%i!R# zBFsy~<)9yU2?)t3B9Aoc(d=HNF@YiiRwU%-%wsFQ;UgEm`t0ySlhX4_2JRgDmG)}x z?LXtpw7k=^0@p@un$UY;CqNmCcH9l1FiJ!0NKzCnrUG_xZK+X+3At9=--|UC$i8=- zkV@s9Qr9U_XbaZfsh}JV&d`Zjao~XB{0!a)KJ>rFlLRKU?3`c^mNWClihLCRpIG+cN7Z zP&o7?lE`l^EZZXOBQT5C&@QEwnyXJ5WIZ$hS}Pb+siFYH02b>g2}Up0eD;ym?~gWd z$Q|9Y0|2O$&6VqTZ+8?qXq+K$ARq{$`+v?^i~)jQ(z^dd;7r3s8~JxTF4SPaSv!|N ztle)HeOz}nZRBcjrR|p!lpszyEp|0LAM{E(4$KjqakO({2xKAGb7G8kG}O+CiQ1u2 zlh=~yoEZ10b0R`m>OLo$?Z-oAKQP+Qi6=B2(uus%4joEay!hp)_{v7{O~w3yeoT}t zO3u7Xc@tlqspM4eocZd+yi4;i1k7Pe-dXuKa1%*&D}n?3yeUr=>3K1g3LgJ`%jZmrT72ErKYi>!m_4{dVu@`E5 zO!*3M>wHX~^L>Cn!Lzg8p6{Rq%sJw>wDxxJ5!KfPa!!(L{ph$KjQEjpKO*_0rlA6n zinyP4uYOaxa%{(fCn_tSn9p*qTp`@gn;u}6n<3fV0zYA6CfZy_a3Y0+20!F!f*(s0 z@W`TF#QhZTw>1fgzpd*d(Z}!~-0O^YiTxkqUA9&-@&Eo_Y>n-Sij~typs3-@xJNGQ^u=$jCYhgjPvFBbC1M@3T&!bAn_gaCfnEWz=6HKdi4fEg-scij(u2jn@!^n@ zi+N%tiyvN4FkHU!=H`*Rha#Qho4jCb&%V#%m3SxZ0pOF8H@HZhF*af{>@hYzK5&i- z_JI=#Zt#wGjj^%A;0Ut8hVU>9v?ojwU?}hK0U8+E92k%b5OYHY3zK|IA-cQMhs@rJ9kWdtmwnagcV#vkvhDaEQ5d}sD!W)V7-~bW-D5fMpR7-*K zHAp)o!20eC2ns|b@eqEX4tS};Oli$SFgswQ_%#hSJ6M>ZnC$;ouubJF{{b8D2`S8I zBYdiVKp|l=c*>-#7xZPMTuKz1gVhH%gUAqjXb$GtH8e+p3Ogvk8J6QwD=dd58~C%B z9dX%PD`me*7I*U6wUa!__OtvNiyQsyv!nSNg|a%VdHvNXTgvexnCqCBd^o^IVRv zqa(%RXaP9NP;AfCIjg>-ABlW;s!Y)p*uehL7rx97Me9(oj)>MFanM5HM@}bjgzLmV zs1(_w%E|g|P{)u{l;nkIkXb9Nmph`QSMJ4^=H>K~%Mn zojZ=Qh4WTZ*+lk=C|YQ{$(D+ug(Uw}i9BwRq%$ykV9yk8edOK;2O@~Dl5r$RNJI$% zr{Z`G!i$t5fG__zi;%Y*4p1iSCSVTGXaj#5H-qw}XiMRYHyc#SCvDuabo_*4x%q12^KaKOA71C?#C(CRd{F+ z;zs>^V6}3tD@}Lq@ZdB7M-C4$yC|gF(TcbFv#)uCM|RQh=hlWDO#RCt4hdu0g=IT) zwhW#!u<`nRz?INt8O?w*MQToQM)77@F*QhtMgj$Zs=_r+MVyfXR1%oM11Qc&0GrVS zrJ!Swmdl4MS){TSM`&o!N!O16BVi;)fRS+8)aTS0V1%j*M$&jW+-OhpyZmy&HyiUx z+I{#|=3~7^jXsq>DKOp1#@1RH0hPu%dd4%*(gf9VhZBFW)yR3?<;!zdbPHYh{Z{3|uA!6Ul22#0Saf}Jrx#!D+q=>H z=jEMijt?lsem0lSQ0J&fM@#WLd?lnaiJj&vg>**r-V8EK5%B6mXG)k_gf}U)E!Z=_ zOG$=y9A7Q*W|0yAvT-`4Zy{e~WQl#Bk9wV@d3_sSJib%=?os?@h-@q5it)p@Wmm5T zE){8NO@eyZco2wbj654%vpT~fFQ-RBKiQ;F6wrGLJFWzA@M@lfOLz3 z6BUBf55lQWlmWmalcc1m0CSYTC<=lU05GQ@ILAzQC6fyd_4VWsE1JzAqHZASA!^1p z81WOe+yKFH?~iR>7d>|8wWxe^${X`$6keIGp7AVuuEi52i+ewJqkKU{_rh*$#?<9K zrhodX?-xh%^1bA6b9&XfDaW4mzI@4j{GoBfrh0OdpI`IAYsO4@dAi4|>{*{x`g#8d1e&FsM8WI@b=j-Lpydam6klzOfI(t<|lspMn zJVTIsK{p*@JQyBq@rf7(k%=it(G!))(Mw)`_Sx5$OfUH~`A~5Fz`?VE4<>)MZhGIz znVFOKn>YMt+m63Bm=Esv+P<`L_E@j#*SscnZ@heu*Iw2|$?%_fc=)h`+L^l^VC)DO z!zeNhpa3jn?tr^Dlv!gy?%1!1`=RWX$a-in^c5OJQvHMoZVbgr09DuuAo4&C4~v#7 z3``kWiW2dI{luP8S*xpjHRtCQ)|#I^$Iq~~3O~mrz6SBFPsp#?f{To$Mab2XRa9y$ zk||sqbTARHO+g$*eQD-NxHM3;;Z8@)@Z(8BhGN7_Plh2DtJ6(pBCwU@fx^G%J8oH@XjtNKAdI;gTiVxa+}>L^1{T~kyYRz5;%wj-w}dd4wxViMI2F-tk9YNKsY#QX>eoc3i`+>Y2&=fzDZEOta{jS z;beql94=j*4}$pQ2hd`r*m$csAj4{Q*Rm(0gaKJHb=PP(?xed0E(8V1+pkn?j?Rqo z@oVeVBKyRN<13O!Mm6xQAAUrAyu3Pm|8ax+PNO=sk8-#C*<&yJdhSq-XT=!{niu#! zv;$q%Ba2N`Bt`QH-wQA*AEtx^gKv*DNoZM6 ze2{@Yl<+SdsV50;v#DujQ+&+qPu7UPPoKOK<1eh|zaLK>XT5=ch_fy_RrGw($s*eo zHu%%Cclosv2nCCBPvt(Jdoq`GqxVTz$Oc;HWQl2$^$fBM7(D@>Ng9pK0&#~}N~2L8 z$ZZHV4Utd^b*Y&!#kiDggfbj)HAuPYMMg1D7d9{Qh0?0j;ru1UE63SEX~mDS_WX3! zzwuA@uJ~m9_)oY8>#}+My3PEk+<#dGzrpHPEUS>O&b&Np*4z0NTW02O)95P$xcv<4 zDn;s@)gzvHxF;|-4`1+Rn41-~Go&9ktRgHLsKdzFL5JUcC}MU+7I3li4Hl`sQlymR zq_|jfpxHm3etJ`}J(C4;M2N-Y+~BOSl48wF2cOQwFMkO+!?lHEQqx-7UdCST(TaCX z{uoLCr4^0hZNHaXG;hd|Lw#}& z9Fnska)W+`0oFGGs|nf?cyGZ^4TmF;wK&TS!C}(?su8<{o0~m7sjmK`YUU*75WB_i zrs|tK8z8+nY zlcS;}DY;>C!?cw8NeOY3yC>Fyhek$(5qXH+B9K_BD^-U;ngC^+@Qa-L%?#3Iq9uq@ zYh+rGhQMkG`eZHsv2#~`Oy0dpmRIdc{_#qUgi-^t?N#QUzck8rQ?^DG>fr7dyoJVWY$4mC`=p(e^;3ydxjT$8-A*e7jBePL@ zqx962qy|Y1lItfX#K&PGV(>at#T1+rX%h70TcqiUq9q$-#S~Z+E5ts0u-##7S}uH% z51&~Qt%meWizOsIlUYO3PsNXQiu10*4{uU%#! z1d7i;i zgd%9XJ7_Efr|LM8y<;#)*z=I^Lh|5)3MB-A5`s{qkBBA!EahWa`TzKfn1E3;MF{ zrV*uYuC}dOez|1gt~PUIuhx7PtTYj=8#QbjD$Ac2%Oh-CimOWbWVV_#-6fOJ-Dq+zz!eBJtiThC!^7b2fmAeL=rS0(7lt8< z0b{oUYbU{Qu+k+o1gjw_F(Ec4Dl()|Xd`oAtbe?pH|h&Ai^Jh0-AJMVZBvk3W8uT4 z8Ic8tf-ox%zv>R#Q;m`q&6&RbZN_V^efUSaGBw@yU9aJde6O$pukX6@Rp!xC4O;K=R_3aI99s1)V{p&ryOJZ zl0N*6y?ghTwpc$Qcl#4Oqj6!E4kY|i{7Hgg2F{F;pxXMf;R~$|h1d<^_MWGy-VwNGoC())87#I|85=sAE5D|G9Ppb3Z(z_}`nuUQ0f;On$7iMyi-G<Z#`BC}jBzFW9-1QdabQ-z zlw_v38z0AR>i$?JB$9d&VGum%5Uf!%g5xkIB!DtOG=K;RnM=etYNR~OKFCH5@yJwj zW}v?{AS2L|wj~8KM2BD2guJ840TKEdlQlCT(PRn`?wrUL5|Wu|3PwH)tPt`~WDHZA zpkC|Ue|AunS4KR4$<2M(0i;?&%A4{yYew#4UE6fZ9XPj?666F0HyM`MwQXBlPxkcU ztFyZxqvhdey0YG_j4S!~PhXhRA~)f|=j~UHL`ocG-%A1UzaTU;m$mtrvdOSr>T%!L z+xNGsUdnR*;OyEjl`{{{qy?xw5;5F}p0`0S}A;;w~{l-E5XIU9@KR9FM zy)9u?QSU5T{B~4T*yekyW=uUfcI?SdFPmRs9scz%*6~#{Q~5e^6=Zoe0HI1r?ih-UU8){VZYc;1CzrDVnsCr@ z0q!wM{h?M=>_=Ek&QKiCP)jr-D;3@0?_zRx2W8-JL4Gp&4cOc4{Sm+t9})}gc8JxD zh(eRHp*g^yLx>_=@*!#0Kn6(W4Sxus1UI-p>75ooU|wr^?uDqT$OF|Is`z!JM@p{R zP<rDKI-8=T})VF<`r=Ey! z9^X8@afAAl>j~jX1}Tokne~#!TF5`NRAhr8T~@R77^Fm_&^gUrmAX<3#@MNZrw%zEd`r5W!IL1)J~SnS*;pmuW41;@+k~6YxT_U_OChoMDhmp zkJ(>raEWVq&?aTzbJc9j0MN?TnuW$zFa@Ma$2G%{cM2?BQe0>dSb&TuFY(=E|BfIpQVv<5`+*85 zkCerQq!_O5$nHg9Pb(9JC{(IRZP5 zHwRk%1L6X$q&Z?Hp)d;85?G3f0O=}Zzrmy+O9wng^hFmEpf2l@Fep8ze9+0(!yD$! zK6T+Jo9H#Rd)DOkm6cxRUNhQtnvp!tAYBX!?|Xc?ElK{o&#>e*Q*Eu-P;OCH=k#c| zXn<{mnscVnpeM32aB{~#kxSZe9XehwX!r88D$R)qaDfhq)T}u780KM_NysKmrGbc@ zjp#$&@$83sLp|i}?H%SFipWm0)jx*RLje$qF+`XOAX|_?L7FoB z^0QRRt=Z^v-3ReG=UDzZws=7I^Sm7Pv&}q@6%QL+-Cq99c6`uK`6rv1BM^g08?k7c zV;o^pOjcBozZ;zY=s2$^{c%Xc%z{TCm`$YSwpbGrzf`*PN)uNfqf*7D01Uj48B53c0bFJXw{y!@@3c3v(( zgGm{!R^hh>&*PBQQb|5ZutrC!%#=#`8Ntju<9x?pM;i-{50ml`lBhM&Oq`bcs$G)n z`^Scw&58c8ejY?7Rx{{bH7?L3gcQO4LDr0fMCF6+af$KP9bIz9 zzP(oVe=zZ5!zuUZEXHl$=bV%_U!TP&wO`XXAPdd zdPr3deb|z}{!Q6C$m?1I4^6cf#*rW`i@=WJ`Ap44{+#Z|@tm*}7@#v~tG)?d84hll zgp+GJX$QdJJT!gE5+B&<429s?zTUE@2lE^YS(FrD9;UGvIxx_mFd)2%j8ga1RIHQq z)O4r_G+7)+(|VCqmMxl2qJBo&v0=2qfOSVg{kPQ$k5xT}0y)FP$s1H9#BsR?AI7%M zD1U2M>q#x!t{6P}<`GZh;kBJt@}uPm3MM+H^CZ3iul)khOi~l%a)$Ba+*`S4$!5c;cK$ zUVEAnjgi%cI4>l3D&g#nBX)qLKLTj^%&6^AnAWNt>`X zx?)^Wq$8qp2k0HzLa5~ma9v1SnksY%1a=k68m&+oCRzQHsMHur@QBJXwEbG0iJOq| z4vO7P?5Ca+oA1bEmV>Pn}u*!ip)A3NuG_n09PL-pO(Ej>LL}ys~Q6g-L{G z305lg1m@HOwp~OPBYQL^m1Jo+`!Y()4^aSiHW<=CdeDM-!X3)f*V6|#cwm+IyJ0c{ znu249bFMiPlO8lfUir=C%O{x^yy+WmR^6)A3jP6WSfTh-b1%#?@-?b$@Xk1?Lsr`` z*uapT2B&Z`HPGt{BqWiA5tsyUT?HzTNR}r(We}aU&A!4-9TJ{fZ4_#264?(Ep+T`I zsAXVxo{)PjdVh}LwEM2S0js+8D#>ZHI^|eD#m`op?v}PPd)f8b3%(2-eSGqW1-;hg zIK<_5GJFZdH`K{=|k32*K`Fyh%O zGZKrkP-Vt+CJMcF#X*ni{8y&Fs}RJE{nd|uo*3D zKRYvL#{^%u$TQO?A0G`$o_;3M&3D3%oSA3Gzp!R{&-op;&6&PNKEL9*yu!k~=Te6f3ar8ouvwEvz7n+E}zDG%I61f?AvGk;QnQUKoj6tqPCvCcLqR3hZywmFmEKw zCCN(G=T39r(Rb0HK*S$J1VupkSLZIu7$!$XQ~`F=j6@b(YbUk+hrQEf;;v(?_wJ)@ zct)3h?5J$Kvb`hirhoHYw7K3dug>iNIN^)|MvPpr*yDwN7VWBN1?EM?hCaeu1gsZ* zJta@X@RPyS0&x}^VOVjXN_-{Zz+~gJm*aP-Z=|()e(rFju&3wJenroXrYwm_BxW!Z zNB<|At<9+%Y!<;MP+jN~3le^a%?ioK+Eiad!Z!?Rl39hfR=U6HSvh~%OPzKvoyBI_ z<}0&#yG>utT>MR7&e6Gf)0P)?E9zCoPI*(~@&qNzu25E( zAoxQD&^IAj7F<>HlF;3eEZBv}nHF{;s4MJS(G0o!%eHgukIJ{-uGF?6KQHzU&k%bN z-lxe{slZR56hrweJW#WnXak-yG9sx+tPxrLhw2V8!AQFi86Ff99OHvT1(GAg zU+LUvw56=+2IOALug@AZgLS{cyT|o!QuJ2d?2nce?A~3l;Dz0RU}WQdILdyptq6;H z?#hbgAJ5r!ylCZ%hnKCWB%A<7@U&F$AqR})r2!r-16XV_?rK1CUwN7Ua>b1~yN)d*AXk#XNS0QE z&UOOE{~u-4jraM_EC4bp;_&Y8K5}IDuA@i)v7+{{$5|w@ZnxmC^IMQo-vAAL1$@o2 zuO+*TD&`VuLP^ObHwMRALcJrcf-a8GkX3Pp4*H6%5%TIi)^)qOkmS|-?{0^Dcn;5< zj4>JwPm6rX8!+Z#@x5gjon>d@`boUkXm|$6lWL@6xSlV*w`xM)%kaHi^luYI-(f|^ z{zCoR_M-0_alK4jZ&%OR{~oTlht*ec!SVkkUgnB%otGVDy>=gI{b*hWtP?N8Bsh7Q z9si~-a8G#5p7#>V<=R}(be_U?AV zkDa%P{Mq>K#D8aj|0>|~If38o*3=)G1$?LZ>mt5S;N`4TdY_pLZ`ZtYpKJbm_qpc3 zhyKMizpAmhs zX7~mkIfqVExkb6_cn86763 z_-+y3x59mhNj>!I7ODS9q~RpoYe~ezu}DcD1)+uXv%&$HRN*-)&dV{NE(G{cCRLYC zq%N0+Qt$5lv)rT1L6&$?hnK?1!THJZ3VDv)k%AH^BQ7-HIHXYNV)@AR!#ze@Vn_8j ze0~0quJh(~9WtNaJ9Fjs#4*N`#!(aRUO7|7rp@QK`ppju3}4Wf-=066cpd6t0RDF| zo){_jq`Mp0C3N^B2t-&U;LZWckqjfTpv4g}hn%Y{1UR;J5SYCeVDFDd8itDQ7=aJI z#Yi#!LFOnyY5{ONYl=J)nQ(H%?*wa8%GU(n(exmwiQsOQSCG?n?%b|91=kPdOgGKW zJ;d*=pFW>O_FWJj7(TBbt2b|2*_kVMr;TKlY}EAISI*Sbuvo|ZY|GN;hjB4KJN^*! zSJMvjw*vk#&&Q*BI8jB8AO@OCT(gL4Tm2rs)W3i6+ zZOf|TKEOt>?D*rMYpjc0U%4s2hbWEXv~EaOhqiUfP33XWD7B5(pdSzD0sDC=MV+J$ z16_V^rg2u``$X~mhY#rcd8rMq=i~a1ztsNzllXp(MW}<6DY*XguXO#Il%@`XKGJCT zMSQQ6MyNBfPK<_MMgNQJ7i8;u9^Ze{zDs#{em#8uUH{%*ouIbE_dmpU?fpaX{XgRS zM(Lnhrrg5!KgIVlR;+GNyzu=m`p%5Rn2@AZ~ul@9oYu6a+l&HbD@8_Cd zwP(sl^!HuEGY7#~Ycl*|zlNen+A}Me3Anm~Yro=|wc)%duTv)|S-AGwKd-R>;P4e( z`~9ESr0;;wf8*L8_G^m$ednc{xbH7q`wy;_Y2z!?VA;sJs%7dDT>I00pJNPVatd(1 z7uWv6wJjPxw`ljhA=Rj3)emv#@PfeyF_ozAU^09OZ=O`xcuVxc2=T#guu9hpkyY7( zz!yqxYp&G>f1}Q@Sx^-PtMjxbPU9k#|6np{N?KZfoZN^LI?irOB(K@cn)>dW-4vC%{Jzh*GcdrIb>IK{`Tu^|#hJO!J?A{9J?A-3o&Vh8DVv(d zOm45+`C{3&idl!o7AngV*5w|2J-%bvgz<>6)gC^sF=N4cNy_p}$d4IcJ+m+!rz7a= zG}yfk!M?J_i{Lk7Sk>ZYTqV-=LX8)Jn=vy&q$#nV?l*reUfPY&M->m>qKzO5M{zDb zioGF0UW7O#;L+8@nOr_3f*0jlRonyxM+ezek`tK2fPe7F83P4jC_t6r|JuQe5fbdBGujvIEB z4T@|no85ZP@)hT6W`0_5fF%W{>P+eXe=K=J^hK zj`^-rTBP5}b9sN~=A4hfW(udyQl{-T^d6Uw6jK$bOy=YM8`9*7atE$tySrP8Z=pLxP8( z(ZCSnAXt7QEHkzWk9?yloqMbe42rJD+Boce*5K(~o{U~% z({$2U-nW7Rc1%31yzlOox^8B{+_;f*N?Xs@)IYg!_1meVi$~8;iZB2)2(2*_R z-#4+jm^8DyDQ!M@y}jp2i)X?nS-?WJCWCca>v z#)i7PrL5-W9MuJjR~KC_uB+s&sA_IW|Lb`u_hl+5!BQeFvPtqH5&gI>kykzCM`&NrnjR(Wds@0BX$=a1QIm7GjohYw{s2i_wEpo{12(d5}w~Zt9xGBq??0S7dll!;Wo~*LAk# zI*RMY?YsHIK0?V_7q_eiE#%%T#C59r!!5<+$iKAY{J^s>JKmK$VDtus5#ctBp&KrRL8+SL+sE+$+Awt4A$c zf$I;z_5bDj*AM^O`xlMR$G|`E{{#20*8lYWg?U`6H0n&6!$O)+$o8l{(H^19AbTMj zeJb3T#z3ts=fXOr9|#jcG`%3!hYmKcS6E^jM`40t99~_T(OV` z*At3bw*~328Evni1GNaRtF8v`*!ECV5%U{WXhnw# z0X~+ZUMrHHWjEfY#JevBM~Mn+VLgNd_|FtHE}aS4S?Pu23P&f#L=TA~W8i+i9&T`o zPh)A$(9<#a!n(oFIa(%va59*KMWv030L-Be)a@ilP?hVjt(Vobe4yg6u!Hgd@&|BC zT#F=oDrrjShioV7_b!XSQtzFyp&@2zjf1}5+I!brsG9qH^VF68hQsNm1>+~4>J%RR zn{x3{ww5&%?rRAcJZ#&^!`oJ@TV33c8of|yWS_I=pz+>!ZOxa;^}TaHyf8m7JJnQs z|9?HO_G)Wpc!_y_a^;u*TK4tD`Ohis|5P4S?imnf*lY~<6DOQ|;=<}l50q3Nn@+sr zC%AWS;&<{xz3=40RKVOh>~J60b-)&K*pWW4R=^xM?4dret$_W&VaNNxsNBaKcA^h# zY3C%JNxK3*tS3QBzfkXPU*Hagy%Y@2`g`!-WG}r`UC)s&aNBl*G7}^h$;Qd<#uWzc zP;-)vyQU(~%^BxY8Hr@V=?MXmjcIn@V%8TcOalb&G-20*nhfECjNJ4+ev}bzO-P0Y zvv_HgE`Hgnc_&c0DW!2{jwBtJIZkfeW;I@t21Oz1ALvJEs#K)N6kQ45rLVAUm#m;E0o~RRoO#`VOT+^)Vg;Xl$%d)JKb+Ahz5j>JIBl>NK`zw#&Keod> zN&AhtLVOs-dgDzGy7(X~-Wq6ML>G?t7usKMa{D}-$B<(UfE-Jr_=wbBft3*lMO-@* z=zzDDhu$bw8em=|{;|DXZBq~jLCJErWo4lQFI&q_6*J|_;&*r1u6+6SPVqZyS+uLa z`*!uhuhw=!cPwR*Qxe(*%$vYGq&8_gxJC3IJr_VS8trKQ`LhxJY*#MZMP!-o_q4~$J;O8R#vvH9PO`OP(aTM7VvpuF|1Q65KrFa zSW5-wzlkR;W6dTrC#gl+i`A;VfFX&7(Gp{m#eVQ-+N@lp`bA;8a7qr8ZV7r=d8&OS z6BRg~l4PoktB=8hqWJ@&X&GiW}=DM|`^ z{ez!=Qi7j6B^CeWoy(tzPndrY$$pkGUp7pdEHwaG+dB#j!?ck2pc>{YW|}Wb4QA>) z*3(wVd8Us7{Lp&*T-DnYZYhxMzQeMhTkEOMvMAZmZi}*?9TxsX@8NyKhvj;&P8vx3$Am)k zhx|At!N~pNRZAW?EV$9Fnt=;oO&brsOI_i3;eGKdj_(zY*A>DG_0&nvuo=9b-=34Y zm`lr~XGDMV-%t$rp_~-X>$}S9yGr+R^|`E$7d?;A@aGt}tJ3{exb}2cIV&8W1gG~j znfSED>yG`KasSe{2qkO17JNS9^?cL^A9^04;m^^|N4z~IY>{@dTHgP=U0YZrZ;yUI zN!lr31qHFksJ)CL`9yG4)sMQ=SSt!v1OAH(`}6#AKbtf!A^#-|$D z(D4KNN75v!WGuoWvvTg1uVBnkk2V|iK>y17_!$>iLt`o*=LA>FvB%^n zk(a|tL+L(x+oQrC*kcGg5W(yIM12dvF}dFM6D&tk!^)DnE~(D{@O>JiOBOvZ#)#M7 z|2Oo!N5vHOn3Mzh0&K->bzg|t-R(;?=+j&kE+Nx5?Hj4S3;rLqhdG)7O8>fSg7`n> zX)>Pfl6u0g7emTroW#|;W6?4$BeBw?3X=h|0cnW`agSjn$A=)|jf6xxR>kvt@kZn|&-eudAd%Bvz+@LRV1=j>)eMD~n&wx}%^gsDfN1^zZIYBxv>Xp#fSg{i;enSZ*9^zf-KUYBiN%0533+u?O zlzbQ{cQ#m38dQ}db@%1sLSUf5|H%F7U0~5DZt5sRwP)^Qc~8G*xbl?pw^P8qXT6Z* zA$1C`SI9=KJ?BZU*E>SzptAUI?h1WbmLr(4!Hk<^AW+DbT`2@Fa;2XBYmU{B=|YURX%8fnz=5m?`V z_5^3XAUA}Lw;sAEqcBxXJ{gFLVY3O&2k`+AAP2!%;G9VjSGr=&s18N&IkNwv3}pf_ zI@WLkBxNK=p)m3_CWTh~DDHy~n_3-PI^`FZG*_u&HzuE$+@ZWWmz`FOQ-*!t&Yar6 z{kC2CSNr#8LV2sjzRGO1`XC|kQR!4q=npfj+}BJ-4u&R zuK5W0Ue91VkFXue{3FUd)O`hd>{jTp@9usgw|10?ht8g*c|lp|yjMWy?TB@&CEgXA zF9KOe7&3-3*`OR&4mYrA{2w;0K{?E(E$sT)q#RGbkU8bIRclaZ+57SN`SJ02dGVG{@!;vx$MO>5^7G>o^2~<(__(~h zxOn2Mtb3sr=KymSXjTN6wU9QA?q)Q+ zOe*5>0pk0^J!$w*c%~qID%$W54eK#hSuX$Da^O)@J7}%ZnQmo`lTV&n(-W zo;rS5cx74Z?)0(g!^4WF5HIi;>@+6B3y*9#gkH80-vf4t!)V|4w3~Pr_7*GP?gASQ zz3LZ&My0h>!`CHBLW)^E3C_g<8|0Ste1ZW*pGl6P;Da) z;CM$LuHfF)DwzQLXPs=VASUe1u`w@FsoN{T8^4^|3gb8c}rD4)y&2dm5%Xq<# z2&fQfjRa*KS1)qCA9+adO$cTy1VL+x+0fs!p^ty;{Gl{VY&36TA1Z?^eG@lJThTXn zIwLJE=imc~%Wo#6xCVg?fS6orP8Kf>t5*ioU;q0xgWvPu||DTa83I64SMW+ZJ2%?}HvaE6wc zm(Zy6mMO08asZ!KN&c60OF zKTTfT!rX%M<6}bRD`)2U#V2?#V3qW;wGe$ifY;SR`1i4=pB8wo3jzLa4b=xP|$O_VllfXFPu zP73H@)g@tI)Sw>W;nJxi$~RY=o3AqOBS)AweN(gp38wpu=w_ZxoKJp0^Y zm-DV`O0rtA@c)uV*YnQv9-iI&y9S?Lg?WXK*%as1h(#@LG*s-Z&7L~GWkOc-_$fKH z`zspXpf%Nd?5a)Bx9K!Gy`~N0r_*TpxH-_cftk=dATBLzP0-i>c-$bAy{j>UV3@1x z)NC+T#f8;!>8{313~PL&dDbKIT+X{SPMXj(etgq}No!oryDUCGtND$_yB#yUTCtzT ztT}5!3ys;{iUvMra*y>!`>@Q*2;svsB;bqZ4?inC6IJ? zCM>&943XSPvV@SpqoT=X9V{}UjFOlMuKw8dKHfg?BSkI>Q{%DYO;ZoY98p@Q&MqI7 z(hwP)oR=fA^0`&h%ZDar;BJ+ld}5w-v8!A4%5FAS*(H}1MMY)~2-6#!3zL#27Z(i* zjq-_eHu$fZFj3vZm;+53=D-mY&`&5f6&Q37-D_bC!)-;rtOJe#LZDD@niYu9cMh%&2sz-vL}w}2&B;}# zb>TO@wTKS^<%a|O@DX)WaC9~}B50u~I+qE~&f-)-bQTLeJz-V=&8}yFXIDf#y-|NBO(C-aTv%b6>4c>a0i7v+CmdkwujSp31;pMr*>Z}MLB z%>mKP0)^=VvD6<|fS~ zgqPP=Pg~Y|pOoaLR;QBx*<|Ty_+($jqJ||A_6ZYpdM&~tV4vvph=QiT`vmdH{Qa=Xjqc7tETbG#3|@a*H3IsvLB~c ze8EAAwYUc?flDAa8b|7LVI>)jL$PWFK{V28fs;=jz}#Aq2|>exhxPaO_JqlJAPdwv zb0sM0TPfJPYR#f1hCombkX4w&P$y%N^pIP*utoQspLMvTd2V@W*(}e8hW~L6HtvtC%f{Q23lpI^SL zxoLT8bF;X9{%b2&zdmo?>#JA3KJURZP0eS|v^1Sj=b~J^!JKtI*rl#Qfhq;`f)O=H zBcw{*mgOXR?$`C)hM89dj}ZFVv-rl%%vPW@?V$n)6T(AdW5pYiF9Opqj|&ZnjSUHp zAzYX+RlFg7u7y{pQ2!Jrj~l!O@|lO&2pV%JhIt%l%Xe<%MfR<}Bv#_^Y8!Yptqd=e z0(E8b9Q6VOe_mJ}R8%|@f(Y2Ks)WFah=-TzB(H`s!l~4GWS_QQW6`}29w{9^zDE8) z@sNDmQnR<;XZ|1due^$C72gH8bPNDpbKy3eV4z`@(*}@wTeWc+Mt-#LAa28n(*Y?h zESm{e>FH0F9Qkz7qEC;o*EK^rI+p%<-P-qCx$7|Sd=mAO&dfz1>kS081i5U(0=Ib6 zqa}(Q79M1Y3S_-sXpxaFgx&KzdtI%%EkZ9AAe%--r(xGsrAtlLRi1)_pY2SZTeuyz{-sE%JsmK)bt6;m6O||s^%6I#AnAC zPb8eJOu08#)+8<}*mCmNo8Di!fXGtIjAp3tx~KH zQ%1+dL`8xz^>8u>VJysntSjQYeb8f~EEoiC%z-(N;1NSr_ML_ap$zG^0|G=W5%EHr zIQ{{G1N$V@0B{`ZTzD=mV7TXixG_&HS@`t4c~38FdU9-ZsQU;X(^C!iJ~w~!`qF(Jd2WYw&2m=-j2?3yWKW~ZbLjWD?k932onCY1!G zSUbny(@8$K1HnHc0t=!}Bls-VJq$93sSylSTV6<{$?{%9l2wT9xJX*61qG3cf&!Tk z6&W}(Xr!;VtFxM`M^D3s1w*$(ZC8RGOI$eec8rVjA#+1oN;E97$R8j!l^#iOop-o0 zcU`*s=m!?R@JnmswSD_PZdh>T^t2VpqnFoCYaOjkYLq%NQ#Za@AK-JMU&Li)>(5CS zm5_SuiRPgJ?-R-#3*QG&0q+vGxVk|mtr~@Kr}runb`3X1m8@J zVN}Zrsuy71=qNvGCzCgUE!5|ZB~5JmPJM3W_v=14E-A;_aSVn$W07RwHuW9Qy8 ze{l4luSxDouzcj!FmY}>-UaX4`L1SwyalIpI95Djp& zbm8%wi?f^mc%&jD^gfG>Jxvg~U6E#q7bOY?pHHi4ugO{D<-@j_hyD-e%v= zM1!a^-{f^>O3mV{kc|fjQN-VoCd(<<%@q|RsF=#%S$|siJ9?#yzbmli?+SbHcLfvy zDc6R-0~q|>zyVAc5H&E$&)3t##YqTY0Xl<~zXO3)**gnWp;(1o+#M*b%H74!+PHs7 zRc+>&mf!<{Cl}^#Dt}1Ve{pd34Dab7dFd0R=BlcxlN@x$fx7TP>HV@QhgX`E^6C-s z_h!VK3@);Ma9~&@?|Y-PREp9*hFjb~VUY=8;z0a(r*qB+ppyaMU$c1_LeN5~K=s?H zg}18!%{=&(P{0Mt?>oL$Ve%o#h`*obK(B!=PLwl(gpqo+&s@}q032P1k1c~JN|Wb! z8Xh^L^O!ZGa81#fCnr@@Oe(Ibl9pxGdcH(x+I_s;T%3rM!bGBbp>tNFZ@wk=;;C0( zJ~Cy0mHAg`PHA$X``-QsmDgCUt}-`oiqw31=Y!|QZ>}4hTNpkdIHQ8Krc5By1tCyc zC3MN~3`2eXd0<$TD;bp>z3G?K9#47ygEtHmnzw;ly{pg0P!QM?6j zB-22;HN62*V=$h*vZ_!dvy*GqtereG+cVNR(6jp3F=-Y1ensHydROf-Svxjrg<|Am zC~lP;F^1$PmuJfEhnQu!t8={v2s7N)B*f>Vokren{7lPL&om0LQzYaE2T?37^8O3x z?~8H8ln1gv2g_E9=iCOaDBWxuUjpPDq3!a5p!q+y>SVtM-OIBkPIWiVtU-FEqICte z^+tzBUfVsfvZ7>CMWwj4Xl&%bu*Br0gU6)YUyoIhKfKv|V99-~sb=ED8M6wDaL5ad z(ke;I*LfE1K;XnJL+*`b4Z=apCrCsAzvtu<#qjQaMrSqB&kF(obi={$Y78Wu!VO1F zU)OcPVS#5J?%z<}u;uK;jPX_SKa}m*{LiQ6u9yisi3JI!G#cA^81g~dFL4UG3Klec z$g)@>+LfP&Y0SYT2N8nkcG!Juw0&;pVrYQNT(65^bRdOJz3Mc*xWU{KgJ3_u>?;s=Ee*fWX{MmXBQ5QW0Y z(ZkKr+sQj9#7%49R`1C0Lt&g^jW#B5jc0c)>1Ui%8WGR&(tK}jS~zKCn)q24X6jt& zFjr1Op~(SBld)?t7%GAuXc_ZG+XB=Q7b~*Y@T2ZbQGfS@RhS@UB=*t6h&cmR7@<*N zbmm6ryc*9qGyR*&w=C%GFH*5ShA73~D?cj7mDE>Ih~vQmfrliFP#fnqV`!bP1V~fV zyRZ6FH5cP%u$T#28(0h4$2zV`Lo9X48=$)m77+i5xOylzKxI{l3z!`mPiR0S9K#Y> zeFO`^SZKyj|^HCq*l3*@_Vfqem(0Ex2)d3H_c4rb;9r=(_pmSa(FvWv^n> z)jYa-RPt}CvRU`y+y}-M+bnwvUG@P@=@m<&KrPbA?r8PBD^WzUZ@HqXgoI7#ioH-MV=V36>cB6P$ibC7OKOkEfOjZPU1Tz+M zaU6g#z~&}8Yas)L;DjV8Ps;c5q`a)e4xk_<_R_0s$RgLED=6JSk=V-Wxdocl_=v%y zj&lLaCf9rF&RAFhAW+a^VFR*_#s}G8w{_ox>Wr5y%@BK77IUM zanuSzo&fYzg zuus3oQvB#CEM86%>B?!8)Mhak)1Zh~Sza~5a32tzZ8_)N?p(^l9!M=km()HL5*wIv z-q#+8pQH8)kV7TzuI`B14|dQ%LAk*XYAqWbBwF>5#1{%L!kQbloSB$8zVhr**}p|v zwqhpC4Y$XSO^ag-%)1^)FQj>i1^o`g*g&sf8lc9o2O zU>nKsgVSu-K3JDMa!0uP`nqdrBSPb&wh-U_MGC>9M1P=+as2o~v1@>n^FWWvBjs*^ z$Rp!c{PeZ+vz`5%9Q~YU6ArhAEzC$;IPw-g$Bo6Oc~@u9w4p<%1;G~zIK|>6k4_k8sG654g7{RdtXE1zf);RH61HXryX@|?HOBG^C% zy9e_DfF(0*i@@6ldCh0bmEB?@Y}Z?)Ra4kX&DwfpqlU7<)WB=1Q2Q)Dqw>^KA3}VI zlilo|2Nm&Vtjj$N*GmgoLL{C4=nVVt!tdXD;)&nCd0|Rj-IOV_>ZF!yZ@hW!)8D;u zZOi60YqvbO=KcrJJ#Zo2xKW%u$k4o?+<^d!WM{bH*!5B)OnkkajLt^TNlWx>h?iB` zXgy6K8i8bllSyWS%^>CHp_7@zkkl!&df?QYsZ0#2U}pm#T(g+wWIEQ$Kfx#Igv4j8 zVF~Y+VIsMkWMP;>kWZ2Q^HKe^KN8<0?pwKc8DDEu|KCu*LCAXwE1c6k(q9-!sEz?3 zjU1n#$;7xrUWSLTJjal!QAYWCK-3478ANbr4|g7Cl<_#DYM9aZfvrio8~t`*dDRUL z-&By&ah12d5OgH~>!F`ejke)BYvDr&(3o5G5_EL{TL`kxBYNjj=s9vqR9^s{0Ii@9 zfnDGV6BaY->=zO25kUk4miZ*Q=W~FV-#E80H=q<)t4*vVYy9Ml@fGdQY~Axz_<{xd z*i+J~R_2_TH#Ba{n7Bn7*33q>jlz3$o6sa?N{Ru#gN3zEh4C=n>P!qn1TdtIk=uYX zmWoC|*aPqKDtA&CX_|sWV(Y*Q1en_7JsznJ|GN}b^UdIg|N8csTWvL};PG;n&)ZrsjTT@01O^hF!S)aV7c3hRC)_Gdq?6rK(XbcjtUiu4^ z=N`gxS2Z>)gyt9o7)_%C6oOj>{ScvwVXT5dz~V#7a7Y03@L>@8v;GtlmNYS{Nf6h4 zBj+cP5KSDP9(H;6CC%fS*%Jz<&7V>Ftx_beRKDKy*whnJ%YF5OqD}FmvhRIDvw7*q z;`+MWdy;`0TEluO5FhE#p za`b}NgPSXDTgxzncdb(ET)}8$3Ro)3DkUL5giZD-$*TGq`P zkyv0#D~Jnc4{g2{G;CW#D>)sgXUGWbK|g4|mOcemo+lY3F=Ygapb&eBb|03amWYDo zXdyXD7smdku&y^PwB1^w$9okfKYz%6g9i2s^AGbf;tp&~jE~FEN_4HaQ^Js1%-1onrTu?_G5eA`2K;Jl@BgY z%-FVI*^&Dvrlb^?jvfswAnI$gq`^FTU?y>|vcwt2ipI)OgAJ2qmLOHojf%(fm4qTs zBh80#fad^bM?@R;V6ZyodyUQ|V#=%pu*Y5RLe;@3aj~6elwaagRz6&@Z))C*8F{%g zXG+bfODo2{Q0maNEJQ<#!cNPn0PthHhg_3weBPB1+MPNhqh0G}_FYskhW z*CI-A#rs(Eprh&&)l!>IsUTt#%2)7ZO(kjKZ%z1Zob-tMCOhFn#4YHqDUhVNhg~@+#6p7?V4v&f*91ErK zpn-$jTu3Z$Gu=Gurz%n-Q~3tCbrhL&ncQS zx1eC|?Ba2gYceu$t8Ph|Wy)IQtaGVLORY^zoR*SS=c037m~EPsvNR(mX56@#m<(2L z8a_NVWyG+t>bhu>MrdCGpAvyR0I{;o9kn+WW^H+NVU6|n4y&JM8H(~udmZZ+C*A3V-aoNM= zC+@91KJD$(xeN8W+Ps2Uv!$j7>xPWnzC0;o+dW0AVPQ4#+~zm_n;n^CN-CU~oMPDv ztFRZI<9h+|^I&sHk`(L(xOG9@O&&WqJxSXQN+yD7fUf%vTft({EQK&F1Ps^}q^89s zRy{@8x#|P76;2}>fBY)i3b`|8UTgu8pnk%C zm=)fm{5)*mLE@3FqR;S;Rz9{9JS z{YYLODp@=8N8>Yss!Oi;^?9^X_{==3Va4@)b;5(F5_OTcPc###}qy2oqcXBwaRP6Ns5a6$KIM^CH z@EL$_^c6>zTBLgT>Lq_|IVckK79Mq)pc9f zZP>nJ{rU$vM!9JBGH;jUcF_OXk=ymeptr=X4+asEcLWmk5>LoB?>%*D@7_}n@5{;W z_gUEZzl0{_^3$(wI}v}*gtMVU(Zkh$#Cpk15h10M!kOo2TOwWN;A%As?l zD-jJL4~Kz4z*}4{M~>`JWOBLO(+@ekdR!U;x!j3eN0;+@u)Ekv)MG!lk1B=j%17d1 zo7*Qu6}rjBxry?a=KdSSbrG?vCZcj)FXVZ!K8S^UEZQ_&6}r(}acNs`VVasf&nih% zv*+DOl2*^$Vn^o;k2W1RvUut4z{;|EmN}0_Bu*MOJSJ}B{N?x8gcY?+Z8WSyYcnus zF9V0c0&=0Lg0#C9h+zboFfgE>pAQnbStJf54O5p=4|$SBD%LYbwweo%J-FHcvbGC#mN&=ODCRnm{aZ-m^dsZW5t-5A+g~hDb+EinemyE zT?~d<`P1*Gxu$-+g*ghKet1I`=BCQRAmfs?QX3cLF({XCRS^;F+9Dyt^=cXkPk2v! zVHIUWJ~V!>!e!HvE2+C5B-K*|V>&fe65G1?F~@et;-QI?`emk@jw>g`@W16Wq+M{B zS{vj$IN3irYSF8X>*_l-W9FsKxsUc{75=#dJp1J8qfYb|d)*;dU%Vw(pDOc`ysFr^ zx28|uFFC%we5E+d{NdW=%h$rQbi`>b;BRDJKB9cZkjc{K=KfT@{Q5v*11p06A#k*1=N}c1zE+Z1v*3 z@&P$x@aV$Qbe*?*xZ9Q__NMZ@zs_ZR*rMHeYaN>_g9qoPq)sB*6UdgXd&b#!UqgOt zmW5Wog#FhanPbPB#u>3{ahJAA&+aG_! zp?}e#mAhZ9UR4_wy?ojHaV-T+Cs&t_NiHoMoivRW5}h?on0Ghy01{OPZgNDj09(13 zDiEVx<^f$Ok`DIw=ns5#f*W(QBwtVkVvDjW z#H5T2hi%JJ*H2@Da^8JuL(}%Qtdy~tnW&<8IzF~pD;Gvp>4*5Ma~YcGm|H`E~`nI;p*UgZ}yC~<*6|V85s#NsjPl%{u--`g6dz|5KQ%8t=zi2?Y)p2oA#8SPW>aRtrpiHcXQo%~EFD`SYbK2|P0Tl} zo)I2%-?G@`j3xOKS7%GCU;d%{_r6xmcGkqk)|REFfSJO&!#_<@9A9^Frcn-D24yRL z!h9pU8cuu!v$enK;4eUeLkThGRoPPy(bLq1W5dVtRkwK6!6sUDqsNVt;t`Q)t;?Q7jSK#G~RV@CpA}oFQA$NZ!?}ZSTL|_TiF`K3ei2>TF4*;y&{=cJ+Roh%`oPg?GiBViC&z=W(BK&T+xTTG7S)qv-N(TN{(_ z!wE+HT+{hDJ13ooUy*(J8V{FmD_;v=6Ol1wyD2vQJAv@LTdVbP=Wu-SV~MyfHarw+|T?xwqidCsP|)(7Lqe-zxv_f2ugPb^grC z5w)vl%sMP%xRr1PF~zL&u~86zH+0OHq4+cKfALMNr%w4VRxGq*4DW!Ol@X^{j&xav zV|B*m5zi#+;E4&B(4dMauEHA&qE}X{iC63=t zE4)Yj1VH!a`}{q;zeW1M&imk1bmf|Bcu(EGcwce@5z=WNlriId_H$0>FWOz* zc-YkcpxyeXqy92pzq&uEepgHVSaEjo_q1F8HVM+GKJU*!f3d!Shq}M1zyIL%Z)#=LW9R+poj+N|r#JpP+-nzq^jCkOZ+~e%=zX-akwO?=a<@_G~eJ%4}r!vR!A4F=cn@WNxFjpz^EEvr`P$+rja1gCavijUG%$O^!>CPaiQXGImgGXhbMNQuXiW z5n>F%1=5|lyQ3Dbptsq+)<$(-Dv$#jzEK=$Ft z9Q4eg9??#Ceo;+zp3&eTQ63d{ovY}gv7M#3e^b((;iBAC9;GdFY)Z0QkaBMDc43iL zop*=An6c4ir4zD7C&k5u@mZT(T{^vNdSQOnqzRMKOiANMkB>`?OH7C#HY60GU~Om6 z%kB&Y^_juDnbV*ibNU-IEH>Iq_f74cr&|iLO!v(v?9Y48S^u}IpnDDUS`QAi9-Iz! zt%vcD2Uj2xYNN24d8=z8p&xTY`XJ_}okL-F;hO7cV2DNzD#>YXnlrnq zGA}nPE8enFRxE2;-Mo6?g4vC88mCRIoK-ceq&T-CuOcfaD<^w`DK&0<{P@1B#{Vu? z&Hu$Z`roap9!u=!=(|{AU2E;<&+cZe{jXQvoz@`u#lX%Vw6EZt33oJsM$swucYeAg zN``p@b1}B^C-GY~}$-cpStK7{%dF zT(k4k+vaOK8s9>d;S{cy#%DKve9PZ0lp!ANMYmTXQNYPW17*CP<3Z z{Dd+5f&ad$$q*F{<Bl#Hl%K6$~Fh>+gD4owz0?cC&mY@PGBy4sOZdi}9*U`3pcq+m=SJXv7xI|}MbF+x?<*U4S?hX*Y>oHZlPc_!mx$IS33pCy ze)~0bHPUO=wI~U9nU4XkGDcSR>f4*Gb&%cCKcsxi{)pxnM9`Lixf(uTv8jO#Eq>bz z%g#3oYD6Y2BU}8Jw@*EJ`mIK_W*SO#4>(%aj%1A!ORFBc&#D6LnLmkFNw!sr`2)@S zs%;fwyj#|zXIJzu2(n}(2!fgt%LjITvM^1=CX;R zz;v{pZ)U1||IJLIg4D;3AI(?IO6LN>K^VYC&KIou-yEe%7}uOrepH{{0Y{ zPKX>FIXG$%vh79qM<5=MpR*s(adbDjyFi8qD|d!J*to;v7Gx+^je>|?k?J5;Rr7%F zMsQ)TC!ZAexjg%%d9Ir#|DhMy3rCMVckxI`37c42S~BTxVyouL?QQZsw}#1exA%)5 zy|};jz>6;)s6F`n_IVYxW%c!CwUu*~vORlf{8x2;r~eu8dcw6n7*CxrLBjo+p5w=7 zhznKOG}Zj?S$qlF`SLXG$Km| z`&wM2o^j$LKD(l@9_QiYNQ>M%pTYkGfpEgZWqr|$Gv~j& zwWwmx^V2r`*P4#b_{{~?FDN&%wZ7zJ0`XKz&j0#-`QWj`CkV|D9?^eNtEWZ z^f=^63ydYd2PRws(LAQ{6+8uGwszBjkiuOJ2n*SsaKXbHJ&aL<29f+X2m$}0Skz&A zAQUt_G2p)DBbAyP#LW%wr=8D9T%06}x0R&Di8<%f-WNCH@s+e4NsjLA?v6=2(ymzA zb-4I{->$CTuV4LkyPdZ@8#DtD6$d_pbgEl=tGClzcb-WX!K!^2`pKkf^8#^ugA(Jh z@cXTBHWjziuh@1amd3I37RGS^gxIi+KrB(vEOi*2nS@~^Pb1`e?ap@#6BnrfVG%uL z%(b-%osVrh*QI~lo>NsL@9J=80hZRjY_Fx_Ec6z32=;sH z?m@lPL@@LdSus3(8`$OVw|Xp8Vj9Hl+6MMcJA0?WynyD830N;5S?A7~VzVM-H*#I7 z!w73%7~>;{chBLZFq$&W9d9B<yLRYGD04+~i#~Rk!Cz|D$}_Aa2zzVgcQ}24Uhsaz^Q-)kCo@7^rV5d->lQ$K* zC{Dm3#SnYH7j40?cnY2)-DQMdil-R!Dq%rjR4f?KKlfYGe&vITPiuyjhKnCGnFoiD z9q8!#hP1!k)p6k1aP#0M@q_Tvp*5dYC=iIDcHu9;A&KLFh?6d04WVxZ4h9FDxCDn^ zDIQY(Y0^T8tiV0hO+uV3#A$)M3kV#tn{+K)O_H514hRFn8;j#9hYwt%*4 z)c(7n8JO)@`VSQ``j3cRc+Y09*!G`M;sJH5U?G9LLYn2SN$RNU+nTh$qfW(4{Bx5z zN*w_fML6J=fjJ-?(0}ZA!G+HO^*@{7KmlDR6v*Nnsj@BoN3dn^9_Tp;Ul*CbWv7vj zI(t*X`;T*l?^jqNn1%)Q^K?P593r+x4@z;L9p;S;0)38`f&CLjZX?)zzI4$G)LR=iPNpDc|wG2567gRNbtuqOGrdxkx9?7F-yZaY<`w*>;PV-_Q(z9iYDBSL<@M!OFZ)&1-VWd{c8> zHxPSAd%?(an_BCQwGdQYgw5z$TPM!3$4*3lyZ8X>ZoSz(2LEQO6T`sgSwB}RAc`Ty z^}$MK!C-E2uI7dlL#8?%%>n0abvgnME)~QDg(nh2X3ODH^i4#2vd8_)5zA&%TDZ4~SuDSjx05AEi;G=H)Z#*QEr$J|^M zXX$h6ympQJ%4_S^Ut8Hei7+m)PD2CTkuC`};B^}%txgZ45M(fA=WF;CNQHqXC76R9 zSQ&WlR=^DQV5pN|j`m=vlVDE0VK_r;z(-Mg&h}uSi3D@811kexM|HZ|gP~4>x!HrE zPJ+4jhS9iK+Vi#t11%(6eC)u=EOq*-Fwu5A%TSKm^Xmiqi*QDhq=7$)&WJUCTAhj0 zsyy^B!X>~W0P_Uwk_x+|!fpXp#$jG|U}pfMIz4*Ui6!`%@Thi*{5Wo~+6zb?hP;J5 z_1kBSY`NsUq~l)kP>Zrr@@Vc@jG`bsTZBh78{`uZ3TQ9LJYO8PKQDqqM$|1~_bbcr z4_mWDX=V4fD9avQ!dA0YOO)koHU3dn;3w_ny3S*|^Pq8};7YN*heqG{XG1)M8V7CfvrRQG#9NP-IIu*y9g{(C!K)Ub=XaQ51rPTsoe$J z2Fk|_q7Y5@BJHl5f6$J)C>@hdP(OrM@Xr5O-T`5a9_-`JUeS)csLSlArt`BKKaCJ# z3WO(V57vgHSgb%oP+&;|{*thEkT}}r`^1&vYC>MK@%D>yI@Q&MzeWf(1yM9!+mwx} z2pR$)P%@ANwL@VT1?tnyk2SJ+IrXev9t(JP-!y{$DfqVwBJZE%Zt3F5+ZTB+Z+@x~ z%`4DX(Wb9d2D40MeB2!*bof@IoPPU7-fc7NTf|i$K_=k)FLi9-UyJD4IByVrO66}M z4wMlXnM*pjpE*QNM7Cf_DCX2<_I(&^$V4&eNC3-|7SSl#%Qa&+D~jE` zCm5IRHX?|lMJvQf*~>ppp-OENw`lLseDCx?cG2mb|Hm$ReKP#en#DbRJNAqu_?SQe zddrEi3Xv$%9hx5Qg@bwTdS53*nIf1P|iiGLLoS|CeIk8j{7UUj; zif&z%*WO-A)wRoOQNFuQC)iqdj~S%%oc*N8T-GGxuFg#G@pSI*+FvINNWn#878DGw zfetSONe&4k6`VWbumr)i24Se!sT((BVNuIB9g=iwn4jOU4($*>KRo)TWl@K4qup;v z_hafySO1(4Q!!A07dVE5jG~e56FrrsS)fS3xr}@EBVHKLFCeT2`1|@8J)FH=y;aO8 zaJL=If`F40MAig^U@z=$FZJ`2*Qz+$q9`6P&m7_>E&2m>;0`!i`E`hiHNX*y3>i2= zh)p=kLV+Iwyae?33G@r}ba!#S1CB_vZo$mRRhdC#{a_uz+b>yh%b+m>vRybLisL@Q z?e?pFL;m>3A$}OMX`Q}$t@a|Y)n0&BEPAkmq}O)DbVN!Yi8ne%NbgA?t3a&#J<34q zDma@At_UgtNjsCN5CX@CIf&9LO0iPN&P(qpIrOWs%MU0Od{OReX^n*Qi zORJQ#Q|z&&>Qh={w(aPjqUu4f9FV)jg41>L0JEp~ofWr^Vd4$5uel#^)b}V$I2r{X z=#&Q1$uXcmLgsi<)ENZsfP`L8ILA9^5fNGwAEBc^hCd_zL=WnL6)8&x*r{b4gt`@=5J4(09eMWQ#y`asT3j7+VaLRb7!essSve9$ zCyY)?jERqlkBc2KYQ(7Mk*f4xRjWDZ1Xt$jfxQ7yzsi7G5&_uy3DDsW(UlLxDn1%q zKQ#D_2%0?aDdZhqa%SbOii%y8RXZyxc2?!gotuL{@tE>P9ZS0P!wi-*Lp)r^l4o=% zTa*OlO+5HuOGg;HC_Tw8vZGXRcSXhSDpazwK0CL*J~zAGe3K>BDR0)HhC1;uRk57C zpp1JFUz9g*eakK?nNr>s{71T%?lHEm1nW4jGTj#(WcZNb!-lFuYO!$|*dKXx)PZ%iGqC^BV6u+?#ULsV-1XRr!k*3>x;;EjW(4?# zAWvtN*9Z@XH$@!O1N>iaZ`@2FQVYig8;gzq3sUbR`4G4m%Mu@y>#xRz}Z z*P53qi_A+w)4J<3lH|@6p(C@69!?0!L*{yBT51I?#L_%yJ`S27_lr`UG*e0II4^!7)phJQ2Z~?dE$UZSJ-3>%gD?!-zmUiaCb7mlu&EI!7xZXTK zye`re24~Sl5yl z)9G~uE-pxnibz#1?k-4C2k$itVjk{JG`&CveJ4%`pAygu13?p;m2?$H^8^(^^LI?% zCl%69^MA2n>cmYA9_ zT<*+OmR#q!`M5|j9K6VF2vOKY=IkgsAZ__9ZznIwfFq-Ve}N^K-V>2wg`$bYS>scZ znJ~A0&g_}fr__{}7FSQK&d(iRlvR{wO3qBljE{>R5fvE`HZXt^3!sZSVKf`<3*w`( zIOsv0YfImueeaHFq(vGYZhr~$Oa2xpI=*rhHe?ZGVyQX+hYDKb{t)=+4ykyLCz%kYML}(@H;WTKjLsB5o+=x zu~aNwr1Y13@y&dC5xb7}A+KX6@V=UVBHR?h1Gj7JTo<)kt%KIVhpvm38Zn&RwVKb# z$JhyL&Ft*aql61&j!oiu8(c`Thm&TJ`7~khSMfZ)5mp0$i-ddY4b88JVG{s;VuY|O z=ez@~20SBq<_c)_5l~#rMZ!Y}j{R*PQ+#aoF*21=k^blxRw2VxkN8uB6ywPVK(=I| z$lnw~TMQcH5X6Q+rE;_PW=4{MSO@x?nNxiAkFFHJS?6=zRf)-&COg@!d? z{)nqZ_GTEDAj>Ci$+#-@QlnqM_f7emEo z%~_fu?YFMBa0A5VBKk8Bl2T-X3J(o|{6Y?c_7OG6Ob3 z4VRhA{^l!3Dk~3P!K+8Alw){L@m<8e!pQJG=t6}cVT5UD5Jm_?g}4bM*5{EDB`Di^ zAr6H3f$1Q+4-h>l?~>db;s1xZ_kfP-NZN*P-!!9$MmeXEG>9MpN+g3wA`2U^Kp>RJ zAP^ZOK!}_%2$O@!IDlqH2i7)duD+-G-jPPqV87pazyF-y zyCBq4(_LL%U0qdOU4=UUsaEUHPH)!EPj-RrhM%`eFR*HMT08DG|4r@AmZq3)*YN*qx6UXo>8z5VmLWdeQ_&i zVa%de6y}soA>=_+?UzflCZE?f1EKy~e%Zi@`racWjsW#vIQ_OT<*jmeHbmtQYHvU#Z9rcO%$e z)Xq(3J+&97vmUI+bnQjfbGmkx@PsbmM)jjy;c1fo4o}pC)5UCORm|s?~r0`LeS8&IH+4dqI0)8WCz5(Camo z&@((SHEvDlM--&3u|oJlEk+C(e4muHnQL|o{OWu!Oy!+KI4?nS6-mxfs|DG}z>j{| zIWd+M;t%2vcM_D3P~cFo3-;extoASTP4_QXO`({#JMBsGT0(H(@&z34xO^FpE*o6F zKuq#I84v!3B7j2oG2$ZHfYR?;p4jK^*sJU`n0vQ)|KS?k+|-X@rkgK)3}A;bM7l7+ z&fPM(2~(VzuxEl!~Nyx{ZM_^x2b39`)%MK4*YrFa0)TRe(*3Zx{T4Y1vI!q z1@gRaU`~!TIF{~?Js|zbPG4nXq-}N&Hb#T7KsXDgP?fw7z!@GjwBg*)r4{;JaSxn1 zwXF`6jzasqwnkxVgggJI?5BnX+&V$ILe8CDdG zHQapQ?pr|Md6r@tBkuvnx$7Bi(H&+_7;?@Km*b|INuUF8N17p?2o&yflgZ?6;t8U0 zwh=WDkOfLhhdG0sujytFID{8I#2|YQX?vv!HT24_$#@ilzy`qeXp9FxHQkJ3Je;V` z(HQ!8{-`K}@jxNWiTf(#vYKwvd3L&rMjLa86+@a1Mk`m1LMY_!8yvF#hxPRHNu78qB1ZC8lgY$VZ4j zmgh0aYHiOS`0pV7CFhdF*M8i7e7m-VO~wyqL4O$d`PwV8Rk?<)QEiEkSWcx2QG%Pv z7@VA*z=-_2JYKB;7{b8|EKnK2_|F4qD8Rxoww}5eIDr#OLHW^jSg_Gaz{^6TqeeC1 z@*~F~*gnHUH5bCO*2p*Sg(!Ch{gzxtaagIeR9I_qDea&^(s>M0DjRQVdD;Q3cKv!t zk9>CM=1q2xjbd#5daV}KU`E+z&~!(i025B*3@crcUT<)XCd#Q72z6(C3?JKj8khISFwW z5l-`U<#+e-MtYL~?+Bj=c#gf8r#|0$zq{Jh@!s*y9rO0`%F6QJA27cb92pt>d&iKd zDEomL^VU0PoHT#&@yKBF>->}U!I9)IG3XC}$z&d5Yv709OZe}O&lBi#oRgyXnalQW zs37m$p98+Hh-*TpaUAVK>FtV(_5ukT#6>%QXX2uLy|~pS{Qi5izba!Pn)buorB*K6 zn~A@=Y!8tj7+mxd$9{3y-b!5Svb~#F>9QReqFuIExTYtogcjfmpY@{VvV9l5_;rE* zqoV${qtUvv*TuJ8!oS7#x@^B9e&DkGWAS5`?LSE#uG*FRBsZ7sU8EOWws)1RF5A12 zn$&c@N_X+H%k~};oJua>dr7#lbJ3pVnje(jQlLxtKKJOSFTI3!(SJYbEtl>6#XnrO z4-gS(>7t*3QfHU#+4pGQEKhI=zs-oT;;x{^s__W>+G<;($oOQ|Y+YQZp0EaCSi%F=ZtRQu`8?SNT ziH8`f+ju;^#?h3EA29iFEW_k$1J?%=+H`7ziNG#MOxnHde@m~@sq(<7P4@?A^&8H&zvJcG;!Pb! zGU(Zu=6K-~Dt2hvKib3Y(H<_QH-*RZV>A1N$0%X{)y0D~+J7c5cJOau+KFyLdwq|# zzsDXmr69XPR~@FS1ID3OB#>Ug^@uAR&&KWD#P3|T_Z7=swhu*q7m{<0`zes%cyrOd zT59dGeZ2^U)CK%D3Wj&lzW*NZugVCpY6=hiBHv|uGZ9w`F5p9?B$w@R>>HQutq}3! zs-JG+T$k;0#Tu9G6|U*bD#hPj!mk%^yKLVj{_L{-QE{Ei_SeN%T(-Z(bbX}J`m!sc zejYY%|5$v-Wj{Z`E#`tg&@XhosZl>l7s=(iC|#vcm;H1z^r^=EbQeE#3E#ue?;6AR zGW4Lv?O9Tm%YJ%GUM}1F+@qhqlIjw^pLEe>dw&tOVpIN920(VXY9A=IbJ?CPrMPV0 zj1o1j`q?HebJ>2})p~LL;^`*(MFSdg{o;BPncNuWd-3mKeiEO?k9!aX>v}N+bfiL^p;k@d5C%a$-d|Fs&C)cpuHOK^hP&qULn2D z;o&3a@VdXkAN|i(CIFr?R-ykQ{4mBH#@kox?LF`Vy76}4`AF?_#5{D!bjP(4JfHAN z_U-?4I4*6GY?%qv!ALwv$@Bp@5=|Iw$S{#xt>=35!-Z?ZT#xVAdh|61L??CYo!+(o ze0#;N%rra_8J9q3CJ*v_UR67K55hwd@q1^FHYrw0|WeKqW-G zS)g_h74YmL;4MOIW)y{+@HN2AB>stn6&!7WJ)jet1<`XmJzWPvD1bRz*{a_VbFej~ zPxgITLsl#HJX_(Y=)Rpg_a8fa(@Ea{GwA;-qD_OGod!Yj9639iuH!$QdtN0y!+Y-6 zv2*`1xtmTHxI6XjM0JC4@|ckiv?-C<$_9j$o@qc(^2s{rMS01rnbFbSbbm9zYC-5c zZb!kH_+6k8TExZElh>wWC{32O(Ws4nZG=Q#Ba~=u!DknRI}%n8^$nWxEk2j#;#DR1 zmOdx`W~TtxkZ%n}M}Mi>P~;L=133plDcIZ}X7{mK_||pyCNe|#QhppZi?|(0b$E&h z7vHI3VSoP}p0glJ9|!$^C5&aWC^vzq_fLB+m0-*h>tOB(lXMuV5saz6AK4)y(DUIRD`WGKgHW)qw-mNI~k<$zhh#{&K9aRxqp`C1k5wW<<6 zHt4>Rua#p=S~SO6(LDR|vGE;F_gEc2C%QL=xz1KLodb={@zeVO495>+*5ik#7_}S9rV*2~q7QoAw=)~8pZiDN4 zLR~>~V7N`U(|By!TgnjL4|E&ekEg4C>h&KTrb$2Lpv58LcZU53 z*;K_Q>ijMS1J<={;yFhw#(haGQ%Gs(T1oOjTVK)eGO;vL}t`r~xhdB-6v!8@~RZ^%#bIq3WP z7vUE^Hgl3Q9ERg(?0vRfhjF6mER0>J=W_gZHsK2n_^I zqmL!(`;yBq8q2Al|GMg@5zHU=gdu*{$GYPRrV&2ZMXBlB0rOwZ%a7?abOpolDXkmJ zj-YZb2c71gihlU{%w9Lvf^-coyX(%9R4AxAzr(*pbT;_inV%ZNTo?arvZffz^dzUV z-Vb1!jMV}1sxx0x_+t5*j?(*aTGPfb*V)TW$3j0Hc|W+@_XC(FIK%prH}J83GHAH2Nk5Q1@&?|I17=0je(KI+*t5Xd)p?wUD5#b+mT*g- zSMB&F^Wrf4jMQO%t1Z!CoYuW@Ki7q~o8X+M4V79F&c;}PX@c_zz+6L)!URU|j-ay& z20yYi4(qI+HHNJcRvPqj0b6@Ry2j~6{i^1#-op>bwh`2>-ZsWl&3AC6Sl3<$PqI|M zbKql=ZA|zPO%1#pY8icZZ|zOFLR|;Dy}JSPC}MN?z2NiQrX(1wpKilDV0Q8OIrlRG z{Ui|%h!!H7?mC;oaijJ=y#EJ{{YM09eLMB(JU@TvXCIlC0mfK2VIMnb=v60)P}IMc zg@+PEgDQgtW2ygIcyi?k;#(1S^XUI8R21j3$Z211Z3J^2kQ~P8Ormv&;Qj0UTxVnX z+#Na;;Xu1*B!_{&9CN?U_}puu>4~lD+6jl<95>!>8V%eC-emqw+s|pT4LV|dKMB+i zQAS`5SBCd-8{uonH*fTj;Jyn;@R2e18_4lEf`9f89UuHnG^y6|MJ`)JYPWezu5Dhs zpW$2hjZ5I#{kluT;6I%|t{Uqzu*tkZ5%DtO?h?dn9Oe>hC(hP;5@#Fhvjua?<+$iD z*K2DV_fvaa8!CE{&O!YMHZzCe`f4+*hwC#PW2<9$zZ$*+Dv7H&4Y6M87vt9(RW>}HSL=*v?nO0f$xcP27RXRah&B3@jl0q!(vaE z@fBlFj3Jp~wBPY^YUg-S-!#6lpJ`0)Z$mrBOCQU5uMl2KlpOSlyP12z5I&}$x^Xp3 zoABAITis@PjAQie#r3|s<#WeF9~Z}?-!)8ny#t9VU+hV7Jb)dtSPdtzHIQC ze%kYKN@{OP@0(%)JD!j8Gt=+K^mf8mZ~sMDTMy6i(%Y}Iwt73xhC06_r$O5$YhOYz zb>9VE3@|z@#%`d8)P7a_i#S{T9OIX9ntp}%Xzm098RBm6w|^s;>q4Xs0~t~W1A5i@ zMQJQyaTC1u*8ZZ)8EG@{0I%S0zBbfOvchQpO)=U@F3I_NJNo>}kP^VHPLJY!I(_%Q zj_)?=^AG2C&X+n4cO31F#=6eNHN_t=Z*%^GROR$^0Yl@eckAY2pRLa&9pCNC=kkH^ z-QG?5&jL~S`659t!ru5w_=eM`ar{wF`xxzxc>$hiA{I8mp#u8V_naRgulSx%;oq$Q zpMKBrM?0ry>n7jjXE;Bft@tkKLf{$>JC(yWkVT+zA1Bx<;ljOPNq-=mMCuoGamNqL zQ`ajXw~Y2Xblu@-uY;%gm+I{_CO_lRj}u}Z2-pAS%kBp{{Dma)3q^8`B@ak&my`bu>l{z{PkH>dl52V7?%^e z?~8Pe#&Tk7BN(tw6FEWn)!mbD{B%9bS=ZQ$9Ijj+k*f8z!QZq7yq)iLy}hZNKs)*b zhv;)|ASckL(|7CTM8o!aIe~UAC-kwJ$_afeSLY|@Xvm3I^|f?y#`3vvIidIOkQ4ar z@BEqn6Q74x$H22D0`z0cWC1e?#qeR?wPE{Sfeyovs}5Nk1)`cWV;IBg@E zzyN2%AJ*Q0IobrK-rt0M!~4&a-4< zfoDNAmFuJOw`d^Vgd9eDe(kRk-XvjtzSrTQHgg_#$ZPory&Zp3d!3%;_KMza=viYR z$68Q7im%>o$akUv6{+r$p+7+BJLW1If2AgtSNm4|y{`RV5QBiPor8YLsa@9l`9d4W+uuNYTT@hB`1@q<@x_iczhW^!?Q(cV|sNT zv0?1+t>$ye+?VGpIX`JqQRX1)2e;Tu9;>$uOKd)W*o66|3oD);HTL9;vSXcWeJA94 zXkBUPh!>FDZ?}Yc@I+y}ThnVd4KR2?)Yn#yLcEVfz*}*=>&CW{^~~YISll3sc-KaW z9W8hsz8wXQrFBj)SEC00oW% z=yj`Zjev=v-<=db0iXUMV$}fniOvPGk6;16KK%($q+1TzN5_@+2i9^G`cci7zT^7^ ze5wC_S^u3r$6UY*-*KL*{jLd5?WON<7<`9DbOi%kR>`OeLZ9k*;gq;HUMJZpwi|MR z&jbHPuVANJuzIoY*eS*|iRf1G)~Sj*7m7FeW-xQePZFJ!DU-V3)Q~I^i4Wkom463~;9cW8pc%AA z+LubOc?FIx&NIjbjGtn*{!`wq(7pd9^%j1QBOX#5@hbX1pnL28fN{Y8q4%e@Z`vRA zL;VS1f6))eM;orTug%o)(T3~zAQKk8i1>37(8oA~z~S~)5Q zIlhmxB1yi=Zkb~FULT^@%n0BiI(R8d+XU&GfHNiR#nuF!uyHEskXnXMB#|D{@U-t;}L0Yrk|S|d@P=B$eV+XO}@S+ z3V{mBNC}XvQd$NrP{76wr@njQ+s`km!c$MVX}6h&+Yl~~z!ziGLh*)qEzYA~Ag#$$ z3wr617MxGwut(RKMjNsb^@#u_EQff+d+7f=>FC(JVlxz}(Uy>47{vUw@3ixLA7ky} z)Fsk7^Htyi9Z|={aofRhi3BeDfD6&jN9dZ_Stp?hB;pU)kyyb^H4}-r9+4wwdwCIc zynMWn%)psO?#?tK(ZCt`9i2`pP&18oP|E&{bptL~GX0?WzgRV#X2i=x9BHckqiDk9c4eg& zqLYO7pN_{wtl6EWc!0m2Q};+Q=2CoaZ~8f~drnD|V${0^p85Tsj>mQg#$m|Oq-<(f zdWI*{jOm-w`6E6jHjF+bk&jwIxtXDVCAKgjn}fJ0AryuQDbH-!P-)BuSiFb)Djl## z^|KSz=W#&tvl7{Ok*$i3Pgxj;y(krtu8KqEe}8nktTJS;CFE46qmvCJG(l4XN60{p zpIznlozAhfZq4YP3~=@BxX2Jpb?w!FcZ#h=`xy?8_WC#&4qxPGua7O^?O1E{Pw+QM z&O+U~zdnew$-oBF+^7G;v`cd7QeUBgLAMo|QC2DV7 z*Is|8!222E=%?O??$l3-eP_K7o5M$Ocz^U?=R+oVxC$KO*7=O69WD*xu6@9BW^EC4 z^9lW*_5q)UK&ayxABwzCT8mr&Nl4`ai{*i^{!df!R6m>#^!r$x8@%fINCu&P@2{a) zq9=N(uZj-YM3s}E{2{NFbzew}mQ&v!J%q{PDY# z$@P2uj`R02JEX%&pGb(25E9({F^I{{pS|6n-DbXA`>}irXD`0t(3fRWleyw==*vu4 zBYnasPmyka5&^`~j=4+Nr444lC@FbB0Ob!rRXR4yFhG?nMcJKfH<^hHP{LX7lg1_- zbi0U;jov`y`Y}7{vCIJulEQK%x?=@$>BRKKCdU8kC=P8p_Y9dzJfgILsRU#UGfDcy zVI<9tj5a<+0biz_sV>LgG+wY1ibxBb5`S*!U)+sLMkUDx-(c5S0_<*3%_<|`L} zKYah<-jlWyUKrnfD6O9`l<;CdDX($bVKtTUdV3i5kH=i7K7{W);JZ_)=J@9He>xTn zN#+KXq(YKkC^Dc~&OjCRFjttV8UpfqK?gGG&~QNKk8?AM_9|4 znAo_q)VLH(ERAyD@tkjgDe_MH2S00fnesEsu@90~exyCVV|mAlalc=D`3JWB#GOAy zpRJR6FB||gF)!EnGl~V3XTh#d60$S3+Bg_bRvC&Wf0xm}RIpO3eY#FE?`HAInN4EgBD;3peD$eJYT8SC^k z`p8#@otKf~EsArhZY+Cb!;Ix6Z>(MV$ujvF>A~d#$~GNZQdV}P`k8f=r_2|WW!L>n zFO;u;DabSS>555brj0o{yYIM+6{R!R9^O$lYvcS$b54%Y=Sp!VKVz*_x!G^DM&viG zz#Kz_7@r(cj(J5#hJ~W$8nWxcMH0e7%zRdHVp>{E zf~fm0($guk2IbX|{ZN(+vk`weq5b=?+>2FwxOC44$rr;OXX2g|1Hetxr1k!vhr}%rqAX-uRZqtx7uURizAm_nD80q0L+TDKA`>;A(nEC1i;G@ z*bLkx(&7Mrp%O4qn=7y;c!b3ZKQpEjp`u)olHI}*n_%UZZAJ=5igp1NT3~75An2-r zfgEMZ%vJodY1)Yi3r~+;@YzGN*mpJml$+acAGSZVRr~GKe(la9J;rQ*aPHfS9=bAf z7yHBWiM94Gy-oYHU!JPg{lg^F&X#1K;mG_6k&iOF6?3j%*o;xXf?wd6R+~LVwBqi z42D?+(5%2(dSM1smdJpqxnH}x|D^Wo){XW<_ShzR}dqV`pn>P>*TB<8Cd(B+rK$XE4@$Egr6d6Fy^a0L5~0-PFURk=@7^|Z-1tUkr7C@sK|;q zAdELi^$o~mNMPYuOtA=wKn)KeD}q2DMTZK1B@<2ZoUgb}R1)$HKyvYrMu?3L3&Gd{ zwsI4F(gz_$IluoTGXEJKGZ||@yJE(=9Zl->W#9G`ZMpl z$KQW{-8HJJ3788W-cM;xUGw&9CnCib1_cN-7R7>3e%>*hp6VAJ$C!<);1G zIaa*svBx$^XNIv??bScN{r(?HxqYntwSB7=(fv2}8f5x@tW%UQhLitP0CM7moyOmg z?#7A)acNFgH}HXR2Thxc^RUb?EDgueArzfH&CRsHgB9fG!)0O=i=xCfDDq0aQDkZ- zJ&H1-!>yafMLtr>tE#wW+b`=sda`QMu^|J!T6%}}h*|yI!@v1Y{p_&xM~(T&?%hYk z$BMH>`Ka0b*(dD74t+iqyf#(ap%lW)?E|TetnzqZsh~m}CICKGFi8cOTUFIKUNHf# z`3)m?6wtHaYt5h%Sj_aoh4L)Hb<4E^4?W0dWWxjWq+t!t0^xd1x zck8xw`?Vjm9n!n@ZEE{*Uw*jm?UWi{cX|G{(s`ReUeNal_S_zb&L%G?>04l&v>kztMx^;O8t^nkF73ykxRHG4#oyn|9@ z5Sgf)p5gRM254`!aS&-tn`4Vg_6>VCZD>-?)GprA<&2!IBl9IX7`x?)V@#(@PM-LotFS)XLwJ1rWdBB*jrG z$|mx=caikeq*$_ksmmTb!Q3`i{zv=A^B;eF_}9Gy&z%{!1ol-zSk!9mn-5b@YiG4P z&m?NKrdfBov_5w2PI>!VpLE4_BCXdvtx(>D`S>G4vAY*gr}SJ@&6PwG+(L|76eNJK zC+mb#DCUDEY#Kv3sQ)nc8Q^F2QJ|bLsN9_4Igc4hROMY)p5C9ctJ~$v-4Exl`FV?0 zsO&kit$EyCU*$??YwIbW90XptQ^7tx3%ptjodo0vwV7e*MEQuw1vmit)WGbxn3zbf zwm>$LpFnSvnB68x6f#nikj^9_K7=w^wia8HYQl&wATDfak;s^(nv9xCoN=Is>1tR8 zs-Hsbf-1(f$Q0VKsR`mN+sLgWM&(UEJ!xv*sFJEXdxCf0*<3Pe;}&bP*neRD^}nf5Insi-)TqZ|qvKdQJW z>eRZbP0N>W-nfph!Ene<0dtL{>~vw|Y=bHT(MYNcEdYp}H;`lyS7(OF*&-5k>e`nO zDMs=HT6}_Bm2tW^qFl(tFYL>+n-nZFl-0qBtJJp@HG<)L8TtzzY$nxQ8@)&E;JK5GV<^t zOP>Bn6bf`i7>aq~awCH;8!t^udQEypkSbbet@JfY5EJh!dw$}#*XNy_)3M{a|DKKh z`RahO9`jcWD3cN&joR|@vX5$u54|z21C*MtcEuiRtG$ZqycNfDx2`JPF%o!)LJ9QX zGT`TjlR>X2BlzO@CZ&>FS(9);)A>YoF!bY>We31;2n+F#3W&nj{1U9bbcKh4GPu$( zI1BqW5c!aGnaa6}ZDXt1|Phs2P@mdOt>XMt=rCTn-Dr>%z{O?NR zmgem#EZChN94Hmv`QU-<2k>9E;Rk>YqIiN|5{2#hKJ|%-MipiS)RTRozDtlo4VsX$ z*CB5ca6FJ*Rf+7#&`c^Enk2RnPTpb&V7`&UGF#je5PB(OG6&apU2bMG&@fR*j7x}* z_v2bJRLCVR*=LYkqO=wk4#>Y<>zzqR5QOGl_l#wDlhx+(TN-S^j<%C=e`5M zee$D@%lW4w^Lnq->?clYH5>L%KRF_nFmEoPDTlUP!Qsl^9?KUo5w7FgHNLlvsY1_M3o7j%*<0xxn zye&c+TG=`8;Hp&zN8VQ%*D_^Ux!IhyrmEZcg$u`b+q5>rWDW_>Elp{qC3GEa4M}7z zgQ<>AK8k4kiTTBl4M;8pSm%(I(1ZlyX=7DrxkNe}ibNRWD6bOW>*HpUB_W2zP~~;( zOfs=`1)|Opckm|Ui`cVpt$I-^yEyyE)rpfnKD6ZJsnSJtQOVS@i4Y^PfgEXJ^lDdEpWu~X(Us!v{kY{aEuh%3OT1Exd7ESYy@^6HY+g3rX&0~ z1A(&)r9ZUpb4-8e+F@n42g@E#5W)`q=}f1P;9K0E>R-tK#V2LCrhmk=r6m-&3&eIYFu0_ zDNPDLJg}N6?SjZ-iCxI|Uw|dZ1gWVfoTpv7xe9a>|jFQ_+ZO`h&}(A zu6-0WFgdAh*Oc_ZKlLA9HD_K`xIE+Ov!3Q%vi!>3z?*ZKEi}Sx>e`}hX8%5z0cJD< z_oY9mfuMm+7@z4Kh`HkBz0?deBmzW(0FnG=5Ox}B$?L8MOb?fE#JeL!?ze-o04;{+ z;|HYxSpP8&h=_1&Ot>w=78jRbHIX^zDB{3PBT~Jv3DYe6;8dK>%NaN!3-;vq>K0`U z>=nLoQ};eNHQ5N`w3N>l?#aVJc~=-S*!_^%TzyP>B_e-smqB!3W_yB*@u~OV576Ht0=A%>qq57QlnYNe2ucgq391U8lnqC#>ZkBS5R2D8_xSpuQf$EK zm7_OAKWY2^*n7;&`jS^zN}JHu?xEq`tb_AfH|s7fy!N<#v){HQV>b>6?zHryUCqj> zcID)>S+wVe*CTRPW_!!?y!`r?^>Tl-R@fv)j#|8L^drz`Fz1EZJb3}dd?|?k*H9;h z?)$ZMx+(7X9I?YT{d4k630FX!25{hwh1w{2IqF#_z`SFN+LXmFm2{gwW`6H~ ztc~q-aO{Ab0cE|0VhVlNj-I=v^UwtUjP`RM+0LHzJi11+db-UxJ*}*CY}weZ*?)$& z&Fz$woEbw^_R2xKGR!$zn3w79j+vpBHn^hy(>Cmc1WeeaSB`4~byKAh6paBDkU_!C z00aaDQRR{_N7PFM>VA*}Qj`Xr8~xC|LR=TlYPGSsHfIv`;b-luUs>C>VgyemNH-KDc!~V66x%O zcouAMX~RPWrblHd5kd|k8~#(nFV9z#OYb5n+qZ?)FNyn4{oq%ui%sMH4PXW-P5W4{ zo}sT~OqDcIo4@Yh2hSCcPnc13-}C|UrSY#3hIa4SK644o0{q7)=1W-&J-vmHo|zIF0)yBvN}Ns@ zs5(^ik;*G0_f&XLfV&BzsRc_UODTp2t6BU}Pen0x$u!oi@)C1aM4D1MB!DE-IMbJcR;-OB3Wy{6b&#ci5XxOvF7 zIW0OD=Vf*271TWItK!XrNxnXe3!#^lClTG%OeoQBkK!Ot6;i+}Q5y}@l5mHoC?@2? zHkon;!uTWP!!l#*!0-X&t4TrnYy;i^%FPVswK$rYdA)?XdK~Vg9l-V@2an^Y^zt6f zbB~lne~Vf6=h^F8dofFzU_Zw$YMsUIq(jr&JFY`laeC(i_dowXwM}==o;ts6oAPP- ztKD8v%3hvv^y5iGk1hLDv`u?rMDmDZrPCfPIy`pE?M=x`zT6R{%@u78@QN48PRBtg zkz!9Lb)ulczENeeZzOpd%2z=!(S5)KqHhth=Wss@ykTVG)Wec3^cTQz?qS$?As!xW za-Lb-;d+8wJ-|wLqjX8ii^U|6d(YwF=89N=l=a@HpM5sR)f`#MflZqZ{N`$&ImGMp zpi})@=?d9fU~mm~CeAPwoTQo%76c#^<6;au)MQeMF~d;`aZLj-000si*LWu&a-#XQ zpos*L6OE-N!J~wkz+Fb!-~A&cz5_@y>(?ZbU%!$m{m!4i^6IPoN=o`oKEG)58{^-R z`j=)*n8so{_3M&7f6T@mOwsP{Sld6RbN5Lj3LhRa;qb_QIdMbiJTmwQ_aHcw;UAtX zOtJsR@U8!cpGwf_G2cJ2wvr0e26>9jC9w+Y_dF z1dHH)5SUb`uENzt(&}v~#(_(kuxKf`vgq&wlRiGW=)zRx74w3U()n%L%$L4kziN+$ z?*3xYsEwq>m*%aWaeVlwJSg$NsgD0q5eJmy8DNR0B#23PEWs7rbe17;WEs90G(-xK zA+dgtHYn<-WTeI6hLlW7E7vA*o(2Z^ z2ud2=$k;vG~$WHT;H_6u6S$PeK6#3mcrr9{Nm+VV_*nrVOl>^EDs#ll_wYL-vE_ zi_Srhbm((#$}MQGMY=BTYm3GlArGN*G31zsLoF;bz!qKK<|)F~z~JN-p+E^wppXZ- z%UB^v2G|O;tlX=~n{rQwwoW8+vNU)LQASX=j57jEI0G{b9nU6#;b448R%T;9YZ69v z^-Z$$OU&Px`ucj7*Luc-zDYj4ThBa_vM;=azh7eL53jQ09&(56sj0r+@@})&{W$}6 zrPY+qY40cRGI`Hm#f}Zw&^v2WKl?;^LOAAGt@V_TV}Ha5hzmkkHVap9Zd*{z&IdLL z)G!D>s3w&_9@|7wxZfYL!Qrkk3}H)bTzsO%$K(;w(vPw<)19ZW+YPg;P6xACt4~Wd zZOUu6mVCW+_DemNwyGSo_QZ*G53%X?4^Asrv~{FM1$_VVrccWH+_$(@$`hM69w7ay z2E>E?n=cce(w*3P-K}DwJF(CZ)Sp0IO4?3X7;2Lmv|&-|eK7oHtiZ|fR_BF|p{p^j zb{RHwy>rfh$<6c+LJUP@cwk&moN+(KAb)sy z-hF50?)j)>(kF)t_jP>RekZACR7AfvljpYCBIn-`cy`L67mKOo_~q4c|-2cODOnKE}3-tdfA9G zJ5b3YZ^xMtW!FznIx_$Lr8x&DZ8`Pgi%)N#bTDV>`}1kPaXF1S@!D6kpK2yS4v9VPQJfOnv{~|U?!OHatU^YnS4=cY zo50_NPz=%ylCa6?1rWcr;MXrmMo2NQXcDq>t3v`rc(MJ!3v^|K7yw+hkn21_WETBw z$L(og5O`+$2QOTH@q-Uuy!`w}Vt!#^q2^auP*5mF2Y<#|TUn{LDOS7kS@7rD`?1<0 zw%E#AiKR6^CtO+`yy6}0iQrY25+rZiI~bM;<7&SXD^&qEJ>xSyP%%efp7@Il4T{ON zz=i_0V4@=OQ$kF_HA%NJLHNLEYxr>{3XvP{Gw1_}94>I{B zrU<6G2Qd_80#BlzQe1v9GuiPSU`nym6P>>6>KpLM`Xsk*k!bOYx5lSfEj}I|sCfgO zNB6gwbQ6;vD#bz+l9wfo3yC!TsztKu_qbnQxpMLGEvyHifS;C)1qiVN<>o_OB-i2ImP?NqlXw}>-#)JzmL`-TTI zvHDD)_vR(aHC?WUGF8DHkm}A*OCE;dym|9zF>^Hob1EOpx=ier}&p82&uNOrj+_E%x1C*o2ixVI%mC5EN7kHiwF zilj~?%fxZ^7|T2g%Zx||%m@4dP1JyNZ~;DsUo*}YZ-o*-2NSdTSt)eIgu9+}<8*?o zbKD_d3MyMs-R_7qL1U4z^Ey2H#;|icdv94d@O4&EFn4n4)WHSpsy91y;>69MI8k}y z)Wj#oHot%VV4p#Gb4KRR>O|X0NQW&M2Nl8_(m5rw4bL_ST^WY3Q%C{`4K6GsT|mrk z)~s1jvp_`8Ifo?Z=sCqCyu9uQ)}6(__I|;cWty#;#gDG694*cm!1igSukRXrs7RKz zSgms6kYQ6e9u$A}urdK_m?F$RWAPEe#h@u2fl&~z(sEK`u(4sA^GgTVdxdVGF*gxy zf~269pTQ$^P7)|7R>0f|GB-1X35m4!e%^YGTj&Zx42yPm7{$8!A5-sg)NNs|99R)3 z02`m%%n7>D%zj++_|c=)OzYC)@s|@01x_p-y<$}1qg%FIdrRA*{oH#XyIQ^?JLiQx z5A9nb9^Ap)wf}l=DR16kY+hDozrcjp^>em8CB152`(Xa?toB)ciPqgShJhSdm!Y^5 zd>%4~?tUj`dM21486%tVyI);Ygu$9|x&nqPvi=GfK^m}l1co;P4j89TaVOIzi5Yjq z@o~WcsFvB9wc;)pvf=)RSHvle?ud8hZXZ>UH|^A_yz5TYw8H!ulTJ?^ zS(vvyH#&Id3oq;p-hTF+G{42vv6E+6cgn@57cV}Vlzygi=i6h(ytQNTGwDf37cV(o zB=5A&nmlG|%Oe{%;lIrr>7JD8rhca)AP2XT$wF7*A^jxq3k?!YQit}5&1Ds(%J8y^ z^r^BF5h)|r3BqwbFh_#?o+%S29aFh}|1uBNy&Y@l@Y3W?lnk>4iqF$Z+>gwZ@&byVI zS@r6qiLb0WQSxrdiB&I8yi<@iXUvG%R_mMx$IMHYFSGP{V}{O-i<^}@dQPgC>VK$q zQ`y*Q%Qn>>@;_F)em?tBi!NVZd(408$q6~V+3!6bm~?8Xf9a`7gSu&~*U$+kby{kL z>Q(43IxTnTI}IK<(Zmc|B4)*)CAEqTTMg|rn#jnC=%#}?=tw5{sDbW?XdOw0cpRig zE+;qOurFPLalk2x)7699K@EtRkrKp-X&ARQ3uz>DNZpI7QpV(` zbaFmh;(p9y%CjISr?WlzFQ}>&ifXw*&}DPxEF*FfneBI_5B`d-Oh7b)bP03~q)OYo zvKy-2!Jm$Tu9Xm?+*pQQ2!f&5Hsb+FfDMd`35?|tUWR?jLl)@l<-sEX>wb9Q>}P8Z zyqiCBRQ}ZQ)5Novzx?>}=66Do*z=Xu(`IacsGR%@WNStt=Y%TXz#8j*!XoS!FX)1) z2+4urE|81U5w}8tp}9uvF`ZYCrTCtg;02e6FSkPD@mNC-k0KjMDXQ5emeky;u9lg7 z>yaZ{Bx?=c5@_qz*Psvr^d!uEj&c%qYzVx@-fjrHhly$Nh6A3?M^bQNp~k`gD=L+U z5R(-6^Gp>;ku8x@O1w181eS^5Euyd-z>2tBhg6mupXX+Vd3gcN5U-HnAgYq;(+nee z`dWNZsy(!2n3&>+cc4}Y|9AfPYY)s>Qa)(!6HDhUSo*|1=U{b`Y~@I92jER1?i68W!A(OUar~tz zR451MA!LL6U;IB(1EDiP-{=1$j~;(@BuD<|^w~52_{W*Erd@kfyOKK06;&VRIlwnNJc_U0GtE$G=ryKtfF@Znt%u_EW&V>?M9 zcYd0+Vbq=igsg;0<#!&fk68KtqrIrdf$oH?>ZDiHhD^eNND>-qgCH4}6K?uiw`v&` zLA8jfEIr-y#T%8S(^3(*5y0(kx}+k5oQ&}<_=BS@t)1RTo<4EqxP{$=ZS8En-PV)^ zWhUEFZOOAQ?cH-}cAMs@&D&%Km#yjMi^kv{6;&Naj&9LwcFDx{VGj&SKkU^iIX!>u z;t~Bem-X#izPay+#bfi+lUsQmPQU;Du=W#6X7_3_W<*E6KUcwb`Vr<6D@@bRGj|9* z(F2MQkGmuZsQ+S|Ub+!UYGMHoEptqnVqBfAi-w=_7}rR=Wv8`MYfCfNe6s@}!WwdG)o*oy{ro2;eZb-@biuvbCE_W!}-lk$Eo8PmOyZMo3 z5qTR1XiE>hm7o9CA@Q(%B;qhJH&J*NF^VHFHy?P0dpr|i@q~%#P>?PBU?B<4Jr3Nm zr>8kwZFihFJm50-Orj+umcPQ`QYMg0eAz@nIDS|)zHIQ`v&xL^qt~1*dQyAw+Pmj` zx87XVX@2p8Gpy1#U3;#*bGXevH0`nO8vNXc5|>}v(q{aV69?X>%YWI5y-0UF$SVOq z4@L1IToFagCtw!219?CzKlJJOf-*m4kl?gU3ga(V2 z>T3Is}&&{>?S0wctYN4n%UOj*&fEyKuyB03)U`sF(V}!PZ3(*fZ zw=mQYpiPggGPnzre4#KMEPI)EZS!P5OB-7a^F1xGu#U;U?ft!V$50#z`Sz`aJNxzC zT_jGrdqC_{aBlS2W2N?I#Xggc6bw5z!u~8K2Ap6YNk=$s5r;@iZ5Wq0J1JQQVDy6b z6cEE70^yw#Tc&N4sSH74JaWGn>NS0E*6`Rlw%x3|c3|-EU2N6p5)b!$DyLZ|s@1l=Y zm~cmYC&6v@>!6R@YynU4C|_iK`@aQ&=Zj?i+<)J^HbKwJ$o%2Ir##}d3FOFULJ7hG z6zDd7@H@Ntcp%Q4m_k4Leeh%~ zJ_dxaT*cx#DMLBNZFt;fo9X6y01kOxE}PzLiFm|>IGjR~>+=Oz@Jt{Z-q#1oU4WqA z&AiQCSWVg-I0Yqc?y4-nP(axm+Kw0Y9scla_pE;Fw4c`x>EELthK$B5cIK&FvX=MG zD(lC}|C!mQbtds@G3zTX2R>oKm`p$J(+h$qKq!su1C3Ay)#!n7sDMhyP>L$?4G6Qb zAP@J3EhaZfbb}AcCI-EEFp7k8iAfLSK7;DNepbaR3=YdWhaT~qBaSAG42R;Nl<+oP zeP4(PY!%tOudT3Wx1vCsxZE0Qq=FjDaL)sQT$<1_&2f}_< z)eGrjcsM&GgHv?49_PeeQ>>SDe78AkU+B{%wU_U6nT56i@$N1C(^UUU>Gy3spvmm& zgrVt4_V=XCQ3sT> zs4Oj(Fdtv~O~CSC{uHq>A8$DgXQ~%MnCfW{vzI8|J-A(XyKcVEt&fP#>)@}`Iyq5n zUUO|`=Uzl)+~Hs~yFx!zgedsKfC?^fMKPKJW@3245JgZ>*4%^~3Xoz}i`>$p-#?{+?_hx-+S_*z$(&$p}WfKx5#p6)=LyBTIOn@BKgZv5j`sV+L+0j6M|` z^(n)B%lkBHCOF=x>ErU+3#yF0Y~Vq8xK%cn|Bknk$^_)jS5d2;K1XmIe-ETm?sfd0 zir?SoV|1V~kk?Raf;T=Q2i zS{9QD_gP%spsm~BAAE82C8|ERV%WH)=jP|q+~ok{^U2TO3u7{p<=;; z3g@5eUmVrDPv5L7z#lfc5(-?9Kka_t?=hqH-#m8+#3bW+i)n3ZzcZyHR-%QlQTNZZ z6WmZh-py1AK}FV4rKg8zf{#En!37HcG~S7-Dqnlu9g{#z*YU5u#KGO&%|&qS#gp4B zhB!wej>VU`D*?l|fFm^)u2lGgK^QL+88`Y9OoXG6rWz;O$k2h~JDtA`Ghz&Ja4Vhd zZ+I@bys+qr@_@79kKf&PM!WWu*Qe*seQr6y!cT6wdo28H^fy)IZ!GnZ`W$)e#@ycP z#!1^ho%JZoxN6T=uGr_i%UT_n`N>Xc`~K;l?99=eJ@z5B8-m2@K&$|r)Z zNjZuhXj1TiR^I_$c(QD$EoM`gp&xOxjO$2TNlFzXJ{RL&f8zY}FCF<8dwp0~&o;?f zctUw6iTz89r9WcjZ~Z?xaQO3H7$1AagqH|7fx;=W0De$#5^gbInv>cz!NUzMoaljO zl@6>Ja;GD*-`PC$Bnnz$xTdCKV&%FHgU-hBVKdOCQTMqN&7<8q2G!C}nfS`i%wUL*%q5m+RFW&8TY#l+p$IofQBZ0Q$63ZL`i zA@Yx7=kPmN>4K#*m#$y%>AIAD-P-pLAJSvtpy&3q zSn|-poew>niX3ss5lz3|O%Jbv8woUDwzo+}g#`!%3h8@ArSx6e><-tV~9%DgIhSn_5)glzQ z36O^nh;+WjC=fS*j0(m+4z*a^=#))^obf{lQx`DgZAgg>>Kfg72+oCV&;e;si{LoWU|io(iQez ztbFj~zP+am)>eowU|huF0@q~3_QVK1GrL9U(GwzWyhNoE85$uaWuY$l0zVMd0^Ehg zs1*4b5gry2WNGH*3109fvd7EYMv;ZAWfSjdv?SeFv@+Rx;(A!S&b~l1|v~yc+VQnvC@AWeF z3-L$<@AC)h6Z)0D*BZ5}-wNmTu>jwZ!~dk?z|uIqk*8Pr2)1@C-H1lxgk}S{<0960 zgsVdG!x_v2YlDOQeVcjn=gx2i5qTRucdmQ)jDI+EF!txTJ;SR@@zQ>l0*${Zzd*<1Ss!tbte^6chk5L`E z{lv-xd!C&za@_t=m0vxq#lpiAyZN6BhVLusKkwuYjL+}A5qClN-oZjbrZp(Q*Nq%i z2;&#A%oM+Y?MB<)Tkys!OT`4YiiD6TD_xHwxDBy+y2Hn2GfCU4COpxuaR6T`wZI_=L&0v3h6IWX z6Gg=x=B6kiLJD}|-4I1Z#SS#%btB9t9jPE8i2Jkx0!S7Cv3kt7QbztLXAG52RT*uL z5sKTj>u1ie5nn#Tp0kf`VIbO^EjDL$0j61IT!k#t@MyyRlGv3n_Gr&BUbqmr6awEQ z;2R3-7&@e`oaG8`Zd^G7ie#8b1&B0v=x8K<03J$O8dM+;($Wxukpbn097jYTZ8;J}o!wsokFWFRTtjp6;(M%*hU2^m6hW}FmL z&y(A77~vwkC*;Uc3a}^nmga#(Fn>%Yp$M*R=%(4p$xKMjNXE@!ySA-c+TucSNd}*t zr&*!QJ6;e_j6Y6js;s3!xvSIdtZ?L!3lCZ69C-}cYmZ*MaH!wpnKLKXd`Ew4+u4NE z?@t+7Jm>w>{c?-Oj!IgtXYbSUcQ0SDYsi3sL-q|BIB@X3gX@ZBhej?R`_Q93x^(HW z&-AP#u^+Ypm-+e1F4WOg<+u3n&`{)6B$pNP4yfvP6eY(<8{3a8-Si*aLwO_C>jdxCZAz*A=~1k`+o!cec<$lGSQ4RGfq2F zCg@VW?)`2C>}&~7GQmQsIClHjm6cy_-*Ka|^2Uy_YX-X8=eiGA{ZCx$X0IAuymDah zMkXJ7iYXg6YImPHrqyiRpTD=TaBn{QY1GbDszy7}9&`S!u3gE(6X!;G&_NTT3Zu28+9SAOflf#4XtN z1nGqMQ>POm@RaTWG7O#2Fpf=DHk~DF&t6%Za9>1Nd)tP~sJ9t`ECYG(9g6Q59-5wT zXXisQ&J{({zQvhp}F7fFg`hXe22U2zrb&TwnL7^nuXA7W@xJP><2dp zl#2^720&gI4IhZUdi+WtLl*%4OUvyY#DCb)!%&5xNZ)#s!xi+ZxNf7*|T zBel1-e4|N-7ScrRhX)?+$G)`BuQ{b8o!OLh4qmKyTOm<#sE+a$vPbEpXn?F+m`5LLIq`aXdiB>AXH+xR+= z++84#gNLfuX{6xd_Z#${$d^7XB73MUG+;?ecKC($#tcWJo;cB8@DGi#DrP85Fo?J_ zATY>rJC?#kf9;r0N>WJV#5GZ8LKEo?z>gQT2c?QuF}nukXlmb0Sy`LVcoD#{e0*9s|hS6P~2%QZvd5E{bEt>8?0frRyLsAqNM&SW`yfrd0Dls^aUmpWg zvyQ1_ZyHbV>MSxmot5+ho1e}Od3xY>((#Z@Q+3>@Zw@)u`j4aO0|%z#Pn|?PSk*SC zboRMvQ_s$tIkN4R$Jj;wIbig8)YF#F!_OD+UaP>)JI@0)5%hw8KyJH~No~1IN@*;U{J1L0%C2hJxh$7lpU?@T*){u{c9^Ji9v?s)%?!kQMhY#V1uo5W z55<#~a7cBEFQSO|L>x$Nu>I*4%w!UaurOFhNm7fTA%V+`V>^xRpyI)#h?g}@6jXGr zQb>5+ckAI0NEIE0mqV#-l5Fu&Eu&io2U?opWRGN#?%+v&x64gd(PEq%#!atH#r2i( z+(P&CL7O*RezB_fY~|}SW_`BfhdZ-wom_pk$HV2_cH~ENdA4ugMcE5CRjpX2tsXGD z#o(;24-77oo|trL%hoR!uyL%g?>B7Ro9k9&RtyeESbVsD?$I7g3Lk#%xrZOx%3h5K z>J{6f?{G|O1?aR9GTRDm8LwXvUC88^0GLLI{6Wkz@|!TR(h-1V2yYM=doQtt)jxqR zQjluGOso{6S$9Q}hQpBuhr@N8p04Pj9JtyJlvlcC_WkwZn#(gTt(Y^pqUw{mFYny- zd{m}(rBBb!{nksKhl1TUeg4CY%WGJc_Wbf44?VO!c-xJKERQ|^$|-HR>>;t~6Y>TX z2P~(HCY~cgO$D#|>9PZ1k}BN;z}8chN_R741)|%r&T?DmUs$VR61!Mbe}6&nPxMcW zi;apznmf8kw#HdJaJnL93lF`ZY{3g}jTNPY3~L$^DA3vNdYzf_JT<0#(x~b0O&>M6+}cjgKXm%Cc2m1lKI;dhLG%6hD~ArvcyY{2A3nN| zd1$xyJ^JBG<6fLb{K{j8l;MzpvE+x~d9p}hit%kmnMFb&1Em4DlVSZ0UqfKSPZh_f zne>5J|24-4xd_prUV~{ce)MobDi`C?oGhpD2NQIuNd|)Bb8^)s)0U9`4{z@Q7-f~U zkH7bAlinK%B$=5clL858B%}`MAt8+#N=O1E6h#O{1cH$g=}mMI8%7AIsEB=wy1MJS zMJ#K_MOSxS*S4s;x=7}o|8wp;Gns_oy8rL{e(r{udF#3No_p^p&pD?Z3_#adV=+rG zN$DEQ)Eq9k4Y>sN2tS-Q38uKLkhnMl=5S^XAADDaI+khBLmr%tzic=9;RdmHdB zQRveWi8UBL`HV2q5G5WnS$!sQWMVRGC_wq@C&KdoQ&?hyzU%U;}j&1q}Mf&(+Fwk;{t7PW88 z%iGxAzA-<4qn0owFD&{gR{ib#6B@Fe^oQ>HVDs$CHTxSv0!-F5;`BK;&kS90X7S=P zD?(@93>^!6V71$&+2H3!Y}Bus^ThkU6dJjG)L zc44LIJKS&hh!({}mZ6>Pe|st7&gk2MHMuI=uB|iVtU2C);M>EN!{6-fpT2j-v1xmz zlZ=EtSz+9kHv@DTyuPQfCLBjjE7$(Y^&ud=Nd$&2BL$$={I6Oz39{8d8^Xa&& zE|U83DgJ!We?j%&?}hwE*Ne^gWQgesVn4C(6nuoa5338ytX`gwf8e)6*rp!r4Yxi- zjTK-U0k=R_ZHH!n+;PaQhclpN_zC3JgOMA4KEa3i$QXl%RiTWT5HlAVqN68R$^Cs9 z5g`HNwVw7ygC3M2rR{( z>1YQbSkSjFbyyS{o9RDm)aa;S#2p)BqRgYof*2Vb31}2D4R{im#>Li7j1*E^AvG}8 zWeEl*l14+>%N-{dw4YeKq`$4Le@W{M?cm(GZ27E~mf7O^W$&KoJ@H0I#~b)KxAcxf z_jr5XbBLYyJ+^P(F^mPcYKRXAzp1tu%+l})!KwFaXP#Hs?0}tc9JlDl={#bpXiRaR z;ab;u1AEbNUl#6zzZyLR=oGHQZ}mI6j(*eqiq7Xa?uoj6j^lVf9jEh#`p&hu3l9qn#(z*EJKPXrw#Z}o5dd8F*)eg(xg_2ZttuH$$<9p`jlzUu9y zytZi1DE`~2Q#r93=m({i`_!g6uUC8d^}0U{+a6n{N~oK1=AX1K9QYQG$8({Bc%w|VXiy;Ep#N5{(XUrw3&Znq zz2}?%@p{}(*VFSnU>BqJ0iNM#x9WQt{eO1R508r+$m#zxr+*U0;SK)2KkLuKIsQDk zl|K*X4ZptZJkgKy^nR6$1bDyNz^{kS%bI8$#Si#zhwg^ouoa?xbD_(DzXVmB&fkyg zd7WjI>MUdZr8ul-l)qrF#!gKD$r0jwc{UA&tOY+J&R5T2DwFg%?X~cm?l^GoiY%r*|SIc?&tk~xt_gp^S!%2-F@=bzimE!Xy2bU-K(8_>Ev1M?8zN3a2%mH&5$Ai9pSMZGFEoA2l)xn5ZHqpi6TIvW06B-H5wKt#92(iaIsLj zYzEs9xuz&}xt=H4X&}-i2*{B+*-Fr>)?@9DYZrI#XWozZ|E0(8rLcW>_C7SNx_{T2 zd&aR}5B!mx9y|Ud%Q$=AODz4q?mz86cxLk_hwnoh=1l0LzT5+G{)bm~F2#QIq7g zm$r%GA=@1B6y6ibzLJZiN!XWStz$&ILO@v`NTbb=4N0n!SR*h&0kR6=Sx-6dN?0Nn z9gA(<)4pu?j4>yYZ+Yd0EwA3fz8W_>zi@WStXt=|+{$^PO54NEtG~wTqCNsBQ$|X7 zPM{@+1+uF5-rLH8v@gGTPw9Dgv-ai1Pqho!C$|fml~N@Uex5X;Qh3Ii0YH7CB|-J{ zGRDTB*cWgZCVL^W0gzWV3X{pEz76;5K|9?Ob#fX@ZiwdqAg9VC4rX?pFfblBR?W;=HJ#eC{6kjS=pU|E;bzQ}3I(F*BDjZu~LC5YNeqBFXv7v13@q1R6uWwyb zw)%MgnzA*bkNcq$_pU8lW6N?s#INGx*JAsVRAIjhHH?5ICdCBOH~!rQRuR_1X32A0 zNaW))OBVLbgO9Lr``Fks4+m-AX&roq@)KcTJWq;`O+%Rz9juQsGz>vL5q8w6IXEpX;+$*>+G7n(SktcUt};H@8o#X_a?xV}kEl>V)r z1rpML?`QSv)wBBb&{h`<+vO+a*8x)thc2Fm7?N6RwE=4n6^sO|48A~$-If^yR@lQ7 z(s3zc4+TbJE+R4jIu6jY%~+vm>6DemIQ_p=p3xeHlpKc1&I~Nx854&!)BQVhJFaI5 z)U|rnw3U@>Kf^z)e2eyTR<;GU_Vl8>ydwG=I9iZbn4e!bv5-AnpdTx6exC1TliB3$ z7`>Y9+T+^e__;g1v@|`9{45V0?!IFcfJd&>TbKc%k3l4eF_K{x9j`*i2+XP4#H*XQC-yH(5) zYx!6F#LczZ7vZbEJzRTVt?H6B=3@SKs;Gg=~ z5B$?H_M%V(Ix^Kj&=DiFSbaxFg@zC{fR;HC@gcCp5H&o{TN{Gj#1^s{Q;Zx&pK?bI zlFct{L=iP|F(IlZCNM^C0ncSLyaf}$@rDE>-P31)lrut$e*XeXe5tUdQ~Sk*3);(z zme;<>B8Rrp@C|F&Qdd{9u(hIY+U6Rx`CYA7`Zvjss`p|6T<DQJHg)Q z|AY2vdGysSEms+9wa;HVuBsuSiQxeu(w(B;fYx7`Ib(k7bjy^7MVswwqjq~nVd%KX z;IJZ$*=jW4cBKgPfH#7X3=Ez#FMY_EziW3xhX6c+94~~cN9b)l;!Wan6#j?0sRn8M z%gkJ*{psXsI5^AMH?eM9dQ`)m^FFx4Plbi2@wR7oxkmxXX zK9CNvM@WWN&NUGatXqxDMI_fg^Ah@fH@NDKIEj z^%$L!gQN{$MI)R*_}8hBn~heMv3r}R*2Q-EZrY`tWf^2}db?jcd%XYpW7nVT-}Cu_ z#Qk6F!Nb?vH!IJfjV7`>hlRow0J)4z&R1H{DC?rXFPu?;g&{u-!NOo)CO>%?#6|i5 zFVJ$pT~o-aqN?n~uD*(OlS@`L`j5YG;EO#|N>-1Xu;AFjhRrW++O@P|U3Kw-9A71N z&u9BOpQu=zwzayWf5D}D5RIzSXDC!lgm}_Z%mGAIZG2o%AZ-zp6$WwywkgJef?^vE zh>h{d@n$Xq>$o&G>J$f5&FxUUp>Xp{D+lQt_}!47@>+HXgt(}b_8cGB?S4SM|F3+E zTf|DKP>F@?W#Kb(H0<@5JD81nytlX(mw5;tA%QaXM?Mj0rVz%G-Kf3w@cqF-4?L{B zBUXy05MU3NZ367$NL$jbC4o!i^apX#meYiyZ*Lg2RcExj0Y%10r;6H2H{ScJrI-S z9Jb)hVCY5$Y5A)QU)s3F&+j_U0u~mZk)fTV8@p`h#g+D_+~#9^c08Yt;z~lpX}=mj z9uAT7&(3|OYn8Y6^5OTm&qXD)ixrF?ul))jy7OJjy}eg;JwuqkMB4>%wEZ#2p;5v_ z&MlO=7_&p7JPYW#W|BNPJODOZ5-;JcjtYz#6fZf)kfGMGGGj?r$xN%8XA$&oD(@;S z?J6%{Syr~PJfplkBcr^+cA>DdxTv$Ru(PPRv#_fqEw!X1HI4KD@XNQtw_=Sr8WQAZ zLhFF)keyYXKXCpv`GT|)SU;fJ3g~**Z?8*<)CV0}m6T(j3k-ELwdhf-i_&BruR98W z9{~yzmN(1=o_-ykF>Ha2NST4|z*2De1z>Jyj!&3OL1q-v(dURVD369(xDrLKLhl8nM^s9K99_r_0D>&uNp|x!PMZ96lzJLDEyD+>faejz$rN4_h zV%Uih-o>(!Tq}@G`WM?TcmH#rMqz^VK6vThv)?vCc%Z&CyKSa1)f z^{^8oybob{D8O0!lZ$vk?|1ut;9W%f3N%mT>pg#$Ao6#iKOspCJ2BF`D0xRNN8-$smtmxb%QjQi{OnUVGu16)q53$r>`}C_b+RH5c%sbSD=05$nV#xEx^5+@p zQM{iVv#*t|YPkGykhKHF7A={n^t^t>XXx_`LOOq50@@CNl}d|oX`hb?%q5aQBo38h zbQA5VbU;66*;JM+b{x8C@y!Po-gId3&Aboo|6~iqD#?I+AdWGnT#2kU zfNuzJZQxfku4HX^4{MC)nLUYPB}=@sBm=o1EFLmj;Tx8b>t*sXPN=SK&I%GOx0N?t zlj|kkIjU?q7JTeUh>1^EehQ>8qB5ysA>v`kf`{#<2ZIEQ0MrWb7P!So7VJA zui7@3mW2?oLM-B+C{Ci(YK`zjj6@&-exQCyh>(yFY!BAK5p0Sehir-*a)+&tP|IN< zz9=i8DwIFg096c#gKT66$j-8q>ZJo>Jv9T=T++(wQ zW@~>~yk_jg((Ff`ZwWmT$!u)BcIv$L@XXtL<{lAWnEcsoEmh3`7%<_m_N+1iS-=cr z)Fpp-1V%*PJm7pFLm;2(jHWt*FmVUgn_*{$%ybo{L$S=!Qg`^YWPK1i_#d=)S%Q{D z!wcM)rcA(I94|bj8s1E4(crmcq*o5!0FOCF5|qYAj}EdBI2ix=kVnCV#e+70+O*Ep zc|*NW;wgfs5B+EnW%x0@;tF1VjS~5&#DX zJ3~+|kO+WcE=Au_rD*OUgZUVou8Xs}K^b>S$a@;jgT;r~l-=yhM`hvO0U^DlrKJRa z(zT8+6f`cq#gF0mz$NE5K^%BpKB@gm{eUc8!a;op8xO9A{TlNx5eqQ-jb~hRKO*bd z7U@DG=%Tn4viMRpWr8FMYBS_tE|;q$ye6WwF9k8uVlwPn*?BE_Ghrn5GMmE?zi6WT zs9bpGA$1VnGZ9xrGuM(pCKdwjQD~!u4v~c|M@tQ@FPOe)^Q!h~sacy?_oCJf2Co}Y zzPdfLV0wJDpZv|}wAr=wv*MfMV?C?dI@&*qEsgazJ~KY1*b>J3p-+1b{Sb=y`D(sv z6;Yj}VDJuBAqQjxs}G@oVXgwFk++erLa+og6tfHm;uqyjROH(Ur6gJo-NT7G3^j5L zCE4jEv;~Z1d;j{~hdS3^ryZ6ni?gla6{9-d{cCnnyWDr{s*qhb-LWREti~K$VXk6L zhOAOSv~8BpXrm1$@OFP8lhc?8t_M>~OD;EiBC^c~#1Pjg;2KU1_J3U;(9M)uNUu*) zLL5?^#wV)p+TIouw?!u>M@J_mffdmwFUoz|8|V|?AEkf!`%$R^zbOAGyw;cbl6il4 zAB1r2%b|W@3~ev3Ie2i*wfpv6TUJz5hTtK&@5m;fo+Gz!^4WO%@_AEy>gUa?_n9(} z=wSor!K;s|@51jpom&5xzE#znCO(YNtp_AyIB`-?mN-so6mrer7%ss0F=QKnINDD8 zPE+#}fkCEVUXsd<*{~85PzoPrtthf_;><-`=hsK~cF5nD6R+OLs}3Og zKp#DYJ{m1l@Da%ehv<>J$h@P-o4`6;VI5)PiX27YY9DW?tE1UyHiVyi3eZ zES{;VwwGsj z@GR(i#_%Fvb#5aH^!es@c#xvBrA3@9sWmDw|9Wi4e!#igH(C@SX;{!Xe zgjgG{otoWFBcB6cYBbZOPW>{t6-Y<5hLeUK7D5_28L+`66k{};ODLbJ*#bU6<#?Li z#3g+l8`m#xo6x)3GpBZXym@B6wOH;uy3VKjjtMM!;M4R;%Nu@E+d4&O6ylRJ+M{T5 zpis!iB!dh~$b1ZWg3C2B+1aRBFe8w61DpZ(296>2B*+}h6LsqIg|9W3H8fo*Q@X8v z!rbQ0-lVL?=&gnqwexu^y0vH6q=M37?Ro+TvVlDLjJ+NF5bLy9kY{2vrYO}qN4O`K zgqP4)q{UGw)r(jUCJZ$Nn|Y~U{$4U8>vaivo(psX>RAvOIu)4%rz7igt{XRMdU12d z_Bp9JzS7qD4P$y2sE6Vb=a0?gM3r_Y7)OoKe!)t+3$%@5qQGn==$F-?&EIKzLr5V+ z2kHqdapGjGBwVII%~|NXx(;DRk5E22P8UyJME!s)tsqfb?HlLU6xG`q5K%EcN`1H6 z({r-6M@%d+CD42o66FWk8bb$c9acUL*@SI`-3iWMO7{#$6Q(0PO!PMLgNyAL6%j55 z+!2Ow(u5!mU(sI;3pz~#XAw0(6QCKfH4D>xM#~;aW133a+P147T&-Pfl*J{o+CGE% zUftVEbYPC2(avJs_%CeIP8+E0z_0f&GZ+>f`n7yUOw{@;7S@89&jvJ%vy5lD?3i9a zieSY-`X1;ySZZd{C#<<7esJc3B{L`}$f;Q}SOukEv&CQzmTY&owBCK+gLf|KxZ{C) z)pzf^5A~-%ec%BW#)61`o7MKNw!+?vadYTXZsRu6m}R()nWB#wWdIB(Zq`=#$NJ3} zwRKTI#$3Nqo4P#>^`Eo;(rOS1-aTngSC&J%=U7y%ub3HtrcmPZC~c?>?HPdQxMEkCY}M6k7Xv`2~oC2)eAhJ{*D@k!L=>l$O=-@ z64`dv-M%Og)cW{-`Q!EXaNO<3dVvonhfgK*Hi5zlCLXN)KYu7Zci49*^ zF({&JTDUyFY{7=L+7XYQ`Kgsr%d}$)A*&=b26}G)D5H3R+*dj=y_{qg^BgX-6cIE#$9;)cE#M4{k zq8fcdSYuvD2MwRLiT6WBa-u2SobJ{OMrQQ+k-acvmmg0n_@JDYpe>)W#u&D!%Dp32 z6OIS!49!$+YWv73)w>qYs_=+lhzH} z9ippp9c#0_?QaZwj`mk)>%uG62yx&+$VSf_eh>LI&gl~m#%hcFkJ$AvR|!bs z(tjMXD|km}L_Omq*8)#9sL4i7rUPQ}jPQg6y&|bDgFu+ISyP(tXs=pVU9-OO$kM{x z*v(G`l;)Ham6jG%8y0qkZ+&h}`t;4!FsiTJ7d!hZ?fKwQ&65fm=FG@|b!d>zXk@;3 z>zTy10Xxtp1St-+g4w@ z!LY$=LQzpcAW&#CvWk5-Ffn+qd~*BJP0O||Ye8h`zkdFv-zX%!P zcZRcqk8^f;dSFS#kf6{s95yg+@=c$v9o+Jfwmdi}*tO*cB5K?~dp>q!TV2Yn2Y&te zPx^~{4QI8)%!kiwkAF4kw1oO0wl4XM?OVvNKf=GtAS~Ouwn7*k_>|sl6G7)qD8fBx z8^-J!!QPIGhuVg@v0b}KyQWu(T`o@3C=CMI-3mF!6VLMzQu&H%_D~=%Qmb_#2Wuk) zXb5oR_6_2ubBCiAC1=cmNYYN?qV3T$_iVp;`H`*nD5Y@epJFSt{cMxAS)4}icmXuu zuKoq$cN4t>atCO3EY+cSkuIy#7cQ%FrxToIhzxWI@*Jh4%kjgNI*!S3m!53}Zc3ec zD=Br_6Rf(s5QP`XM>nt?^gN3;dpfmjE+b!AvV%Pi+38)wOfY6M*|BYYEP4BO?af|; zs$C0>@f3U*>#50D2Oq^d9>P0D2_~VG_iQereh~4GMo`Hns0v8yI+DH96gxUHI1pez zJ;=&Alc~}=Pw=5HhhgEN*ncn?P##csc$#ewuI^=?i`Py|i}&>2?x&{Rwm700{HZg>2Un-2hvfKq_)Q8*Pl~>Je7q%&c!2ZNUiHtg(>ml&jE~@pgo0$C#ZW=Y zhHyycXxb13AWsrZgt6r_(t=%tLt#J=N5eogvK1FLUfr;=Y;5=5gOz0!G5Km!ZRy;G z{N|Xm;ztREnKeKZU>tsmwc=*1uW>>?@1gN{8I5`mPhhNUq8DOUg9Q!2{FKR9YNJ9i zji#U^Q&1w=^Ed_Q0>^F^Mty?nFjOeq3DwetQO$2cMfHY_^A_}WtC^WoCuDW5*wM1; zhK=GhOWIhaYD`=}U~T>6nVnVU_`K-Rev#F+P1DwtrW=jaKUZNadkk*_?>nB;8SjBk zLC!Ji9`pyil}-f*-NVp5!2z!Bp=8pe>Kj0p8fv?+bxl*CF)AQ9Dkc*eM{D~+MOmz- zr1AcE8}B&)ox{`FAE=>2d&?k15%9M`ub0ciLa7>pTs|$h)ll;Rt0B`4AX81C_7%HV z`xhpCJDatg=MF6(t$T4Tio& zvvM24!xv1tdTns%N8<0Nccj^lg&Wsb6)ajjZURDW@t?={;o5WTN##Lq-%CPNdbu!F zXcMjx?&obg8qG$>C^4gz9zP$*8-`GW9NGh|ND2w}3=i?_L6!{3!<%_~upZ1p32Z(_ zh#5U5W{EFT{Fy;k3`<6_&?puj5*ofFka-50(_A=65Ym&CX8y%_@cy zU0t{;BlUZE1@2j}sw)-ui(lxMU6Y!XGfsPM>at~16N{|!w^NranVOWJf9ajZtCvl+ z6i<@g(T@~ddRISE%>LZ4bV*}kK|x~Uk|m8v`9u50*?JoFN4B+jBLnPa;iauOM| z;rj}Zk(h^=R08ZJ8yJc=ZRbym=7*HnO&6{LT~{d)_Ql8v5h6JJ?pP#gAEgx?7$?v! zwh??%Y&0RBDON$IV9xTHD9=HgDjv#tQZ<_gu1ap~xq4~-H9b2DQuDUlzhf|F~5m~-$f*_noL&7=Prz&JyHyKygt zRb!9q!@WoNy^;K0e~<`<;x{9=zGLK}by+gCBmGSU^0UhM-I ztgmaYN}aj==FM~0r5f{rrwPpFAAt&4I1E&?E_O0?S!JvM5=`67c@NS9HjVxW(fRFpT{ih0L zf<+vXvf728Y>@xP+SOR>ISyF~(~Wol+z#1*WJn1-j}d9aSCpzUnoN{xh#G`yiM0Rm zZ7?)sjjwMK+t=VduU;(n=Ba1s@n?DdJ;c z%FY4+fkaPyu);6Ch>!2+@Rk2|^wwoXRaLa)$bS>p@O}x@EqJ=6DvE%Pm-UZIEDHfD zmi!5d6IU~&3-wD-3KU)qs_dh8rD4Rbj7OA`vpZREcgHWCed@^)_;Lu^Zg$YNP@g$u zMFVXk^Z|TAT(|>m&|%1NbXhm)mmngDaoPsEi!w%B-d#kVtIJpor%&%UH~OA&(8n#o zdf(~L^I^P&Ne(`v&ND*WlAu9e-oMUkfM@XYgC8}}4_)Z!L5~r8kl@nJ9$atwWrte_ zYKY5rjPGw8G%g+NL(q762hscWP6Ul`v5nM;&THUS^Meadr*W_+DOuCyJ;_nsPUbtp z>2!6ZgH8csT>;}}2qXlDd_dbjIGeyXB8ub{6n6ed|mWJdP+~#vk^%? zg;032Vxz|(FL6*H{F`1L$QLSvun->?OqOA(NZ+r_Zg8j2tCylIk0> zrd1hJy*5ZwwU-@pUfq_Qlrd)Z+T@hRmM*Q`u>kOX{?GIqh<*d0Ed~z&W)M(I8BSHu zuX?JDVW1zPc~oRXs42|!U(hcNo#7+Wzr-=^hmr4C10)urM96jOcNluYh&X(gy6{Cp z0qvBX_$i5P1|TrtQUvB%k=;QefdL-KoW}>ACXE|1gfLND(}bl|{1$UadvttR*?9bk zCdU`$RiKWH{1_c~{2@-uK^NQvAJh6QY?Lob$fF7#i513PflH{D;a*Wy-OHl3`FMCs z2!w7l8L5vG6O3a`V@F4Z#)icX?PcE|X>?e|ZQ-{>;nbt&Kr$#*S>n6~GL{!XN(Z{?8xTtB9VIc*^r3 zbkC4yIq0Ka`N7x<@}h>q#+c2*^~|(tm@D-x6Bfvq#1o*+>U*Fb3CZ$tF;~5v z&)WZ^IED18b(NLts;aN8th}~5ySh3%tGZe~Ue;AnL6Hj;6pNqih|d2g$`oq(>T$3bbljTp zY0B1x2X-e;ncN4QJ`-+3yyHb-ybvTfq#wd~$C9WoNL_>S10XRZzsl`!3h|qd)GI zr!>xL0(~u7Ez^J$4sxz4z}diY?{9!vZKMEl7@dMxkaLdfy99ZybtE0Wuw5A?nv&qCIs5x+ zz>mD&I1sW<`dkgTsHcd5-q|Yu!S16Xd$u#)j)DXtU^pjxEZ|X4_qhWBxMrYm95E42 zbGF-=A$VPSQ z=(Z8hh}EzIQwqOG$l2t-a|w|^jv=^@9C=X`vO(cImtO&=I|q#gG9ki=l0!08x2=%7 zcwxJ9gg9|WFu6LyLsTsxCM`I>eWEcgF=xjOEn`b#O4=u=hNQgS9{C#|&&5TH{H$r} z%6-P*)kX8!q*R}kJHU?vvGQu|D?>fdMMN00AJ&X}cJV$#PG3;hy3`TfAfQyo{3UiHV8% z+j{2YHa27>W+qn?4+C>TjtUcy@PNhF<0H@J+;$hOpQ~gU2QgxKjSf@6CY-e#;c4bL=Fy^Y;W6} z><6LAag5C46lcI4jREKfq*kP5VFg%GQD~1u6e?K+l~xS6Lcv42^g!ons~mb7(dclo z1O^4TyiR5doV`X%X1KweW3;X8e(kmHd)QmYx?g|2`?zMYz5V{V`|dmU{wbPo&jH_c zkNs}QP-8gH1yL{qmMMckoB7%R=EU!!09>b0Eb6S@hkq#)pg|Se% z;t-lZF!)TZdB%nfGsfoSjg@D!t7gtz-NLM?NyR#!^~wjdzpHoQ`J(1J2J%4~|C0UP4ee!WG;ce2TJ-+|0m%nFglusmNs}mq~ zk)_T4S3cTo;BDJi*fXAlz2C&gI@~>JgpY2w4RtXVg(X=s4SHmf!RE8%j>tO5YgkzS(RU!0v$T%3_*)xK(8pA;9D)IDR?xCthvzf??V$Lz!)^r!V)v>YYEp^jl+8d7$UzKQ!#TV>{AwNA1 z`RPT6{Pd!0zLv;G#TQWDHqhyJzoP!)hpH#&ZA54~^_O5utfObG=g4tcKBfKb#q49r z{qL-~?%c72V_Cn|K9P^k+FfgD%$e92U%Pu2#+6-aRVD(fL~$w(9gJi)D8Tq|CRCyE zcazJZUHVE z9ZmRXq%DQC3h9hnfni4EL1%5)Wx+D2)IRxcUe!|h{OEc6LZhQYCl<#q>JEvH4#}f70~dV< z`kC^aCi1!RLpkM~qw2~l=Sb5fzHls|@7;|X&h;f6%lQKfKY1^U_`Q5bd{bUtQ+&g& z88dd_Rd`pO?R9A?_8ZkY}N8_smVSGtu)xV%#sQyKAe1XvLx{@Snh6UgpgOJC2IgKXI zHrTV6w2iEwU^09#^1zWPpFm#*N;bxsO?7U8U^cR1ikj`sv%7!$obtrpy@y$d_BrO0 z0Gidwm(xtN63s%?575f**J{+s_GW6UAZWAbQ>@cw>G$I|zh9f>XsiAOZRKBRO%&zZ z?FA~$4zk~^p;p$M4#uEafQtrj1&O*ZQL$*UzBp`JHT}dj^4`0}9 z1u{G`A|%Ka<704kP_UU9oJJyedE6yT+n(poXx|>R=H=xTC(q&lWD{@VSGdm2M4Lly-k2b@UjA~HsMMR4gcW_ zf2d8FEawVs8aV&_zqQZrN1G`7o7MKXGuNAp7HMy#k1s79pE7CEzO<6!j8y9+J_kK) zuWNJcC$Mih*0{8YaLW8o^N!XY)&>q_jpI^~j!$=ND&%Sm4e=90Lx7Owp9I-~WK@K@ z4peuAKB0^lY#y_hl@+Drrlb|5;s2HS0rPjK7N+9=_!SpdHfB#&etfJc(8tr$%QrG& zbfh<8Hhq*jLwagdgqH{Y=Nldt9vvFs85WM*PKeKY+`d4Kg3PHt0#8LoiWIKI=Y)Sc zMO&*~s(Vb0+VbI{EeL!B)dMZ^TXtWJl}k^gJj~&|S@3gXC7~TmY{e$b^n3$oCj8gK zPK*?ZFJ*=sLv6Y5epJGCQpXoB0O&gp64lK@D<16f%O#zMLdp3#0O$90rp@n{$Xzh(l*Tn7xQa9XNJ9 zC}c@Tk7{o{_#mFY8_$31|M&BQjT8cc=MU`O%c9%nzkl|RyL#N8f9Wdu4??nX4y%c? ze+g*{?=l2V{882{VpTwjI3&iI{v+7P{ku-!(;nyHZ-1_mg$G zGiT=FDVHkn4w1iO0`DWJgRpAxcc7OTy#t1693nHRFBQOrWfEwkTg>|1WCXO`)xN{c_%&PkKsSD+wGJA;FfXx&9I)@jZZ@0Vt8dO@$a5_a zs04G$&A`-3Rt^Y_QQWglQ_g*w=x0YVGARZlL`P$=?Wg0Jq46ik({>O{a}E9Vqo< zZ~@7(BcDfdnFNy==`0<|Wikyqtbj{jRA^iG=2>hDb}vY(8kJB~V2a7|UMVNk7U#^H zmYiCjIk)8d$ne-$%UE-2i!~u3HgYV;$JiZ|yR~;9YnpY0;bY0|-|qffXTp68wTpOC~6n5EpSNb{J6}@k*;1ov-H(P;r$y;#GiBz$q0oW>iFQ zAYy*Nc;rSjxI=! zuI^}_T-_8B7$?718j}k|(%k8#ZPnA_;|dbYax-hGESuF>kcoU+14rde+S`Wpf>9{p zJe(5^DHxSoAQK1p!(xrm8Lp;7r{*(qOjJY|;zy0l=oI{6&Lyh!4GZo!3++rGm|J&A zT(;d@xT312yQcf(HK*oU3U8P-qs-d0tsp*fRJn36ZBf&d)syboee+K{B9?`e?b^_` zsIGWdP<;?Geh&OWdWFZjCJ9@K&L{jRKun<#Bf~1PXY0ACfqn#Re-p3?Org33U@HXL zVDxlXQ#)}RM4i;jua_0J=}I>sjw~qN6qFJe=86p`q%+h-OBfAL4w~&44IS@CaYw|X z6gK;X9FsX~hFTeK4qDoNdHn1u`Bj)An1W=*Hdt0kHI4$i4xUEG zK^{SJ2Pi{4m{x=~gsT8d2n4VLHKq_ti|xTb-h{{_2jCj$b3XXgH71K82L=Vs0EW=8 zfk%5M%wM{G{nEub9=nV33ks(tSmZNOnD*fW#8s_3Iw`#cG1m?AYJXct?R^&QeNg=X ze%>f&OuRQVHDn?oWU~XZ1#&TLh^khw%@YWl$HXhNT~IAGe_!rdgZtktz!_x{Xb#b8 z%W-TWYL1zYmhGYI*0K(%+&V9#G-~m*o?VALKg!BqB=_C5Dy?M7q_U)v!>dEK-|{)d z!!w%-JoEK9y76pAayd}!k*|rPncf; z8%Ed=%@}>wdw59m1<6CI&qxbKE}(S$6YS+OqEZm0IW&V?zWH~wz~nNEXJ)&9&kUsN zwA5TyG!FbGhQ#Euf;36oDoLTyc?IKTBsz6`*-B^CKL(F4n`{d6ORdx{vCOy--_*%f z#_+(glkM88Ml@O+=#swCehwZ9MAV(b3KT%{C96ej4Mb`zVo>BEvVdtwst`$HfzL5G zC^8}_CO9S@#Tp&%^c?2|rf4o=-C!r{@+k0uuI@?56|jH*wb`lb&N=f1r2ejUEfNMC z>G9cgB=A`_W=_3(&H!=X5$S2|jQSU@k^My9srj7sgO831q5)>dP?QLB7DptvBaZm@ z7z%R76y#N8kw+;iPB6&xevPxyB1v}iAcKs!?Ev#<>XDq*da_e z+=RJG1B!WTd*$-jcl9rN?7Q}%6n0tcJK9TgVze{<91JLgd4iKdF?Hd;!0L-#7Jdr| z0F=UlmJ}dK5<=sV&C(I)J(T|u3r283z0zK`t&^>F%mmZ;wNr!Qf<3(>d}GI}e;ub! zhq0-)RSOrWawk(#(&=@aNA6bNg{|;feFO+S=1;;(AZS98Rc!p#7=a;2EeyPcby43C^aKN( z!v?xG#PudkNXhiw-WfQmF*iDLjhy7Pefn=DK2_^i-NWmm&~3!Qr;R&h-marMCCh#hqax9ZPQA z+9)a;S&P;e7e}GxtgO6T`#FW0`{SK5&(HF_;RMgmk|7icr`&q*$L45B0T2hURfzyk zgRAzHvbAJ5v$g!tUBmOX1Qg~Y#18&0p1sB8;?WfmET-Tnz9wBEdyB-^+t3iqddD|n zxe;=@s9wF4(^{*>FKveK2| zL`KYPpY}8KE#)_{VAZbSqiThz8n$apd0K*Dj+78CP7@w3F${Mb3JL%-LfK9-#*a-- zh>MMO&wAqJlo^4X(RUG=+PpN7E`?#A3wCRxdwXq<4aAchC zY)jOZi1*o#{Lk#W_Z>?({_eGF-#MOqEaxQ_(SMwUpVgMYc%IXc*tl!@w4I;@`(c&l zZy#lUg!@`|a(?nL84+mDY6%1mpX)d*X~`rsK`DWm4B9q!6U3i;DnMN#=1@_QXUkwv zz-NjGq2J-5-$A%?g9l_ozvRStO1OZ30$g&!pof(lz>mDFYE=l|C+Fm1A7QOUbtPg_HK5Lg5c|YVW=Pi;9RRLw{jI zg*!kbvw(AP_4M=%^b8D%bf&3g$mMLNXp?Yf4(UtD>{qgkoXf9Y(B3(5Z}jMg`?WW0 z?{}|YD>ptf=V=t^e9vlSaat1XOS9#V?FHB?1BGO(1t4k4O5-p`V0JqaL^-Q8v3w(C4zpL*`x)YsHw>T6Tqc?VzQkH78NeeLRfoB#dqE&Erm+TZgn z*_U5e?+`VQx8NK31zyjw@#2%rfsJ=R@7*%;d8J&`ls^Jbh}@I7{^#-qF%TFpRsA%C zet(PKHT?Hyt$2WdNK^3^X*UE)XP!t%UOyrh7-@ttU&UK&PoM4Ymv-AC@vJU9YdxN2 z7{u*kzoYb;coUTgfMlma z0kWCrShI+5o=1dj^Nc-(527*N4Lty+9(U&2J#w)Vs13si~gTN&jwn6*zAbVB^q*ImL_on-I+kHhoN|Sa*}ONpI37^ivCaJH&fk!(5#w!(1y%M5036GwiZy|uv!BN zy5uZ?bIMae8CywiBbWYMsV*$k3!1AAz(6?>%ZdTn+&XJuHk#mm8fiv&f}6Kh4Vm$qLl)H&|H!nDQ`Iqsl$jzCN3^N zI*fQ>EL}$d>;Gm|R}mIiRm!@`D^`}4uB<2r78p2S!UB{2jW;`R>6jzYR!XGn^rm2I z)7>fDosXg&!C;y`3JU?C-4PFRpL{`T$DTrd+juU|L_$`?Ly*=PpJYtIwBf;yPVLc* zS`PRVw;ek9Tidyt*1V`cPRGcf#1EUkXK~q0)DCJh?N0(*_vygwi+v8fK%Y}~8%WUZ zvX{WlK1x7Mo=}M8P`7km#QRb5jzi}a@S?&LBroEQ5Q91gGkBlX)VVB6nN(=djWHK)U| zt^|>oOrfCq;GsY&RurCjkRhQo9j4GfL2SbWCo7%*aAY~Jxoy@*5*Vim?AWXw4O9<>8Y5$x!jV7+f3U+vb)v{&r&u}>Wu zNV-_b#jGweHXzI4FP{<(hM{<*7ftF&?2xAvPbvdCrYP3tC1wct#5*M-x{ z!SjU=aa-tThPW+|%NDs_VL&s64pfN`-llEW#<33V$S0rBoPdAtm%xYZEQ54z)#}i`eP(_!PJg0jLBWrP6l5LOg?K@UH zWlG7h<9n>xld|&*^W|S2SvzsY^t^S4|4}?Px1c0-JmJ;Qe_dLY_D}m<^v}TopW*mr z=oPWj2iin60@Z-C2M*&F@Pw^SI;UL=f2^kvX65+y$ut{CKqP!Sk%oE8!PKF)I$+yV z)1`A9+g^R^jGqmUrJ>*29I4-41sZ^>(rExz*ny#jEOHCx%V)Yw$LC8b=F1j7Up^Z+ zeEED47D9Y}6xVwRMK!0%{|i?UDEu!m|1^;1LA-z6_TtbK;Qgy}74cfj+U}`(U!2sY z*b9ZbNUyTSla5Sa7Cq+$yh&v6BdM^B+xw=O10*~(9z}@xOw6WvNj5I6>-YQiMO2Im zi1wAms!4Z!ckda4p-*8m=1_lYf6%62Yo>Rg?hWkg40DR!L6R&u#K|rYioh=LemP)J zGDboITOdau8GY~~${ZNBZ{P2Vt3}x_+CQ>PoASuX@4lNchbeu?0!L%pVf$K}2Ytj( zh_f0ghlfK2z{`dtD2&VCZBe*tJ0a7NlF-(1B;7mG;At5%xwS(3wodGjJ!Z9o&umBK z>$QA!6!<952B#|@$5liA+h4Xub*R@@u zW*>z$6MNI;e0%8wb*#NteGTUg`2L!HzxtYE-iwz$R?gbD7_Q-KI(n5{Y7~9_BWhV=FKP83Sl9KvoDcK5_Xdd;)0*d{MF;kG9yrjs|3K$KFc|8t0EO_WAp1F6qn)INKlC?~(5XkrfF8U)#4pQe?RjRT6E z)3Q+hT>RKD79wScFz+#47}ZHa`E%~$fqM)t#wElFI#Dt7RVNEe-&UNI;6{^W37i3M z9QNg4l33kkRfD^%8t=B9uuxq-Wra>XO>oMkMT5#3czdDRDt_#7R5EzSqWg#G_UJSo zBW9r5j+C9e%sL5PGkF_qJWPR9tqX^GR@fnh$VZPR@o;p^=$Pm+?!|2=`OOariAc9$ zU?T;M`5k=x=T`_EV~;)hDEb_(8M_)j|K$V^J%u zWl*AcsHsFQH6E}$OqKeN0jO70soeO&==S{zYF68Dm1d~Um3x_1L;Hf@Xb4^o_iD(^iDj87l_kTr8B<$|Ux#NwaXb|9-LO?U%LVg*o~7Z(_b$#|+viE9klano8W~Dz+?&t z4nW45!H7>ndGM*^)EFrBA(87I@p%VyX8HZWs86B6JaA| zY7DJYCSz zM4JNk0`rEyxuY zMP^QBI5Xmz+rqYLf2Ie2_@Vx2^wDNskhNeT>#Tw8IW|hvdd$~^U7Pme`ugChOM`k;9`%UfB z)}&@bwQql~dP@1>IRFTtPA}>xnGAkHq)^N)Wm$TjE1I`dHlznHqs0YYKc{Z&@|Z*l zkqO2KSLK0V9b!qYV@eha_0<95QVpw>Q~NgbHE!&Fs$}Yvu&QNK%Dt5@HXdL8*j0<} ze%tg7+t}1yvZ!P4T(yH(&jb%UE*xlH-{^0$}7r9gRb}TCCZql}XV|x4U zMav#veuDV)Tku^C=R4F+9D(l^%ZQ+cPWc(iRqu%HL zBnFa2Pv5X%ddkF!De^4DKsK*xWkqQz)Zci&Rn}wwRMK(rzQtMylem8OW8giF4Kja#_^S8jJlGS;df(49G(`l_YD851)@jTR%%63g?)@oK72k13lRV0dPhV;=D9WfP8z*5mV6bx)`Y>kiB- z>yF&iE9NvDRp0&k>#q$R>lzztGhTinIq-gqLafv&z6v}quUdu*>WHs}>ww!7 z-SN)4;Sjy!a1&AmENrM|i`kHq32-ff{|vF8{qdVK>0geYcTf&91^C5;;?c`&H+Ogc z(>r&4@uYPyqrh=)e@(tcMT4EO5#h)zvVF7cw>fpT^7?Gv|A}J1_@Fcv*Zh#}8+HvU zpqnW6iv7K`gbBOFeNvDV{NwK1jr;a(-AecMuzqHe>3!kW5IV38lbt(|xsjb-1XpNJ zAL|!;ZRs`K~BG56HsLw=myLs*1CHpjrYqP zUsyfm(%srLzuP=&XD&YW?TJUIj|SU_n&ZT5)I|iZ6OHf;2L?z6aFLl3E&lCMys-u} ze%z1yo@6JHZ}xHMPq1_mzzlZ*SB(l9SBy0TaKcQP8<`GIB?9#@L)z_`T9@D5RCY~E zQtr%@#=H$P%dVN1JfEE`oZOX`mTAqIu_P^x=xwt9QC=(WLZ3R~c8E8Bu}u2u(s8rp z7M(Zm1i&jyZoxb-TBB*^ny9y=Rx)E5B^r3g3_;s6!8PQSzw=Si|1r5`ph|l3QlH&! ze;j>LAh(DK;u*Zw;JwVAY+s5U9l?0^rF=(c!fY`ErLw1j7VsBslvj-Bz;CwSqpG(v zrLY$3SFmSAwe_~{a#b#So;H@A8~c|2ORWU?I)y5(qZ5S$&|OXk=q|{e*4WMpWk@n zm$x;ae(08;Jo@x8rZB%7{(8&JA8sNxI|`~EP(H=m5QSq+8g%hbq3$7Nm(64&dHXZ5 zq)Bd8f?xVR;?tQ^U!Rj(UoUBh75r0uZf;#&ZZ1@1^fN3kN-$qLb&nE@odVt#T5%F< zfHRq>kyrqKO7Nw-pB6uQ8in27P+%2y*Ow!OgL*VdG-PggSh|2JB0xU&c!W^6>3F(a zAERFd&FBi3S(BVs(DX(JY#O{0Z`Rd7{$!Hx5k?UaMk4c|_BWz}?I!ZO>)F18V*e0r z+u?PPg!knEX_BFpj|ay@jEF(Vx-wb>ZcajrxDSoHF^9bb|L1p(^k;0cZO{=Ap$O`N6`V`m4mRZm+bGv@62YAzxATbup;-ov5Oqto z{v2qQgm3sGw93JVTfCbIN8xY!7xxeUhy9h2cG^Y{Kq556>khg1ihCtS>L|e#T=yW? z5$wE_>nOo$hRMM#&k^<+T14AupBaqug5AOCk>drVD7{fl+wOUFkCZK#I(l4iLG)}& zZ!~#pRzUjvB1d{7X1{wnZRc)%R{Q?`YZ~fvoY|F_ zV8#10*(K-_ct2H0iMZ1HLxa7&gh&QZ95=Ec6jjFi{bbkcSxVc^_S+u3t-WUImV;ZS zy1jmK$Fy0ikFVSE==y2pHCfKKBcId^rstFTAM~-FLaKDp)abMTN+C4^QFQBb0>;lM zt_$+)2{dB-X)FOE!QLEiH3jjp3^V{Fi9vN6N`GHU9!c4%977rJ*0q$Ws>#a2MmIHN zyEUw8Pt(gYcU(0$+1V!hJiN<*w6*_Tf9m5otUs&Tb~aqU@A`)Bs;(Qls@&hYWOm!8 zGn@APdP{RfO}6`3&S1}Bw)hgyLh=C5dci3%yrD>I5BIjSp*aTCA$YLRRqcPxN$ZSG z56X{j)MjjIIeX~(Krh~hdb?QP|7p9bTPIhy?p?a!?nNaNN(S3yL)9<)uhjJrPb+l% zKsdJKq3D7CkG%VV?`r%X|Np$M^Z(UkvT8Aznp&({wfrfWuIqVS=g;fB z&biKO=WqxL{*eSXYYzPJK>bD^RBj|cW0rXOBuH80*@xR;gY|Bb48Q;ybi z{?qx3e{Rje>geB((sQ^8=AXlta}Lknnf;w}fBzi5e3^e8)4XecIQQ5eqnslH6Jq#g zZv6|a;B|ZOc?*10X_`iQpU55;9-lcBezww#<;cCVH*{bg|&u}ks)BYj* z7q;BbSQGSn#xLUvjUbdq?G5 z(BtUHBQG&$Er{xNc*4njPds%&_wI)se`>$+Da0WDU|njQZw&hn+tu$Y%lxl&_vh7P&oe(sKdNsuuHty* zpNDcyWAZ~TPD9y3+-fpq8nNh5nZTpV4|woxd;k4Ec6WdG&pHY9qX%>jDtW-HS0(o4 z|Kc|%{?|_XH(b{TCiS1wx4&6`)%kY}7$2WCF1LMs4gdS=%L=Zq1I}x%4z71jOyu|z z;$FGo{Db3p>bL7}4cUI)a()LI9G<+l`@XEOhq-ge#`pIEKi&V=S--yvTR&%S_g^!a zA58x9pH5d;2`b5?zl6IcasT6_ys4o>d-zfIPT}~*zUhs-uX%5 zIEZTXVtNivjto*}g0@31?|g1^K1k#_wk53~*a@dMby zXd7ufk209CUGR-Jt9oJwJ zYEh5gty<#|_mh@_)-tW_Fs_xf|DKk;9m`p4dy8#vv+a2<;WV3VZ~NQ6u2p+p^EjR# z%D(W&^vyii*7s4{kZ~)W?eS08PZR3_=FMrHZ!Tqh{)3kNf26%EgUx#+jPJ2(XVkxE zJM0I4OUsvkC!g~x@p`hKb`<`X>5lXMcaQsZ{Z)G%U$Fo7!2tH>*|-{WaT(jJC(j1* z^O5I(wzrja1AIm!SpV(9Sk5?(OHA8$|5?Uj-~3y8lJ8m!kZ`M)$X!~c`~I{rb+-j3fd9CzaW6>GkX{KH+0`~0-Ie6Lo^h~Us4|92+w z{08Pb4(rJurm(HcQNlj(O>3H;ZkzjewCAy0w)5Z7Ll*E#^vVCjR&}i3IY%aUWbTm6 z|3Ry$JAhT@X86O7ZlP_yd)kKW)BkMvPnN^(BbnA?|9ttpGbPh~N-~2(vn|iV4FBh3 z=&xm`{zbxcIp1GZ4AU7hZf7wpz}GT1I3y2$qaDU~MW&DMgW#}z`X7dQGQoTq&#``= zlR|hwYng^~S1^5*)mg%<5aI^sw>)D$=aYq?T+8FF!`8g2N%FAD*ea`3Q%e<|!iV^@ z&C?8j@bfTSgGPLWpWFCp15rz!32pJNWO@gx|K!)xQbj#^`gs}a&*v$UL5x4s#xJwO zZ;P4H5$!)tDbywH<1O2n?ycim_66f_Vm<4B&EF0kS$qBIme+#o{4eu5=JUtx zhh-Jd`&-4ctui~9Xl^)Qy5qe6{o{UJe^nUzkx2RRicJpHD@QswL|E8Iy|6SIN zbH{yrj#sgN_)4*qeI&7^!OjS#^=qHUvqD<)wCDX}*z%UnXFqD!_{aFdwzQKN9;NdS z{7jlZ)BY;<1>UjN@w5707{B#D=Jo6NtJdSnzpD2?$MnnZ{}>?Te zpO{l++yQQ2owdc_`~HA0tuYAdkt^YBPAMZ%&I-i&? zbMC{Cc7$=ut=eykxsLCh8;SRrjC4Mfk>(Gw$nvj6&H~pFR&(n)uJsz@EWcewtQxK@ zCK6{Q`z6QI;BX~rhZ5%@hUB&VcKX+ugSp1!`iEbuS94vT?fU1xePoO^ob=CvX$v?P zTwp&#n|_si^B3yBmwKM#I_@F92UGs<;5u?uaGO?gd`jkc;al1^Oy+l)OZnsITNt*_ z`)9*LDf@T!?f;cL^cl2%FSWeZHhi36KC<~vdM5Bd2HFn3W0oEg&3iDCK{{tn{>h8N2~ z^DNFS(t~N4_9)ifc*^iQ5dSk`z97T=YscWZ^i1h#ZkM@6Plhk?xh$1rKEH94ALU;I zI&1lyohjovZ;o^Bl^8#7@OtcEnaeve1_b+{HuAaleF)0%Hz1kz7TUXvvh`Bpa(&P9 zrAy3)mT&&(&kNx@cbue~pUcW1|JZS?CMmgC)o28xAm(Lr=VttyFvG0}nL(VVC z%Sal84v$!{(qNOcVoGHGvz%# zGw&Hor7UQwh3Fg}}!CH7HSU+IjeFz-V-vp%xJ@P* z3;E2wCv#D47IEINh+{(+xz{?Ba<#Hn?`qk>WB8J-1;of?{~spfjm0wGI6+bwrW$8U zsvgX59rGDqDD#P#rB<~3X2b-?=X2bj@249V1@q7M%jlDt?#VUXFO>7=O_rf%r3^NP z$}nT93^j(!9OF?r&!;bz>G}ehZd}Lb?`D~0+=j>a%M9NV_Rky0Hw|NH+e(IQ)4H$R ziqmlyGK{%$opG^T&v3>6AC^H~w?EqmmD7!IN!EwUsX8Dh>mOK82eGW(aFk5(>AjL; zgs>iJut82Tcp7&5w9!MZAb*Z=m@HM_$P&b>jr?YFBcG9tvKTl1U#a6mIn{nmPIVrT z)9vjH@0aQJMGQOh{nZ#upYB}C{=G(~*xQ)CNpd*9J=Ok{@x`PUN{)TAoaE2*_^~7B zv^xTi%Z`JtksX{jM!Jrqavqt=F>JhZn~c}DNrkaT9%i_LB7=NBMO@-;BPcddWRu=NRYd->(_THZFA!-E&w#_3z$i_hBZ^~-dY*0TQ4u57cqb?Eh#H?Xcf z=6{O+5AizG<=4$Q{AQ=Sy3y?>GkwlkoIji;>;GXoP7>OWTMXC#m7B@6N=HSq+Vu^P z+y9UzYhB;i4z%pC6Iix(Q)$Nl=7VM2+0I)lk72FL{Uv)R*H1fGudV9ZhxVgV$Mwcq zpZQs>IqC>!o17 zongr3e!r3S`*7&D;UiwcXMR>?f1$3^X(0sSL2`E zD-NEQb00O>M-aT9+OmcFnvf@a?aN>;ZQ1X%-S7M3US0dWua3iTmfi1n@b6`HykGU# z`%vxomj2y+qV{`99OJlt|AW2r#55C)c|Exbzui}1nTYujl*Oh;{1`ekCeQka^eN!F#w9NMYs}B8MW_$lq z`#Si`&|h9%PP?L5wqSoX*ZBD@HSDh|{C)P{w!`nA^V`Ai8T|dq?|Z>@U*r1Mw0<8G{R{p!3C3sqGQ8eC?GO13 zt^O;{<5%lrTCaE7=W$-&ny(LK{)!mZ*{WYV&S!ZfpX$fwwEg>?zbKF(&KLTzu2$Gn zRlnf9hJxU}vcj*&FYnLSUAXp%=R6E%m5OT9lcBG5dM!h6zVWP&bAxw%f8)4vLxrZQw!~Co1PpkI2 zb6m-%TnWcHj(h%fy?rX5%R{;E{I<+>PT-oR8`mNS6YpTIJtoN{Kb_BMwV5W9t@kC% zqI}!uZfp0+o#W!rNMaY!+yV%brj2bIDNj?ah*dR>j?Jq9h~c3!QWZj#={A8Muo+5x*a$ zy?om-)bAgq&T9Yj>G#P7`&~PHUW1?0w$Etr82mW(Q{Mr7Uu~a9lfEuH2jkc-H**Xc z%KExd(w#?`9w3wb{yD#YDfs#3`0KBeVBaXmCBOg4|Lh0*wAkkVa4hiaXg`j2I3@&- zZA;l#USv7__2eH{{AFZl`ro(Qk-EGTh)4#~M|Ls1u*;If1k-yrW$9jCEZ96<7ao)QU*XdWb z$(^M6+v-jk>Al2paA~le!S85??^pJRY=e82^oQly7xNDJ3B228gB;_YFT(<7upUnj zrVV8{&K)D;{Ck9c{~Y~ZY5sQ&pSx7+Em_TV4}X}$b;Tq(j5a0lxhgcuxz1lDli1&r zIVJ`BF^E6G;`60v)5k%&-)~^&%NWu>;d8n)m^Op5AJBKRS)zT$-7WiB)=B>UO?$U; z-IMFDD?6Tk0*)8#!&CWOqz5t1{(LXriF0){ze)ASsas{z&v2$B&~I@IWv>p-|6Jy2 zUt+MHU-<02=cBHfI*K-TK?Yq#`naf0Td=&GJXEjE*rSE4tfpOBCxm5bYV~qQ%@c@XmZyvam zYfi@o6oUD|w6zSgnBIt6P$9CHS5WPZVSEypw{IHmWqdG}!~aX!XtkPtt2X*BNzu>a zOMH*%xp8A;W5Zy9)C6C+waf66H`IH=AI(I z^K0qga%9scV(ep9a~vYu(t9y{nMD3;&Sbv7tVEn zsRzx;ZE2^Iw+sz!L&p7gi2lBV`7Yz6H`7M{xnO=>&0|o+eAeCX;~A&E=C9%B^ZD!9 zk5PwetS62Q!Z*(Ye?S@B{{Hv~_+|WUT1%c$h-N$qxx{CkHBY7>dFT_Umj*r;>+lQv zV5;85cU4tuzk&LmXJpck5S)Hb%Kh!&j|a7-2lM!8!EGeR_}ipH<7`s>Qy|NQpR=3Ur?ZTOCP{(h89 zf8}6p^I820b^Knwk32wM`e45u)Wv_A&sk6-y}B-9z&s-dC8$Czc5;LdK`fGxg<`O5 z=0-GgG>F6qq#+;WpsYpP>`){k6Gb4d&3@sy2uD29QGg26p^09oFc6cT6>*8lFWm=`Dm>47~w_BjeE$V81u$Ry-}JR!8>AnHAcdJiJjL6kX& zSeI(ITTY2(0>4!uk8TlezvPBLJ2Wf|vi-b{6SP_UF)&SbjH5756 zOxFw)ppjSJxQIatazH)ZsHYqCbfaAN2qb_q-Sbd}8tmkCLm?P}G|-Ola@1m%NDu1k zL47@F%VFtQk9zDDIXoQkApP(HRG<#Tj38!21QI}<5rx3w4RkBM=r-2 zFh5d2+(_a^5;u~#N9CbRq!(p+?Gfo6fdotf^LjI{ca2CC=~3~ZTomP^XipUFiE0u# zIt=9N6NwREJ@u&;>6-)c_9bs$^7bWfG9l%p1n{IR=>a3mrdrC?sa-Fz(( z`#$X1 zfQe{O?|^J9#~M)YKmoA_Qg$F^2U2!m9hyX9!w?7RjHS-lGEiqMbq=D=L9s|e7K%}g zjc67b90`_Xa3+dSg$C>q8A5$SsBcIH3Q>+)P<9Aq<4BJqJ+2b#P$x2U1X7TL5|BQ0 ztH`iaQ2#K0yh&tu49GW}dWYwO*u#lCoVX(*k%%j9Lzhj z9=k;*gdi3f$Pt-Hy%RTyq(&hg>BvPX)}vA6EEk1n;GvO8px$$cb55SfB!-iSHz^gA zn?$)ul$%7kb18RjBodK^e3YXWyF@03A`Y~5GO;F?p$0oerVw`uai3UQ|pcM5T* z5I2puX%!;pnTSR*NS{jj)EJ~72PIf1a()uBPz=hQPn`4XMbfD|eL2=(lm8dWhywX9 zApZsAzn~f$MWzvNS^+3Otqx6`HiTgW(vXjG5PLdpncmFlbS_FkS_Ww|T+qH5DQ&0T z;S8fuBQncJ8)oem$qWH;Gs%~k31VlKpbE7h&xPc{+w za)_O?Rb)PK=SO1`50uUpxtub&l+UGnu0KxsT*~KCKDP?%Q7>`@<*%Up0;U(%isWJO z2&5nfB_PjY+P`>@$d#cYSH&YutZ#3BXMd2JEOLA}>f@3quX$nq7Er;u2M#45}Nv92TSx+;-n=_1#Y=lTkf zBHCBPbWtwIQ$&45HJ~p4p$9jHirf?q^4*k*EEJ#=)u=aum+n%R=SA9 z2&90zR_3Dwv~4Bzt!zXym!n~zo;#`M&I&N^PU4qRe`y?&LHyEMQ1@M>AjVzfyNeii z5n~lGR*`pAxyaqrc{g?5O_{r?@9uS=Tv;wQiQE&4Xb|@v>b$2$=t>Dd=-p8lqd3VG!ifg zOg~~G0=q;it3)2H6?tqq%CQa&VBX{8dz^faQ}*!;6rw_;inJ=qRZ*^LEB4TB9S!oW zrjFIwAn)oj(1z9Z*eUX)i%5(>3Nn$85>%lUTd_x^nmVfEkPPas&I4_%UXP7v5_yVv zYbdjZwmusI$~;S%XDRb6WuB$Xvy^$Z5;fR_-6CttKz(Z|yO#Q%D?llipoJpO7mK`* ziG0wm7b-+vED~8yyqB^;+g>K-%WFhlNkpSaO#&$YY8YZb`m1Tk0cBq;2X(zl-5bI| z-q)hhAW~Z`@;YsKo%yfRme+~@Mktv7265lWKpvK3J?cf?%o3@K5P3_Gj-4WJQ_nkL zppEshbn!Qfyq7QXeiY(CzV~xciuGvZQq)BZXx|6q`5+bK`JfoI>w}FT&WDjm1k)cj ziF`!4kEnCwR*{b@QG-p`E%HeSqCmV)i1$er3Q!7Seo}`<5cktCj6fRlQGzNoV3)`y z6A_3*GO|$*>i#Sj#i#(w^BFNeBj#peZjM0;GC|zU#NE6O#NABXEtK0rxh-{|+!o4h zrQBA^ZB0ZPa!`bFPEFF7ib>Hlj&n2l2n0glrU|3~Nx2ogzC!5QTUoBLjIL&dy4auSoxjcwZ6ws|u_a z`8o_apbg(J{taonsACs(?4pic)Uk^?c5M>*R*(y(zoV}2YDK;ufqapsNRc0?^M@Ld zA1V7Ib^b`cA1U_}<$j`FKP4dx#i+(cG>Pnv0P}X!j@@Ob!yb{JDf4p*GDUs~MFp7m z3uS)I19|o&A|1PUYCUPcQSWc%^l7@F{@)Wox!?Wqdiq0>=?e)%3`*#uBJTcZkiNf$ zC-|g-@-6E`NdhLJmZyUF?+tfRBg$Z&nS^xYin8KF*&{?bDZ=A=!TXr`Rl9O4MR|py z0>!AndTd0Ks7}P{6bZ_8qFkp;$Fu=h#(RPNJl#a8SQ z)s6Vwh~164x=lhhib1|^^=J~+JruD>K{kp}0pfHgPWNU};jEV)A&5deXjhLc6rdE< zs6!*je^?k|kcc$opa|un4re?f4r@dmk&awY=MmMSdM0D1s3S=~lC~UKh%%7($a*j@ zQV@<dkm>+S!|S_NJXtVW6E+v@?o!M&*EZ zM$yiw8j$a36H!P+1`1G)8f*e_`Vgm29B5--=0(%4=t59uzbI6RIwl^eqUe)Q$5PL+ z%fbAZe3Xdl9|4x3KWPI(5seW@K{|3leFL*l0G4AQ)AS+mXnK%m5P1d>W3Y=zB!YSd zSBe_KH2nf<$U0GRldxOV&=8c08b-e1qzxzDh-@%#B8Z?TEr=HQiU82Sm ziW-|QDxpBsxL9lzbv*e_p!^9N(IhI7v=h@sjV}{*67!OZMV*`@>XbZDrzZ0>OU6%2 z5OsPQ$eTjUGiyanAm2n6k=V(P+-T=nOrITtHU4w9upEp}D)Qfij&-6Y=Zl)ca!e@~ zl}7q`nWCnKg5mk$C=``WjP!a@7f|N~)u3G$G@uc?MNK32v@k>=4x2a5l8~{&!Dauq|exiJ)&lYAr{HV1m$Ozf$}qH%gn845;cqEm=%ghkbhPJ zQjm^p=Knp{h3i9e=d<(GRvrESv+X>GGZ^I+%n=UqujDaQP(G<2)jiU<)L2G z4Jl|4b>l8k#nGZ}P7`%YCTQcWq%9}LZCRpL5PJpn+)lZYd{K9}pbaZ&-^y|{iz*Ef zb=L?{t0F+TRa-^fT`Q_ATGTz{zlYfO(zg3zP$jCoK-B%jy`MY}l!$sT3YDTNh*?o5 z>Y;E{i+Y%N4>SLf5umM=2_W{P#Ct3kq&=RAouaDJv0l^@%zI+DsMV>c7sWM)s;0iD zBC$r))6t@yG0`My&2lu0TI+%#*9GdiU82?{pa>g9J)Z)`U!ZL-WPn&Nl%ocXqFyu+ zg+yea0OhDbqp0;JqL7FT6rdb6XcYC5i6|r@0|h8Y4H`wgY$6JY$Up(gQG-TNub7BJ zA~H~ba@3$vRE>!!Bq9SWBiAnK)pD?`8%WPPm2A2U$^f0}LeBYA!##!sP$0rmYvnV<5(e)ZEDG=LbpLqI*d6G1(@DZhKCsGq|T zk2F+(c)yVEmr2+p>emENeorJQ_nV+x)ZQdygEssghV`QMMTy#+rx<()Y8KS$D zfO*|(uv2t+2%->=RIu#frC5(fG>h&*Jw2$WM*DkdV1^9KFvK7cX~;nl%CQa&*d_W16A_5RB;=tC zHKKc#f@L}~3&p5L9U9RrIx-T8$ON$?%drl`jwJR`CL%!Wqmq$WQk%J0QwvT}HK9uQ0j6US+Qw_@XX%^j=Hug;gvHF%` zJsL$vyNE#wh!W1`0vEV~H0- zycpueq=9%b#ET(b4DtFCuYVjSArED!!A{WwLJ$ku&vlU=P>S_v6g|*I3{pV*2h#q5 z)Hjg&VyQ2d`eG>;OMS7-i=~~h)EP^igQ#;5bq-2KHkO09gEpc`^x!azKnij|`N72I zKCB*0`60v~5(~-?$v`oxLHQxgqT`qsmxL@7paPVQqwG-14vjzpC_6L{%TbAXP<~h# zVvvYTFn`z@Y!W?O5Dw}Xo(k$1P94Kb!7>bQ1TjWLVgyoJl!Mx)pArH$@i5lz_9Up=yBq0mMsK!P#iyj?` zL}Y@xN3X#q>=r$SvSTPaCLXDv{FnliqZYJb4DB0B`^QFuc8sMRW3y3+3Q$i%3{sGT z<=82D9K&(dqK^+pEYd-_53bL^Y#5pAc1t=GNY8*C#I+F$Ah(!|8L0!qk zsK9!VH@QjlX)Yo$0x6*UX?sMU9*Ss8LM7@%pFy58$a6+L$d^JrDHR~znae>tCXj!k z3CePRSf}Qr1XXCjF41SzdF0Kb9eKM%FRBy0I0HG@D*DQF(fPC`pEh#6sIN`}`L3Z&*U&z$1$9BO=q1El z!uS&6ELo0P(MyT5bhqeht3(%4_PQ{nA{Ugot^(9|-6jz8x@OVKLJ*4tFmG9t=pq+| zqHl-+ac`uKn=(P1n@Uj)^4>(=V)7P;BOcUMOdEt?j#_NR9?>g9 z5s48X)=J8+%m*>=Ohg)TP=rd+rNk?(7kwA;@1hN>$g_$vtC+vapC-@U31|>q#`HZI zSR?x0Xwml(znuEYH;R5B47A}v%05Va4^rQQRj7rZzDINgc`GPaLA;7OY!dzOBv9sI z$~;_#HK5GHlzBuz{zno(U5}9OkwOsrkqVIaky?#*T+Onrrry=mxtcmxZxsFHPSMrLs0R6;V%}3M z)6+>H?lbX71?%gX9FS)X<7*nRTlBLrs1?07Q}lD8@Q1YNIr6Pz-a5wDk?;9f6oYm? zUymlyFC?NIdqlrT-WStA`ub2rA{NAXDFIcYUyeYb=vM^UqH7q|(REmC=IPaE& z_Pv*ZI??avif$+n{XvoF4{6Isv1k_kF~g5{ivA=O#n>wPQ|kV-LG-2(XcYZfn&{0Y zsBiN|(OY(j=AM+^RxWxw8skw3;(QSW#&;0=OWN}#@xLqr^L8eoQ8f38^w-g-7yS)& z?n(yfyLOBImbC9e5P=v}3O@)3dA=_d-DILf^bh3ufj0j@+7Fcdk(fVH=TDUTDGj9W z4nrI=&>;HfI?=zBi~g0EdlFI9hUwozupHF?TO;;}-b?wtd7!?%O#faZx;Y-iZzkWq zP{e}t{S5bS6y3sdwGg+ZP7DdbRxwny7&;wAXcoip-mlz%bo5biudPs=y2kj^mqjRws2lF02uG@^zbTPOFGrE+D!S$1IXt@|+p<;B6 zKs=b&Ee6TRLLQ1xik)I~Pe229ixHlNU1Ide7vr!Is2Ah#T$Er9Hi9w{F2X@w5nIJL zf@L^@I7g&olNddT(=!jHSSQAjG4O|*&?H7A`6J06N&d)e6r)*;qnJLbPK;hGTdxsF zMGlsuT8!QyAXe{WWMQiqQG!S$paczK9GxykAKKU_8cg@i7lUgCBbxN+CNcU=65|*_ znHa|wi4hZtN-_8?r7<80tj7T?+W_huK>2~8puT}MV#J1ka)V-!4B9@ZN{qqe8BCnP z8Db0}&yYNjkMnCIj(Ks3C;%~r3Npd`Vd02JKFYCGjNu8$0OKQQ&xk@XMrMmK%0w8V z5Qjvhg1n=0P$0%}0^%J<{^O`So@I@15MwlHqbtPV9Mu?;k7hB(Qf_Q1n9q5qk-+jK zl%P?JaVCg4t`c?FCC2gO=X}#ReiL?y66th>6!4ZlUcV?>CdjS+Pj*!2&LK=QSEAI@ zd=ixDF`k0fasHg2sn&5Von>;{xFN~HS_$SidCx(0+qfmezIwi zwsFmK64Kko4gTh5S=+cNQT*LuYkrII@7l&~i88yijXQFf=|98XkLfbrw(QE2F6QjE z^niq#d2QpJNH1y|58*jPtJ=m7l5n%VuFlfS+}4(UFwZ7xTPG@1A}s%X-hN$&NFVF; zw(%~cvo(Y1he{W#xNSU)@q63GyUJjzT2A2SaoKW(%wwz0VteFBqzsl=8N^nIlvGk? zFg#i2GG_+4BH5PnC^MU>>A~FNWIn@8(&q8k9)ISXK#p0=%aRM26DI?R>c>5f)C(!m zUq({XU{a=$bB1Kd5avygiEkz3wsU2heSx4kw=A2DFzZDnKnz^*~@74Neynk2I zS+ppUWtmG$4_qS`Qlmd7lBJr*FoRai2`=?Tq+KjC`PXmN91QqlYyvs_wE4l(Vb+qJfAd@!EBWhVw(lOvZ0Tjy`t)*M+3 zrxSH9wfS2jl2-Z4*}BF3t?TEV$Qnpycm}QV^G3>_k&_RI5W~E`Zi_)IyRUVx`e*gF zx8?%5jP_j^+;gV!uV44&O#AIEmH$(oNYdOt$PrRo^xz~vf8{jEoexxuyIZ##cI z%;>P!%p_$#ZTNF-`dcWs!}MIH{W8hqygays{b_^0mi&1BKKSSUkVCq^eJAqo9NO#e z%QMlwAOEu!`RmVL3)w`vRL)}P@6q!(CjD8-vR-}aBk{!+AVwMgpw zYf29L{y(l`zug^c?zn^#`L+)Jx4&G9TE`Cjm+y7H$R&#X_c3`?UYFNoI`6?Tc!9O0 zY~?6dc`BefsStIL>Z}e{q3RITMIEZbR9Dqa@fKcQqji`%Tt%oOR8Msz-?m4oUaGf> zQb(&ks;`RXIRnS2V^xgmuLh`rDpn0rgVhifr-n+g8m5M;5puK|sYa>eRJRdHhO;Ks;JT+CFuhP{8YMPp^GSmz;Q_WJD>OwVJU8J(q95q*6%)8Yu zQS;QLDo4$ie(ExHxyqGe)D>!hS}1!|o?4_9t1DH$x=LNGu2BVQiCU_zRfXz0wM>px z*Q+9RgSt`Oq>9ze>K1jYTCQ$WE7a|(MBSlQsykJwx=XE6cdIgWkGfagr^?m+yjS!= zRiPeI535I1rFv9i)MN6tdR$ehC*&Qeleg4r^`xri?*;d&r`0oRje1tCRnMt)>Us5o zdQq)cFR7Q+E2>7lsy3+CRIPely`kPzb?Pnkwt7d^t9R9V>V4IqK2RU3kJLu>vHC=P zsy3<5)Mm9sZB?JEZECw}R9~na>Pxj#eWkuu->6;EUwx~-Q{Ss58K8bpKdPV9ZuPVJ zMg6MwaI(lh<`V5`I`QVu{R8P1d_CQ8JHGdX0Woul2uk^mBTheqO(zU)1aM zOLCEZS-+xd^s9P!dz^+)`r z=|=sr{zQMOH|fvxX1zsk)t~Eadb@7aU+5kBOTANnrN7qS=w13-{hj_^H|ZbrkNPLQ zTmP(o(ZA|F`ZqaI@72HSX1!1E*DdlL&*u|EaXj45>#-OyOv5s4If+-PI)-a_M!@J~ zgct`IosENyP~#B)y}m}6(N+AvJnqIfT{ce_>~4e`J&ePQ!;J{z2&1QQq!DQxW%M$7 z8&Ss5MjxZE5pDD{jxmlkVvPRA0ArvLYYdW;jlsqcBhDCV3^RrsBaD&8C@!^5G2)HU z#u)j{7;7XLx^Z_^+u6#gK?vAlTmEkY}{hpYAiQyGgcV48zsga#!8+od8bio+-0mX z?l#IeugW#<8|W=<4vQ^ zc*}U(c*m$W-ZkDc-ZvVI4~!3ukBp7R$Hph}gz>4dNhTVf8JmqQ##ZBVp1Qcr*e+)o zjm8(o4&zH>r}35XwegLy%lOv#&iLMFGJY_AG=4I68$Zk0#xKUN#vbE0X_haHy}V_% z+1O|7H(E?Fm0V|PllP{XrpfzLO~-Ui&kUHI%nZ-WRhHE9%1%0k2E9YN?FVkU5_$*nZ3;@^Jue=+1HFV`$C@!_e{+C2 z(2O+)nS;$CW}G?H9A*wTN0=kcQRZ=GygAw&V~#Zw%yH)N<_Tt^d7?SqJjqNlPc~06 zPc@Ux)6CP&Gt3n8Oml)c(M&bZGS4>8F(=8n=DFr%|Cudjnt7f%)jZ!!H!m=!nbT#8 znPJW_XPUEwr^lI@=7qA$oNZoYW|?!$x#q=Ywt0y;&%D&kG3WCJHk@~yelyw)r>^GUPXe9C;jyg4zmuoBCI2< zp4O38q;-_l%j#`KSw~xatiDz>Pc^;MI>tKIin01z1FV5otTo6QYz?vEtfAI0Yq&MS z8flHPjxSGpw1`EGyHx(3)*sWMx@%thv_3 zRYQk)-_gvwZvL#U27Fu*ICP~ z>#ZW|2J1%aCac)G*}BEL)mm=dX04#_r+}w7Ea9n1w_7FF9o9@LK)&tgqR)zJD^|1AbRcSqHJtn_ek6Tr8sDw#Z>j~+`>z%``)zX8$pu_3E zc+#r2p0b{{p0U*R`q}!$`qkQF{l*iOJnMHct!BB;+Q$=u_ggJ; zuPwHcPW1nd;VDlEwjom`U3%N5ZP~W%*skr_0kP$I=_2RLP8lnqJm;p9JZXo>we~@F zXZv6~)IP-SVjpUU*$7b3hfhRsoWwZa)+#xQn}wAFVEU1*-7@v_9^zMcCvk% zeY$;yonoJ9Pp~K2srFg++4ed1B>P-@vOUF4v(K}q+UMKp_67Ddd%B%r&#-6Ov+PX! zLVLD-k)37FvFF+s+u8Od_B{JiJI9`HUuIu!=h|1;3+#naU$$SdYwTC;4fbnxt^K2Rot8Ax;U49u zJK;_b=P>7RC&D?x>FFHlL^?+~y`0`olykJx$LZ@tJN=wvoMW9Br@u468R*11gPg(6 z5GT$V>I`#+J0qNt&M4@0{c$IVU@(IHx+v&S}o+ z&KXXMbEY%FndqcCXE|p(=Qxv`bDhb~6erC&&zb6+@1#2yIMbZzPKGnXnd!`OGMx*Z z+0I2ymNUnh>s;()JC``~oJ*Y?XTEcpbGei2T;VKm7CL#(B4@F4rIYVmpG#JR&+>D=j*I(Ip%oV%Se z=N{)?=RT+0x!-xfdC;kF9&#Rb9&sw2N1ex<$DJzY31_wQq*LuYb=Er1 zIqRI~ofn)Jo%PO3&dbg#PL1=bv%z`IsdZj=-f-S@>YTTnx1D#Kdgoo|J?DL=!TG@X z(D}&O=zQ#a;(Y3Caz1l5J6oKs&gafHXS>treBtbHzI1jvUpZep-#ELRZ=LU)@0}*+ z2j@rUCug_wv-6AdtFy=X&Drbx?le35oc&IV-*N70*KkeOa&6afUDtC1ZYMXyJ;?3s z9_)s?hqztbL)|d9tJ}@(?uNTP+{4_%-3a#xx2Jog8|fb9_Hui>QSQ-hAGfa??e=qz zagTLl-2UzWcc2^V4sr*(L)p5>nHp5sn(&vhreQ`|K7Ja?*lzMJk| z;7)U=yBY2bccweb&2%qxXS)}QTm2SR!m3y^&ja%R@ahJN+x`pm_?lSj!x5&N0z0tkNEp~5qZ*gyRm%F#QE8N@N z688>wrF*Aa>fYt9a_@G_+4;%jJw8t)?Mp9=dN>~cVBQ{bl1Btxi7n~xHayp?gsZYx7K~#eZzgzt#jXU z-*(?|>)m(V_uTj02KNK^L-!+hqx-S@iTkO$$^FdT>~3+lx}Uq--0g0o`-Qv1{nFj( ze&v4ce&g*e+KqP(NMK0IUjD=*sX=N;o6>&1Bey#d}pFV-964fck3ao$jGm^a)T;f?f0dB=J2 z-e_-(H`Yt=#(BqkCwPh8iQahcBrnN3**nEM)l2qH^G^59@KU@py$Rk#FV#ECJKHRPTH*-Mhe>=1uo9ycyn1Zg9Ozz017Iy^nYY>7 z;%)Ul_qKW4y+-c~Z-@7#x6}K|``Y`)+vR=hedm4eHF-aHKYBlTyS<;iU%X$vJ>GBL zUhj9W+1uys_gVrHPyrn<0%pJp*a0Wt2E0HZ&?yiSI4ICLaBv_ra7ds_;Lt!=plhI8 zpnD)Z&?9hI;P601;D|uaz>$H-z)^u-f!=|rz|ny|fxdz0K)=8-fnx(Pf&PI3fq{Y8 zz@Wh3z>q*(U}#`iV0d6eU}Rua;J841V02(iU~C{EFfMR>;DkV8;KacAz)69mz{!DA z0;dL&1E&Q}51bK537i?25SSQ94V)D?J8({5QsCUcuP9{(|_Dn2_gFXm=Gaios zbhj+qW682KCY@wN5ClnBAVGtGB{`GKk!zxCviFfavYWln1e9|)*=zPp_THVn?<2d} zB%5Tj_ZfTtcT{&nl6Sw2{RvgCj#pK$-h1`xRaNuAI<&ghk@cF@vyQF4HLzZ{Zd-S( zyVe`lH(H;yzRCJ#>vPuUtuI(#w7$jqR_oiWZ@0d~`jYjX);;UHtY2k)xAi^NueN@T z^=qwPXZ?EXH(0;X`c2kvwtkECz1DBFew+2%t>0mNpY=Pf-(`Kj^}DU#WBp$1_gTN+ z`UBP(5$$&ieD#U$Fk7^%K@lT7Sv<%hq49{;KuYtiNvk4eM`Of6Mxc^|!6R zWBpz0?^%D}`UloOwEmIxkF9@V{Zs3oS^wPn7uLVD{+0Dp*1xv?jrG&kzqNkG`dRDe ztbb?yy!8v#FIxZJ`X%c>SpU)bPu737{)_crt^a2Ick6#x|I_+k*8jGC*?QZ0$IjSe z_P9M^XYHJwwd)l^a+n%v!?KykiUa%MKQ}${5jD6OA%zlskUi*Fa`|TzB1NK+h zAGE*PF4*Vnud$cy5802~PuL%}KVpBa{iJ=~Ua>FOtM*6jqV3qO?b*J)W|!=;U9s2g zkJ%r$pRzw;KW%@~zGzqNnq9X8JG3MFlKqT**?!i3&VJthl>LHz#lC94XkW8mvaj1W z>`&V-+Z*<#{fhl{_Sf6rV1LHGX>ZvLd)sc>J9f+7wfF3OyKTQ}-?BUQfqiIq?IZg& zyJsKUeS2WPZr`@=*mvzW>~FL`Yk!md&GzT)&)Z+Hzi5ApRqeG8_ZrPXzh!f@yVpHz z-I}Z(G@8BcVZOTEYrWo@tZMS$uw8WO!6b)4C}CLS&@GzK71%9N=!BB)gjLQ*$oU9; z$**d;YDM9yhII|O9Ve`5{hHRVY5iI$SM40_H!S|`cMrSATrnyN!l<~eupo|#HHD>t zsK^6yqM|eu6(h;7Y5khkuW|jN>nWZZ<0<-%4BQV)C>@L{TEC+8D_XCj?N_w@ind?T z_A93Sdj9#w!S+srx>IyQcd{DtR59!aI{u>4qiA5JXVLXNsaJ8NyyIqTt-d0wl(Miv%z%9N6! zP{s)zHy3O-deRXma;Jhfxc1G-P#G;`Mzg}CAEEGEK8)Kbx-vwBIz(3}96CC5M_I`+ z>Dn(x`=v7)%1nZ#OuDjIU0JNIB&{pnx*=&P7xo9e!^!aIxZUX<&S;ooI&C^~bkZH^ zLgeVAYgZyiC%vvrQWwhl&YH}YN|RsI*$bo#&N{;&DZC=omFy)Dma91Ho_#4bra#*sY^URtIkY<)s%K!%4f_bDe@%- zo-M9whuw<(Owv22P&AT$Mprr^8hlbX5lHTD~rV;G1b%*J)c*HWKYx2rCzIbi(^cm8A{t}w|cGPwkk|d2j%IYjG_}Q;6$Dd%F{u4Iw(&E6=?lH z>jz4dK#8Yf>le!tmscJ8vS~eLme4TJdO1$3gS#&8^%}3YD8l*=+<7@+B}!&Wp^DOq zl9XXFU|!O|x|d^tFwN8>je&r1tST`FM2ur5E%HoSdHHbR-2&{GZPsl<6K zaYbJi=b|rs3^uIfo@*Q(HLwDaalnl@UM>H8tU;Vma3eIhmHC8Cuy`<=z+f=>!Y-k& zeek&t5aeL|Qv+_nix>r#)O!AfRKq?#oE`xhgX=hX0PlIU^(>$ z2c5>CFZ2m?feU36;2=(SWm$xDij2FWgo>^xAB382CdU^!3wlqKG&s;ZZ@q3Al*{B`auufhP$(pl2(m9%>$o%b>~ z2ujpvh>H=fZa0owlh=h3(s3`GxZW7#ZV(UWZ^)8zLs|I-vvTeRZ31R*j4sH3kt@SfePWl%<#uPY@Gzp_7=Xu%{9_n{4XMR6~ui?6y(q zPDLkeO_>Cf$CMLIi0!866IU$*Z%x&cin8lE z`JH$bKx-mRq3-)b-S3BvvX~>ig_$N2t}N%&OSzr9-M#(nPFL*;*Dp`DRF}4xC#+V| z*OrQ4D{dR)74dM*h;?5Q%C-+vqinC+$56M8q3%0E^+kl@dw{s9Sk+W4>pF(IQn;?- zXEslswC{^aQS{eDy!@b?Ymr>c+&pUZ`m4J)X(5@|U3KuUox?vf#SU02zuP+8TXk~S z0q-5##~k!~-CM0Wjwcl0Np_+vl^0r;irGD|g}s-W-o23uMaT8>dkM*$NQdA$*}c`{ zrbUwLmWqf96A1}16wxHUSV<_tnirvR!}?lopN44jZ-Q`*M8D3>9C`O zb(Ns5>5Wd5ZY0BXY0a-e}my1$F^ZCQMoC~iPYHnw@eYO{H8lx>r&w3U_G z%u2GRyAc#eSTDhRIOXxS3O?yL#+dQB=b$-J`ts&>r?rt7bBD+rTzY#W50e-(z{@o~S=?r=FPf$dixpcwpUOgT@*#}^|DN{=-@wiX(CIxo6-g`Tpm zrhW>WwL5GEb6lnYijOkp;>MFaw^V0fnwsU9Eo~=7&;iZhUc?#Hl{B!P z25M;_V1Nnh*P|@D$=qLb%TDfq1($z!TE}qW?TBFLwmgJ-WL|?q@K7i=5zC{uHg(w9 zWm#b4&U%~eF7x$lcf`=- zX_cJ|mL{zqvRZ?>G@-EyB;OTx4a^lyH@u@8j?h=B74_zXX5kUvH3UTSW#PvTNqJ5T zT);Xm^<;!%;38estyn2ANR_mqXLnOOr>^dtG)(WD#O{i8P9oU@!x<+Xh}5Eul)zD0 z_Y7q(+ci?_i{Ax1q;js?GMwO-MXr2tA7eM5bF^kckvCtq-$fT&{?}B1dTBxOgItgG zB>zgzOmDY+yia-(=K;(pZaJLlDZAx+DUMky=X(jqU=Jn5Wl_aUD5t1N8>&egu0`1% z4F$H_>l7ZRyW~arV{XDeen8u}W}z(UOq6scOFC-N{!Um@>IgMJoyyE!t9Q^i+}Z9N z!{1EjnmyJRpNrCFnHMb&R74D9y@TicQ9naW92sHTqz=!4S+3Sa0SAER`g9 zMK#x5I-^i29k7(<2D~X8jLPcBA|zV|$9Sg2%Yem+H+2YkQ-;kT&jdo1sj|*cS!bwh z(v>sHN~BQpL(Mnqgy;y!o)R%sB1X={0E8MaqZmR}U^7q2hzwx^IHzX^2_G5ymDNb^}n5|e`&$#Nsvayyi);L!kei*m9>d-^rnHr23+94X5Wcr(C!`P~i;>il*Ne$yk z4KbMzGlm(kPQ>%_#w`%YL^+Loi~+lCIg z+pHCCCzQ+ImJRmpSp2b_*4ffSuTUN3p&ojLa@Yl%eQlx{Z>x3l=|}e61iR=BV-4t` zSh&8Pznk7>E0aXptnn=A;g>I-9H>fW671$h9r=-$yK9DvT=pv&2Iqqp9`>YqMBGY2*6%I+{fFEtJh8aym--OpX$#~yop zqdk7LoqMUhchH!)y5F9-dMv&MPdCU>RI{!ewD!`68sbR8frm&;r2e5u)k~y)qNpUZ z7^%M~QgsuFm(_{%#5FQaRmB|>$(|hf;#P@t?;cgf{Sv7UAd2c!>b8)Ln5WCQr~7Cx z@bf%oCAzK!zBnI1ZqXFJx{Z8s8^H;!wzN}*6S{e~$0YORNCoa7o;=Q z5h_!ujpD0|#h3GL^jG^Mvw;36KGmbXo~!%fJVSXm*Whz*{!Q5wdcYou3kCMK_;e!O zWk-529O-U5l4BT@6Pby`jR>#0+9q;f3|R5V?j1097@^2qq#m?LMLyC4`bb?uksj1X z>Kcmlz&;YfJ5jBi-G&I{_DC#pJFN~5r(5b9(~w6wt3b2UJ#OL3n-pg7-3D>~zR-%h+0M^OVqv}XE{E;46M{;EC zMD=p6Pl_hnhI(40AEVECFw>O6v6*z9P)pAvBDJm~Jv53`Cr5I41V4%PO%H@3-CsrO z?v3<(B2sHR(sPPP&nKdwjNKYtbQr(Wp6JCsePuVX1K{lu`S9v)?wHkOzcH8`2s50~ zaAa)r4FS&4L?5a|g^r2BVFNphUVKh~!)e=Mt=A z5SAy7_S;kVw@0V26X<)R#m&ONYNJ-L8wYv z*cz%{m9;r#Vhn~;+a$<&Z zs_f^zFaAPUJW4k)!r?$- zIwK6S;h@K-Y5=%0!b<+Abqpm!Y5^eE#a#pL3&Qnmr`drUT@^K=2Ltg)d?7hoZWqgS(>THSi1)$6YE z-h2uM9l24Q$^Jg15T^2OcYsYNQl^gEcQ`VA*fxc@Vt+SJwGi}gcM(iU)&A}z*QKzH zn+eD#49GvmeYr!5wAy?7eMBZ1V}Ey6@kw87!OCq~+8q?0QLLP93rdd9C>92$nq91z zC_a7E>b1K&)EpBR5ux&G6Yg8Wcie(2g6K{FT)VBqPHUICHOoLxJ2|tBEqu#lF<`Rh z2)fmROOxx(D`>J86QtVasT5{ST1?QJLa8=1>2$gwO*=EvnkG)~-#yxABF|||GbYLH zim_QxvW)@y@C2f)0h8+gh@?89!~#3zqB141%&&_3jdeK6?s+ee+dNSxkj zzuw+q%2F{?WDZv)dfht)#cTs^3i0-$j@>v$U)smF5a;fg$uZqA@M6+eGyIVbYvQal zqtHU!bxoMz{+qJWLsK>$i6+eHa1>lj#-u5y(*x7AQ>oEu(n35$O_(}90zYBE?5!_W ziyFlx(F&p>{C;)1b*G7yA1)Y8QH3K~6xaP!%tdRvp;KW_Qf|EY+MwO(oJzBZB+ZTT zO#QEi+7xYmm@m z;Phx8(go^i0LKv+A6G?}7?^!+0O_E6z&)7X3k+e#OhWFc*FI?3a+i(cGHzMvao|;+ z;#8EMOBEszeLCv2OfFR`y1HPxwdxEsE}vI4c3M44lo%7A#s%lwbc0yG(`xg|gF8Fn zG|N8^z-Ryh=0@de@gbqI5{a4}5vS=`maIgOW=EvRPKnUmsQfHEC_M8INDlObY6j|N ze&Ap~A`71*&N5t7DNbOFOi^6Fn!?ags1!%4`S$AJ;Gma3fgnRoo}oj z!|Kg%OVE^HM*=K{l(#DZ&ejOpmjI_e1idQ3EeUYyK#2zuz`;)t7FP<6BzR2%tg4iF zECEhM2pUKL_bx%VCBU*v5Zo*jyurb=tl3DIk7Ma292v8`mLnnyA}!8@K$lXA&daJw zQ7)s4J-|6x_LB@+!Ks{B0f@}9IbaG{vZgbBS=A}3mI7jPVl$ZHDeXh$(%OgM5$!_> zquPg2Guu&2*^Z;aq!i^@-IiHJK(mT~W)%Sq1p&<}0-99>G^+?`RuRywBA{7CK(mT~ zW)%U=Dgq)W0-99>G^+?`RuRywBA{7CK(mT~W)%U=Dgv5S1T?D%XjZq6&8%+6v$_pT zblpr0GZfKTrF1gNWLCG6Sw&Sdt6Ij)>UKP^dV5VK9xcAA&|MAB21sSfYOIxr4L1gJ`@xB#KmQFTv|rQQQ=uGo~+3Prs+qp zt(Gj;67!aeB~h9MZ+;Xm3r~>-6q->iMKc1KW|D4bMv&5sqDr&4jL?igp;;<}XhtB@ zj3P|4xPa1(V5J#Fg=Q2Jn#IM1W?Wim#!;ae7f)zLV47wG8=7$~Aq*EwqG_5@7Qwth z#1V%sG~%ZREc-S`HjaR0=jDjU1F)$lCYd7}Q>4qz%vmc=LnX5y?a#1~O8nTS4U)#O z9l`EM0a?_<^8!4&0~ALBZW7Ao(h+ARZfsBwLQ%T3KU}-#8XeQSM;a(yo7S5V2W(FI^EmY zU}5vc(WX{_eJd-kuHHo@Zc#k5FnV>zES_1w9!S*2@#z8E$#dAB^vJ{#a0Yq`K05&f zvCbN-XNA>J7N0W^viksst)+#X7VMiAJ>`L~38vG$B<#}OZ@<;<&j@_0)p@Ejm5(HhLC-Tw2q@>8W87uUZKzz|H8so?G%64_AJ zYNdIGl6teIUb>VF#}Vfy&UBU8d!QeOgCm~cH9VPOxF>wFCJrWdO&nzInp{W&EK^#l7HvA> z!)6GVWNvBv_I|sMcg&F3*3NeKj$jto9(G2e8EWFIcWaI}v(s)Ibm`aPyAI zW0WS3ftzH(kI;0hyW2h_ zu|4j?AuX6aIdpM7#Q`0{xIH;saXmQ?a6LIRL8y|e4mkB(p`4^cPf2|_H^2=^(c4}< zoWlhJnh|usoMhr&fU0phivcW}$5D42-bOGwN1W=eBToPj3fh_+Texd-UJ7FCHdQXZ z;69Ex==AW+^>tc(d07WoB-z*D;5r<)r-xg}7q#w-;|{R2>&weK*H?D&%M zFJPG(U;Mm)g{{|jlk6#L6q0(aCKB|zeh64?JF zRj(p?aByVWR!s$!Y*OY)(?T^HSW1Xil~zSFs#?^fL_3*!XVO~ABu?YP9xba_$#9WQ zW4MK=hH65w?^;v-epEVDm0Z(r0ydC6G9ywb%^%xlJAB zPOYQ6V};nbiyIZDm8`U2D4s+xG$9rYg;RoIs>Fg}iX?)eDMm0%jaV==AuSlDiu&FZ z6v0p+77T?|FicU|)#>PUV<*tUE`a$cUkj@xPjuc%g^LD4Y@*Q^JVMNC_4h zO-YN4NlJ-~CXI@WCXy9^+t)7d8s-cD{>R2k^1M6e>r;^H%>#hbH zUyAh>xh1_Jn=0$4uweU<S<0r#>1-)U9}(WK%7Ek$E8>v zMp*zn@NJyPLBt>#KM=aNUmsalFM^}sjDtfzu;NspY5Z_|grbfpDlIz)N02Fn48yAUYLEALzAbs-=3Grr}6S>0%;L z+R|FOt7{2r7muhTX#<-YbTh=t?g@hv|fiw}l=NC;>UQBUix&Zi6K;b1k9ZMz%ufLd=;=4L= z9!Sc{N=S-Va&ZoJC24$k$CcnK3gzdMhg9jzWR9R3q-B+H!9Ld-q1=4(#3_ZPmP|Wd zF-afilb1cIk|TX~)7^BXo8+b@NotQYD_z2Km}FRZ-ok*sjbVVC+sf#;rJ3%OCr!oA zG?Wo#NismXf}f@*&e05BY@*Vf?5F2Ixqq(vP~Rc=38CrbLJD6!P4#f3rF1b_1huPc z>8`FNsG$YY*h=ZHmeO4&p+s-H_z6}DJw3@2 zFn)o=pp+N>R_(PnBq&^ z3QrZ&MM8QI377N8_`@8jg6XBt4-$q$?-HiMMXZF+0VJ#qAYDg!Pn%76xrjT~+~~;F zPEL97P9!J3566e}=BQ9jqi~pOF4jqrnthG&PnSiTyA6pbMbjRgXVOCq#`lE zDN47ISXM@C@$zg74twVgBr#^0`7>Eihw3u{LQ%g zJularH3uOKEyA@GU((=|_rM=ZKGF6u^A??*aQZ0}gU1%9HgVD!K7m0xr*xWJZh_xT zA#wGggn^WJpXqsgfMbe2BIm(6j6L06TqntSuugnD^iVrVj@Eg<>6<*qNjLPUEK^HL zo4Q=9DMIr8M`S5s-p7YiBbDAgM_Xc^(mg&eR=nX)F(1Ad#M2-Jy@acZPRi;j;#@E( zrh9y0SSMvr74_k3nU*30BzgoWQ&@D5FIaSsZvg2A>)CjZukxW=#z*X@EAfWj?5C3y zvw^QXyv48JIF2tC;l3k;pz^>LUu&ed_?1U)@%g9@pUUIo3p|~5@X5Shx4~x(NUlwV zqKetmjQ4)*xkd(iq>GN;AjX*l4BQ}L%h zjmx&jIDH-8yf$^vY#f=N5ztim= z#aVje8RtGyR31d&X|T}6m4^|ahtf-*?X2mu!?hro+S73>0)K7~=U4qk2O8-J^jRDQ z@!<4<6!axs<$(goMT+2d0{c~ZT>`}h#51?(==HFJN2TrNv^;4*a;`&Pjo=DS6%U2! z-oHFj5hQCqJq+mJyBUWzzqtiL^$|B->B>wwa@iWg<^v3{3C|Gn`2Yel$Oja7{;q5y zZ`(1GIW!dUJ`&_V0TdtW@|5CQg;BYov?U+(^c4q9IC^y`rz z#&5=}_087><%p8ZYoP}|;zNql*Y`udydNebThq0F@_iAEU-1dYgFe!}r}Wj6SG+@# zdY;nLi=x~u`cxic^=kF;!+}KQAu}$fN{2mpR11q;5#XCE^#08>W5QCN(K%VXgwizq z1WKgu#3Ow|9qAM5NS{zg`Wb^rJ_P_R&qIZ&$)o_xE#u{#u!5)G-wJBcR1Y6%ID|1L z5m?X`r?71}%~3j|)EL$jDTl)tDaVIE66F&hDM&{%im(OUMor+tF0KGcynh>)P+C%J zx4qlHJHtirnw518NoPcjt4342;iN<*PEH`f)p$uRaYJ@yugnHhs?_3-a zN~AN>B4pt}$diwdg$kjZ8#^+0fSGa#nQ{n?TGVz#9m5b}C4mb$T)w(4k3jLU1St=# z!~HIbn#PueXBc5oUo~JopGn))T3nhf%9l!Lr=#fxt>(*nHe9+^w0f(nsJFU`Yio13 z#@%l>8?;_Q4Nu9z*Ug)=5;>%AbTn?wVhV6{-0Wf=psRUBPpRIDJA=dJRic8Ye0b4(M#OwCPG5h!`r#MEiQ-a@iQ=*j-zC9&S<$R+5X$y)eJ#1=?cf>= zUmoLI|9WSJE}|WG58~S>Mg10%r_aeeUCTVx-JY&#p6YN<*EUaexuC5s!KbIS*A`0|Nl!1O%CD0e2fqs!P(C@1R`en*Mzq1nP7b*k&-b$cfstokI zD}lbZ4D`KapzkdMRdj)VP%zMMNCf&0Gth5I1ZFLekN-i}tL|63)R(8uNEa*1*Y98Z za%-nr5^JgGsdeR<&$sAjxFWIA@M@Cf60dMo@#=UY{W@Nx0?JvA3J*b$kEeBj-Eb#^z<>Kr;iyueaz_T z$H_d=Vnxqzv05sgK5q2%TP~h{u*%c#zIpn^DNnZ&o^B;P{X&?hmW-#Cji(=p@Z{QN z(UVI+2zB|@OF(eA@N5Kn83{fYg2~;Y>AV=h#VNBD=-cc--)0B;F}6V8W(RV43FS?F z=0d=-YzO+C*Fd=^P_7A-TLOJo9q7C2K;Kmd`t_o~^h-Yr8R(Z&0{xt3pj;Lxmj%jQ zfv8KIH0e0>EpVW3fdhRD9H?0m= za}4l}1Og>b$%LDv&3%+JRO8#x*vwKvym5nN24Eyp0X%PL@9d>=XC*jx2i=C`X-qmh%Y-4n4HchZNRcnb zI_)O%@ba*~Kq<&QYGAiY2+M!#$p#RH99ZS^#%c8hdy_sNf7U0X}+1EeK!=CRQ5d z!O4~~+9+k}4k%8MdEt=Q(`qv>gTCPJBtB@)P&c?NGExBe^HI*mMa?{d59-Zpf|U}B}_`f`zD2PX_?0ou1Z%;C8z73O-d6pJd7ia`ZTf+@Of7{RFKO& z&BI6OhUVczql?uTFU>_)za{IMZ#1gI#?>e3t}fZGZtLB8IAu6)I%X}=jJor6b-U*3 zC06KF{ajh~CS5U8KtA35n0%{@zt;#8-w4Fgqmys;T6g-VAIKv~nANnqJ^JXQwtz^mgyt$*6d9y)UK@48pO`)%2 z5`ZtJ;<~H?cqZyHKrbrE2YC}EK>Bd5)9B$sG(FU%PR#53V!m{WqaVf!htMiDVN)Gg zM)v-0wHxKzD9yUQRy`pfH69vLaeG0;{UJAljeNzxl8dDJd(m)Er31AAsm%SL$ zMY05e5oKp4Zda4l@EJgM+U< zl9egLL9=o@P*u)6Chr!#t4PB%y9zH*KGRq%a%Kq=l6}U(-V3qCs@i)H-vki?7$W@!>$?QR*X#W$@ov zX6&7J@E1dWrT_g1{wC@7XTCr8l}sl4nM~&G&*XmkouAKk-uaogKaCvCd*_#OU&(&v zonMmN+|MB&ar|xfAIy9q^9B61_)on3m0$kFac`{t_D}rs&zki759EGf;)~G{=EslOos58*76hDUX1VUuf#Z~-u_9&`-=(Qi7&>u-+?#1VZ`IlbV82U@Yk8E!37Vh2H7>+;Q_%ZywifyuEbp+%U5_%+!~I`=Dce zt9D^HwlXYi?Oqs;uPmQiK6ha_u~OK1bK=a|OszgVT`z2H)lSCG)N3b?Pt=Fw_3L*E z!W!UY_UfJcDn(b~NK*cg?( zFwCwDC(aMg);FlV;bZl>7Fa6m6oy~EI?O)t%KeXw&DO(aILwC|=Y|uHZ(jSl4HRCw zw^0~gy^5rZn@fdZg<_S>&BBS4Mvp#%B!vpYBIOsU32A}6*h;tC(j|XUbt7dhqg|NxyM1F7dN)9E;X)gZY*z}+bj$(zO;e7 zC8CRV<-%}sWjI|we?K!W(>w)mxwZ^;S*|sPva}2&9SGcd0)75Ne@vJhXJBIpY82+MBa8nTZfnw6uI~^GPuA{L0DrcsSf? z1Q&)2D;PqdFr2SHOCv)BGc;Tv=o+8}p07n9T416SK!YYaK3uGC74B^nhKnHEh2g1{ z=dN#@WOsti4-IEq%XcmePp>@p;>L3?N#fEuq@U*WGb<;VQ}r7gC#O!;hhvS}aPd5e z99XM%GEYAX_!*8phPjw{{OZOD$sx#9yN4M@vkOn2TShe#2R~3gRe>Z^?j}ZZ3H`r> z)X~X$mnl5SWKJ)G$n|07>HA}2V=RSdS28D=@$mY_@YHgx5Dw?SezVJ9xmscCN8kJ2 zG5kU1)0tYWMie-Mys^f~nW^)`?>fKqHDK?@FvhdzFAU$aaxzBYdqHms-?wryLE-yX zPO=m(t(@d2{J_ddp2DwMIhmyJgDWRf6n^!}$ux!MS3nJ+|1iG=N-q~yhhyJB(sE(A zlFEE6&U{TWFQhV`h%976n+@vqwpgbABA6w@lp6B#z*1mO5rIMq>ru?wubNBDnRLtZ4pm25Dr&~ zXNxPtkDecX6!Pdm6fS{dA1RQ_jmk19_Wx@Mu;YcHYo_>QE*}!d4V@=Xa${%14JbvL zMK493cPrzs6xO)sYrrOW!iUuaw9g}ZOX-=%eu$Uq;OXVci9dFh###bBFn~wa*@Cb% zDi?<3mDTq=bzxZfe-#B|H&J{YQ3wwC*rK31!YnwM9Y_`QJTf4O&$+MC_T(v-&id? zg$12@KQ4(t8c)SA|2Uw_$ck+jnZ$=VZ);g+3!4AJ@RO!BroK+s78y7X4%tlcMd*)J zqGB|BPkrO+64unhQ=6+N#j!Jx+v-T}wWX^gxwVm8Q#Xz8!5a0I;m6LW3z$l#!C+hof=}`>!E8$|IH|epbmMcr=Qv7mmQ~P-d3ixB^4ON~2^zrlOXwHZ(I+~aSmqCKF zBKELOAmOK1hb2h)v+t7r9MFxOIXx_+%=0V5bp)RxDuy6;A;KbTsP)1MG4$|LAoG=# z`pGR8$PFq(kxx?@ioCq?CbVH4u?@tqwj;K= z^5&SNy@HseeI1n>quj5javb{xD#x+UP&tm>q&7no+oCop(x5gevQ2GLq)BC-L1c%@ zP^3j=D6&gsD6+@>3J}}peo?H={i4{b+%JmV;(k%A!~LSz0r!hyhuklUbwT5&;t4!r zXm}ABuSv9uXpe|a#fCLN$5?9-r80eqQkemlp$sbXIx2r6#(J9}u5m}ARO7BhsrVbf z^9e!ujS{5-pOq*T_$HKnI>z_S3^BgXNtB9zUZPa|3#j?D;QOLPslc~LlnQ(+%6>A& z_iYR@zHgT(75@&2Qt>aL<|hT;cS@8B+>VuP$mL`8T-^qV{{)KEU>*pWOaq?WPI{j4_-*@rs#ZwpOFWMI;znq!O*eHJ% z8JUYC|5L_~WhOG2;N(MNUwRQ+h%ap@{1JlRn#!1j&83qMQ__!5eLgdmz4)c(buEcK u*yiTNh1c`D`A_Gc%|4x7%@=Z$b5FiC_RhBrv)_#sK6o>?lg|V}=Kla5n}5>) literal 0 HcmV?d00001 diff --git a/crates/moonitor-desktop/assets/Inter-SemiBold.ttf b/crates/moonitor-desktop/assets/Inter-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..47f8ab1d68144fc004b310d65d95180d502b449b GIT binary patch literal 419744 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�# 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 literal 0 HcmV?d00001 diff --git a/crates/moonitor-desktop/src/composite.wgsl b/crates/moonitor-desktop/src/composite.wgsl new file mode 100644 index 0000000..4d64ef7 --- /dev/null +++ b/crates/moonitor-desktop/src/composite.wgsl @@ -0,0 +1,7 @@ +@group(0) @binding(0) var image:texture_2d; +@group(0) @binding(1) var image_sampler:sampler; +struct Out { @builtin(position) position:vec4, @location(0) uv:vec2 } +@vertex fn vs(@builtin(vertex_index) i:u32)->Out { + let uv=vec2(f32((i<<1u)&2u),f32(i&2u));var o:Out;o.position=vec4(uv*vec2(2.0,-2.0)+vec2(-1.0,1.0),0.0,1.0);o.uv=uv;return o; +} +@fragment fn fs(v:Out)->@location(0) vec4 { return textureSample(image,image_sampler,v.uv); } diff --git a/crates/moonitor-desktop/src/config.rs b/crates/moonitor-desktop/src/config.rs index 068469f..956e3fe 100644 --- a/crates/moonitor-desktop/src/config.rs +++ b/crates/moonitor-desktop/src/config.rs @@ -22,7 +22,7 @@ pub struct NodeConfig { pub note: String, } -#[derive(Deserialize)] +#[derive(Clone, Deserialize)] #[serde(deny_unknown_fields)] pub struct Config { pub nodes: Vec, diff --git a/crates/moonitor-desktop/src/main.rs b/crates/moonitor-desktop/src/main.rs index ede8b15..893840b 100644 --- a/crates/moonitor-desktop/src/main.rs +++ b/crates/moonitor-desktop/src/main.rs @@ -1,11 +1,29 @@ mod config; mod engine; +mod scene; mod ui; use anyhow::{Context, Result, bail}; use std::path::PathBuf; +struct Diagnostics; +impl log::Log for Diagnostics { + fn enabled(&self, m: &log::Metadata<'_>) -> bool { + m.level() <= log::Level::Info && m.target().starts_with("iced_wgpu") + } + fn log(&self, r: &log::Record<'_>) { + if self.enabled(r.metadata()) { + eprintln!("{}: {}", r.target(), r.args()); + } + } + fn flush(&self) {} +} fn main() -> Result<()> { + if std::env::var_os("MOONITOR_RENDER_DIAGNOSTICS").is_some() { + static DIAGNOSTICS: Diagnostics = Diagnostics; + let _ = log::set_logger(&DIAGNOSTICS); + log::set_max_level(log::LevelFilter::Info); + } let mut config_path = None; let mut data_dir = None; let mut screenshot = None; @@ -60,33 +78,18 @@ fn main() -> Result<()> { std::fs::set_permissions(&data_dir, std::fs::Permissions::from_mode(0o700))?; } } - let options = eframe::NativeOptions { - viewport: eframe::egui::ViewportBuilder::default() - .with_title("moonitor") - .with_inner_size([1240.0, 840.0]) - .with_min_inner_size([980.0, 680.0]), - renderer: eframe::Renderer::Glow, - ..Default::default() - }; - eframe::run_native( - "moonitor", - options, - Box::new(move |cc| { - ui::set_style(&cc.egui_ctx); - let selected = selected_node - .as_ref() - .and_then(|id| config.nodes.iter().position(|n| &n.id == id)); - let engine = engine::Engine::start(config, data_dir.join("history.sqlite")); - Ok(Box::new(ui::App::new( - engine, - selected, - selected_tab, - screenshot, - exit_after, - ))) - }), + let selected = selected_node + .as_ref() + .and_then(|id| config.nodes.iter().position(|n| &n.id == id)) + .unwrap_or(0); + ui::run( + config, + data_dir, + selected, + selected_tab, + screenshot, + exit_after, ) - .map_err(|e| anyhow::anyhow!(e.to_string())) } fn default_data_dir() -> PathBuf { diff --git a/crates/moonitor-desktop/src/scene.rs b/crates/moonitor-desktop/src/scene.rs new file mode 100644 index 0000000..374544d --- /dev/null +++ b/crates/moonitor-desktop/src/scene.rs @@ -0,0 +1,1077 @@ +//! A small native mesh renderer. Geometry is uploaded once; only the camera and +//! selection uniforms change. No game loop, asset service, or web runtime. +use crate::ui::Message; +use bytemuck::{Pod, Zeroable}; +use glam::{Mat4, Vec3}; +use iced::wgpu; +use iced::{Rectangle, mouse, widget::shader}; +use std::sync::{ + Arc, OnceLock, + atomic::{AtomicBool, AtomicU64, Ordering}, +}; +use wgpu::util::DeviceExt; + +const ANCHORS: [[f32; 3]; 5] = [ + [-1.30, 0.0, 1.15], + [-2.0, 0.0, -1.1], + [0.15, 0.0, -0.85], + [2.1, 0.0, -0.40], + [1.35, 0.0, 1.40], +]; +#[derive(Debug, Clone, Copy, PartialEq)] +pub struct Camera { + pub yaw: f32, + pub zoom: f32, +} +impl Default for Camera { + fn default() -> Self { + Self { + yaw: 0.30, + zoom: 1.0, + } + } +} +fn camera(camera: Camera, aspect: f32) -> Mat4 { + let eye = Vec3::new(camera.yaw.sin() * 11.0, 8.3, camera.yaw.cos() * 11.0); + let view = Mat4::look_at_rh(eye, Vec3::new(0.0, 0.30, 0.0), Vec3::Y); + let h = 2.55 / camera.zoom; + Mat4::orthographic_rh(-h * aspect, h * aspect, -h, h, 0.1, 40.0) * view +} +#[derive(Debug, Clone)] +pub struct Scene { + pub selected: usize, + pub live: [bool; 5], + pub camera: Camera, +} +#[derive(Default)] +pub struct Interaction { + pressed: Option, + last: Option, + dragged: bool, +} +impl shader::Program for Scene { + type State = Interaction; + type Primitive = ScenePrimitive; + fn update( + &self, + state: &mut Interaction, + event: &iced::Event, + bounds: Rectangle, + cursor: mouse::Cursor, + ) -> Option> { + match event { + iced::Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) + if cursor.is_over(bounds) => + { + state.pressed = cursor.position(); + state.last = state.pressed; + state.dragged = false; + Some(shader::Action::capture()) + } + iced::Event::Mouse(mouse::Event::CursorMoved { position }) + if state.pressed.is_some() => + { + if position.distance(state.pressed.unwrap()) > 5.0 { + state.dragged = true; + } + let dx = state.last.map(|p| position.x - p.x).unwrap_or(0.0); + state.last = Some(*position); + if state.dragged { + Some(shader::Action::publish(Message::Orbit(dx * 0.007)).and_capture()) + } else { + None + } + } + iced::Event::Mouse(mouse::Event::ButtonReleased(mouse::Button::Left)) + if state.pressed.take().is_some() => + { + state.last = None; + if !state.dragged + && let Some(p) = cursor.position_in(bounds) + { + let inv = camera(self.camera, bounds.width / bounds.height).inverse(); + let x = p.x / bounds.width * 2.0 - 1.0; + let y = 1.0 - p.y / bounds.height * 2.0; + let origin = inv.project_point3(Vec3::new(x, y, 0.0)); + let direction = (inv.project_point3(Vec3::new(x, y, 1.0)) - origin).normalize(); + let picked = ANCHORS + .iter() + .enumerate() + .filter_map(|(i, a)| { + let center = + Vec3::from_array(*a) + Vec3::Y * if i == 1 { 0.9 } else { 0.4 }; + let half = if i == 1 { + Vec3::new(0.6, 1.0, 0.65) + } else { + Vec3::new(0.9, 0.65, 0.85) + }; + ray_box(origin, direction, center - half, center + half).map(|d| (i, d)) + }) + .min_by(|a, b| a.1.total_cmp(&b.1)) + .map(|p| p.0); + return picked + .map(|i| shader::Action::publish(Message::SceneSelect(i)).and_capture()); + } + Some(shader::Action::capture()) + } + _ => None, + } + } + fn draw(&self, _: &Interaction, _: mouse::Cursor, _: Rectangle) -> ScenePrimitive { + ScenePrimitive(self.clone()) + } + fn mouse_interaction( + &self, + state: &Interaction, + bounds: Rectangle, + cursor: mouse::Cursor, + ) -> mouse::Interaction { + if state.pressed.is_some() { + mouse::Interaction::Grabbing + } else if cursor.is_over(bounds) { + mouse::Interaction::Grab + } else { + mouse::Interaction::default() + } + } +} +fn ray_box(origin: Vec3, direction: Vec3, min: Vec3, max: Vec3) -> Option { + let a = (min - origin) / direction; + let b = (max - origin) / direction; + let near = a.min(b).max_element(); + let far = a.max(b).min_element(); + (far >= near.max(0.0)).then_some(near.max(0.0)) +} +#[repr(C)] +#[derive(Clone, Copy, Debug, Pod, Zeroable)] +struct Vertex { + position: [f32; 3], + normal: [f32; 3], + color: [f32; 4], + material: [f32; 4], +} +#[repr(C)] +#[derive(Clone, Copy, PartialEq, Pod, Zeroable)] +struct Uniform { + camera: [[f32; 4]; 4], + light: [[f32; 4]; 4], + eye: [f32; 4], + state: [f32; 4], +} +#[derive(Debug)] +pub struct ScenePrimitive(Scene); +pub struct ScenePipeline { + mesh: wgpu::Buffer, + count: u32, + uniform: wgpu::Buffer, + bind: wgpu::BindGroup, + shadow_bind: wgpu::BindGroup, + render: wgpu::RenderPipeline, + shadow_pipeline: wgpu::RenderPipeline, + shadow: wgpu::TextureView, + composite: wgpu::RenderPipeline, + composite_layout: wgpu::BindGroupLayout, + sampler: wgpu::Sampler, + targets: Option, + format: wgpu::TextureFormat, + viewport: [f32; 4], + last_uniform: Option, + dirty: AtomicBool, + shadow_ready: AtomicBool, + scene_passes: AtomicU64, + compositions: AtomicU64, +} +struct Targets { + size: [u32; 2], + color: wgpu::TextureView, + msaa: wgpu::TextureView, + depth: wgpu::TextureView, + bind: wgpu::BindGroup, +} +impl shader::Pipeline for ScenePipeline { + fn new(device: &wgpu::Device, _: &wgpu::Queue, format: wgpu::TextureFormat) -> Self { + let vertices = geometry(); + let mesh = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("moonitor static device meshes"), + contents: bytemuck::cast_slice(vertices), + usage: wgpu::BufferUsages::VERTEX, + }); + let uniform = device.create_buffer(&wgpu::BufferDescriptor { + label: Some("scene uniforms"), + size: std::mem::size_of::() as u64, + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + mapped_at_creation: false, + }); + let shadow = texture( + device, + 1024, + 1024, + wgpu::TextureFormat::Depth32Float, + 1, + wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::TEXTURE_BINDING, + ); + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { + label: Some("shadow comparison"), + compare: Some(wgpu::CompareFunction::LessEqual), + mag_filter: wgpu::FilterMode::Linear, + min_filter: wgpu::FilterMode::Linear, + ..Default::default() + }); + let layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: None, + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::VERTEX_FRAGMENT, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Texture { + sample_type: wgpu::TextureSampleType::Depth, + view_dimension: wgpu::TextureViewDimension::D2, + multisampled: false, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 2, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Comparison), + count: None, + }, + ], + }); + let bind = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: uniform.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: wgpu::BindingResource::TextureView(&shadow), + }, + wgpu::BindGroupEntry { + binding: 2, + resource: wgpu::BindingResource::Sampler(&sampler), + }, + ], + }); + let module = device.create_shader_module(wgpu::include_wgsl!("scene.wgsl")); + // The shadow pass cannot sample the texture it is writing. + let shadow_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: Some("shadow uniform only"), + entries: &[wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::VERTEX, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }], + }); + let shadow_bind = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &shadow_layout, + entries: &[wgpu::BindGroupEntry { + binding: 0, + resource: uniform.as_entire_binding(), + }], + }); + let shadow_pipeline_layout = + device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: None, + bind_group_layouts: &[&shadow_layout], + push_constant_ranges: &[], + }); + let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: None, + bind_group_layouts: &[&layout], + push_constant_ranges: &[], + }); + let buffers = [wgpu::VertexBufferLayout { + array_stride: std::mem::size_of::() as u64, + step_mode: wgpu::VertexStepMode::Vertex, + attributes: &wgpu::vertex_attr_array![0=>Float32x3,1=>Float32x3,2=>Float32x4,3=>Float32x4], + }]; + let depth = wgpu::DepthStencilState { + format: wgpu::TextureFormat::Depth32Float, + depth_write_enabled: true, + depth_compare: wgpu::CompareFunction::LessEqual, + stencil: Default::default(), + bias: Default::default(), + }; + let render = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("lit device meshes"), + layout: Some(&pipeline_layout), + vertex: wgpu::VertexState { + module: &module, + entry_point: Some("vs_main"), + compilation_options: Default::default(), + buffers: &buffers, + }, + fragment: Some(wgpu::FragmentState { + module: &module, + entry_point: Some("fs_main"), + compilation_options: Default::default(), + targets: &[Some(wgpu::ColorTargetState { + format, + blend: None, + write_mask: wgpu::ColorWrites::ALL, + })], + }), + primitive: wgpu::PrimitiveState { + cull_mode: Some(wgpu::Face::Back), + ..Default::default() + }, + depth_stencil: Some(depth.clone()), + multisample: wgpu::MultisampleState { + count: 4, + ..Default::default() + }, + multiview: None, + cache: None, + }); + let shadow_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("directional shadow map"), + layout: Some(&shadow_pipeline_layout), + vertex: wgpu::VertexState { + module: &module, + entry_point: Some("vs_shadow"), + compilation_options: Default::default(), + buffers: &buffers, + }, + fragment: None, + primitive: wgpu::PrimitiveState { + cull_mode: Some(wgpu::Face::Back), + ..Default::default() + }, + depth_stencil: Some(wgpu::DepthStencilState { + bias: wgpu::DepthBiasState { + constant: 2, + slope_scale: 2.0, + clamp: 0.0, + }, + ..depth + }), + multisample: Default::default(), + multiview: None, + cache: None, + }); + let composite_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: None, + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Texture { + sample_type: wgpu::TextureSampleType::Float { filterable: true }, + view_dimension: wgpu::TextureViewDimension::D2, + multisampled: false, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::Filtering), + count: None, + }, + ], + }); + let composite_module = device.create_shader_module(wgpu::include_wgsl!("composite.wgsl")); + let composite_pipeline_layout = + device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: None, + bind_group_layouts: &[&composite_layout], + push_constant_ranges: &[], + }); + let composite = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("scene composition"), + layout: Some(&composite_pipeline_layout), + vertex: wgpu::VertexState { + module: &composite_module, + entry_point: Some("vs"), + compilation_options: Default::default(), + buffers: &[], + }, + fragment: Some(wgpu::FragmentState { + module: &composite_module, + entry_point: Some("fs"), + compilation_options: Default::default(), + targets: &[Some(format.into())], + }), + primitive: Default::default(), + depth_stencil: None, + multisample: Default::default(), + multiview: None, + cache: None, + }); + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { + mag_filter: wgpu::FilterMode::Linear, + min_filter: wgpu::FilterMode::Linear, + ..Default::default() + }); + Self { + mesh, + count: vertices.len() as u32, + uniform, + bind, + shadow_bind, + render, + shadow_pipeline, + shadow, + composite, + composite_layout, + sampler, + targets: None, + format, + viewport: [0.0; 4], + last_uniform: None, + dirty: AtomicBool::new(true), + shadow_ready: AtomicBool::new(false), + scene_passes: AtomicU64::new(0), + compositions: AtomicU64::new(0), + } + } +} +impl shader::Primitive for ScenePrimitive { + type Pipeline = ScenePipeline; + fn prepare( + &self, + p: &mut ScenePipeline, + device: &wgpu::Device, + queue: &wgpu::Queue, + bounds: &Rectangle, + viewport: &shader::Viewport, + ) { + let scale = viewport.scale_factor(); + let w = (bounds.width * scale).round().max(1.0) as u32; + let h = (bounds.height * scale).round().max(1.0) as u32; + // Cap retina offscreen work at 1600 px wide; UI text retains full resolution. + let ratio = (1600.0 / w as f32).min(1.0); + let size = [(w as f32 * ratio) as u32, (h as f32 * ratio) as u32]; + if p.targets.as_ref().is_none_or(|t| t.size != size) { + p.dirty.store(true, Ordering::Relaxed); + let color = texture( + device, + size[0], + size[1], + p.format, + 1, + wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::TEXTURE_BINDING, + ); + let msaa = texture( + device, + size[0], + size[1], + p.format, + 4, + wgpu::TextureUsages::RENDER_ATTACHMENT, + ); + let depth = texture( + device, + size[0], + size[1], + wgpu::TextureFormat::Depth32Float, + 4, + wgpu::TextureUsages::RENDER_ATTACHMENT, + ); + let bind = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &p.composite_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: wgpu::BindingResource::TextureView(&color), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: wgpu::BindingResource::Sampler(&p.sampler), + }, + ], + }); + p.targets = Some(Targets { + size, + color, + msaa, + depth, + bind, + }); + } + p.viewport = [ + bounds.x * scale, + bounds.y * scale, + bounds.width * scale, + bounds.height * scale, + ]; + let light = Mat4::orthographic_rh(-7.0, 7.0, -7.0, 7.0, 0.1, 30.0) + * Mat4::look_at_rh(Vec3::new(-3.0, 9.0, 5.0), Vec3::ZERO, Vec3::Y); + let live = self + .0 + .live + .iter() + .enumerate() + .fold(0u32, |bits, (i, v)| bits | ((*v as u32) << i)); + let c = self.0.camera; + let u = Uniform { + camera: camera(c, bounds.width / bounds.height).to_cols_array_2d(), + light: light.to_cols_array_2d(), + eye: [c.yaw.sin() * 11.0, 8.3, c.yaw.cos() * 11.0, 1.0], + state: [self.0.selected as f32, live as f32, 0.0, 0.0], + }; + if p.last_uniform != Some(u) { + queue.write_buffer(&p.uniform, 0, bytemuck::bytes_of(&u)); + p.last_uniform = Some(u); + p.dirty.store(true, Ordering::Relaxed); + } + } + fn render( + &self, + p: &ScenePipeline, + encoder: &mut wgpu::CommandEncoder, + target: &wgpu::TextureView, + clip: &Rectangle, + ) { + let Some(t) = &p.targets else { return }; + if !p.shadow_ready.swap(true, Ordering::Relaxed) { + let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("shadow"), + color_attachments: &[], + depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment { + view: &p.shadow, + depth_ops: Some(wgpu::Operations { + load: wgpu::LoadOp::Clear(1.0), + store: wgpu::StoreOp::Store, + }), + stencil_ops: None, + }), + ..Default::default() + }); + pass.set_pipeline(&p.shadow_pipeline); + pass.set_bind_group(0, &p.shadow_bind, &[]); + pass.set_vertex_buffer(0, p.mesh.slice(..)); + pass.draw(0..p.count, 0..1); + } + if p.dirty.swap(false, Ordering::Relaxed) { + p.scene_passes.fetch_add(1, Ordering::Relaxed); + let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("scene"), + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: &t.msaa, + depth_slice: None, + resolve_target: Some(&t.color), + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color { + r: 0.89, + g: 0.90, + b: 0.87, + a: 1.0, + }), + store: wgpu::StoreOp::Discard, + }, + })], + depth_stencil_attachment: Some(wgpu::RenderPassDepthStencilAttachment { + view: &t.depth, + depth_ops: Some(wgpu::Operations { + load: wgpu::LoadOp::Clear(1.0), + store: wgpu::StoreOp::Discard, + }), + stencil_ops: None, + }), + ..Default::default() + }); + pass.set_pipeline(&p.render); + pass.set_bind_group(0, &p.bind, &[]); + pass.set_vertex_buffer(0, p.mesh.slice(..)); + pass.draw(0..p.count, 0..1); + } + p.compositions.fetch_add(1, Ordering::Relaxed); + let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("compose"), + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: target, + depth_slice: None, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Load, + store: wgpu::StoreOp::Store, + }, + })], + ..Default::default() + }); + pass.set_pipeline(&p.composite); + pass.set_bind_group(0, &t.bind, &[]); + pass.set_viewport( + p.viewport[0], + p.viewport[1], + p.viewport[2], + p.viewport[3], + 0.0, + 1.0, + ); + pass.set_scissor_rect(clip.x, clip.y, clip.width, clip.height); + pass.draw(0..3, 0..1); + } +} +impl Drop for ScenePipeline { + fn drop(&mut self) { + if std::env::var_os("MOONITOR_RENDER_DIAGNOSTICS").is_some() { + eprintln!( + "moonitor-renderer: scene_passes={} shadow_passes={} compositions={} vertices={}", + self.scene_passes.load(Ordering::Relaxed), + u8::from(self.shadow_ready.load(Ordering::Relaxed)), + self.compositions.load(Ordering::Relaxed), + self.count + ); + } + } +} +fn texture( + d: &wgpu::Device, + w: u32, + h: u32, + format: wgpu::TextureFormat, + samples: u32, + usage: wgpu::TextureUsages, +) -> wgpu::TextureView { + d.create_texture(&wgpu::TextureDescriptor { + label: Some("scene attachment"), + size: wgpu::Extent3d { + width: w.max(1), + height: h.max(1), + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: samples, + dimension: wgpu::TextureDimension::D2, + format, + usage, + view_formats: &[], + }) + .create_view(&Default::default()) +} + +struct Mesh { + vertices: Vec, + node: f32, + origin: Vec3, + rotation: Mat4, +} +impl Mesh { + fn vertex(&self, p: Vec3, n: Vec3, color: [f32; 3], rough: f32, kind: f32) -> Vertex { + Vertex { + position: (self.rotation.transform_point3(p) + self.origin).to_array(), + normal: self.rotation.transform_vector3(n).to_array(), + color: [color[0], color[1], color[2], 1.0], + material: [self.node, rough, kind, 0.0], + } + } + fn quad(&mut self, p: [Vec3; 4], n: Vec3, c: [f32; 3], rough: f32, kind: f32) { + for i in [0, 1, 2, 0, 2, 3] { + self.vertices.push(self.vertex(p[i], n, c, rough, kind)); + } + } + fn box3(&mut self, center: Vec3, size: Vec3, bevel: f32, c: [f32; 3], rough: f32, kind: f32) { + let half = size * 0.5; + let bevel = bevel.min(half.min_element()); + let inner = (half - Vec3::splat(bevel)).max(Vec3::ZERO); + for (n, u, v) in [ + (Vec3::X, -Vec3::Z, Vec3::Y), + (-Vec3::X, Vec3::Z, Vec3::Y), + (Vec3::Y, Vec3::X, -Vec3::Z), + (-Vec3::Y, Vec3::X, Vec3::Z), + (Vec3::Z, Vec3::X, Vec3::Y), + (-Vec3::Z, -Vec3::X, Vec3::Y), + ] { + let hn = n.abs().dot(half); + let hu = u.abs().dot(half); + let hv = v.abs().dot(half); + if bevel <= 0.0 { + self.quad( + [ + center + n * hn - u * hu - v * hv, + center + n * hn + u * hu - v * hv, + center + n * hn + u * hu + v * hv, + center + n * hn - u * hu + v * hv, + ], + n, + c, + rough, + kind, + ); + continue; + } + let coords = |h: f32| { + [ + -h, + -h + bevel * 0.3, + -h + bevel, + h - bevel, + h - bevel * 0.3, + h, + ] + }; + let us = coords(hu); + let vs = coords(hv); + for a in 0..5 { + for b in 0..5 { + for (i, j) in [ + (a, b), + (a + 1, b), + (a + 1, b + 1), + (a, b), + (a + 1, b + 1), + (a, b + 1), + ] { + let raw = n * hn + u * us[i] + v * vs[j]; + let clamped = raw.clamp(-inner, inner); + let normal = (raw - clamped).normalize(); + let pos = center + clamped + normal * bevel; + self.vertices.push(self.vertex(pos, normal, c, rough, kind)); + } + } + } + } + } + fn cylinder(&mut self, center: Vec3, r: f32, height: f32, c: [f32; 3], kind: f32) { + for i in 0..80 { + let a = i as f32 * std::f32::consts::TAU / 80.0; + let b = (i + 1) as f32 * std::f32::consts::TAU / 80.0; + let na = Vec3::new(a.cos(), 0.0, a.sin()); + let nb = Vec3::new(b.cos(), 0.0, b.sin()); + let pa = center + na * r; + let pb = center + nb * r; + self.quad( + [pa, pb, pb + Vec3::Y * height, pa + Vec3::Y * height], + (na + nb).normalize(), + c, + 0.8, + kind, + ); + for p in [ + center + Vec3::Y * height, + pb + Vec3::Y * height, + pa + Vec3::Y * height, + ] { + self.vertices.push(self.vertex(p, Vec3::Y, c, 0.8, kind)); + } + } + } +} +fn geometry() -> &'static [Vertex] { + static MESH: OnceLock> = OnceLock::new(); + MESH.get_or_init(|| { + let mut m = Mesh { + vertices: vec![], + node: -1.0, + origin: Vec3::ZERO, + rotation: Mat4::IDENTITY, + }; + m.quad( + [ + Vec3::new(-30.0, -0.015, 30.0), + Vec3::new(30.0, -0.015, 30.0), + Vec3::new(30.0, -0.015, -30.0), + Vec3::new(-30.0, -0.015, -30.0), + ], + Vec3::Y, + [0.94, 0.95, 0.93], + 1.0, + 3.0, + ); + for (id, a) in ANCHORS.iter().enumerate() { + m.node = id as f32; + m.origin = Vec3::from_array(*a); + m.rotation = Mat4::IDENTITY; + m.cylinder( + Vec3::ZERO, + if id == 0 { 1.02 } else { 0.83 }, + 0.045, + [0.82, 0.85, 0.81], + 2.0, + ); + m.origin.y = 0.055; + let silver = [0.64, 0.69, 0.70]; + let black = [0.09, 0.12, 0.13]; + let glass = [0.035, 0.065, 0.07]; + let green = [0.53, 0.84, 0.64]; + match id { + 0 => { + // MacBook, open lid, keyboard and trackpad. + m.rotation = Mat4::from_rotation_y(-0.12); + m.box3( + Vec3::new(0.0, 0.06, 0.0), + Vec3::new(1.52, 0.10, 1.02), + 0.035, + silver, + 0.25, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.115, -0.16), + Vec3::new(1.29, 0.012, 0.42), + 0.004, + black, + 0.8, + 0.0, + ); + for row in 0..4 { + for col in 0..13 { + m.box3( + Vec3::new( + -0.58 + col as f32 * 0.096, + 0.127, + -0.31 + row as f32 * 0.095, + ), + Vec3::new(0.078, 0.009, 0.072), + 0.0, + [0.20, 0.23, 0.24], + 0.6, + 0.0, + ); + } + } + m.box3( + Vec3::new(0.0, 0.116, 0.29), + Vec3::new(0.53, 0.01, 0.26), + 0.008, + [0.58, 0.64, 0.65], + 0.4, + 0.0, + ); + let base = m.origin; + m.origin += m.rotation.transform_vector3(Vec3::new(0.0, 0.13, -0.46)); + m.rotation *= Mat4::from_rotation_x(-0.20); + m.box3( + Vec3::new(0.0, 0.48, 0.0), + Vec3::new(1.52, 0.96, 0.055), + 0.035, + silver, + 0.25, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.49, 0.031), + Vec3::new(1.39, 0.81, 0.008), + 0.012, + glass, + 0.1, + 0.0, + ); + m.box3( + Vec3::new(-0.27, 0.48, 0.039), + Vec3::new(0.63, 0.33, 0.004), + 0.0, + [0.15, 0.39, 0.37], + 0.4, + 1.0, + ); + m.box3( + Vec3::new(0.33, 0.48, 0.040), + Vec3::new(0.44, 0.33, 0.004), + 0.0, + [0.25, 0.54, 0.46], + 0.4, + 1.0, + ); + m.origin = base; + } + 1 => { + // Exon workstation, perforated front and side panel. + m.rotation = Mat4::from_rotation_y(0.12); + m.box3( + Vec3::new(0.0, 0.93, 0.0), + Vec3::new(0.79, 1.82, 0.98), + 0.055, + [0.12, 0.15, 0.16], + 0.55, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.94, 0.502), + Vec3::new(0.65, 1.62, 0.025), + 0.018, + [0.07, 0.10, 0.11], + 0.9, + 0.0, + ); + for row in 0..20 { + for col in 0..6 { + m.box3( + Vec3::new( + -0.245 + col as f32 * 0.098, + 0.26 + row as f32 * 0.066, + 0.522, + ), + Vec3::new(0.052, 0.018, 0.005), + 0.0, + [0.21, 0.26, 0.27], + 0.9, + 0.0, + ); + } + } + m.box3( + Vec3::new(0.405, 0.96, 0.0), + Vec3::new(0.013, 1.49, 0.78), + 0.003, + [0.16, 0.21, 0.22], + 0.2, + 0.0, + ); + m.box3( + Vec3::new(0.0, 1.74, 0.52), + Vec3::new(0.11, 0.018, 0.006), + 0.0, + green, + 0.2, + 1.0, + ); + } + 2 => { + // DGX Spark: compact champagne metal chassis with fins. + m.rotation = Mat4::from_rotation_y(-0.08); + m.box3( + Vec3::new(0.0, 0.25, 0.0), + Vec3::new(1.14, 0.42, 1.09), + 0.055, + [0.63, 0.58, 0.46], + 0.35, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.472, 0.0), + Vec3::new(0.95, 0.014, 0.89), + 0.007, + [0.76, 0.71, 0.59], + 0.35, + 0.0, + ); + for i in 0..17 { + m.box3( + Vec3::new(-0.46 + i as f32 * 0.057, 0.29, 0.554), + Vec3::new(0.018, 0.19, 0.01), + 0.0, + [0.19, 0.19, 0.15], + 0.9, + 0.0, + ); + } + m.box3( + Vec3::new(0.34, 0.13, 0.56), + Vec3::new(0.045, 0.012, 0.006), + 0.0, + green, + 0.2, + 1.0, + ); + m.box3( + Vec3::new(0.0, 0.484, 0.0), + Vec3::new(0.21, 0.008, 0.21), + 0.008, + [0.22, 0.25, 0.17], + 0.5, + 0.0, + ); + } + 3 => { + // Zima board with heatsink, ports and visible circuit board. + m.rotation = Mat4::from_rotation_y(-0.20); + m.box3( + Vec3::new(0.0, 0.105, 0.0), + Vec3::new(1.18, 0.08, 0.79), + 0.025, + [0.10, 0.24, 0.20], + 0.7, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.20, -0.04), + Vec3::new(0.80, 0.17, 0.56), + 0.015, + [0.25, 0.31, 0.30], + 0.45, + 0.0, + ); + for i in 0..13 { + m.box3( + Vec3::new(-0.38 + i as f32 * 0.064, 0.33, -0.04), + Vec3::new(0.027, 0.15, 0.56), + 0.0, + [0.46, 0.53, 0.51], + 0.45, + 0.0, + ); + } + for i in 0..3 { + m.box3( + Vec3::new(-0.36 + i as f32 * 0.32, 0.21, 0.35), + Vec3::new(0.24, 0.20, 0.16), + 0.012, + silver, + 0.4, + 0.0, + ); + m.box3( + Vec3::new(-0.36 + i as f32 * 0.32, 0.21, 0.438), + Vec3::new(0.17, 0.11, 0.012), + 0.0, + black, + 0.8, + 0.0, + ); + } + } + _ => { + // iPhone glass slab, elevated enough for readable silhouette. + m.rotation = Mat4::from_rotation_y(-0.25) * Mat4::from_rotation_x(-0.12); + m.box3( + Vec3::new(0.0, 0.14, 0.0), + Vec3::new(0.63, 0.095, 1.22), + 0.045, + [0.21, 0.25, 0.27], + 0.25, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.191, 0.0), + Vec3::new(0.57, 0.012, 1.14), + 0.04, + glass, + 0.08, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.200, 0.04), + Vec3::new(0.48, 0.005, 0.80), + 0.035, + [0.18, 0.29, 0.30], + 0.5, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.201, -0.47), + Vec3::new(0.22, 0.006, 0.058), + 0.022, + black, + 0.4, + 0.0, + ); + } + } + } + m.vertices.into() + }) +} diff --git a/crates/moonitor-desktop/src/scene.wgsl b/crates/moonitor-desktop/src/scene.wgsl new file mode 100644 index 0000000..bbefe9b --- /dev/null +++ b/crates/moonitor-desktop/src/scene.wgsl @@ -0,0 +1,32 @@ +struct Uniforms { camera: mat4x4, light: mat4x4, eye:vec4, state:vec4 } +@group(0) @binding(0) var u: Uniforms; +@group(0) @binding(1) var shadow_map:texture_depth_2d; +@group(0) @binding(2) var shadow_sampler:sampler_comparison; +struct Input { @location(0) position:vec3, @location(1) normal:vec3, @location(2) color:vec4, @location(3) material:vec4 } +struct Output { @builtin(position) position:vec4, @location(0) world:vec3, @location(1) normal:vec3, @location(2) color:vec4, @location(3) material:vec4, @location(4) shadow:vec4 } +@vertex fn vs_main(v:Input)->Output { + var o:Output; o.world=v.position; o.position=u.camera*vec4(v.position,1.0);o.normal=v.normal;o.color=v.color;o.material=v.material;o.shadow=u.light*vec4(v.position,1.0); return o; +} +@vertex fn vs_shadow(v:Input)->@builtin(position) vec4 {return u.light*vec4(v.position,1.0);} +@fragment fn fs_main(v:Output)->@location(0) vec4 { + let n=normalize(v.normal);let l=normalize(vec3(-3.0,9.0,5.0));let eye=normalize(u.eye.xyz-v.world); + let h=normalize(l+eye);let rough=v.material.y; + let s=v.shadow.xyz/v.shadow.w;let uv=vec2(s.x*0.5+0.5,0.5-s.y*0.5); + var shade=0.0; + for(var x=-1;x<=1;x++){for(var y=-1;y<=1;y++){shade+=textureSampleCompare(shadow_map,shadow_sampler,uv+vec2(f32(x),f32(y))/1024.0,s.z-0.0015);}} + shade=shade/9.0; + let diffuse=max(dot(n,l),0.0); + let hemi=0.36+0.30*(n.y*0.5+0.5); + let spec=pow(max(dot(n,h),0.0),mix(120.0,12.0,rough))*(1.0-rough)*0.4; + var base=pow(v.color.rgb,vec3(2.2)); + if(v.material.z==2.0) { + if(abs(v.material.x-u.state.x)<0.1) {base=pow(vec3(0.52,0.73,0.60),vec3(2.2));} + } + var color=base*(hemi+diffuse*shade*0.48)+vec3(spec*shade); + if(v.material.z==1.0) { color=base*0.85; } + if(v.material.z==3.0) { + // A quiet ground plane with real device shadows, no perpetual animation. + color=pow(vec3(0.95,0.956,0.938),vec3(2.2))*(0.89+0.11*shade); + } + return vec4(color,1.0); +} diff --git a/crates/moonitor-desktop/src/ui.rs b/crates/moonitor-desktop/src/ui.rs index db10079..836938e 100644 --- a/crates/moonitor-desktop/src/ui.rs +++ b/crates/moonitor-desktop/src/ui.rs @@ -1,8 +1,18 @@ use crate::{ - config::NodeKind, + config::{Config, NodeKind}, engine::{Engine, NodeState}, + scene::{Camera, Scene}, +}; +use iced::{ + Border, Color, Element, Font, + Length::{self, Fill}, + Subscription, Task, Theme, alignment, + widget::{ + self, Column, Row, Space, button, canvas, column, container, progress_bar, row, scrollable, + text, text_input, + }, + window, }; -use eframe::egui::{self, Color32, RichText, Stroke, Vec2}; use moonitor_core::*; use moonitor_store::{HistoryPoint, memory_percent}; use std::{ @@ -10,16 +20,26 @@ use std::{ time::{Duration, Instant}, }; -const BG: Color32 = Color32::from_rgb(11, 16, 23); -const CARD: Color32 = Color32::from_rgb(19, 27, 38); -const BORDER: Color32 = Color32::from_rgb(37, 49, 64); -const TEXT: Color32 = Color32::from_rgb(228, 236, 245); -const MUTED: Color32 = Color32::from_rgb(132, 151, 172); -const CYAN: Color32 = Color32::from_rgb(86, 211, 215); -const GREEN: Color32 = Color32::from_rgb(130, 214, 160); -const AMBER: Color32 = Color32::from_rgb(239, 187, 105); - -#[derive(Clone, Copy, PartialEq)] +const BG: Color = Color::from_rgb(0.965, 0.970, 0.955); +const PAPER: Color = Color::WHITE; +const INK: Color = Color::from_rgb(0.10, 0.15, 0.14); +const MUTED: Color = Color::from_rgb(0.45, 0.50, 0.47); +const LINE: Color = Color::from_rgb(0.87, 0.89, 0.86); +const GREEN: Color = Color::from_rgb(0.23, 0.49, 0.36); +const LIME: Color = Color::from_rgb(0.71, 0.87, 0.60); +const AMBER: Color = Color::from_rgb(0.65, 0.40, 0.18); +const NAV: Color = Color::from_rgb(0.085, 0.12, 0.11); +const DEVICE_IDS: [&str; 5] = ["macbook", "exon", "spark", "zima", "iphone"]; +const FONT: Font = Font::with_name("Inter"); +const MEDIUM: Font = Font { + weight: iced::font::Weight::Medium, + ..FONT +}; +const STRONG: Font = Font { + weight: iced::font::Weight::Semibold, + ..FONT +}; +#[derive(Clone, Copy, Debug, PartialEq)] pub enum Tab { Overview, Processes, @@ -40,660 +60,995 @@ impl Tab { _ => return None, }) } + fn label(self) -> &'static str { + match self { + Self::Overview => "Panoramica", + Self::Processes => "Processi", + Self::Ai => "AI locale", + Self::Disks => "Archiviazione", + Self::Network => "Rete", + Self::History => "Storico", + } + } + fn icon(self) -> &'static str { + match self { + Self::Overview => "overview", + Self::Processes => "process", + Self::Ai => "ai", + Self::Disks => "disk", + Self::Network => "network", + Self::History => "history", + } + } } - -pub fn set_style(ctx: &egui::Context) { - let mut visuals = egui::Visuals::dark(); - visuals.panel_fill = BG; - visuals.window_fill = CARD; - visuals.override_text_color = Some(TEXT); - visuals.selection.bg_fill = Color32::from_rgb(35, 78, 88); - visuals.widgets.inactive.bg_fill = CARD; - visuals.widgets.inactive.weak_bg_fill = CARD; - visuals.widgets.hovered.bg_fill = Color32::from_rgb(31, 49, 63); - ctx.set_visuals(visuals); - ctx.global_style_mut(|s| { - s.spacing.item_spacing = Vec2::new(12.0, 10.0); - s.animation_time = 0.0; - }); +const TABS: [Tab; 6] = [ + Tab::Overview, + Tab::Ai, + Tab::Processes, + Tab::Disks, + Tab::Network, + Tab::History, +]; +#[derive(Debug, Clone)] +pub enum Message { + Tick, + Select(usize), + SceneSelect(usize), + Tab(Tab), + Filter(String), + Sort(bool), + Orbit(f32), + Zoom(f32), + ResetCamera, + Window(window::Id, window::Event), + Screenshot(window::Screenshot, PathBuf), } - pub struct App { - engine: Engine, - selected: Option, + _engine: Engine, + nodes: Vec, + storage_error: Option, + selected: usize, tab: Tab, filter: String, sort_memory: bool, + camera: Camera, started: Instant, screenshot: Option, exit_after: Option, + window: Option, +} +pub fn run( + config: Config, + data_dir: PathBuf, + selected: usize, + tab: Tab, + screenshot: Option, + exit_after: Option, +) -> anyhow::Result<()> { + iced::application( + move || { + let engine = Engine::start(config.clone(), data_dir.join("history.sqlite")); + let nodes = engine.state.lock().unwrap().nodes.clone(); + App { + _engine: engine, + nodes, + storage_error: None, + selected, + tab, + filter: String::new(), + sort_memory: false, + camera: Camera::default(), + started: Instant::now(), + screenshot: screenshot.clone(), + exit_after, + window: None, + } + }, + App::update, + App::view, + ) + .title("moonitor") + .window(window::Settings { + size: iced::Size::new(1380.0, 940.0), + min_size: Some(iced::Size::new(1160.0, 760.0)), + position: window::Position::Centered, + ..Default::default() + }) + .default_font(FONT) + .font(include_bytes!("../assets/Inter-Regular.ttf").as_slice()) + .font(include_bytes!("../assets/Inter-Medium.ttf").as_slice()) + .font(include_bytes!("../assets/Inter-SemiBold.ttf").as_slice()) + .theme(|_: &App| { + Theme::custom( + "moonitor", + iced::theme::Palette { + background: BG, + text: INK, + primary: GREEN, + success: GREEN, + warning: AMBER, + danger: AMBER, + }, + ) + }) + .subscription(|_: &App| { + Subscription::batch([ + iced::time::every(Duration::from_secs(1)).map(|_| Message::Tick), + window::events().map(|(id, e)| Message::Window(id, e)), + ]) + }) + .run() + .map_err(|e| anyhow::anyhow!(e.to_string())) } impl App { - pub fn new( - engine: Engine, - selected: Option, - tab: Tab, - screenshot: Option, - exit_after: Option, - ) -> Self { - Self { - engine, - selected, - tab, - filter: String::new(), - sort_memory: false, - started: Instant::now(), - screenshot, - exit_after, + fn update(&mut self, message: Message) -> Task { + match message { + Message::Tick => { + let shared = self._engine.state.lock().unwrap(); + self.nodes = shared.nodes.clone(); + self.storage_error = shared.storage_error.clone(); + drop(shared); + if self + .exit_after + .is_some_and(|s| self.started.elapsed().as_secs_f32() >= s) + { + return iced::exit(); + } + if self.started.elapsed() >= Duration::from_secs(8) + && self.window.is_some() + && let Some(path) = self.screenshot.take() + { + return window::screenshot(self.window.unwrap()) + .map(move |s| Message::Screenshot(s, path.clone())); + } + } + Message::Window(id, window::Event::Opened { .. }) => self.window = Some(id), + Message::Window(_, _) => (), + Message::Screenshot(s, path) => { + if let Err(e) = image::save_buffer( + &path, + &s.rgba, + s.size.width, + s.size.height, + image::ColorType::Rgba8, + ) { + eprintln!("Screenshot failed: {e}"); + } + } + Message::Select(i) => { + if i < self.nodes.len() { + self.selected = i; + } + } + Message::SceneSelect(i) => { + if let Some(index) = self.nodes.iter().position(|n| n.config.id == DEVICE_IDS[i]) { + self.selected = index; + } + } + Message::Tab(tab) => self.tab = tab, + Message::Filter(s) => self.filter = s, + Message::Sort(memory) => self.sort_memory = memory, + Message::Orbit(dx) => self.camera.yaw += dx, + Message::Zoom(delta) => self.camera.zoom = (self.camera.zoom + delta).clamp(0.75, 1.6), + Message::ResetCamera => self.camera = Camera::default(), } + Task::none() } -} - -impl eframe::App for App { - fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame) { - ui.ctx().request_repaint_after(Duration::from_secs(1)); - let elapsed = self.started.elapsed().as_secs_f32(); - if elapsed >= 8.0 - && let Some(path) = self.screenshot.take() - { - ui.ctx() - .send_viewport_cmd(egui::ViewportCommand::Screenshot( - egui::ScreenshotCallback::new(move |img| { - let bytes: Vec<_> = img.pixels.iter().flat_map(|c| c.to_array()).collect(); - if let Err(e) = image::save_buffer( - &path, - &bytes, - img.width() as u32, - img.height() as u32, - image::ColorType::Rgba8, - ) { - eprintln!("Screenshot failed: {e}"); - } - }), - )); - } - if self.exit_after.is_some_and(|s| elapsed >= s) { - ui.ctx().send_viewport_cmd(egui::ViewportCommand::Close); - } - let (nodes, storage_error) = { - let shared = self.engine.state.lock().unwrap(); - (shared.nodes.clone(), shared.storage_error.clone()) + fn view(&self) -> Element<'_, Message> { + let Some(node) = self.nodes.get(self.selected) else { + return text("Nessun dispositivo configurato").into(); }; - egui::Frame::new().fill(BG).inner_margin(20).show(ui, |ui| { - ui.horizontal(|ui| { - ui.label(RichText::new("moonitor").size(32.0).strong()); - ui.add_space(12.0); - ui.label( - RichText::new("HOMELAB / TELEMETRIA LOCALE") - .size(11.0) - .color(MUTED) - .monospace(), - ); - ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| { - ui.label( - RichText::new(format!( - "{} nodi attivi", - nodes.iter().filter(|n| n.live()).count() - )) - .color(GREEN), - ); - }); + let active = self.nodes.iter().filter(|n| n.live()).count(); + let header = row![ + column![ + eyebrow("WORKSPACE / HOMELAB"), + text(self.tab.label()).size(34).font(STRONG) + ] + .spacing(8), + Space::new().width(Fill), + pill(&format!("{active} / {} online", self.nodes.len()), GREEN), + text("LOCALE / VPN").size(10).color(MUTED) + ] + .spacing(20) + .align_y(alignment::Vertical::Center); + let mut body = column![header].spacing(22).width(Fill); + if let Some(error) = &self.storage_error { + body = body.push(notice(&format!("Storico non disponibile: {error}"))); + } + if self.tab == Tab::Overview { + let live = std::array::from_fn(|i| { + self.nodes + .iter() + .find(|n| n.config.id == DEVICE_IDS[i]) + .is_some_and(NodeState::live) }); - ui.add_space(12.0); - ui.separator(); - ui.add_space(12.0); - egui::Panel::left("fleet") - .exact_size(190.0) - .resizable(false) - .frame(egui::Frame::new().fill(BG).inner_margin(egui::Margin { - right: 18, - ..Default::default() - })) - .show(ui, |ui| { - ui.label( - RichText::new("DISPOSITIVI") - .color(MUTED) - .size(11.0) - .monospace(), - ); - if ui - .add_sized( - [170.0, 38.0], - egui::Button::new("Tutti i nodi").selected(self.selected.is_none()), - ) - .clicked() - { - self.selected = None; - } - ui.add_space(8.0); - for (index, node) in nodes.iter().enumerate() { - let (status, color) = status(node); - egui::Frame::new() - .fill(if self.selected == Some(index) { - Color32::from_rgb(28, 49, 60) - } else { - CARD - }) - .inner_margin(12) - .corner_radius(8) - .show(ui, |ui| { - ui.set_min_width(146.0); - if ui - .add( - egui::Button::new( - RichText::new(&node.config.label).strong(), - ) - .frame(false), - ) - .clicked() - { - self.selected = Some(index); - } - ui.label(RichText::new(status).size(11.0).color(color)); - if let Some(s) = &node.sample { - ui.label( - RichText::new(format!( - "CPU {} / RAM {}", - pct(s.cpu_utilization_percent.value().copied()), - pct(memory_percent(s)) - )) - .size(10.5) - .color(MUTED), - ); - } - }); - } - ui.add_space(14.0); - ui.label( - RichText::new("1 s live\n5 s storico / 7 giorni\nSSH persistente") - .size(11.0) - .color(MUTED), - ); - }); - egui::CentralPanel::default() - .frame(egui::Frame::new().fill(BG).inner_margin(egui::Margin { - left: 14, - ..Default::default() - })) - .show(ui, |ui| { - if let Some(e) = storage_error { - ui.colored_label(AMBER, format!("Storico non disponibile: {e}")); - } - egui::ScrollArea::vertical().id_salt("main").show(ui, |ui| { - if let Some(index) = self.selected { - self.device(ui, &nodes[index]); - } else { - self.fleet(ui, &nodes); - } - }); - }); - }); + let selected = DEVICE_IDS + .iter() + .position(|id| *id == node.config.id) + .unwrap_or(0); + let scene = Scene { + selected, + live, + camera: self.camera, + }; + let controls = row![ + text("IL TUO HOMELAB").size(10).font(MEDIUM).color(MUTED), + Space::new().width(Fill), + small_button("−", Message::Zoom(-0.1)), + small_button("+", Message::Zoom(0.1)), + small_button("Ripristina", Message::ResetCamera) + ] + .spacing(6) + .align_y(alignment::Vertical::Center); + let scene_panel = container( + column![ + container(controls).padding([14, 18]), + widget::shader(scene).width(Fill).height(398), + container( + row![ + text(format!("{:02}", self.nodes.len())) + .font(STRONG) + .size(12) + .color(GREEN), + text("DISPOSITIVI").size(10).color(MUTED), + Space::new().width(Fill), + text("Trascina per ruotare · clicca per selezionare") + .size(10) + .color(MUTED) + ] + .spacing(8) + ) + .padding([10, 18]) + ] + .spacing(0), + ) + .style(|_| container::Style { + background: Some(Color::from_rgb(0.95, 0.956, 0.938).into()), + border: Border { + radius: 18.into(), + color: LINE, + width: 1.0, + }, + ..Default::default() + }) + .width(Fill); + body = body.push(row![scene_panel, self.inspector(node)].spacing(16)); + } else { + body = body.push(self.device_strip()).push(self.node_heading(node)); + } + if self.tab == Tab::Overview { + body = body.push(self.device_strip()); + } + body = body.push(self.details(node)); + let main = scrollable(container(body).padding([28, 28]).width(Fill)).height(Fill); + container(row![self.sidebar(), main].spacing(0)) + .style(|_| container::Style { + background: Some(BG.into()), + text_color: Some(INK), + ..Default::default() + }) + .width(Fill) + .height(Fill) + .into() } -} - -impl App { - fn fleet(&mut self, ui: &mut egui::Ui, nodes: &[NodeState]) { - ui.heading("Il tuo homelab"); - ui.label( - RichText::new("Risorse, GPU e carichi AI dei dispositivi in LAN / VPN").color(MUTED), - ); - ui.add_space(16.0); - let columns = if ui.available_width() > 760.0 { 2 } else { 1 }; - for chunk in nodes.chunks(columns) { - ui.columns(columns, |cols| { - for (col, node) in cols.iter_mut().zip(chunk) { - card(col, |ui| { - let (label, color) = status(node); - ui.horizontal(|ui| { - ui.label(RichText::new(&node.config.label).size(20.0).strong()); - ui.colored_label(color, label); - }); - if let Some(s) = &node.sample { - ui.label(RichText::new(&s.cpu_name).size(11.0).color(MUTED)); - meter(ui, "CPU", s.cpu_utilization_percent.value().copied(), CYAN); - meter(ui, "RAM", memory_percent(s), GREEN); - meter( - ui, - "GPU", - s.gpus - .iter() - .filter_map(|g| g.utilization_percent.value().copied()) - .reduce(f64::max), - AMBER, - ); - ui.label( - RichText::new(format!( - "{} / {} core / {} processi", - bytes(s.memory.total_bytes.value().copied()), - s.cpu_cores_percent.len(), - s.process_count - )) - .size(11.0) - .color(MUTED), - ); + fn sidebar(&self) -> Element<'_, Message> { + let brand = row![ + canvas(Icon("moon", LIME)).width(28).height(28), + text("moonitor").size(23).font(STRONG).color(Color::WHITE) + ] + .spacing(8) + .align_y(alignment::Vertical::Center); + let mut nav = column![ + container(brand).padding([8, 0]), + text("PERSONAL OBSERVATORY") + .size(8) + .color(Color::from_rgb(0.49, 0.60, 0.53)), + Space::new().height(30), + text("MONITORAGGIO") + .size(9) + .color(Color::from_rgb(0.47, 0.57, 0.51)) + ] + .spacing(10); + for tab in TABS { + let chosen = self.tab == tab; + let color = if chosen { + LIME + } else { + Color::from_rgb(0.70, 0.76, 0.71) + }; + nav = nav.push( + button( + row![ + canvas(Icon(tab.icon(), color)).width(18).height(18), + text(tab.label()).size(12).font(MEDIUM) + ] + .spacing(12) + .align_y(alignment::Vertical::Center), + ) + .on_press(Message::Tab(tab)) + .width(Fill) + .padding([13, 12]) + .style(move |_, state| button::Style { + background: Some( + if chosen { + Color::from_rgb(0.16, 0.23, 0.18) + } else if matches!(state, button::Status::Hovered) { + Color::from_rgb(0.12, 0.18, 0.14) } else { - ui.add_space(14.0); - ui.label( - RichText::new(if node.config.note.is_empty() { - "In attesa di telemetria" - } else { - &node.config.note - }) - .color(MUTED), - ); - if let Some(e) = &node.error { - ui.label(RichText::new(e).color(AMBER).size(11.0)); - } - ui.add_space(14.0); + NAV } - if ui.button("Apri dispositivo").clicked() { - self.selected = - nodes.iter().position(|n| n.config.id == node.config.id); - } - }); - } - }); - ui.add_space(8.0); - } - ui.add_space(12.0); - ui.label(RichText::new("N/D indica una misura non disponibile. I campioni interrotti restano visibili con lo stato obsoleto.").color(MUTED).size(11.0)); - } - - fn device(&mut self, ui: &mut egui::Ui, node: &NodeState) { - ui.horizontal(|ui| { - ui.heading(&node.config.label); - let (s, c) = status(node); - ui.colored_label(c, s); - }); - let Some(s) = &node.sample else { - ui.add_space(20.0); - ui.label(&node.config.note); - ui.label( - node.error.as_deref().unwrap_or( - "In attesa dei primi campioni. La raccolta riprova automaticamente.", - ), + .into(), + ), + text_color: color, + border: Border { + radius: 9.into(), + ..Default::default() + }, + ..Default::default() + }), ); - return; - }; - ui.label( - RichText::new(format!("{} / {} / {}", s.os, s.arch, s.cpu_name)) - .color(MUTED) - .size(12.0), + } + nav = nav.push(Space::new().height(32)).push( + text("I TUOI DISPOSITIVI") + .size(9) + .color(Color::from_rgb(0.47, 0.57, 0.51)), ); - if !node.live() { - ui.colored_label( - AMBER, - format!( - "Ultimo campione ricevuto {:.0} s fa. {}", - node.last_seen - .map(|t| t.elapsed().as_secs_f64()) - .unwrap_or_default(), - node.error.as_deref().unwrap_or("Dati obsoleti") - ), + for (i, node) in self.nodes.iter().enumerate() { + let (_, color) = status(node); + nav = nav.push( + button( + row![ + text("•").color(color).size(15), + text(&node.config.label) + .size(11) + .color(if self.selected == i { + Color::WHITE + } else { + Color::from_rgb(0.58, 0.67, 0.61) + }) + ] + .spacing(10), + ) + .on_press(Message::Select(i)) + .style(button::text) + .padding([7, 9]) + .width(Fill), ); } - ui.add_space(14.0); - ui.columns(4, |c| { - stat( - &mut c[0], - "CPU", - &pct(s.cpu_utilization_percent.value().copied()), - &format!("{} core logici", s.cpu_cores_percent.len()), - CYAN, + let footer = column![ + row![ + text("•").color(LIME), + text("Raccolta attiva") + .size(11) + .color(Color::from_rgb(0.73, 0.81, 0.74)) + ] + .spacing(8), + text("1 s · SQLite locale") + .size(10) + .color(Color::from_rgb(0.44, 0.55, 0.48)), + text("moonitor / 0.1.0") + .size(9) + .color(Color::from_rgb(0.37, 0.47, 0.41)) + ] + .spacing(10); + container( + column![ + scrollable(nav).height(Fill), + container(footer).padding([14, 0]) + ] + .spacing(0), + ) + .padding([24, 18]) + .width(202) + .height(Fill) + .style(|_| container::Style { + background: Some(NAV.into()), + ..Default::default() + }) + .into() + } + fn device_strip(&self) -> Element<'_, Message> { + let mut devices = Row::new().spacing(10); + for (i, n) in self.nodes.iter().enumerate() { + let chosen = self.selected == i; + let (state, color) = status(n); + let cpu = n + .sample + .as_ref() + .and_then(|s| s.cpu_utilization_percent.value().copied()); + let content = column![ + row![ + text(format!("{:02}", i + 1)).size(10).color(MUTED), + Space::new().width(Fill), + text("•").color(color) + ] + .align_y(alignment::Vertical::Center), + text(&n.config.label).font(STRONG).size(13), + row![ + text(if n.live() { pct(cpu) } else { state.to_owned() }) + .size(11) + .height(18) + .color(if n.live() { INK } else { color }), + Space::new().width(Fill), + text(if n.live() { "CPU" } else { "" }).size(9).color(MUTED) + ] + ] + .spacing(10); + devices = devices.push( + button(content) + .on_press(Message::Select(i)) + .padding(14) + .width(Fill) + .style(move |_, s| button::Style { + background: Some( + if chosen { + Color::from_rgb(0.91, 0.95, 0.88) + } else if matches!(s, button::Status::Hovered) { + Color::from_rgb(0.94, 0.96, 0.92) + } else { + PAPER + } + .into(), + ), + text_color: INK, + border: Border { + color: if chosen { GREEN } else { LINE }, + width: 1.0, + radius: 12.into(), + }, + ..Default::default() + }), ); + } + devices.into() + } + fn inspector<'a>(&self, n: &'a NodeState) -> Element<'a, Message> { + let (state, color) = status(n); + let mut content = column![ + row![ + eyebrow("DISPOSITIVO SELEZIONATO"), + Space::new().width(Fill), + text("•").color(color) + ] + .spacing(8), + text(&n.config.label).size(25).font(STRONG), + text(state).size(10).font(MEDIUM).color(color) + ] + .spacing(10); + if let Some(s) = &n.sample { + content = content + .push(text(short_cpu(&s.cpu_name)).size(11).color(MUTED)) + .push(Space::new().height(8)); let total = s.memory.total_bytes.value().copied(); let used = total .zip(s.memory.available_bytes.value().copied()) .map(|(t, a)| t.saturating_sub(a)); - stat( - &mut c[1], - "MEMORIA", - &pct(memory_percent(s)), - &format!("{} / {}", bytes(used), bytes(total)), + content = content.push(metric( + "CPU", + s.cpu_utilization_percent.value().copied(), + &format!("{} core logici", s.cpu_cores_percent.len()), GREEN, - ); - let gpu = s - .gpus - .iter() - .filter_map(|g| g.utilization_percent.value().copied()) - .reduce(f64::max); - stat( - &mut c[2], + )); + content = content.push(metric( + "Memoria", + memory_percent(s), + &format!("{} / {}", bytes(used), bytes(total)), + Color::from_rgb(0.49, 0.58, 0.41), + )); + content = content.push(metric( "GPU", - &pct(gpu), + gpu_percent(s), s.gpus .first() .map(|g| g.name.as_str()) .unwrap_or("Sensore non disponibile"), - AMBER, + Color::from_rgb(0.51, 0.58, 0.64), + )); + content = content.push( + row![ + text("Potenza GPU").size(11).color(MUTED), + Space::new().width(Fill), + text(watts(gpu_power(s))).size(15).font(MEDIUM) + ] + .align_y(alignment::Vertical::Center), ); - let power = s - .power - .iter() - .find(|p| p.scope == PowerScope::GpuBoard) - .and_then(|p| p.watts.value()) - .map(|p| format!("{p:.1} W")) - .unwrap_or_else(|| "N/D".into()); - stat( - &mut c[3], - "POTENZA GPU", - &power, - "Intero dispositivo: N/D", - CYAN, + content = content.push(text("Intero dispositivo: N/D").size(9).color(MUTED)); + } else { + content = content + .push(Space::new().height(18)) + .push(text(&n.config.note).size(13).color(MUTED)) + .push( + text( + n.error + .as_deref() + .unwrap_or("In attesa dei primi campioni."), + ) + .size(11) + .color(MUTED), + ); + } + if n.sample.is_some() && !n.live() { + content = content.push( + text("Ultimo campione conservato · dati obsoleti") + .size(10) + .color(AMBER), ); - }); - ui.add_space(12.0); - ui.horizontal_wrapped(|ui| { - for (tab, label) in [ - (Tab::Overview, "Panoramica"), - (Tab::Processes, "Processi"), - (Tab::Ai, "AI locale"), - (Tab::Disks, "Dischi"), - (Tab::Network, "Rete"), - (Tab::History, "Storico"), - ] { - if ui.selectable_label(self.tab == tab, label).clicked() { - self.tab = tab; - } - } - }); - ui.separator(); - ui.add_space(10.0); + } + container(content) + .padding(22) + .width(286) + .height(470) + .style(panel) + .into() + } + fn node_heading<'a>(&self, n: &'a NodeState) -> Element<'a, Message> { + let (state, color) = status(n); + let mut c = column![ + row![ + text(&n.config.label).size(24).font(STRONG), + Space::new().width(Fill), + pill(state, color) + ] + .align_y(alignment::Vertical::Center) + ] + .spacing(10); + if let Some(s) = &n.sample { + c = c.push( + text(format!("{} / {} / {}", s.os, s.arch, s.cpu_name)) + .size(11) + .color(MUTED), + ); + } + if !n.live() && n.sample.is_some() { + c = c.push(notice(&format!( + "Campione ricevuto {} s fa. {}", + n.last_seen.map(|t| t.elapsed().as_secs()).unwrap_or(0), + n.error.as_deref().unwrap_or("Telemetria interrotta") + ))); + } + c.into() + } + fn details<'a>(&'a self, n: &'a NodeState) -> Element<'a, Message> { + let Some(s) = &n.sample else { + return card( + column![ + text("Telemetria non disponibile").size(18).font(STRONG), + text(&n.config.note).color(MUTED).size(12) + ] + .spacing(12), + ) + .into(); + }; match self.tab { Tab::Overview => { - ui.columns(2, |cols| { - chart( - &mut cols[0], - "CPU / ultimi 5 minuti", - &node.history, - |p| p.cpu_percent, - CYAN, - ); - chart( - &mut cols[1], - "GPU / ultimi 5 minuti", - &node.history, - |p| p.gpu_percent, - AMBER, - ); - }); - ui.add_space(12.0); - card(ui, |ui| { - ui.label( - RichText::new("CORE LOGICI") - .color(MUTED) - .monospace() - .size(11.0), - ); - egui::Grid::new("cores") - .num_columns(4) - .spacing([14.0, 8.0]) - .show(ui, |ui| { - for (i, value) in s.cpu_cores_percent.iter().enumerate() { - ui.horizontal(|ui| { - ui.label( - RichText::new(format!("{:02}", i)).monospace().color(MUTED), - ); - ui.add( - egui::ProgressBar::new(*value / 100.0) - .desired_width(135.0) - .fill(CYAN) - .text(format!("{value:.0}%")), - ); - }); - if i % 4 == 3 { - ui.end_row(); - } - } - }); - }); - ui.add_space(10.0); - card(ui, |ui| { - ui.label(format!( - "Swap: {} / Uptime: {:.1} ore / Raccolta: {:.2} ms", - bytes(s.memory.swap_used_bytes.value().copied()), - s.uptime_seconds as f64 / 3600.0, - s.collector_duration_ms - )); - if let Some(b) = s.battery_percent.value() { - ui.label(format!("Batteria: {b:.0}%")); - } - for p in &s.pressure { - ui.label(format!( - "Pressione {} (stall avg10): {:.2}%", - p.resource, p.some_avg10_percent - )); - } - for t in s.temperatures.iter().take(8) { - ui.label(format!("{}: {:.1} °C", t.label, t.celsius)); - } - if s.temperatures.is_empty() { - ui.label(RichText::new("Temperature di sistema: N/D").color(MUTED)); - } - }); + let mut content = column![ + row![ + text(format!("{} · attività", n.config.label)) + .size(16) + .font(STRONG), + Space::new().width(Fill), + text("ULTIMI 5 MINUTI").size(9).color(MUTED) + ] + .align_y(alignment::Vertical::Center), + row![ + plot("CPU", &n.history, 0, GREEN), + plot("Memoria", &n.history, 1, Color::from_rgb(0.49, 0.58, 0.41)), + plot("GPU", &n.history, 2, Color::from_rgb(0.51, 0.58, 0.64)) + ] + .spacing(24) + ] + .spacing(20); + let models = s.ollama.models.value(); + let ai = s.processes.iter().filter(|p| p.is_ai).count(); + let runtime = match models { + Some(m) if m.is_empty() => "Ollama pronto · nessun modello caricato".to_owned(), + Some(m) => format!("{} modelli caricati in Ollama", m.len()), + None => "Ollama non raggiungibile".into(), + }; + content = content.push(widget::rule::horizontal(1)).push( + row![ + canvas(Icon("ai", GREEN)).width(20).height(20), + column![ + text("AI locale").size(12).font(STRONG), + text(runtime).size(11).color(MUTED) + ] + .spacing(5), + Space::new().width(Fill), + text(format!("{ai} processi candidati")) + .size(11) + .color(MUTED), + small_button("Apri AI locale →", Message::Tab(Tab::Ai)) + ] + .spacing(14) + .align_y(alignment::Vertical::Center), + ); + card(content).into() } - Tab::Processes => self.processes(ui, s, false), + Tab::Processes => self.processes(s, false), Tab::Ai => { - for gpu in &s.gpus { - card(ui, |ui| { - ui.label(RichText::new(&gpu.name).size(17.0).strong()); - ui.label(format!( - "Memoria GPU: {} / {} ({:?})", - bytes(gpu.memory_used_bytes.value().copied()), - bytes(gpu.memory_total_bytes.value().copied()), - gpu.memory_kind - )); - if gpu.memory_kind == GpuMemoryKind::Unified { - ui.label( - RichText::new( - "Memoria condivisa con la CPU: i totali non si sommano.", + let mut c = column![row![ + text("Acceleratori").size(19).font(STRONG), + Space::new().width(Fill), + text("MISURE DEL RUNTIME E DEL SISTEMA") + .size(9) + .color(MUTED) + ]] + .spacing(18); + for g in &s.gpus { + let mut gpu = column![ + text(&g.name).size(17).font(STRONG), + row![ + mini_stat("CARICO", &pct(g.utilization_percent.value().copied())), + mini_stat( + "MEMORIA GPU", + &format!( + "{} / {}", + bytes(g.memory_used_bytes.value().copied()), + bytes(g.memory_total_bytes.value().copied()) ) - .color(MUTED), - ); - } - ui.label(format!( - "Temperatura: {} / Clock: {}", - gpu.temperature_celsius - .value() - .map(|n| format!("{n:.0} °C")) - .unwrap_or_else(|| "N/D".into()), - gpu.clock_mhz + ), + mini_stat( + "TEMPERATURA", + &g.temperature_celsius + .value() + .map(|v| format!("{v:.0} °C")) + .unwrap_or("N/D".into()) + ), + mini_stat("POTENZA SCHEDA", &watts(gpu_power(s))) + ] + .spacing(24) + ] + .spacing(18); + if g.memory_kind == GpuMemoryKind::Unified { + gpu=gpu.push(text("Memoria unificata: le allocazioni GPU condividono la RAM del nodo.").size(11).color(MUTED)); + } + gpu = gpu.push( + text(format!( + "Clock: {} · Limitazioni: {}", + g.clock_mhz .value() - .map(|n| format!("{n} MHz")) - .unwrap_or_else(|| "N/D".into()) - )); - ui.label(format!( - "Limitazioni GPU: {}", - gpu.throttling.value().map(String::as_str).unwrap_or("N/D") - )); - }); + .map(|v| format!("{v} MHz")) + .unwrap_or("N/D".into()), + g.throttling.value().map(String::as_str).unwrap_or("N/D") + )) + .size(11) + .color(MUTED), + ); + c = c.push(card(gpu)); } - ui.add_space(10.0); - ui.heading("Modelli caricati / Ollama"); + c = c.push(text("Modelli caricati · Ollama").size(17).font(STRONG)); match s.ollama.models.value() { Some(models) if models.is_empty() => { - ui.colored_label(GREEN, "Ollama disponibile / nessun modello caricato"); + c = c.push( + text("Runtime disponibile. Nessun modello caricato.") + .size(13) + .color(GREEN), + ) } Some(models) => { - for model in models { - ui.label(format!( - "{} / {} / contesto {} / {}", - model.name, - bytes(Some(model.size_bytes)), - model - .context_length - .map(|n| n.to_string()) - .unwrap_or_else(|| "N/D".into()), - model.quantization.as_deref().unwrap_or("N/D") + for m in models { + c = c.push(card( + column![ + text(&m.name).size(16).font(STRONG), + text(format!( + "{} · contesto {} · {}", + bytes(Some(m.size_bytes)), + m.context_length + .map(|v| v.to_string()) + .unwrap_or("N/D".into()), + m.quantization.as_deref().unwrap_or("N/D") + )) + .size(12) + .color(MUTED) + ] + .spacing(10), )); } } None => { - ui.label( - RichText::new("Ollama non raggiungibile su questo nodo.").color(MUTED), - ); + c = c.push( + text("Ollama non raggiungibile su questo nodo.") + .size(12) + .color(MUTED), + ) } } - ui.label(RichText::new("Token/s, latenza e code: N/D senza telemetria delle richieste dal runtime.").color(MUTED).size(12.0)); - ui.add_space(12.0); - ui.heading("Processi AI riconosciuti dal nome"); - self.processes(ui, s, true); + c=c.push(text("Token/s, latenza e code: N/D senza telemetria delle richieste dal runtime.").size(11).color(MUTED)).push(text("Processi AI riconosciuti dal nome").size(17).font(STRONG)).push(self.processes(s,true)); + c.into() } Tab::Disks => { + let mut c = Column::new().spacing(14); for d in &s.disks { - card(ui, |ui| { - ui.label(RichText::new(&d.mount).strong()); - ui.label(RichText::new(&d.name).color(MUTED).size(11.0)); - let percent = (d.total_bytes > 0).then(|| { - d.total_bytes.saturating_sub(d.available_bytes) as f64 - / d.total_bytes as f64 - * 100.0 - }); - meter(ui, "Uso", percent, CYAN); - ui.label(format!( - "{} disponibili / {} totali", - bytes(Some(d.available_bytes)), - bytes(Some(d.total_bytes)) - )); + let used = (d.total_bytes > 0).then(|| { + (d.total_bytes.saturating_sub(d.available_bytes)) as f64 + / d.total_bytes as f64 + * 100.0 }); - ui.add_space(8.0); + c = c.push(card( + column![ + text(&d.mount).size(17).font(STRONG), + text(&d.name).size(11).color(MUTED), + metric( + "Spazio utilizzato", + used, + &format!( + "{} disponibili / {} totali", + bytes(Some(d.available_bytes)), + bytes(Some(d.total_bytes)) + ), + GREEN + ) + ] + .spacing(12), + )); } - ui.label(RichText::new("Capacità aggiornata ogni 5 s. Volumi APFS possono condividere lo stesso spazio.").color(MUTED)); + c.push(text("Capacità aggiornata ogni 5 s. I volumi APFS possono condividere lo stesso spazio.").size(11).color(MUTED)).into() } Tab::Network => { - egui::Grid::new("networks") - .striped(true) - .spacing([26.0, 12.0]) - .show(ui, |ui| { - for label in ["INTERFACCIA", "RICEZIONE", "INVIO", "ERRORI TOTALI"] { - ui.label(RichText::new(label).color(MUTED).size(11.0)); - } - ui.end_row(); - for n in &s.networks { - ui.monospace(&n.name); - ui.monospace(format!( - "{}/s", - bytes(Some(n.received_bytes_per_second as u64)) - )); - ui.monospace(format!( - "{}/s", - bytes(Some(n.transmitted_bytes_per_second as u64)) - )); - ui.monospace(n.errors.to_string()); - ui.end_row(); - } - }); - ui.add_space(16.0); - ui.label(RichText::new("Interfacce fisiche, VPN e virtuali possono riportare lo stesso traffico: non vengono sommate.").color(MUTED)); + let mut c = column![table_row( + ["INTERFACCIA", "RICEZIONE", "INVIO", "ERRORI"], + true + )] + .spacing(12); + for net in &s.networks { + c = c.push(table_row( + [ + &net.name, + &format!("{}/s", bytes(Some(net.received_bytes_per_second as u64))), + &format!("{}/s", bytes(Some(net.transmitted_bytes_per_second as u64))), + &net.errors.to_string(), + ], + false, + )); + } + c=c.push(text("Interfacce fisiche, VPN e virtuali possono riportare lo stesso traffico: non vengono sommate.").size(11).color(MUTED)); + card(c).into() } Tab::History => { - chart( - ui, - "CPU / ultimi 5 minuti", - &node.history, - |p| p.cpu_percent, - CYAN, - ); - chart( - ui, - "Memoria / ultimi 5 minuti", - &node.history, - |p| p.memory_percent, - GREEN, - ); - chart( - ui, - "GPU / ultimi 5 minuti", - &node.history, - |p| p.gpu_percent, - AMBER, + let plots = card( + column![ + text("Utilizzo · ultimi 5 minuti").size(18).font(STRONG), + plot("CPU", &n.history, 0, GREEN), + plot("Memoria", &n.history, 1, Color::from_rgb(0.49, 0.58, 0.41)), + plot("GPU", &n.history, 2, Color::from_rgb(0.51, 0.58, 0.64)), + text("SQLite locale · riepilogo ogni 5 s · conservazione 7 giorni") + .size(11) + .color(MUTED) + ] + .spacing(20), ); - ui.label(RichText::new("Storico SQLite: riepilogo ogni 5 s, conservazione 7 giorni. Vista attuale: ultimi 5 minuti.").color(MUTED)); + let mut health = column![ + text("Sistema").size(18).font(STRONG), + text(format!( + "Swap {} · uptime {:.1} h · raccolta {:.2} ms", + bytes(s.memory.swap_used_bytes.value().copied()), + s.uptime_seconds as f64 / 3600.0, + s.collector_duration_ms + )) + .size(12) + .color(MUTED) + ] + .spacing(14); + for p in &s.pressure { + health = health.push( + text(format!( + "Pressione {} (stall avg10): {:.2}%", + p.resource, p.some_avg10_percent + )) + .size(12), + ); + } + for t in s.temperatures.iter().take(12) { + health = + health.push(text(format!("{}: {:.1} °C", t.label, t.celsius)).size(12)); + } + let mut cores = Row::new().spacing(8); + for (i, v) in s.cpu_cores_percent.iter().take(32).enumerate() { + cores = cores.push( + column![ + text(i.to_string()).size(8).color(MUTED), + text(format!("{v:.0}")).size(10).font(MEDIUM) + ] + .spacing(6), + ); + } + health = health + .push(eyebrow("CARICO PER CORE · %")) + .push(cores.wrap()); + if let Some(b) = s.battery_percent.value() { + health = health.push(text(format!("Batteria {b:.0}%")).size(12)); + } + column![plots, card(health)].spacing(16).into() } } } - - fn processes(&mut self, ui: &mut egui::Ui, s: &HostSnapshot, only_ai: bool) { - ui.horizontal(|ui| { - ui.label("Filtro"); - ui.text_edit_singleline(&mut self.filter); - ui.selectable_value(&mut self.sort_memory, false, "CPU"); - ui.selectable_value(&mut self.sort_memory, true, "RAM"); - }); - ui.label(RichText::new(format!("{} processi sul nodo / sottoinsieme dei più attivi e candidati AI. CPU: 100% = un core.", s.process_count)).color(MUTED).size(11.0)); + fn processes<'a>(&'a self, s: &'a HostSnapshot, ai_only: bool) -> Element<'a, Message> { + let controls = row![ + text_input("Cerca processo…", &self.filter) + .on_input(Message::Filter) + .size(12) + .width(260), + Space::new().width(Fill), + small_button( + if self.sort_memory { "CPU" } else { "CPU ↓" }, + Message::Sort(false) + ), + small_button( + if self.sort_memory { "RAM ↓" } else { "RAM" }, + Message::Sort(true) + ) + ] + .spacing(8) + .align_y(alignment::Vertical::Center); + let mut c=column![controls,text(format!("{} processi sul nodo · sottoinsieme più attivo e candidati AI · 100% CPU = un core",s.process_count)).size(10).color(MUTED),table_row(["PROCESSO","PID","CPU","MEMORIA"],true)].spacing(14); let filter = self.filter.to_lowercase(); - let mut processes: Vec<_> = s + let mut ps: Vec<_> = s .processes .iter() - .filter(|p| (!only_ai || p.is_ai) && p.name.to_lowercase().contains(&filter)) + .filter(|p| (!ai_only || p.is_ai) && p.name.to_lowercase().contains(&filter)) .collect(); if self.sort_memory { - processes.sort_by_key(|p| std::cmp::Reverse(p.memory_bytes)); + ps.sort_by_key(|p| std::cmp::Reverse(p.memory_bytes)); + } else { + ps.sort_by(|a, b| b.cpu_percent.total_cmp(&a.cpu_percent)); } - egui::Grid::new(if only_ai { "ai-procs" } else { "processes" }) - .striped(true) - .spacing([18.0, 8.0]) - .show(ui, |ui| { - for label in ["PID", "PROCESSO", "CPU", "RAM"] { - ui.label(RichText::new(label).color(MUTED).size(11.0)); - } - ui.end_row(); - for p in processes { - ui.monospace(p.pid.to_string()); - ui.label(if p.name.len() > 70 { - p.name.chars().take(65).collect::() - } else { - p.name.clone() - }); - ui.monospace(format!("{:.1}%", p.cpu_percent)); - ui.monospace(bytes(Some(p.memory_bytes))); - ui.end_row(); - } - }); + if ps.is_empty() { + c = c.push( + text("Nessun processo corrispondente nel campione.") + .size(12) + .color(MUTED), + ); + } + for p in ps { + c = c.push(table_row( + [ + &p.name, + &p.pid.to_string(), + &format!("{:.1}%", p.cpu_percent), + &bytes(Some(p.memory_bytes)), + ], + false, + )); + } + card(c).into() } } - -fn status(n: &NodeState) -> (&'static str, Color32) { +fn status(n: &NodeState) -> (&'static str, Color) { if matches!(n.config.kind, NodeKind::Unavailable) { - ("CENSITO / N/D", MUTED) + ("Non collegato", MUTED) } else if n.live() { - ("LIVE", GREEN) + ("Online", GREEN) } else if n.sample.is_some() { - ("OBSOLETO", AMBER) + ("Obsoleto", AMBER) } else if n.error.is_some() { - ("NON RAGGIUNGIBILE", AMBER) + ("Non raggiungibile", AMBER) } else { - ("CONNESSIONE", MUTED) + ("Connessione", MUTED) } } - -fn card(ui: &mut egui::Ui, body: impl FnOnce(&mut egui::Ui)) { - egui::Frame::new() - .fill(CARD) - .stroke(Stroke::new(1.0, BORDER)) - .corner_radius(10) - .inner_margin(16) - .show(ui, |ui| { - ui.set_min_width((ui.available_width() - 1.0).max(0.0)); - body(ui); - }); +fn panel(_: &Theme) -> container::Style { + container::Style { + background: Some(PAPER.into()), + border: Border { + color: LINE, + width: 1.0, + radius: 16.into(), + }, + ..Default::default() + } +} +fn card<'a>(content: impl Into>) -> widget::Container<'a, Message> { + container(content).padding(22).width(Fill).style(panel) } -fn stat(ui: &mut egui::Ui, title: &str, value: &str, foot: &str, color: Color32) { - card(ui, |ui| { - ui.label(RichText::new(title).color(MUTED).monospace().size(10.0)); - ui.label(RichText::new(value).size(28.0).color(color).strong()); - ui.label(RichText::new(foot).color(MUTED).size(10.5)); - }); +fn eyebrow(s: &str) -> widget::Text<'_> { + text(s).size(9).font(MEDIUM).color(MUTED) } -fn pct(value: Option) -> String { - value - .map(|v| format!("{v:.0}%")) - .unwrap_or_else(|| "N/D".into()) +fn pill(s: &str, c: Color) -> Element<'static, Message> { + container(text(s.to_owned()).size(10).font(MEDIUM).color(c)) + .padding([7, 10]) + .style(move |_| container::Style { + background: Some(Color { a: 0.08, ..c }.into()), + border: Border { + radius: 20.into(), + ..Default::default() + }, + ..Default::default() + }) + .into() +} +fn small_button(s: &str, message: Message) -> Element<'static, Message> { + button(text(s.to_owned()).size(11).font(MEDIUM)) + .on_press(message) + .padding([7, 10]) + .style(|_, state| button::Style { + text_color: INK, + background: Some( + if matches!(state, button::Status::Hovered) { + LINE + } else { + Color::TRANSPARENT + } + .into(), + ), + border: Border { + radius: 7.into(), + ..Default::default() + }, + ..Default::default() + }) + .into() +} +fn notice(s: &str) -> Element<'static, Message> { + container(text(s.to_owned()).size(11).color(AMBER)) + .padding(12) + .width(Fill) + .style(|_| container::Style { + background: Some(Color::from_rgb(0.98, 0.94, 0.86).into()), + border: Border { + radius: 8.into(), + ..Default::default() + }, + ..Default::default() + }) + .into() +} +fn metric<'a>(label: &str, value: Option, foot: &str, c: Color) -> Element<'a, Message> { + column![ + row![ + text(label.to_owned()).size(12).font(MEDIUM), + Space::new().width(Fill), + text(pct(value)) + .size(19) + .font(STRONG) + .width(70) + .height(26) + .align_x(alignment::Horizontal::Right) + ] + .align_y(alignment::Vertical::Center), + progress_bar(0.0..=100.0, value.unwrap_or(0.0).clamp(0.0, 100.0) as f32) + .girth(4) + .style(move |_| progress_bar::Style { + background: LINE.into(), + bar: c.into(), + border: Border { + radius: 2.into(), + ..Default::default() + } + }), + text(foot.to_owned()).size(9).color(MUTED) + ] + .spacing(9) + .into() +} +fn mini_stat<'a>(label: &str, value: &str) -> Element<'a, Message> { + column![ + text(label.to_owned()).size(9).color(MUTED), + text(value.to_owned()).size(19).font(MEDIUM) + ] + .spacing(10) + .width(Fill) + .into() +} +fn table_row(values: [&str; 4], heading: bool) -> Element<'static, Message> { + let mut r = Row::new().spacing(20); + for (i, v) in values.iter().enumerate() { + r = r.push( + text(v.to_string()) + .size(if heading { 9 } else { 12 }) + .color(if heading { MUTED } else { INK }) + .width(if i == 0 { Length::FillPortion(3) } else { Fill }), + ); + } + container(r).padding([8, 0]).width(Fill).into() } -fn bytes(value: Option) -> String { - let Some(v) = value else { - return "N/D".into(); - }; +fn pct(v: Option) -> String { + v.map(|v| format!("{v:.0}%")).unwrap_or("N/D".into()) +} +fn watts(v: Option) -> String { + v.map(|v| format!("{v:.1} W")).unwrap_or("N/D".into()) +} +fn bytes(v: Option) -> String { + let Some(v) = v else { return "N/D".into() }; for (scale, unit) in [ (1u64 << 40, "TiB"), (1 << 30, "GiB"), @@ -706,70 +1061,206 @@ fn bytes(value: Option) -> String { } format!("{v} B") } -fn meter(ui: &mut egui::Ui, label: &str, value: Option, color: Color32) { - ui.horizontal(|ui| { - ui.label(RichText::new(label).size(11.0).color(MUTED)); - if let Some(value) = value { - ui.add( - egui::ProgressBar::new(value as f32 / 100.0) - .desired_width((ui.available_width() - 12.0).max(40.0)) - .fill(color) - .text(pct(Some(value))), - ); - } else { - ui.label(RichText::new("N/D").color(MUTED)); - } - }); +fn gpu_percent(s: &HostSnapshot) -> Option { + s.gpus + .iter() + .filter_map(|g| g.utilization_percent.value().copied()) + .reduce(f64::max) +} +fn gpu_power(s: &HostSnapshot) -> Option { + s.power + .iter() + .find(|p| p.scope == PowerScope::GpuBoard) + .and_then(|p| p.watts.value().copied()) +} +fn short_cpu(s: &str) -> String { + s.replace("AMD Ryzen 9 ", "Ryzen 9 ") + .replace(" 12-Core Processor", "") + .replace("Intel(R) Celeron(R) CPU ", "Celeron ") + .replace(" @ 1.10GHz", "") } -fn chart( - ui: &mut egui::Ui, +struct Trend { + points: Vec<(f32, Option)>, + color: Color, +} +fn plot<'a>( label: &str, points: &std::collections::VecDeque, - value: impl Fn(&HistoryPoint) -> Option, - color: Color32, -) { - card(ui, |ui| { - ui.label(RichText::new(label).color(MUTED).size(11.0)); - let (response, painter) = - ui.allocate_painter(Vec2::new(ui.available_width(), 100.0), egui::Sense::hover()); - let rect = response.rect.shrink(4.0); - for fraction in [0.0, 0.5, 1.0] { - let y = rect.bottom() - rect.height() * fraction; - painter.line_segment( - [egui::pos2(rect.left(), y), egui::pos2(rect.right(), y)], - Stroke::new(1.0, BORDER), + field: u8, + color: Color, +) -> Element<'a, Message> { + let since = now_ms().saturating_sub(300_000); + let data: Vec<_> = points + .iter() + .filter(|p| p.received_at_ms >= since) + .map(|p| { + ( + ((p.received_at_ms - since) as f32 / 300_000.0), + match field { + 0 => p.cpu_percent, + 1 => p.memory_percent, + _ => p.gpu_percent, + }, + ) + }) + .collect(); + let last = data.last().and_then(|p| p.1); + column![ + row![ + text(label.to_owned()).size(11).color(MUTED), + Space::new().width(Fill), + text(pct(last)) + .size(15) + .font(MEDIUM) + .width(60) + .height(22) + .align_x(alignment::Horizontal::Right) + ], + canvas(Trend { + points: data, + color + }) + .width(Fill) + .height(65) + ] + .spacing(10) + .width(Fill) + .into() +} +impl canvas::Program for Trend { + type State = (); + fn draw( + &self, + _: &(), + renderer: &iced::Renderer, + _: &Theme, + bounds: iced::Rectangle, + _: iced::mouse::Cursor, + ) -> Vec { + let mut frame = canvas::Frame::new(renderer, bounds.size()); + for y in [0.0, 0.5, 1.0] { + frame.stroke( + &canvas::Path::line( + iced::Point::new(0.0, y * bounds.height), + iced::Point::new(bounds.width, y * bounds.height), + ), + canvas::Stroke::default().with_color(LINE).with_width(0.5), ); } - let now = now_ms(); - let since = now.saturating_sub(300_000); - let mut previous = None; - for point in points.iter().filter(|p| p.received_at_ms >= since) { - if let Some(v) = value(point) { - let pos = egui::pos2( - rect.left() - + rect.width() - * ((point.received_at_ms.saturating_sub(since)) as f32 / 300_000.0) - .clamp(0.0, 1.0), - rect.bottom() - rect.height() * (v as f32 / 100.0).clamp(0.0, 1.0), + let mut previous: Option = None; + for (x, v) in &self.points { + if let Some(v) = v { + let p = iced::Point::new( + *x * bounds.width, + (1.0 - (*v as f32 / 100.0).clamp(0.0, 1.0)) * bounds.height, ); - if let Some((old_ts, old_pos)) = previous - && point.received_at_ms.saturating_sub(old_ts) < 15_000 + if let Some(prev) = previous + && p.x - prev.x < bounds.width * 0.025 { - painter.line_segment([old_pos, pos], Stroke::new(1.8, color)); + frame.stroke( + &canvas::Path::line(prev, p), + canvas::Stroke::default() + .with_color(self.color) + .with_width(1.8), + ); } - previous = Some((point.received_at_ms, pos)); + previous = Some(p); } else { previous = None; } } - if points.iter().all(|p| value(p).is_none()) { - painter.text( - rect.center(), - egui::Align2::CENTER_CENTER, - "Nessuna misura disponibile", - egui::FontId::proportional(12.0), - MUTED, + vec![frame.into_geometry()] + } +} +struct Icon(&'static str, Color); +impl canvas::Program for Icon { + type State = (); + fn draw( + &self, + _: &(), + renderer: &iced::Renderer, + _: &Theme, + bounds: iced::Rectangle, + _: iced::mouse::Cursor, + ) -> Vec { + let mut f = canvas::Frame::new(renderer, bounds.size()); + let s = bounds.width / 24.0; + let stroke = canvas::Stroke::default() + .with_width(1.5 * s) + .with_color(self.1); + let p = canvas::Path::new(|p| { + let mut line = |a: (f32, f32), b: (f32, f32)| { + p.move_to(iced::Point::new(a.0 * s, a.1 * s)); + p.line_to(iced::Point::new(b.0 * s, b.1 * s)); + }; + match self.0 { + "overview" => { + line((3., 4.), (9., 4.)); + line((3., 4.), (3., 10.)); + line((3., 10.), (9., 10.)); + line((9., 4.), (9., 10.)); + line((15., 4.), (21., 4.)); + line((15., 4.), (15., 16.)); + line((15., 16.), (21., 16.)); + line((21., 4.), (21., 16.)); + line((3., 16.), (9., 16.)); + line((3., 16.), (3., 21.)); + line((3., 21.), (9., 21.)); + line((9., 16.), (9., 21.)); + } + "ai" => { + line((12., 2.), (15., 9.)); + line((15., 9.), (22., 12.)); + line((22., 12.), (15., 15.)); + line((15., 15.), (12., 22.)); + line((12., 22.), (9., 15.)); + line((9., 15.), (2., 12.)); + line((2., 12.), (9., 9.)); + line((9., 9.), (12., 2.)); + } + "process" => { + line((3., 18.), (7., 18.)); + line((7., 18.), (10., 5.)); + line((10., 5.), (14., 20.)); + line((14., 20.), (17., 11.)); + line((17., 11.), (21., 11.)); + } + "network" => { + line((12., 4.), (12., 12.)); + line((4., 12.), (20., 12.)); + line((4., 12.), (4., 20.)); + line((20., 12.), (20., 20.)); + line((12., 12.), (12., 20.)); + } + "disk" => { + line((4., 5.), (20., 5.)); + line((20., 5.), (20., 20.)); + line((20., 20.), (4., 20.)); + line((4., 20.), (4., 5.)); + line((4., 15.), (20., 15.)); + line((15., 18.), (17., 18.)); + } + "history" => { + line((3., 18.), (7., 14.)); + line((7., 14.), (11., 16.)); + line((11., 16.), (15., 6.)); + line((15., 6.), (21., 9.)); + } + _ => (), + } + }); + if self.0 == "moon" { + f.fill( + &canvas::Path::circle(iced::Point::new(12. * s, 12. * s), 10. * s), + self.1, ); + f.fill( + &canvas::Path::circle(iced::Point::new(17. * s, 8. * s), 8. * s), + NAV, + ); + } else { + f.stroke(&p, stroke); } - }); + vec![f.into_geometry()] + } } From 7eed03084265c3199baf397aed99dcba90742a75 Mon Sep 17 00:00:00 2001 From: Francesco Maiomascio Date: Fri, 23 Oct 2026 13:44:24 +0200 Subject: [PATCH 2/3] Consolidate W0 fleet semantics, rendering correctness and reproducible QA --- .github/workflows/ci.yml | 3 +- Cargo.lock | 101 ++ README.md | 35 +- config/fleet.example.toml | 5 + crates/moonitor-desktop/Cargo.toml | 3 + crates/moonitor-desktop/src/config.rs | 39 +- crates/moonitor-desktop/src/engine.rs | 71 +- crates/moonitor-desktop/src/fixtures.rs | 103 ++ crates/moonitor-desktop/src/main.rs | 30 +- crates/moonitor-desktop/src/scene.rs | 783 +++++++++------- crates/moonitor-desktop/src/scene.wgsl | 11 +- crates/moonitor-desktop/src/ui.rs | 883 ++++++++++++------ crates/moonitor-desktop/src/ui/qa.rs | 279 ++++++ crates/moonitor-desktop/src/view_model.rs | 355 +++++++ docs/architecture.md | 15 +- ...moonitor-professional-upgrade-blueprint.md | 265 ++++++ docs/moonitor-w0-audit-and-plan.md | 87 ++ docs/moonitor-w0-qualification.md | 95 ++ docs/qualification.md | 2 + docs/roadmap.md | 2 + rust-toolchain.toml | 4 + scripts/benchmark-inference.py | 107 +++ scripts/build-manifest.py | 12 + scripts/measure-process.py | 13 + scripts/package-macos.sh | 15 +- scripts/qa-ui.sh | 15 + 26 files changed, 2679 insertions(+), 654 deletions(-) create mode 100644 crates/moonitor-desktop/src/fixtures.rs create mode 100644 crates/moonitor-desktop/src/ui/qa.rs create mode 100644 crates/moonitor-desktop/src/view_model.rs create mode 100644 docs/moonitor-professional-upgrade-blueprint.md create mode 100644 docs/moonitor-w0-audit-and-plan.md create mode 100644 docs/moonitor-w0-qualification.md create mode 100644 rust-toolchain.toml create mode 100644 scripts/benchmark-inference.py create mode 100644 scripts/build-manifest.py create mode 100644 scripts/measure-process.py create mode 100755 scripts/qa-ui.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a9e7d6..b509062 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,7 @@ jobs: - uses: actions/checkout@v4 - name: Configure Rust run: | - rustup toolchain install stable --profile minimal --component rustfmt --component clippy - rustup override set stable + rustup show active-toolchain - name: Formatting run: cargo fmt --all -- --check - name: Compile diff --git a/Cargo.lock b/Cargo.lock index f94b2f2..b54dfe9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,6 +155,15 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + [[package]] name = "block2" version = "0.5.1" @@ -468,6 +477,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + [[package]] name = "crc32fast" version = "1.5.3" @@ -502,6 +520,16 @@ dependencies = [ "wgpu", ] +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "ctor" version = "0.10.1" @@ -558,6 +586,16 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e9de72ce2ad1f90dc62fa25f0f430ef85eb4b0d8fa0be4f30373bc40a21d28e" +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "dispatch" version = "0.2.0" @@ -895,6 +933,16 @@ dependencies = [ "slab", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "gethostname" version = "1.1.0" @@ -1229,6 +1277,32 @@ dependencies = [ "thiserror 2.0.21", ] +[[package]] +name = "iced_selector" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1442ccc30959cc48b3a624233521ef7f3bc3e06528b6fe306c3a775fbddc4fe" +dependencies = [ + "iced_core", +] + +[[package]] +name = "iced_test" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b56c26cc6e63958ce6be06a68fa3136fd5f646da6302ee12abf1a0f311dd0166" +dependencies = [ + "iced_futures", + "iced_program", + "iced_renderer", + "iced_runtime", + "iced_selector", + "nom", + "png", + "sha2", + "thiserror 2.0.21", +] + [[package]] name = "iced_tiny_skia" version = "0.14.1" @@ -1790,6 +1864,7 @@ dependencies = [ "bytemuck", "glam 0.30.10", "iced", + "iced_test", "image", "log", "moonitor-agent", @@ -1876,6 +1951,15 @@ dependencies = [ "jni-sys 0.3.1", ] +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + [[package]] name = "ntapi" version = "0.4.3" @@ -2714,6 +2798,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shlex" version = "2.0.1" @@ -3226,6 +3321,12 @@ dependencies = [ "core_maths", ] +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + [[package]] name = "unicode-bidi" version = "0.3.18" diff --git a/README.md b/README.md index f46edaa..14a0e56 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ local AI workloads and their resource and energy use. ## Working first version -- Rust collectors and a native egui/eframe desktop, rendered with glow/OpenGL. +- Rust collectors and a native Iced 0.14 desktop, rendered with wgpu/Metal or Vulkan. - CPU/per-core use, available RAM, swap, top processes, disk capacity and interface traffic. - Linux PSI and available temperature sensors; macOS battery state. - NVIDIA GPU utilization, memory, temperature, clock, power and throttle reasons via NVML. @@ -28,16 +28,18 @@ On macOS, build a local `.app` and open it: scripts/run.sh ``` -The app is created at `.local/moonitor.app`. Packaging copies the ignored -`.local/fleet.toml` into the app; edit that file and repackage for a different -fleet. The first packaging run copies `config/fleet.example.toml` as a starting -point. The native executable also accepts configuration explicitly: +The app is created at `.local/moonitor.app`. On first packaging, the ignored +`.local/fleet.toml` is copied to `~/Library/Application Support/moonitor/fleet.toml`. +Existing user configuration is preserved. Edit that installed file to change the +fleet; private configuration is never embedded in the bundle. The first packaging +run uses `config/fleet.example.toml` if there is no local file. The executable also +accepts configuration explicitly: ```sh -cargo run --release -p moonitor-desktop -- --config config/fleet.example.toml +cargo run --release --locked -p moonitor-desktop -- --config config/fleet.example.toml ``` -Without configuration, an unbundled executable monitors only its local computer. +Without an explicit or installed `fleet.toml`, the executable monitors only its local computer. Data defaults to `~/Library/Application Support/moonitor` on macOS and `$XDG_DATA_HOME/moonitor` or `~/.local/share/moonitor` on Linux. @@ -52,13 +54,32 @@ The installer keeps binaries by content hash and refuses to replace an unmanaged existing agent. The desktop starts remote agents on connection and closes its SSH children on exit. Missing agents and broken connections appear in the UI. +## W0 consolidation + +The design reference is the [professional upgrade blueprint](docs/moonitor-professional-upgrade-blueprint.md). +See the [verified audit, decisions and W0–W4 gates](docs/moonitor-w0-audit-and-plan.md) +and [W0 execution report](docs/moonitor-w0-qualification.md). W1–W4 are not implemented by this change. + +The Lab Map uses exactly the configured fleet (0–32 nodes), stable IDs and actual +availability. Optional `visual_kind = "laptop" | "tower" | "compact" | "board" | "phone"` +selects reusable geometry; its default is generic. Uninstrumented nodes do not +count as monitored/offline. `--no-scene` or **Solo elenco** suspends the 3D scene. +Use `--theme light|dark` and `--size 1280x800` for repeatable UI checks. +Keyboard: Cmd/Ctrl+1…6 selects a tab, Alt+Left/Right changes node, Tab/Shift+Tab moves focus. + ## Development ```sh scripts/check.sh +scripts/qa-ui.sh # graphical backend required; local renderer-specific PNG baselines cargo build --release --locked -p moonitor-agent -p moonitor-desktop ``` +Toolchain is pinned in `rust-toolchain.toml`; use the committed `Cargo.lock`. +The first visual run records candidate baselines in `.local/qa/w0/visual`; it is not +human approval. Subsequent runs compare pixels. Synthetic fixtures exist only in +`#[cfg(test)]` modules. Real screenshots use `--screenshot FILE.png --exit-after 12`. + ## Design - [Requirements](docs/requirements.md) diff --git a/config/fleet.example.toml b/config/fleet.example.toml index 52a249f..50e50f4 100644 --- a/config/fleet.example.toml +++ b/config/fleet.example.toml @@ -1,12 +1,14 @@ # SSH aliases use your existing ~/.ssh/config. No credentials are stored here. [[nodes]] id = "macbook" +visual_kind = "laptop" label = "MacBook Pro" kind = "local" note = "Apple Silicon / memoria unificata" [[nodes]] id = "exon" +visual_kind = "tower" label = "Exon" kind = "ssh" ssh_alias = "exon-vpn" @@ -14,6 +16,7 @@ note = "Workstation / NVIDIA" [[nodes]] id = "spark" +visual_kind = "compact" label = "DGX Spark" kind = "ssh" ssh_alias = "spark-vpn" @@ -21,6 +24,7 @@ note = "GB10 / memoria unificata" [[nodes]] id = "zima" +visual_kind = "board" label = "Zima" kind = "ssh" ssh_alias = "zima-vpn" @@ -28,6 +32,7 @@ note = "Homelab node" [[nodes]] id = "iphone" +visual_kind = "phone" label = "iPhone" kind = "unavailable" note = "Dispositivo censito. Telemetria iOS non collegata." diff --git a/crates/moonitor-desktop/Cargo.toml b/crates/moonitor-desktop/Cargo.toml index 04d5942..9936e3b 100644 --- a/crates/moonitor-desktop/Cargo.toml +++ b/crates/moonitor-desktop/Cargo.toml @@ -23,3 +23,6 @@ glam = { version = "0.30", features = ["bytemuck"] } image = { version = "0.25.10", default-features = false, features = ["png"] } log = "0.4" + +[dev-dependencies] +iced_test = "=0.14.0" diff --git a/crates/moonitor-desktop/src/config.rs b/crates/moonitor-desktop/src/config.rs index 956e3fe..a4185a2 100644 --- a/crates/moonitor-desktop/src/config.rs +++ b/crates/moonitor-desktop/src/config.rs @@ -10,12 +10,25 @@ pub enum NodeKind { Unavailable, } +#[derive(Debug, Clone, Copy, Default, Deserialize, PartialEq, Eq)] +#[serde(rename_all = "snake_case")] +pub enum VisualKind { + Laptop, + Tower, + #[default] + Compact, + Board, + Phone, +} + #[derive(Debug, Clone, Deserialize)] #[serde(deny_unknown_fields)] pub struct NodeConfig { pub id: String, pub label: String, pub kind: NodeKind, + #[serde(default)] + pub visual_kind: VisualKind, pub ssh_alias: Option, pub remote_agent: Option, #[serde(default)] @@ -49,6 +62,7 @@ impl Config { id: "macbook".into(), label: "This computer".into(), kind: NodeKind::Local, + visual_kind: VisualKind::default(), ssh_alias: None, remote_agent: None, note: String::new(), @@ -60,8 +74,8 @@ impl Config { } fn validate(&self) -> Result<()> { - if self.nodes.is_empty() || self.nodes.len() > 32 { - bail!("Configure between 1 and 32 nodes"); + if self.nodes.len() > 32 { + bail!("Configure at most 32 nodes"); } let mut ids = HashSet::new(); let mut locals = 0; @@ -112,6 +126,26 @@ mod tests { assert!(safe_id("spark-vpn")); } #[test] + fn empty_is_valid_but_oversized_fleets_are_not() { + assert!(Config { nodes: vec![] }.validate().is_ok()); + let nodes = crate::fixtures::fleet(32) + .into_iter() + .map(|n| n.config) + .collect::>(); + assert!( + Config { + nodes: nodes.clone() + } + .validate() + .is_ok() + ); + let mut too_many = nodes; + let mut extra = too_many[0].clone(); + extra.id = "extra".into(); + too_many.push(extra); + assert!(Config { nodes: too_many }.validate().is_err()); + } + #[test] fn duplicate_ids_are_rejected() { let c = Config { nodes: vec![ @@ -119,6 +153,7 @@ mod tests { id: "same".into(), label: "One".into(), kind: NodeKind::Local, + visual_kind: VisualKind::default(), ssh_alias: None, remote_agent: None, note: String::new() diff --git a/crates/moonitor-desktop/src/engine.rs b/crates/moonitor-desktop/src/engine.rs index a4cdd3f..a6bf59a 100644 --- a/crates/moonitor-desktop/src/engine.rs +++ b/crates/moonitor-desktop/src/engine.rs @@ -9,7 +9,7 @@ use std::{ process::{Child, Command, Stdio}, sync::{ Arc, Mutex, - atomic::{AtomicBool, Ordering}, + atomic::{AtomicBool, AtomicU64, Ordering}, mpsc, }, thread, @@ -29,17 +29,15 @@ pub struct NodeState { impl NodeState { pub fn live(&self) -> bool { - self.sample.is_some() - && self - .last_seen - .is_some_and(|t| t.elapsed() < Duration::from_secs(4)) - && self.error.is_none() + crate::view_model::NodeStatus::of(self, Instant::now()) + == crate::view_model::NodeStatus::Online } } pub struct State { pub nodes: Vec, pub storage_error: Option, + pub dropped_events: Arc, } type ChildSlot = Arc>>; pub struct Engine { @@ -56,6 +54,7 @@ impl Engine { pub fn start(config: Config, db_path: PathBuf) -> Self { let state = Arc::new(Mutex::new(State { storage_error: None, + dropped_events: Arc::new(AtomicU64::new(0)), nodes: config .nodes .iter() @@ -68,6 +67,7 @@ impl Engine { }) .collect(), })); + let dropped = state.lock().unwrap().dropped_events.clone(); let stop = Arc::new(AtomicBool::new(false)); let (tx, rx) = mpsc::sync_channel(16); let shared = state.clone(); @@ -158,6 +158,7 @@ impl Engine { for (index, node) in nodes.into_iter().enumerate() { let stopped = stop.clone(); let sender = tx.clone(); + let dropped = dropped.clone(); match node.kind { NodeKind::Local => { thread::spawn(move || { @@ -166,12 +167,11 @@ impl Engine { while !stopped.load(Ordering::Relaxed) { let tick = Instant::now(); let sample = Arc::new(collector.sample()); - let _ = sender.try_send(Event::Snapshot( - index, - sample, - now_ms(), - Instant::now(), - )); + enqueue( + &sender, + &dropped, + Event::Snapshot(index, sample, now_ms(), Instant::now()), + ); thread::sleep(Duration::from_secs(1).saturating_sub(tick.elapsed())); } }); @@ -181,15 +181,20 @@ impl Engine { children.push(child.clone()); thread::spawn(move || { while !stopped.load(Ordering::Relaxed) { - let result = remote_stream(&node, index, &sender, &child, &stopped); + let result = + remote_stream(&node, index, &sender, &child, &stopped, &dropped); if !stopped.load(Ordering::Relaxed) { - let _ = sender.try_send(Event::Error( - index, - result - .err() - .map(|e| e.to_string()) - .unwrap_or_else(|| "SSH stream ended".into()), - )); + enqueue( + &sender, + &dropped, + Event::Error( + index, + result + .err() + .map(|e| e.to_string()) + .unwrap_or_else(|| "SSH stream ended".into()), + ), + ); for _ in 0..100 { if stopped.load(Ordering::Relaxed) { break; @@ -229,6 +234,7 @@ fn remote_stream( tx: &mpsc::SyncSender, slot: &ChildSlot, stop: &AtomicBool, + dropped: &AtomicU64, ) -> Result<()> { let agent = node .remote_agent @@ -270,12 +276,11 @@ fn remote_stream( }; let snapshot: HostSnapshot = serde_json::from_slice(&line)?; snapshot.validate(&node.id).map_err(anyhow::Error::msg)?; - let _ = tx.try_send(Event::Snapshot( - index, - Arc::new(snapshot), - now_ms(), - Instant::now(), - )); + enqueue( + tx, + dropped, + Event::Snapshot(index, Arc::new(snapshot), now_ms(), Instant::now()), + ); } Ok(()) })(); @@ -289,6 +294,12 @@ fn remote_stream( result } +fn enqueue(tx: &mpsc::SyncSender, dropped: &AtomicU64, event: Event) { + if matches!(tx.try_send(event), Err(mpsc::TrySendError::Full(_))) { + dropped.fetch_add(1, Ordering::Relaxed); + } +} + pub fn read_frame(reader: &mut impl BufRead) -> Result>> { let mut line = Vec::new(); reader @@ -304,6 +315,14 @@ pub fn read_frame(reader: &mut impl BufRead) -> Result>> { mod tests { use super::*; #[test] + fn bounded_ingress_accounts_for_dropped_events() { + let (tx, _rx) = mpsc::sync_channel(1); + let dropped = AtomicU64::new(0); + enqueue(&tx, &dropped, Event::Error(0, "first".into())); + enqueue(&tx, &dropped, Event::Error(0, "second".into())); + assert_eq!(dropped.load(Ordering::Relaxed), 1); + } + #[test] fn streaming_frames_are_bounded_even_without_a_newline() { let huge = vec![b'a'; MAX_MESSAGE_BYTES + 10]; assert!(read_frame(&mut std::io::Cursor::new(huge)).is_err()); diff --git a/crates/moonitor-desktop/src/fixtures.rs b/crates/moonitor-desktop/src/fixtures.rs new file mode 100644 index 0000000..a8fd306 --- /dev/null +++ b/crates/moonitor-desktop/src/fixtures.rs @@ -0,0 +1,103 @@ +//! Explicit synthetic QA fixtures. This module is never compiled into production. +use crate::{ + config::{NodeConfig, NodeKind, VisualKind}, + engine::NodeState, +}; +use moonitor_core::*; +use std::{ + sync::Arc, + time::{Duration, Instant}, +}; +pub fn sample(id: &str) -> HostSnapshot { + let t = 1_792_742_400_000; + HostSnapshot { + schema_version: SCHEMA_VERSION, + node_id: id.into(), + sampled_at_unix_ms: t, + hostname: "QA fixture".into(), + os: "Fixture OS".into(), + arch: "fixture".into(), + cpu_name: "Fixture CPU".into(), + uptime_seconds: 3600, + cpu_utilization_percent: Reading::reported(0.0, "QA CPU", t), + cpu_cores_percent: vec![0.0; 4], + memory: MemorySnapshot { + total_bytes: Reading::reported(24 << 30, "QA memory", t), + available_bytes: Reading::reported(12 << 30, "QA memory", t), + swap_used_bytes: Reading::reported(0, "QA memory", t), + }, + gpus: vec![GpuSnapshot { + id: "gpu-0".into(), + name: "Fixture unified GPU".into(), + memory_kind: GpuMemoryKind::Unified, + utilization_percent: Reading::reported(37.0, "QA GPU", t), + memory_total_bytes: Reading::unavailable(UnavailableReason::Unsupported), + memory_used_bytes: Reading::unavailable(UnavailableReason::Unsupported), + temperature_celsius: Reading::unavailable(UnavailableReason::PermissionDenied), + clock_mhz: Reading::unavailable(UnavailableReason::TemporarilyUnavailable), + throttling: Reading::unavailable(UnavailableReason::Unsupported), + }], + power: vec![], + processes: vec![ProcessSnapshot { + pid: 100, + name: "fixture-inference".into(), + cpu_percent: 25.0, + memory_bytes: 1 << 30, + is_ai: true, + }], + process_count: 1, + disks: vec![], + networks: vec![], + temperatures: vec![], + pressure: vec![], + ollama: RuntimeSnapshot { + models: Reading::unavailable(UnavailableReason::NotConfigured), + }, + battery_percent: Reading::unavailable(UnavailableReason::Unsupported), + collector_duration_ms: 1.0, + } +} +pub fn fleet(count: usize) -> Vec { + (0..count) + .map(|i| { + let id = format!("qa-{i}"); + NodeState { + config: NodeConfig { + id: id.clone(), + label: format!("QA device {i}"), + kind: if i % 5 == 4 { + NodeKind::Unavailable + } else { + NodeKind::Ssh + }, + visual_kind: [ + VisualKind::Laptop, + VisualKind::Tower, + VisualKind::Compact, + VisualKind::Board, + VisualKind::Phone, + ][i % 5], + ssh_alias: Some("fixture-only".into()), + remote_agent: None, + note: "DATI SINTETICI · SOLO TEST".into(), + }, + sample: if i % 5 < 2 { + Some(Arc::new(sample(&id))) + } else { + None + }, + last_seen: if i % 5 < 2 { + Some(Instant::now() - Duration::from_secs(if i % 5 == 1 { 10 } else { 0 })) + } else { + None + }, + error: if i % 5 == 2 { + Some("QA connection failure".into()) + } else { + None + }, + history: Default::default(), + } + }) + .collect() +} diff --git a/crates/moonitor-desktop/src/main.rs b/crates/moonitor-desktop/src/main.rs index 893840b..9c7af5c 100644 --- a/crates/moonitor-desktop/src/main.rs +++ b/crates/moonitor-desktop/src/main.rs @@ -1,7 +1,10 @@ mod config; mod engine; +#[cfg(test)] +mod fixtures; mod scene; mod ui; +mod view_model; use anyhow::{Context, Result, bail}; use std::path::PathBuf; @@ -29,11 +32,29 @@ fn main() -> Result<()> { let mut screenshot = None; let mut exit_after = None; let mut selected_node = None; + let mut display = ui::DisplayOptions::default(); let mut tab = "overview".to_owned(); let mut args = std::env::args().skip(1); while let Some(arg) = args.next() { let mut value = || args.next().context(format!("Missing value for {arg}")); match arg.as_str() { + "--size" => { + let size = value()?; + let (w, h) = size.split_once('x').context("Use WIDTHxHEIGHT")?; + let (w, h) = (w.parse::()?, h.parse::()?); + if !(1160..=3840).contains(&w) || !(760..=2160).contains(&h) { + bail!("Size must be 1160x760 through 3840x2160"); + } + display.size = iced::Size::new(w as f32, h as f32); + } + "--theme" => { + display.dark = match value()?.as_str() { + "light" => false, + "dark" => true, + _ => bail!("Theme must be light or dark"), + }; + } + "--no-scene" => display.scene_visible = false, "--config" => config_path = Some(PathBuf::from(value()?)), "--data-dir" => data_dir = Some(PathBuf::from(value()?)), "--screenshot" => screenshot = Some(PathBuf::from(value()?)), @@ -48,7 +69,7 @@ fn main() -> Result<()> { "--tab" => tab = value()?, "--help" | "-h" => { println!( - "moonitor [--config fleet.toml] [--data-dir PATH]\n [--node ID] [--tab overview|processes|ai|disks|network|history]\n [--screenshot PNG] [--exit-after SECONDS]" + "moonitor [--config fleet.toml] [--data-dir PATH]\n [--node ID] [--tab overview|processes|ai|disks|network|history]\n [--screenshot PNG] [--exit-after SECONDS]\n [--size WIDTHxHEIGHT] [--theme light|dark] [--no-scene]" ); return Ok(()); } @@ -56,10 +77,8 @@ fn main() -> Result<()> { } } if config_path.is_none() { - let bundled = std::env::current_exe()? - .parent() - .map(|p| p.join("../Resources/fleet.toml")); - config_path = bundled.filter(|p| p.is_file()); + let installed = default_data_dir().join("fleet.toml"); + config_path = installed.is_file().then_some(installed); } let config = config::Config::load(config_path.as_deref())?; if let Some(id) = &selected_node @@ -89,6 +108,7 @@ fn main() -> Result<()> { selected_tab, screenshot, exit_after, + display, ) } diff --git a/crates/moonitor-desktop/src/scene.rs b/crates/moonitor-desktop/src/scene.rs index 374544d..6a8b14f 100644 --- a/crates/moonitor-desktop/src/scene.rs +++ b/crates/moonitor-desktop/src/scene.rs @@ -1,23 +1,13 @@ //! A small native mesh renderer. Geometry is uploaded once; only the camera and //! selection uniforms change. No game loop, asset service, or web runtime. -use crate::ui::Message; +use crate::{config::VisualKind, ui::Message, view_model::DeviceSceneModel}; use bytemuck::{Pod, Zeroable}; use glam::{Mat4, Vec3}; use iced::wgpu; use iced::{Rectangle, mouse, widget::shader}; -use std::sync::{ - Arc, OnceLock, - atomic::{AtomicBool, AtomicU64, Ordering}, -}; +use std::sync::atomic::{AtomicBool, AtomicU64, Ordering}; use wgpu::util::DeviceExt; -const ANCHORS: [[f32; 3]; 5] = [ - [-1.30, 0.0, 1.15], - [-2.0, 0.0, -1.1], - [0.15, 0.0, -0.85], - [2.1, 0.0, -0.40], - [1.35, 0.0, 1.40], -]; #[derive(Debug, Clone, Copy, PartialEq)] pub struct Camera { pub yaw: f32, @@ -31,17 +21,30 @@ impl Default for Camera { } } } -fn camera(camera: Camera, aspect: f32) -> Mat4 { +fn camera(camera: Camera, aspect: f32, devices: &[DeviceSceneModel]) -> Mat4 { let eye = Vec3::new(camera.yaw.sin() * 11.0, 8.3, camera.yaw.cos() * 11.0); let view = Mat4::look_at_rh(eye, Vec3::new(0.0, 0.30, 0.0), Vec3::Y); - let h = 2.55 / camera.zoom; + let mut h: f32 = 1.5; + for device in devices { + for x in [-1.05, 1.05] { + for y in [0.0, 1.9] { + for z in [-0.9, 0.9] { + let p = view + .transform_point3(Vec3::from_array(device.position) + Vec3::new(x, y, z)); + h = h.max(p.y.abs()).max(p.x.abs() / aspect.max(0.1)); + } + } + } + } + let h = h * 1.12 / camera.zoom; Mat4::orthographic_rh(-h * aspect, h * aspect, -h, h, 0.1, 40.0) * view } #[derive(Debug, Clone)] pub struct Scene { - pub selected: usize, - pub live: [bool; 5], + pub selected: Option, + pub devices: Vec, pub camera: Camera, + pub dark: bool, } #[derive(Default)] pub struct Interaction { @@ -89,28 +92,31 @@ impl shader::Program for Scene { if !state.dragged && let Some(p) = cursor.position_in(bounds) { - let inv = camera(self.camera, bounds.width / bounds.height).inverse(); + let inv = + camera(self.camera, bounds.width / bounds.height, &self.devices).inverse(); let x = p.x / bounds.width * 2.0 - 1.0; let y = 1.0 - p.y / bounds.height * 2.0; let origin = inv.project_point3(Vec3::new(x, y, 0.0)); let direction = (inv.project_point3(Vec3::new(x, y, 1.0)) - origin).normalize(); - let picked = ANCHORS + let picked = self + .devices .iter() - .enumerate() - .filter_map(|(i, a)| { - let center = - Vec3::from_array(*a) + Vec3::Y * if i == 1 { 0.9 } else { 0.4 }; - let half = if i == 1 { + .filter_map(|d| { + let tall = d.kind == VisualKind::Tower; + let center = Vec3::from_array(d.position) + + Vec3::Y * if tall { 0.9 } else { 0.4 }; + let half = if tall { Vec3::new(0.6, 1.0, 0.65) } else { Vec3::new(0.9, 0.65, 0.85) }; - ray_box(origin, direction, center - half, center + half).map(|d| (i, d)) + ray_box(origin, direction, center - half, center + half) + .map(|distance| (d, distance)) }) - .min_by(|a, b| a.1.total_cmp(&b.1)) - .map(|p| p.0); - return picked - .map(|i| shader::Action::publish(Message::SceneSelect(i)).and_capture()); + .min_by(|a, b| a.1.total_cmp(&b.1)); + return picked.map(|(d, _)| { + shader::Action::publish(Message::Select(d.id.clone())).and_capture() + }); } Some(shader::Action::capture()) } @@ -157,11 +163,13 @@ struct Uniform { light: [[f32; 4]; 4], eye: [f32; 4], state: [f32; 4], + nodes: [[f32; 4]; 32], } #[derive(Debug)] pub struct ScenePrimitive(Scene); pub struct ScenePipeline { mesh: wgpu::Buffer, + layout: Vec<(String, VisualKind, [f32; 3])>, count: u32, uniform: wgpu::Buffer, bind: wgpu::BindGroup, @@ -179,6 +187,7 @@ pub struct ScenePipeline { dirty: AtomicBool, shadow_ready: AtomicBool, scene_passes: AtomicU64, + shadow_passes: AtomicU64, compositions: AtomicU64, } struct Targets { @@ -190,10 +199,10 @@ struct Targets { } impl shader::Pipeline for ScenePipeline { fn new(device: &wgpu::Device, _: &wgpu::Queue, format: wgpu::TextureFormat) -> Self { - let vertices = geometry(); + let vertices = geometry(&[]); let mesh = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { label: Some("moonitor static device meshes"), - contents: bytemuck::cast_slice(vertices), + contents: bytemuck::cast_slice(&vertices), usage: wgpu::BufferUsages::VERTEX, }); let uniform = device.create_buffer(&wgpu::BufferDescriptor { @@ -425,6 +434,7 @@ impl shader::Pipeline for ScenePipeline { }); Self { mesh, + layout: Vec::new(), count: vertices.len() as u32, uniform, bind, @@ -442,6 +452,7 @@ impl shader::Pipeline for ScenePipeline { dirty: AtomicBool::new(true), shadow_ready: AtomicBool::new(false), scene_passes: AtomicU64::new(0), + shadow_passes: AtomicU64::new(0), compositions: AtomicU64::new(0), } } @@ -456,6 +467,24 @@ impl shader::Primitive for ScenePrimitive { bounds: &Rectangle, viewport: &shader::Viewport, ) { + let layout = self + .0 + .devices + .iter() + .map(|d| (d.id.clone(), d.kind, d.position)) + .collect::>(); + if p.layout != layout { + let vertices = geometry(&self.0.devices); + p.mesh = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("fleet meshes"), + contents: bytemuck::cast_slice(&vertices), + usage: wgpu::BufferUsages::VERTEX, + }); + p.count = vertices.len() as u32; + p.layout = layout; + p.dirty.store(true, Ordering::Relaxed); + p.shadow_ready.store(false, Ordering::Relaxed); + } let scale = viewport.scale_factor(); let w = (bounds.width * scale).round().max(1.0) as u32; let h = (bounds.height * scale).round().max(1.0) as u32; @@ -516,20 +545,32 @@ impl shader::Primitive for ScenePrimitive { bounds.width * scale, bounds.height * scale, ]; - let light = Mat4::orthographic_rh(-7.0, 7.0, -7.0, 7.0, 0.1, 30.0) - * Mat4::look_at_rh(Vec3::new(-3.0, 9.0, 5.0), Vec3::ZERO, Vec3::Y); - let live = self - .0 - .live - .iter() - .enumerate() - .fold(0u32, |bits, (i, v)| bits | ((*v as u32) << i)); + let extent = extent(&self.0.devices); + let light = Mat4::orthographic_rh( + -extent * 1.5, + extent * 1.5, + -extent * 1.5, + extent * 1.5, + 0.1, + 80.0, + ) * Mat4::look_at_rh(Vec3::new(-12.0, 36.0, 20.0), Vec3::ZERO, Vec3::Y); + let mut nodes = [[0.0; 4]; 32]; + for (i, d) in self.0.devices.iter().take(32).enumerate() { + let color = d.status.color(); + nodes[i] = [ + color[0], + color[1], + color[2], + f32::from(self.0.selected.as_deref() == Some(&d.id)), + ]; + } let c = self.0.camera; let u = Uniform { - camera: camera(c, bounds.width / bounds.height).to_cols_array_2d(), + camera: camera(c, bounds.width / bounds.height, &self.0.devices).to_cols_array_2d(), light: light.to_cols_array_2d(), eye: [c.yaw.sin() * 11.0, 8.3, c.yaw.cos() * 11.0, 1.0], - state: [self.0.selected as f32, live as f32, 0.0, 0.0], + state: [f32::from(self.0.dark), 0.0, 0.0, 0.0], + nodes, }; if p.last_uniform != Some(u) { queue.write_buffer(&p.uniform, 0, bytemuck::bytes_of(&u)); @@ -546,6 +587,7 @@ impl shader::Primitive for ScenePrimitive { ) { let Some(t) = &p.targets else { return }; if !p.shadow_ready.swap(true, Ordering::Relaxed) { + p.shadow_passes.fetch_add(1, Ordering::Relaxed); let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { label: Some("shadow"), color_attachments: &[], @@ -562,7 +604,7 @@ impl shader::Primitive for ScenePrimitive { pass.set_pipeline(&p.shadow_pipeline); pass.set_bind_group(0, &p.shadow_bind, &[]); pass.set_vertex_buffer(0, p.mesh.slice(..)); - pass.draw(0..p.count, 0..1); + pass.draw(6..p.count, 0..1); } if p.dirty.swap(false, Ordering::Relaxed) { p.scene_passes.fetch_add(1, Ordering::Relaxed); @@ -631,7 +673,7 @@ impl Drop for ScenePipeline { eprintln!( "moonitor-renderer: scene_passes={} shadow_passes={} compositions={} vertices={}", self.scene_passes.load(Ordering::Relaxed), - u8::from(self.shadow_ready.load(Ordering::Relaxed)), + self.shadow_passes.load(Ordering::Relaxed), self.compositions.load(Ordering::Relaxed), self.count ); @@ -770,308 +812,419 @@ impl Mesh { } } } -fn geometry() -> &'static [Vertex] { - static MESH: OnceLock> = OnceLock::new(); - MESH.get_or_init(|| { - let mut m = Mesh { - vertices: vec![], - node: -1.0, - origin: Vec3::ZERO, - rotation: Mat4::IDENTITY, - }; - m.quad( - [ - Vec3::new(-30.0, -0.015, 30.0), - Vec3::new(30.0, -0.015, 30.0), - Vec3::new(30.0, -0.015, -30.0), - Vec3::new(-30.0, -0.015, -30.0), - ], - Vec3::Y, - [0.94, 0.95, 0.93], - 1.0, - 3.0, +fn geometry(devices: &[DeviceSceneModel]) -> Vec { + let mut m = Mesh { + vertices: vec![], + node: -1.0, + origin: Vec3::ZERO, + rotation: Mat4::IDENTITY, + }; + m.quad( + [ + Vec3::new(-30.0, -0.015, 30.0), + Vec3::new(30.0, -0.015, 30.0), + Vec3::new(30.0, -0.015, -30.0), + Vec3::new(-30.0, -0.015, -30.0), + ], + Vec3::Y, + [0.94, 0.95, 0.93], + 1.0, + 3.0, + ); + for (id, device) in devices.iter().enumerate() { + m.node = id as f32; + m.origin = Vec3::from_array(device.position); + m.rotation = Mat4::IDENTITY; + m.cylinder( + Vec3::ZERO, + if device.kind == VisualKind::Laptop { + 1.02 + } else { + 0.83 + }, + 0.045, + [0.82, 0.85, 0.81], + 2.0, ); - for (id, a) in ANCHORS.iter().enumerate() { - m.node = id as f32; - m.origin = Vec3::from_array(*a); - m.rotation = Mat4::IDENTITY; - m.cylinder( - Vec3::ZERO, - if id == 0 { 1.02 } else { 0.83 }, - 0.045, - [0.82, 0.85, 0.81], - 2.0, - ); - m.origin.y = 0.055; - let silver = [0.64, 0.69, 0.70]; - let black = [0.09, 0.12, 0.13]; - let glass = [0.035, 0.065, 0.07]; - let green = [0.53, 0.84, 0.64]; - match id { - 0 => { - // MacBook, open lid, keyboard and trackpad. - m.rotation = Mat4::from_rotation_y(-0.12); - m.box3( - Vec3::new(0.0, 0.06, 0.0), - Vec3::new(1.52, 0.10, 1.02), - 0.035, - silver, - 0.25, - 0.0, - ); - m.box3( - Vec3::new(0.0, 0.115, -0.16), - Vec3::new(1.29, 0.012, 0.42), - 0.004, - black, - 0.8, - 0.0, - ); - for row in 0..4 { - for col in 0..13 { - m.box3( - Vec3::new( - -0.58 + col as f32 * 0.096, - 0.127, - -0.31 + row as f32 * 0.095, - ), - Vec3::new(0.078, 0.009, 0.072), - 0.0, - [0.20, 0.23, 0.24], - 0.6, - 0.0, - ); - } - } - m.box3( - Vec3::new(0.0, 0.116, 0.29), - Vec3::new(0.53, 0.01, 0.26), - 0.008, - [0.58, 0.64, 0.65], - 0.4, - 0.0, - ); - let base = m.origin; - m.origin += m.rotation.transform_vector3(Vec3::new(0.0, 0.13, -0.46)); - m.rotation *= Mat4::from_rotation_x(-0.20); - m.box3( - Vec3::new(0.0, 0.48, 0.0), - Vec3::new(1.52, 0.96, 0.055), - 0.035, - silver, - 0.25, - 0.0, - ); - m.box3( - Vec3::new(0.0, 0.49, 0.031), - Vec3::new(1.39, 0.81, 0.008), - 0.012, - glass, - 0.1, - 0.0, - ); - m.box3( - Vec3::new(-0.27, 0.48, 0.039), - Vec3::new(0.63, 0.33, 0.004), - 0.0, - [0.15, 0.39, 0.37], - 0.4, - 1.0, - ); - m.box3( - Vec3::new(0.33, 0.48, 0.040), - Vec3::new(0.44, 0.33, 0.004), - 0.0, - [0.25, 0.54, 0.46], - 0.4, - 1.0, - ); - m.origin = base; - } - 1 => { - // Exon workstation, perforated front and side panel. - m.rotation = Mat4::from_rotation_y(0.12); - m.box3( - Vec3::new(0.0, 0.93, 0.0), - Vec3::new(0.79, 1.82, 0.98), - 0.055, - [0.12, 0.15, 0.16], - 0.55, - 0.0, - ); - m.box3( - Vec3::new(0.0, 0.94, 0.502), - Vec3::new(0.65, 1.62, 0.025), - 0.018, - [0.07, 0.10, 0.11], - 0.9, - 0.0, - ); - for row in 0..20 { - for col in 0..6 { - m.box3( - Vec3::new( - -0.245 + col as f32 * 0.098, - 0.26 + row as f32 * 0.066, - 0.522, - ), - Vec3::new(0.052, 0.018, 0.005), - 0.0, - [0.21, 0.26, 0.27], - 0.9, - 0.0, - ); - } + m.origin.y = 0.055; + let silver = [0.64, 0.69, 0.70]; + let black = [0.09, 0.12, 0.13]; + let glass = [0.035, 0.065, 0.07]; + let green = [0.53, 0.84, 0.64]; + match device.kind { + VisualKind::Laptop => { + // MacBook, open lid, keyboard and trackpad. + m.rotation = Mat4::from_rotation_y(-0.12); + m.box3( + Vec3::new(0.0, 0.06, 0.0), + Vec3::new(1.52, 0.10, 1.02), + 0.035, + silver, + 0.25, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.115, -0.16), + Vec3::new(1.29, 0.012, 0.42), + 0.004, + black, + 0.8, + 0.0, + ); + for row in 0..4 { + for col in 0..13 { + m.box3( + Vec3::new( + -0.58 + col as f32 * 0.096, + 0.127, + -0.31 + row as f32 * 0.095, + ), + Vec3::new(0.078, 0.009, 0.072), + 0.0, + [0.20, 0.23, 0.24], + 0.6, + 0.0, + ); } - m.box3( - Vec3::new(0.405, 0.96, 0.0), - Vec3::new(0.013, 1.49, 0.78), - 0.003, - [0.16, 0.21, 0.22], - 0.2, - 0.0, - ); - m.box3( - Vec3::new(0.0, 1.74, 0.52), - Vec3::new(0.11, 0.018, 0.006), - 0.0, - green, - 0.2, - 1.0, - ); } - 2 => { - // DGX Spark: compact champagne metal chassis with fins. - m.rotation = Mat4::from_rotation_y(-0.08); - m.box3( - Vec3::new(0.0, 0.25, 0.0), - Vec3::new(1.14, 0.42, 1.09), - 0.055, - [0.63, 0.58, 0.46], - 0.35, - 0.0, - ); - m.box3( - Vec3::new(0.0, 0.472, 0.0), - Vec3::new(0.95, 0.014, 0.89), - 0.007, - [0.76, 0.71, 0.59], - 0.35, - 0.0, - ); - for i in 0..17 { + m.box3( + Vec3::new(0.0, 0.116, 0.29), + Vec3::new(0.53, 0.01, 0.26), + 0.008, + [0.58, 0.64, 0.65], + 0.4, + 0.0, + ); + let base = m.origin; + m.origin += m.rotation.transform_vector3(Vec3::new(0.0, 0.13, -0.46)); + m.rotation *= Mat4::from_rotation_x(-0.20); + m.box3( + Vec3::new(0.0, 0.48, 0.0), + Vec3::new(1.52, 0.96, 0.055), + 0.035, + silver, + 0.25, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.49, 0.031), + Vec3::new(1.39, 0.81, 0.008), + 0.012, + glass, + 0.1, + 0.0, + ); + m.box3( + Vec3::new(-0.27, 0.48, 0.039), + Vec3::new(0.63, 0.33, 0.004), + 0.0, + [0.15, 0.39, 0.37], + 0.4, + 1.0, + ); + m.box3( + Vec3::new(0.33, 0.48, 0.040), + Vec3::new(0.44, 0.33, 0.004), + 0.0, + [0.25, 0.54, 0.46], + 0.4, + 1.0, + ); + m.origin = base; + } + VisualKind::Tower => { + // Exon workstation, perforated front and side panel. + m.rotation = Mat4::from_rotation_y(0.12); + m.box3( + Vec3::new(0.0, 0.93, 0.0), + Vec3::new(0.79, 1.82, 0.98), + 0.055, + [0.12, 0.15, 0.16], + 0.55, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.94, 0.502), + Vec3::new(0.65, 1.62, 0.025), + 0.018, + [0.07, 0.10, 0.11], + 0.9, + 0.0, + ); + for row in 0..20 { + for col in 0..6 { m.box3( - Vec3::new(-0.46 + i as f32 * 0.057, 0.29, 0.554), - Vec3::new(0.018, 0.19, 0.01), + Vec3::new( + -0.245 + col as f32 * 0.098, + 0.26 + row as f32 * 0.066, + 0.522, + ), + Vec3::new(0.052, 0.018, 0.005), 0.0, - [0.19, 0.19, 0.15], + [0.21, 0.26, 0.27], 0.9, 0.0, ); } + } + m.box3( + Vec3::new(0.405, 0.96, 0.0), + Vec3::new(0.013, 1.49, 0.78), + 0.003, + [0.16, 0.21, 0.22], + 0.2, + 0.0, + ); + m.box3( + Vec3::new(0.0, 1.74, 0.52), + Vec3::new(0.11, 0.018, 0.006), + 0.0, + green, + 0.2, + 1.0, + ); + } + VisualKind::Compact => { + // DGX Spark: compact champagne metal chassis with fins. + m.rotation = Mat4::from_rotation_y(-0.08); + m.box3( + Vec3::new(0.0, 0.25, 0.0), + Vec3::new(1.14, 0.42, 1.09), + 0.055, + [0.63, 0.58, 0.46], + 0.35, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.472, 0.0), + Vec3::new(0.95, 0.014, 0.89), + 0.007, + [0.76, 0.71, 0.59], + 0.35, + 0.0, + ); + for i in 0..17 { m.box3( - Vec3::new(0.34, 0.13, 0.56), - Vec3::new(0.045, 0.012, 0.006), + Vec3::new(-0.46 + i as f32 * 0.057, 0.29, 0.554), + Vec3::new(0.018, 0.19, 0.01), 0.0, - green, - 0.2, - 1.0, - ); - m.box3( - Vec3::new(0.0, 0.484, 0.0), - Vec3::new(0.21, 0.008, 0.21), - 0.008, - [0.22, 0.25, 0.17], - 0.5, + [0.19, 0.19, 0.15], + 0.9, 0.0, ); } - 3 => { - // Zima board with heatsink, ports and visible circuit board. - m.rotation = Mat4::from_rotation_y(-0.20); + m.box3( + Vec3::new(0.34, 0.13, 0.56), + Vec3::new(0.045, 0.012, 0.006), + 0.0, + green, + 0.2, + 1.0, + ); + m.box3( + Vec3::new(0.0, 0.484, 0.0), + Vec3::new(0.21, 0.008, 0.21), + 0.008, + [0.22, 0.25, 0.17], + 0.5, + 0.0, + ); + } + VisualKind::Board => { + // Zima board with heatsink, ports and visible circuit board. + m.rotation = Mat4::from_rotation_y(-0.20); + m.box3( + Vec3::new(0.0, 0.105, 0.0), + Vec3::new(1.18, 0.08, 0.79), + 0.025, + [0.10, 0.24, 0.20], + 0.7, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.20, -0.04), + Vec3::new(0.80, 0.17, 0.56), + 0.015, + [0.25, 0.31, 0.30], + 0.45, + 0.0, + ); + for i in 0..13 { m.box3( - Vec3::new(0.0, 0.105, 0.0), - Vec3::new(1.18, 0.08, 0.79), - 0.025, - [0.10, 0.24, 0.20], - 0.7, + Vec3::new(-0.38 + i as f32 * 0.064, 0.33, -0.04), + Vec3::new(0.027, 0.15, 0.56), 0.0, - ); - m.box3( - Vec3::new(0.0, 0.20, -0.04), - Vec3::new(0.80, 0.17, 0.56), - 0.015, - [0.25, 0.31, 0.30], + [0.46, 0.53, 0.51], 0.45, 0.0, ); - for i in 0..13 { - m.box3( - Vec3::new(-0.38 + i as f32 * 0.064, 0.33, -0.04), - Vec3::new(0.027, 0.15, 0.56), - 0.0, - [0.46, 0.53, 0.51], - 0.45, - 0.0, - ); - } - for i in 0..3 { - m.box3( - Vec3::new(-0.36 + i as f32 * 0.32, 0.21, 0.35), - Vec3::new(0.24, 0.20, 0.16), - 0.012, - silver, - 0.4, - 0.0, - ); - m.box3( - Vec3::new(-0.36 + i as f32 * 0.32, 0.21, 0.438), - Vec3::new(0.17, 0.11, 0.012), - 0.0, - black, - 0.8, - 0.0, - ); - } } - _ => { - // iPhone glass slab, elevated enough for readable silhouette. - m.rotation = Mat4::from_rotation_y(-0.25) * Mat4::from_rotation_x(-0.12); + for i in 0..3 { m.box3( - Vec3::new(0.0, 0.14, 0.0), - Vec3::new(0.63, 0.095, 1.22), - 0.045, - [0.21, 0.25, 0.27], - 0.25, - 0.0, - ); - m.box3( - Vec3::new(0.0, 0.191, 0.0), - Vec3::new(0.57, 0.012, 1.14), - 0.04, - glass, - 0.08, + Vec3::new(-0.36 + i as f32 * 0.32, 0.21, 0.35), + Vec3::new(0.24, 0.20, 0.16), + 0.012, + silver, + 0.4, 0.0, ); m.box3( - Vec3::new(0.0, 0.200, 0.04), - Vec3::new(0.48, 0.005, 0.80), - 0.035, - [0.18, 0.29, 0.30], - 0.5, + Vec3::new(-0.36 + i as f32 * 0.32, 0.21, 0.438), + Vec3::new(0.17, 0.11, 0.012), 0.0, - ); - m.box3( - Vec3::new(0.0, 0.201, -0.47), - Vec3::new(0.22, 0.006, 0.058), - 0.022, black, - 0.4, + 0.8, 0.0, ); } } + VisualKind::Phone => { + // iPhone glass slab, elevated enough for readable silhouette. + m.rotation = Mat4::from_rotation_y(-0.25) * Mat4::from_rotation_x(-0.12); + m.box3( + Vec3::new(0.0, 0.14, 0.0), + Vec3::new(0.63, 0.095, 1.22), + 0.045, + [0.21, 0.25, 0.27], + 0.25, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.191, 0.0), + Vec3::new(0.57, 0.012, 1.14), + 0.04, + glass, + 0.08, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.200, 0.04), + Vec3::new(0.48, 0.005, 0.80), + 0.035, + [0.18, 0.29, 0.30], + 0.5, + 0.0, + ); + m.box3( + Vec3::new(0.0, 0.201, -0.47), + Vec3::new(0.22, 0.006, 0.058), + 0.022, + black, + 0.4, + 0.0, + ); + } } - m.vertices.into() - }) + } + m.vertices +} + +fn extent(devices: &[DeviceSceneModel]) -> f32 { + devices + .iter() + .map(|d| d.position[0].abs().max(d.position[2].abs()) + 2.0) + .fold(2.4, f32::max) + * 1.25 +} + +impl iced::widget::canvas::Program for Scene { + type State = (); + fn draw( + &self, + _: &(), + renderer: &iced::Renderer, + _: &iced::Theme, + bounds: Rectangle, + _: mouse::Cursor, + ) -> Vec { + use iced::widget::canvas; + let mut frame = canvas::Frame::new(renderer, bounds.size()); + let matrix = camera(self.camera, bounds.width / bounds.height, &self.devices); + for (i, d) in self.devices.iter().enumerate() { + let p = matrix.project_point3( + Vec3::from_array(d.position) + + Vec3::new( + 0.0, + if d.kind == VisualKind::Tower { + 2.0 + } else { + 1.15 + }, + 0.0, + ), + ); + let label = if self.devices.len() > 16 { + format!("{:02}", i + 1) + } else { + format!("{:02} {}", i + 1, d.label) + }; + frame.fill_text(canvas::Text { + content: label, + position: iced::Point::new( + (p.x + 1.0) * bounds.width / 2.0, + (1.0 - p.y) * bounds.height / 2.0, + ), + color: if self.dark { + iced::Color::from_rgb(0.918, 0.949, 0.925) + } else { + iced::Color::from_rgb(0.10, 0.15, 0.14) + }, + size: 11.0.into(), + align_x: iced::alignment::Horizontal::Center.into(), + ..Default::default() + }); + } + vec![frame.into_geometry()] + } +} +#[cfg(test)] +impl Scene { + pub fn test_device_point(&self, index: usize, size: iced::Size) -> iced::Point { + let d = &self.devices[index]; + let p = camera(self.camera, size.width / size.height, &self.devices) + .project_point3(Vec3::from_array(d.position) + Vec3::Y * 0.5); + iced::Point::new( + (p.x + 1.0) * size.width / 2.0, + (1.0 - p.y) * size.height / 2.0, + ) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::view_model::NodeStatus; + #[test] + fn mesh_contains_exact_fleet_ids_and_finite_geometry() { + for count in [0, 1, 2, 5, 16, 32] { + let devices = (0..count) + .map(|i| DeviceSceneModel { + id: format!("test-{i}"), + label: format!("Test {i}"), + kind: [ + VisualKind::Laptop, + VisualKind::Tower, + VisualKind::Compact, + VisualKind::Board, + VisualKind::Phone, + ][i % 5], + status: NodeStatus::Uninstrumented, + position: [i as f32 * 2.6, 0.0, 0.0], + }) + .collect::>(); + let vertices = geometry(&devices); + let ids = vertices + .iter() + .filter(|v| v.material[0] >= 0.0) + .map(|v| v.material[0] as usize) + .collect::>(); + assert_eq!(ids, (0..count).collect()); + assert!(vertices.iter().all(|v| { + v.position + .iter() + .chain(v.normal.iter()) + .all(|n| n.is_finite()) + })); + } + } } diff --git a/crates/moonitor-desktop/src/scene.wgsl b/crates/moonitor-desktop/src/scene.wgsl index bbefe9b..99a0614 100644 --- a/crates/moonitor-desktop/src/scene.wgsl +++ b/crates/moonitor-desktop/src/scene.wgsl @@ -1,4 +1,4 @@ -struct Uniforms { camera: mat4x4, light: mat4x4, eye:vec4, state:vec4 } +struct Uniforms { camera: mat4x4, light: mat4x4, eye:vec4, state:vec4, nodes:array,32> } @group(0) @binding(0) var u: Uniforms; @group(0) @binding(1) var shadow_map:texture_depth_2d; @group(0) @binding(2) var shadow_sampler:sampler_comparison; @@ -19,14 +19,17 @@ struct Output { @builtin(position) position:vec4, @location(0) world:vec3=0.0) { + let node=u.nodes[min(u32(v.material.x),31u)]; + if(v.material.z==2.0 || v.material.z==1.0) { + base=pow(mix(node.rgb,vec3(0.82,0.91,0.85),node.a*0.35),vec3(2.2)); + } } var color=base*(hemi+diffuse*shade*0.48)+vec3(spec*shade); if(v.material.z==1.0) { color=base*0.85; } if(v.material.z==3.0) { // A quiet ground plane with real device shadows, no perpetual animation. - color=pow(vec3(0.95,0.956,0.938),vec3(2.2))*(0.89+0.11*shade); + color=pow(mix(vec3(0.95,0.956,0.938),vec3(0.09,0.14,0.11),u.state.x),vec3(2.2))*(0.89+0.11*shade); } return vec4(color,1.0); } diff --git a/crates/moonitor-desktop/src/ui.rs b/crates/moonitor-desktop/src/ui.rs index 836938e..8a2c764 100644 --- a/crates/moonitor-desktop/src/ui.rs +++ b/crates/moonitor-desktop/src/ui.rs @@ -1,7 +1,8 @@ use crate::{ - config::{Config, NodeKind}, + config::Config, engine::{Engine, NodeState}, scene::{Camera, Scene}, + view_model::{FleetViewModel, Metric, NodeStatus}, }; use iced::{ Border, Color, Element, Font, @@ -9,12 +10,12 @@ use iced::{ Subscription, Task, Theme, alignment, widget::{ self, Column, Row, Space, button, canvas, column, container, progress_bar, row, scrollable, - text, text_input, + text, text_input, tooltip, }, window, }; use moonitor_core::*; -use moonitor_store::{HistoryPoint, memory_percent}; +use moonitor_store::HistoryPoint; use std::{ path::PathBuf, time::{Duration, Instant}, @@ -29,7 +30,6 @@ const GREEN: Color = Color::from_rgb(0.23, 0.49, 0.36); const LIME: Color = Color::from_rgb(0.71, 0.87, 0.60); const AMBER: Color = Color::from_rgb(0.65, 0.40, 0.18); const NAV: Color = Color::from_rgb(0.085, 0.12, 0.11); -const DEVICE_IDS: [&str; 5] = ["macbook", "exon", "spark", "zima", "iphone"]; const FONT: Font = Font::with_name("Inter"); const MEDIUM: Font = Font { weight: iced::font::Weight::Medium, @@ -39,6 +39,114 @@ const STRONG: Font = Font { weight: iced::font::Weight::Semibold, ..FONT }; +#[derive(Clone, Copy)] +pub struct DisplayOptions { + pub size: iced::Size, + pub dark: bool, + pub scene_visible: bool, +} +impl Default for DisplayOptions { + fn default() -> Self { + Self { + size: iced::Size::new(1380.0, 940.0), + dark: false, + scene_visible: true, + } + } +} +fn tone(color: Color, theme: &Theme) -> Color { + if !theme.extended_palette().is_dark { + return color; + } + if color == Color::from_rgb(0.72, 0.25, 0.23) { + return Color::from_rgb(0.94, 0.57, 0.53); + } + if color == Color::from_rgb(0.70, 0.45, 0.15) { + return Color::from_rgb(0.94, 0.72, 0.40); + } + if color == Color::from_rgb(0.35, 0.46, 0.65) { + return Color::from_rgb(0.62, 0.74, 0.94); + } + if color == Color::from_rgb(0.48, 0.51, 0.50) { + return Color::from_rgb(0.66, 0.72, 0.68); + } + if color == BG { + Color::from_rgb(0.051, 0.086, 0.075) + } else if color == PAPER { + Color::from_rgb(0.078, 0.125, 0.102) + } else if color == INK { + Color::from_rgb(0.918, 0.949, 0.925) + } else if color == MUTED { + Color::from_rgb(0.64, 0.72, 0.67) + } else if color == LINE { + Color::from_rgb(0.20, 0.29, 0.24) + } else if color == GREEN { + Color::from_rgb(0.48, 0.75, 0.58) + } else if color.r > 0.8 && color.g > 0.8 && color.b > 0.7 && color != Color::WHITE { + Color::from_rgb(0.12, 0.21, 0.16) + } else { + color + } +} +trait TextTone { + fn tone(self, color: Color) -> Self; +} +impl TextTone for widget::Text<'_> { + fn tone(self, color: Color) -> Self { + self.style(move |theme| text::Style { + color: Some(if color == Color::WHITE { + color + } else { + tone(color, theme) + }), + }) + } +} +fn themed_panel(theme: &Theme, mut style: container::Style) -> container::Style { + if let Some(iced::Background::Color(c)) = style.background { + style.background = Some(tone(c, theme).into()); + } + if let Some(c) = style.text_color { + style.text_color = Some(tone(c, theme)); + } + style.border.color = tone(style.border.color, theme); + style +} +fn themed_button(theme: &Theme, mut style: button::Style) -> button::Style { + if let Some(iced::Background::Color(c)) = style.background { + style.background = Some(tone(c, theme).into()); + } + style.text_color = tone(style.text_color, theme); + style.border.color = tone(style.border.color, theme); + style +} +fn app_theme(dark: bool) -> Theme { + if dark { + Theme::custom( + "moonitor dark", + iced::theme::Palette { + background: Color::from_rgb(0.051, 0.086, 0.075), + text: Color::from_rgb(0.918, 0.949, 0.925), + primary: GREEN, + success: GREEN, + warning: AMBER, + danger: AMBER, + }, + ) + } else { + Theme::custom( + "moonitor", + iced::theme::Palette { + background: BG, + text: INK, + primary: GREEN, + success: GREEN, + warning: AMBER, + danger: AMBER, + }, + ) + } +} #[derive(Clone, Copy, Debug, PartialEq)] pub enum Tab { Overview, @@ -92,8 +200,12 @@ const TABS: [Tab; 6] = [ #[derive(Debug, Clone)] pub enum Message { Tick, - Select(usize), - SceneSelect(usize), + CaptureScreenshot, + Frame, + Select(String), + ToggleScene, + Focus(bool), + NextNode(i32), Tab(Tab), Filter(String), Sort(bool), @@ -104,10 +216,14 @@ pub enum Message { Screenshot(window::Screenshot, PathBuf), } pub struct App { - _engine: Engine, + _engine: Option, nodes: Vec, storage_error: Option, - selected: usize, + dropped_events: u64, + pending_samples: Vec, + selected: Option, + scene_visible: bool, + dark: bool, tab: Tab, filter: String, sort_memory: bool, @@ -124,16 +240,21 @@ pub fn run( tab: Tab, screenshot: Option, exit_after: Option, + display: DisplayOptions, ) -> anyhow::Result<()> { iced::application( move || { let engine = Engine::start(config.clone(), data_dir.join("history.sqlite")); let nodes = engine.state.lock().unwrap().nodes.clone(); App { - _engine: engine, + _engine: Some(engine), + selected: nodes.get(selected).map(|n| n.config.id.clone()), + scene_visible: display.scene_visible, + dark: display.dark, nodes, storage_error: None, - selected, + dropped_events: 0, + pending_samples: Vec::new(), tab, filter: String::new(), sort_memory: false, @@ -149,7 +270,7 @@ pub fn run( ) .title("moonitor") .window(window::Settings { - size: iced::Size::new(1380.0, 940.0), + size: display.size, min_size: Some(iced::Size::new(1160.0, 760.0)), position: window::Position::Centered, ..Default::default() @@ -158,23 +279,39 @@ pub fn run( .font(include_bytes!("../assets/Inter-Regular.ttf").as_slice()) .font(include_bytes!("../assets/Inter-Medium.ttf").as_slice()) .font(include_bytes!("../assets/Inter-SemiBold.ttf").as_slice()) - .theme(|_: &App| { - Theme::custom( - "moonitor", - iced::theme::Palette { - background: BG, - text: INK, - primary: GREEN, - success: GREEN, - warning: AMBER, - danger: AMBER, - }, - ) - }) - .subscription(|_: &App| { + .theme(|app: &App| app_theme(app.dark)) + .subscription(|app: &App| { Subscription::batch([ iced::time::every(Duration::from_secs(1)).map(|_| Message::Tick), window::events().map(|(id, e)| Message::Window(id, e)), + if app.pending_samples.is_empty() { + Subscription::none() + } else { + window::frames().map(|_| Message::Frame) + }, + iced::event::listen_with(|event, status, _| { + if status == iced::event::Status::Captured { + return None; + } + let iced::Event::Keyboard(iced::keyboard::Event::KeyPressed { + key, modifiers, .. + }) = event + else { + return None; + }; + use iced::keyboard::{Key, key::Named}; + match key { + Key::Named(Named::Tab) => Some(Message::Focus(modifiers.shift())), + Key::Named(Named::ArrowLeft) if modifiers.alt() => Some(Message::NextNode(-1)), + Key::Named(Named::ArrowRight) if modifiers.alt() => Some(Message::NextNode(1)), + Key::Character(ref c) if modifiers.command() => c + .parse::() + .ok() + .filter(|i| (1..=6).contains(i)) + .map(|i| Message::Tab(TABS[i - 1])), + _ => None, + } + }), ]) }) .run() @@ -184,10 +321,30 @@ impl App { fn update(&mut self, message: Message) -> Task { match message { Message::Tick => { - let shared = self._engine.state.lock().unwrap(); - self.nodes = shared.nodes.clone(); - self.storage_error = shared.storage_error.clone(); - drop(shared); + if let Some(engine) = &self._engine { + let shared = engine.state.lock().unwrap(); + if std::env::var_os("MOONITOR_RENDER_DIAGNOSTICS").is_some() { + self.pending_samples = shared + .nodes + .iter() + .filter(|n| { + self.nodes + .iter() + .find(|old| old.config.id == n.config.id) + .is_none_or(|old| old.last_seen != n.last_seen) + }) + .filter_map(|n| n.last_seen) + .collect(); + } + self.nodes = shared.nodes.clone(); + self.storage_error = shared.storage_error.clone(); + self.dropped_events = shared + .dropped_events + .load(std::sync::atomic::Ordering::Relaxed); + } + self.selected = + FleetViewModel::new(&self.nodes, self.selected.as_deref(), Instant::now()) + .selected_id; if self .exit_after .is_some_and(|s| self.started.elapsed().as_secs_f32() >= s) @@ -196,9 +353,29 @@ impl App { } if self.started.elapsed() >= Duration::from_secs(8) && self.window.is_some() - && let Some(path) = self.screenshot.take() + && self.screenshot.is_some() { - return window::screenshot(self.window.unwrap()) + // Capture on a separate event-loop turn: Tick replaces paragraphs. + // Capturing the previous renderer batch here leaves dangling weak text references. + return Task::perform( + async { + std::thread::sleep(Duration::from_millis(150)); + }, + |_| Message::CaptureScreenshot, + ); + } + } + Message::Frame => { + for seen in self.pending_samples.drain(..) { + eprintln!( + "moonitor-ui-latency: receipt_to_redraw_ms={:.3}", + seen.elapsed().as_secs_f64() * 1000.0 + ); + } + } + Message::CaptureScreenshot => { + if let (Some(window), Some(path)) = (self.window, self.screenshot.take()) { + return window::screenshot(window) .map(move |s| Message::Screenshot(s, path.clone())); } } @@ -215,14 +392,29 @@ impl App { eprintln!("Screenshot failed: {e}"); } } - Message::Select(i) => { - if i < self.nodes.len() { - self.selected = i; + Message::Select(id) => { + if self.nodes.iter().any(|n| n.config.id == id) { + self.selected = Some(id); } } - Message::SceneSelect(i) => { - if let Some(index) = self.nodes.iter().position(|n| n.config.id == DEVICE_IDS[i]) { - self.selected = index; + Message::ToggleScene => self.scene_visible = !self.scene_visible, + Message::Focus(reverse) => { + return if reverse { + widget::operation::focus_previous() + } else { + widget::operation::focus_next() + }; + } + Message::NextNode(delta) => { + if !self.nodes.is_empty() { + let current = self + .nodes + .iter() + .position(|n| Some(n.config.id.as_str()) == self.selected.as_deref()) + .unwrap_or(0); + let next = + (current as i32 + delta).rem_euclid(self.nodes.len() as i32) as usize; + self.selected = Some(self.nodes[next].config.id.clone()); } } Message::Tab(tab) => self.tab = tab, @@ -235,10 +427,14 @@ impl App { Task::none() } fn view(&self) -> Element<'_, Message> { - let Some(node) = self.nodes.get(self.selected) else { - return text("Nessun dispositivo configurato").into(); + let fleet = FleetViewModel::new(&self.nodes, self.selected.as_deref(), Instant::now()); + let Some(node) = self + .nodes + .iter() + .find(|n| Some(n.config.id.as_str()) == fleet.selected_id.as_deref()) + else { + return container(column![text("Nessun dispositivo configurato").size(24), text("Aggiungi un nodo local o ssh nel file fleet.toml. I dispositivi senza agente possono essere censiti come unavailable.").size(14)].spacing(16)).padding(32).into(); }; - let active = self.nodes.iter().filter(|n| n.live()).count(); let header = row![ column![ eyebrow("WORKSPACE / HOMELAB"), @@ -246,8 +442,16 @@ impl App { ] .spacing(8), Space::new().width(Fill), - pill(&format!("{active} / {} online", self.nodes.len()), GREEN), - text("LOCALE / VPN").size(10).color(MUTED) + pill( + &format!( + "{} / {} monitorati online · {} censiti", + fleet.online, + fleet.monitored, + fleet.devices.len() + ), + GREEN + ), + text("LOCALE / VPN").size(10).tone(MUTED) ] .spacing(20) .align_y(alignment::Vertical::Center); @@ -255,25 +459,30 @@ impl App { if let Some(error) = &self.storage_error { body = body.push(notice(&format!("Storico non disponibile: {error}"))); } + if self.dropped_events > 0 { + body = body.push(notice(&format!( + "Coda di acquisizione piena: {} aggiornamenti scartati", + self.dropped_events + ))); + } if self.tab == Tab::Overview { - let live = std::array::from_fn(|i| { - self.nodes - .iter() - .find(|n| n.config.id == DEVICE_IDS[i]) - .is_some_and(NodeState::live) - }); - let selected = DEVICE_IDS - .iter() - .position(|id| *id == node.config.id) - .unwrap_or(0); let scene = Scene { - selected, - live, + selected: fleet.selected_id.clone(), + devices: fleet.devices.clone(), + dark: self.dark, camera: self.camera, }; let controls = row![ - text("IL TUO HOMELAB").size(10).font(MEDIUM).color(MUTED), + text("IL TUO HOMELAB").size(10).font(MEDIUM).tone(MUTED), Space::new().width(Fill), + small_button( + if self.scene_visible { + "Solo elenco" + } else { + "Mostra 3D" + }, + Message::ToggleScene + ), small_button("−", Message::Zoom(-0.1)), small_button("+", Message::Zoom(0.1)), small_button("Ripristina", Message::ResetCamera) @@ -283,18 +492,29 @@ impl App { let scene_panel = container( column![ container(controls).padding([14, 18]), - widget::shader(scene).width(Fill).height(398), + if self.scene_visible { + Element::from(widget::stack![ + widget::shader(scene.clone()).width(Fill).height(300), + canvas(scene).width(Fill).height(300) + ]) + } else { + Element::from(container(self.scene_list()).height(300).padding(18)) + }, container( row![ text(format!("{:02}", self.nodes.len())) .font(STRONG) .size(12) - .color(GREEN), - text("DISPOSITIVI").size(10).color(MUTED), + .tone(GREEN), + text("DISPOSITIVI").size(10).tone(MUTED), Space::new().width(Fill), - text("Trascina per ruotare · clicca per selezionare") - .size(10) - .color(MUTED) + text(if self.scene_visible { + "Trascina per ruotare · clicca per selezionare" + } else { + "Seleziona un dispositivo · elenco sincronizzato" + }) + .size(10) + .tone(MUTED) ] .spacing(8) ) @@ -302,14 +522,19 @@ impl App { ] .spacing(0), ) - .style(|_| container::Style { - background: Some(Color::from_rgb(0.95, 0.956, 0.938).into()), - border: Border { - radius: 18.into(), - color: LINE, - width: 1.0, - }, - ..Default::default() + .style(|theme| { + themed_panel( + theme, + container::Style { + background: Some(Color::from_rgb(0.95, 0.956, 0.938).into()), + border: Border { + radius: 18.into(), + color: LINE, + width: 1.0, + }, + ..Default::default() + }, + ) }) .width(Fill); body = body.push(row![scene_panel, self.inspector(node)].spacing(16)); @@ -322,10 +547,15 @@ impl App { body = body.push(self.details(node)); let main = scrollable(container(body).padding([28, 28]).width(Fill)).height(Fill); container(row![self.sidebar(), main].spacing(0)) - .style(|_| container::Style { - background: Some(BG.into()), - text_color: Some(INK), - ..Default::default() + .style(|theme| { + themed_panel( + theme, + container::Style { + background: Some(BG.into()), + text_color: Some(INK), + ..Default::default() + }, + ) }) .width(Fill) .height(Fill) @@ -334,7 +564,7 @@ impl App { fn sidebar(&self) -> Element<'_, Message> { let brand = row![ canvas(Icon("moon", LIME)).width(28).height(28), - text("moonitor").size(23).font(STRONG).color(Color::WHITE) + text("moonitor").size(23).font(STRONG).tone(Color::WHITE) ] .spacing(8) .align_y(alignment::Vertical::Center); @@ -342,11 +572,11 @@ impl App { container(brand).padding([8, 0]), text("PERSONAL OBSERVATORY") .size(8) - .color(Color::from_rgb(0.49, 0.60, 0.53)), + .tone(Color::from_rgb(0.49, 0.60, 0.53)), Space::new().height(30), text("MONITORAGGIO") .size(9) - .color(Color::from_rgb(0.47, 0.57, 0.51)) + .tone(Color::from_rgb(0.47, 0.57, 0.51)) ] .spacing(10); for tab in TABS { @@ -368,48 +598,53 @@ impl App { .on_press(Message::Tab(tab)) .width(Fill) .padding([13, 12]) - .style(move |_, state| button::Style { - background: Some( - if chosen { - Color::from_rgb(0.16, 0.23, 0.18) - } else if matches!(state, button::Status::Hovered) { - Color::from_rgb(0.12, 0.18, 0.14) - } else { - NAV - } - .into(), - ), - text_color: color, - border: Border { - radius: 9.into(), - ..Default::default() - }, - ..Default::default() + .style(move |theme, state| { + themed_button( + theme, + button::Style { + background: Some( + if chosen { + Color::from_rgb(0.16, 0.23, 0.18) + } else if matches!(state, button::Status::Hovered) { + Color::from_rgb(0.12, 0.18, 0.14) + } else { + NAV + } + .into(), + ), + text_color: color, + border: Border { + radius: 9.into(), + ..Default::default() + }, + ..Default::default() + }, + ) }), ); } nav = nav.push(Space::new().height(32)).push( text("I TUOI DISPOSITIVI") .size(9) - .color(Color::from_rgb(0.47, 0.57, 0.51)), + .tone(Color::from_rgb(0.47, 0.57, 0.51)), ); - for (i, node) in self.nodes.iter().enumerate() { + for node in &self.nodes { let (_, color) = status(node); nav = nav.push( button( row![ - text("•").color(color).size(15), - text(&node.config.label) - .size(11) - .color(if self.selected == i { + text("•").tone(color).size(15), + text(&node.config.label).size(11).tone( + if self.selected.as_deref() == Some(node.config.id.as_str()) { Color::WHITE } else { Color::from_rgb(0.58, 0.67, 0.61) - }) + } + ) ] .spacing(10), ) - .on_press(Message::Select(i)) + .on_press(Message::Select(node.config.id.clone())) .style(button::text) .padding([7, 9]) .width(Fill), @@ -417,18 +652,18 @@ impl App { } let footer = column![ row![ - text("•").color(LIME), + text("•").tone(LIME), text("Raccolta attiva") .size(11) - .color(Color::from_rgb(0.73, 0.81, 0.74)) + .tone(Color::from_rgb(0.73, 0.81, 0.74)) ] .spacing(8), text("1 s · SQLite locale") .size(10) - .color(Color::from_rgb(0.44, 0.55, 0.48)), + .tone(Color::from_rgb(0.44, 0.55, 0.48)), text("moonitor / 0.1.0") .size(9) - .color(Color::from_rgb(0.37, 0.47, 0.41)) + .tone(Color::from_rgb(0.37, 0.47, 0.41)) ] .spacing(10); container( @@ -441,16 +676,41 @@ impl App { .padding([24, 18]) .width(202) .height(Fill) - .style(|_| container::Style { - background: Some(NAV.into()), - ..Default::default() + .style(|theme| { + themed_panel( + theme, + container::Style { + background: Some(NAV.into()), + ..Default::default() + }, + ) }) .into() } + fn scene_list(&self) -> Element<'_, Message> { + let mut rows = Column::new().spacing(8); + for node in &self.nodes { + let (state, color) = status(node); + rows = rows.push( + button( + row![ + text(&node.config.label).size(14).width(Fill), + text(state).size(12).tone(color) + ] + .spacing(16), + ) + .on_press(Message::Select(node.config.id.clone())) + .width(Fill) + .padding(10) + .style(button::secondary), + ); + } + scrollable(rows).height(Fill).into() + } fn device_strip(&self) -> Element<'_, Message> { let mut devices = Row::new().spacing(10); for (i, n) in self.nodes.iter().enumerate() { - let chosen = self.selected == i; + let chosen = self.selected.as_deref() == Some(n.config.id.as_str()); let (state, color) = status(n); let cpu = n .sample @@ -458,49 +718,55 @@ impl App { .and_then(|s| s.cpu_utilization_percent.value().copied()); let content = column![ row![ - text(format!("{:02}", i + 1)).size(10).color(MUTED), + text(format!("{:02}", i + 1)).size(10).tone(MUTED), Space::new().width(Fill), - text("•").color(color) + text("•").tone(color) ] .align_y(alignment::Vertical::Center), text(&n.config.label).font(STRONG).size(13), row![ - text(if n.live() { pct(cpu) } else { state.to_owned() }) + text(format!("{} · CPU {}", state, pct(cpu))) .size(11) - .height(18) - .color(if n.live() { INK } else { color }), - Space::new().width(Fill), - text(if n.live() { "CPU" } else { "" }).size(9).color(MUTED) + .tone(if n.live() { INK } else { color }), ] ] .spacing(10); devices = devices.push( button(content) - .on_press(Message::Select(i)) + .on_press(Message::Select(n.config.id.clone())) .padding(14) - .width(Fill) - .style(move |_, s| button::Style { - background: Some( - if chosen { - Color::from_rgb(0.91, 0.95, 0.88) - } else if matches!(s, button::Status::Hovered) { - Color::from_rgb(0.94, 0.96, 0.92) - } else { - PAPER - } - .into(), - ), - text_color: INK, - border: Border { - color: if chosen { GREEN } else { LINE }, - width: 1.0, - radius: 12.into(), - }, - ..Default::default() + .width(190) + .style(move |theme, s| { + themed_button( + theme, + button::Style { + background: Some( + if chosen { + Color::from_rgb(0.91, 0.95, 0.88) + } else if matches!(s, button::Status::Hovered) { + Color::from_rgb(0.94, 0.96, 0.92) + } else { + PAPER + } + .into(), + ), + text_color: INK, + border: Border { + color: if chosen { GREEN } else { LINE }, + width: 1.0, + radius: 12.into(), + }, + ..Default::default() + }, + ) }), ); } - devices.into() + scrollable(devices) + .direction(scrollable::Direction::Horizontal( + scrollable::Scrollbar::default(), + )) + .into() } fn inspector<'a>(&self, n: &'a NodeState) -> Element<'a, Message> { let (state, color) = status(n); @@ -508,55 +774,45 @@ impl App { row![ eyebrow("DISPOSITIVO SELEZIONATO"), Space::new().width(Fill), - text("•").color(color) + text("•").tone(color) ] .spacing(8), text(&n.config.label).size(25).font(STRONG), - text(state).size(10).font(MEDIUM).color(color) + text(state).size(10).font(MEDIUM).tone(color) ] .spacing(10); if let Some(s) = &n.sample { content = content - .push(text(short_cpu(&s.cpu_name)).size(11).color(MUTED)) + .push(text(short_cpu(&s.cpu_name)).size(11).tone(MUTED)) .push(Space::new().height(8)); let total = s.memory.total_bytes.value().copied(); let used = total .zip(s.memory.available_bytes.value().copied()) .map(|(t, a)| t.saturating_sub(a)); + let stale = !n.live(); + let mut cpu = Metric::percent("CPU", Some(&s.cpu_utilization_percent), stale); + cpu.detail = format!("{} core logici", s.cpu_cores_percent.len()); + content = content.push(metric(cpu, GREEN)); + let mut memory = Metric::memory(s, stale); + memory.detail = format!("{} / {}", bytes(used), bytes(total)); + content = content.push(metric(memory, Color::from_rgb(0.49, 0.58, 0.41))); content = content.push(metric( - "CPU", - s.cpu_utilization_percent.value().copied(), - &format!("{} core logici", s.cpu_cores_percent.len()), - GREEN, - )); - content = content.push(metric( - "Memoria", - memory_percent(s), - &format!("{} / {}", bytes(used), bytes(total)), - Color::from_rgb(0.49, 0.58, 0.41), - )); - content = content.push(metric( - "GPU", - gpu_percent(s), - s.gpus - .first() - .map(|g| g.name.as_str()) - .unwrap_or("Sensore non disponibile"), + Metric::gpu(s, stale), Color::from_rgb(0.51, 0.58, 0.64), )); content = content.push( row![ - text("Potenza GPU").size(11).color(MUTED), + text("Potenza GPU").size(11).tone(MUTED), Space::new().width(Fill), text(watts(gpu_power(s))).size(15).font(MEDIUM) ] .align_y(alignment::Vertical::Center), ); - content = content.push(text("Intero dispositivo: N/D").size(9).color(MUTED)); + content = content.push(text("Intero dispositivo: N/D").size(9).tone(MUTED)); } else { content = content .push(Space::new().height(18)) - .push(text(&n.config.note).size(13).color(MUTED)) + .push(text(&n.config.note).size(13).tone(MUTED)) .push( text( n.error @@ -564,20 +820,19 @@ impl App { .unwrap_or("In attesa dei primi campioni."), ) .size(11) - .color(MUTED), + .tone(MUTED), ); } if n.sample.is_some() && !n.live() { content = content.push( text("Ultimo campione conservato · dati obsoleti") .size(10) - .color(AMBER), + .tone(AMBER), ); } container(content) .padding(22) .width(286) - .height(470) .style(panel) .into() } @@ -596,7 +851,7 @@ impl App { c = c.push( text(format!("{} / {} / {}", s.os, s.arch, s.cpu_name)) .size(11) - .color(MUTED), + .tone(MUTED), ); } if !n.live() && n.sample.is_some() { @@ -612,8 +867,10 @@ impl App { let Some(s) = &n.sample else { return card( column![ - text("Telemetria non disponibile").size(18).font(STRONG), - text(&n.config.note).color(MUTED).size(12) + text(status(n).0).size(18).font(STRONG), + text(&n.config.note).tone(MUTED).size(12), + text("Questa vista richiede un agente sul dispositivo. Controlla il tipo di nodo e l'alias SSH in fleet.toml; un dispositivo senza agente resta visibile nell'inventario.").size(13), + small_button("Torna alla panoramica", Message::Tab(Tab::Overview)) ] .spacing(12), ) @@ -627,7 +884,7 @@ impl App { .size(16) .font(STRONG), Space::new().width(Fill), - text("ULTIMI 5 MINUTI").size(9).color(MUTED) + text("ULTIMI 5 MINUTI").size(9).tone(MUTED) ] .align_y(alignment::Vertical::Center), row![ @@ -643,20 +900,20 @@ impl App { let runtime = match models { Some(m) if m.is_empty() => "Ollama pronto · nessun modello caricato".to_owned(), Some(m) => format!("{} modelli caricati in Ollama", m.len()), - None => "Ollama non raggiungibile".into(), + None => format!("Ollama: {}", reading_reason(&s.ollama.models)), }; content = content.push(widget::rule::horizontal(1)).push( row![ canvas(Icon("ai", GREEN)).width(20).height(20), column![ text("AI locale").size(12).font(STRONG), - text(runtime).size(11).color(MUTED) + text(runtime).size(11).tone(MUTED) ] .spacing(5), Space::new().width(Fill), text(format!("{ai} processi candidati")) .size(11) - .color(MUTED), + .tone(MUTED), small_button("Apri AI locale →", Message::Tab(Tab::Ai)) ] .spacing(14) @@ -669,16 +926,17 @@ impl App { let mut c = column![row![ text("Acceleratori").size(19).font(STRONG), Space::new().width(Fill), - text("MISURE DEL RUNTIME E DEL SISTEMA") - .size(9) - .color(MUTED) + text("MISURE DEL RUNTIME E DEL SISTEMA").size(9).tone(MUTED) ]] .spacing(18); for g in &s.gpus { let mut gpu = column![ text(&g.name).size(17).font(STRONG), row![ - mini_stat("CARICO", &pct(g.utilization_percent.value().copied())), + metric( + Metric::percent("CARICO", Some(&g.utilization_percent), !n.live()), + GREEN + ), mini_stat( "MEMORIA GPU", &format!( @@ -694,13 +952,33 @@ impl App { .map(|v| format!("{v:.0} °C")) .unwrap_or("N/D".into()) ), - mini_stat("POTENZA SCHEDA", &watts(gpu_power(s))) + mini_stat( + "POTENZA SCHEDA", + &watts(if s.gpus.len() == 1 { + gpu_power(s) + } else { + None + }) + ) ] .spacing(24) ] .spacing(18); + if g.memory_total_bytes.value().is_none() + || g.memory_used_bytes.value().is_none() + { + gpu = gpu.push( + text(format!( + "Memoria GPU: totale {}, allocata {}", + reading_reason(&g.memory_total_bytes), + reading_reason(&g.memory_used_bytes) + )) + .size(11) + .tone(MUTED), + ); + } if g.memory_kind == GpuMemoryKind::Unified { - gpu=gpu.push(text("Memoria unificata: le allocazioni GPU condividono la RAM del nodo.").size(11).color(MUTED)); + gpu=gpu.push(text("Memoria unificata: le allocazioni GPU condividono la RAM del nodo.").size(11).tone(MUTED)); } gpu = gpu.push( text(format!( @@ -712,7 +990,7 @@ impl App { g.throttling.value().map(String::as_str).unwrap_or("N/D") )) .size(11) - .color(MUTED), + .tone(MUTED), ); c = c.push(card(gpu)); } @@ -722,7 +1000,7 @@ impl App { c = c.push( text("Runtime disponibile. Nessun modello caricato.") .size(13) - .color(GREEN), + .tone(GREEN), ) } Some(models) => { @@ -739,7 +1017,7 @@ impl App { m.quantization.as_deref().unwrap_or("N/D") )) .size(12) - .color(MUTED) + .tone(MUTED) ] .spacing(10), )); @@ -747,13 +1025,13 @@ impl App { } None => { c = c.push( - text("Ollama non raggiungibile su questo nodo.") + text(format!("Ollama: {}", reading_reason(&s.ollama.models))) .size(12) - .color(MUTED), + .tone(MUTED), ) } } - c=c.push(text("Token/s, latenza e code: N/D senza telemetria delle richieste dal runtime.").size(11).color(MUTED)).push(text("Processi AI riconosciuti dal nome").size(17).font(STRONG)).push(self.processes(s,true)); + c=c.push(text("Token/s, latenza e code: N/D senza telemetria delle richieste dal runtime.").size(11).tone(MUTED)).push(text("Processi AI riconosciuti dal nome").size(17).font(STRONG)).push(self.processes(s,true)); c.into() } Tab::Disks => { @@ -767,22 +1045,16 @@ impl App { c = c.push(card( column![ text(&d.mount).size(17).font(STRONG), - text(&d.name).size(11).color(MUTED), + text(&d.name).size(11).tone(MUTED), metric( - "Spazio utilizzato", - used, - &format!( - "{} disponibili / {} totali", - bytes(Some(d.available_bytes)), - bytes(Some(d.total_bytes)) - ), + Metric {label:"Spazio utilizzato".into(), value:used, detail:format!("{} disponibili / {} totali", bytes(Some(d.available_bytes)),bytes(Some(d.total_bytes))), provenance:format!("sysinfo filesystem · (totale − disponibile) / totale · {} ms Unix",d.sampled_at_unix_ms), stale:!n.live()}, GREEN ) ] .spacing(12), )); } - c.push(text("Capacità aggiornata ogni 5 s. I volumi APFS possono condividere lo stesso spazio.").size(11).color(MUTED)).into() + c.push(text("Capacità aggiornata ogni 5 s. I volumi APFS possono condividere lo stesso spazio.").size(11).tone(MUTED)).into() } Tab::Network => { let mut c = column![table_row( @@ -801,7 +1073,7 @@ impl App { false, )); } - c=c.push(text("Interfacce fisiche, VPN e virtuali possono riportare lo stesso traffico: non vengono sommate.").size(11).color(MUTED)); + c=c.push(text("Interfacce fisiche, VPN e virtuali possono riportare lo stesso traffico: non vengono sommate.").size(11).tone(MUTED)); card(c).into() } Tab::History => { @@ -813,7 +1085,7 @@ impl App { plot("GPU", &n.history, 2, Color::from_rgb(0.51, 0.58, 0.64)), text("SQLite locale · riepilogo ogni 5 s · conservazione 7 giorni") .size(11) - .color(MUTED) + .tone(MUTED) ] .spacing(20), ); @@ -826,7 +1098,7 @@ impl App { s.collector_duration_ms )) .size(12) - .color(MUTED) + .tone(MUTED) ] .spacing(14); for p in &s.pressure { @@ -846,7 +1118,7 @@ impl App { for (i, v) in s.cpu_cores_percent.iter().take(32).enumerate() { cores = cores.push( column![ - text(i.to_string()).size(8).color(MUTED), + text(i.to_string()).size(8).tone(MUTED), text(format!("{v:.0}")).size(10).font(MEDIUM) ] .spacing(6), @@ -865,6 +1137,7 @@ impl App { fn processes<'a>(&'a self, s: &'a HostSnapshot, ai_only: bool) -> Element<'a, Message> { let controls = row![ text_input("Cerca processo…", &self.filter) + .id("process-filter") .on_input(Message::Filter) .size(12) .width(260), @@ -880,7 +1153,7 @@ impl App { ] .spacing(8) .align_y(alignment::Vertical::Center); - let mut c=column![controls,text(format!("{} processi sul nodo · sottoinsieme più attivo e candidati AI · 100% CPU = un core",s.process_count)).size(10).color(MUTED),table_row(["PROCESSO","PID","CPU","MEMORIA"],true)].spacing(14); + let mut c=column![controls,text(format!("{} processi sul nodo · sottoinsieme più attivo e candidati AI · 100% CPU = un core",s.process_count)).size(10).tone(MUTED),table_row(["PROCESSO","PID","CPU","MEMORIA"],true)].spacing(14); let filter = self.filter.to_lowercase(); let mut ps: Vec<_> = s .processes @@ -896,7 +1169,7 @@ impl App { c = c.push( text("Nessun processo corrispondente nel campione.") .size(12) - .color(MUTED), + .tone(MUTED), ); } for p in ps { @@ -913,46 +1186,52 @@ impl App { card(c).into() } } -fn status(n: &NodeState) -> (&'static str, Color) { - if matches!(n.config.kind, NodeKind::Unavailable) { - ("Non collegato", MUTED) - } else if n.live() { - ("Online", GREEN) - } else if n.sample.is_some() { - ("Obsoleto", AMBER) - } else if n.error.is_some() { - ("Non raggiungibile", AMBER) - } else { - ("Connessione", MUTED) +fn reading_reason(reading: &Reading) -> &str { + match reading { + Reading::Available { .. } => "disponibile", + Reading::Unavailable { reason } => crate::view_model::unavailable(*reason), } } -fn panel(_: &Theme) -> container::Style { - container::Style { - background: Some(PAPER.into()), - border: Border { - color: LINE, - width: 1.0, - radius: 16.into(), +fn status(n: &NodeState) -> (&'static str, Color) { + let status = NodeStatus::of(n, Instant::now()); + let c = status.color(); + (status.label(), Color::from_rgb(c[0], c[1], c[2])) +} +fn panel(theme: &Theme) -> container::Style { + themed_panel( + theme, + container::Style { + background: Some(PAPER.into()), + border: Border { + color: LINE, + width: 1.0, + radius: 16.into(), + }, + ..Default::default() }, - ..Default::default() - } + ) } fn card<'a>(content: impl Into>) -> widget::Container<'a, Message> { container(content).padding(22).width(Fill).style(panel) } fn eyebrow(s: &str) -> widget::Text<'_> { - text(s).size(9).font(MEDIUM).color(MUTED) + text(s).size(9).font(MEDIUM).tone(MUTED) } fn pill(s: &str, c: Color) -> Element<'static, Message> { - container(text(s.to_owned()).size(10).font(MEDIUM).color(c)) + container(text(s.to_owned()).size(10).font(MEDIUM).tone(c)) .padding([7, 10]) - .style(move |_| container::Style { - background: Some(Color { a: 0.08, ..c }.into()), - border: Border { - radius: 20.into(), - ..Default::default() - }, - ..Default::default() + .style(move |theme| { + themed_panel( + theme, + container::Style { + background: Some(Color { a: 0.08, ..c }.into()), + border: Border { + radius: 20.into(), + ..Default::default() + }, + ..Default::default() + }, + ) }) .into() } @@ -960,69 +1239,96 @@ fn small_button(s: &str, message: Message) -> Element<'static, Message> { button(text(s.to_owned()).size(11).font(MEDIUM)) .on_press(message) .padding([7, 10]) - .style(|_, state| button::Style { - text_color: INK, - background: Some( - if matches!(state, button::Status::Hovered) { - LINE - } else { - Color::TRANSPARENT - } - .into(), - ), - border: Border { - radius: 7.into(), - ..Default::default() - }, - ..Default::default() + .style(|theme, state| { + themed_button( + theme, + button::Style { + text_color: INK, + background: Some( + if matches!(state, button::Status::Hovered) { + LINE + } else { + Color::TRANSPARENT + } + .into(), + ), + border: Border { + radius: 7.into(), + ..Default::default() + }, + ..Default::default() + }, + ) }) .into() } fn notice(s: &str) -> Element<'static, Message> { - container(text(s.to_owned()).size(11).color(AMBER)) + container(text(s.to_owned()).size(11).tone(AMBER)) .padding(12) .width(Fill) - .style(|_| container::Style { - background: Some(Color::from_rgb(0.98, 0.94, 0.86).into()), - border: Border { - radius: 8.into(), - ..Default::default() - }, - ..Default::default() + .style(|theme| { + themed_panel( + theme, + container::Style { + background: Some(Color::from_rgb(0.98, 0.94, 0.86).into()), + border: Border { + radius: 8.into(), + ..Default::default() + }, + ..Default::default() + }, + ) }) .into() } -fn metric<'a>(label: &str, value: Option, foot: &str, c: Color) -> Element<'a, Message> { - column![ +fn metric<'a>(metric: Metric, c: Color) -> Element<'a, Message> { + let explanation = metric.explanation(); + let mut content = column![ row![ - text(label.to_owned()).size(12).font(MEDIUM), + text(metric.label.clone()).size(12).font(MEDIUM), Space::new().width(Fill), - text(pct(value)) + text(metric.text()) .size(19) .font(STRONG) - .width(70) - .height(26) - .align_x(alignment::Horizontal::Right) + .wrapping(text::Wrapping::None) ] .align_y(alignment::Vertical::Center), - progress_bar(0.0..=100.0, value.unwrap_or(0.0).clamp(0.0, 100.0) as f32) - .girth(4) - .style(move |_| progress_bar::Style { - background: LINE.into(), - bar: c.into(), - border: Border { - radius: 2.into(), - ..Default::default() - } - }), - text(foot.to_owned()).size(9).color(MUTED) ] - .spacing(9) + .spacing(7); + if let Some(value) = metric.value { + content = content.push( + progress_bar(0.0..=100.0, value as f32) + .girth(4) + .style(move |_| progress_bar::Style { + background: LINE.into(), + bar: c.into(), + border: Border { + radius: 2.into(), + ..Default::default() + }, + }), + ); + } else { + content = content.push(text(metric.provenance.clone()).size(11).tone(MUTED)); + } + if !metric.detail.is_empty() { + content = content.push(text(metric.detail).size(10).tone(MUTED)); + } + if metric.stale { + content = content.push(text("Ultima lettura · obsoleta").size(10).tone(AMBER)); + } + tooltip( + content.width(Fill), + container(text(explanation).size(12)) + .padding(12) + .style(panel), + tooltip::Position::Bottom, + ) .into() } fn mini_stat<'a>(label: &str, value: &str) -> Element<'a, Message> { column![ - text(label.to_owned()).size(9).color(MUTED), + text(label.to_owned()).size(9).tone(MUTED), text(value.to_owned()).size(19).font(MEDIUM) ] .spacing(10) @@ -1035,7 +1341,7 @@ fn table_row(values: [&str; 4], heading: bool) -> Element<'static, Message> { r = r.push( text(v.to_string()) .size(if heading { 9 } else { 12 }) - .color(if heading { MUTED } else { INK }) + .tone(if heading { MUTED } else { INK }) .width(if i == 0 { Length::FillPortion(3) } else { Fill }), ); } @@ -1061,17 +1367,14 @@ fn bytes(v: Option) -> String { } format!("{v} B") } -fn gpu_percent(s: &HostSnapshot) -> Option { - s.gpus - .iter() - .filter_map(|g| g.utilization_percent.value().copied()) - .reduce(f64::max) -} fn gpu_power(s: &HostSnapshot) -> Option { - s.power + let readings = s + .power .iter() - .find(|p| p.scope == PowerScope::GpuBoard) - .and_then(|p| p.watts.value().copied()) + .filter(|p| p.scope == PowerScope::GpuBoard) + .map(|p| p.watts.value().copied()) + .collect::>>()?; + (!readings.is_empty()).then(|| readings.iter().sum()) } fn short_cpu(s: &str) -> String { s.replace("AMD Ryzen 9 ", "Ryzen 9 ") @@ -1107,14 +1410,12 @@ fn plot<'a>( let last = data.last().and_then(|p| p.1); column![ row![ - text(label.to_owned()).size(11).color(MUTED), + text(label.to_owned()).size(11).tone(MUTED), Space::new().width(Fill), text(pct(last)) .size(15) .font(MEDIUM) - .width(60) - .height(22) - .align_x(alignment::Horizontal::Right) + .wrapping(text::Wrapping::None) ], canvas(Trend { points: data, @@ -1133,7 +1434,7 @@ impl canvas::Program for Trend { &self, _: &(), renderer: &iced::Renderer, - _: &Theme, + theme: &Theme, bounds: iced::Rectangle, _: iced::mouse::Cursor, ) -> Vec { @@ -1144,7 +1445,9 @@ impl canvas::Program for Trend { iced::Point::new(0.0, y * bounds.height), iced::Point::new(bounds.width, y * bounds.height), ), - canvas::Stroke::default().with_color(LINE).with_width(0.5), + canvas::Stroke::default() + .with_color(tone(LINE, theme)) + .with_width(0.5), ); } let mut previous: Option = None; @@ -1155,6 +1458,7 @@ impl canvas::Program for Trend { (1.0 - (*v as f32 / 100.0).clamp(0.0, 1.0)) * bounds.height, ); if let Some(prev) = previous + && p.x > prev.x && p.x - prev.x < bounds.width * 0.025 { frame.stroke( @@ -1179,7 +1483,7 @@ impl canvas::Program for Icon { &self, _: &(), renderer: &iced::Renderer, - _: &Theme, + theme: &Theme, bounds: iced::Rectangle, _: iced::mouse::Cursor, ) -> Vec { @@ -1187,7 +1491,7 @@ impl canvas::Program for Icon { let s = bounds.width / 24.0; let stroke = canvas::Stroke::default() .with_width(1.5 * s) - .with_color(self.1); + .with_color(tone(self.1, theme)); let p = canvas::Path::new(|p| { let mut line = |a: (f32, f32), b: (f32, f32)| { p.move_to(iced::Point::new(a.0 * s, a.1 * s)); @@ -1264,3 +1568,6 @@ impl canvas::Program for Icon { vec![f.into_geometry()] } } + +#[cfg(test)] +mod qa; diff --git a/crates/moonitor-desktop/src/ui/qa.rs b/crates/moonitor-desktop/src/ui/qa.rs new file mode 100644 index 0000000..457600b --- /dev/null +++ b/crates/moonitor-desktop/src/ui/qa.rs @@ -0,0 +1,279 @@ +use super::*; +use iced_test::Simulator; +fn app(count: usize, tab: Tab) -> App { + App { + _engine: None, + nodes: crate::fixtures::fleet(count), + storage_error: None, + dropped_events: 0, + pending_samples: Vec::new(), + selected: (count > 0).then(|| "qa-0".into()), + scene_visible: true, + dark: false, + tab, + filter: String::new(), + sort_memory: false, + camera: Camera::default(), + started: Instant::now(), + screenshot: None, + exit_after: None, + window: None, + } +} +fn settings() -> iced::Settings { + iced::Settings { + default_font: FONT, + fonts: vec![ + include_bytes!("../../assets/Inter-Regular.ttf") + .as_slice() + .into(), + include_bytes!("../../assets/Inter-Medium.ttf") + .as_slice() + .into(), + include_bytes!("../../assets/Inter-SemiBold.ttf") + .as_slice() + .into(), + ], + ..Default::default() + } +} +fn theme() -> Theme { + app_theme(false) +} +#[test] +fn selection_messages_do_not_follow_indices() { + let mut app = app(5, Tab::Overview); + let _ = app.update(Message::Select("qa-3".into())); + app.nodes.reverse(); + let _ = app.update(Message::Tick); + assert_eq!(app.selected.as_deref(), Some("qa-3")); + app.nodes.truncate(1); + let _ = app.update(Message::Tick); + assert_eq!(app.selected.as_deref(), Some("qa-4")); + let _ = app.update(Message::Select("missing".into())); + assert_eq!(app.selected.as_deref(), Some("qa-4")); + app.nodes.clear(); + let _ = app.update(Message::Tick); + assert!(app.selected.is_none()); +} +#[test] +#[ignore = "Requires a graphical backend. Run scripts/qa-ui.sh."] +fn visual_matrix_and_interactions() { + let dir = + std::env::var("MOONITOR_QA_DIR").expect("Explicit ignored artifact directory required"); + let dir = std::path::Path::new(&dir); + std::fs::create_dir_all(dir).unwrap(); + let case = std::env::var("MOONITOR_QA_CASE").ok(); + let mut covered = 0; + for (width, height) in [(1280, 800), (1440, 900), (3840, 2160)] { + for (name, tab) in [ + ("overview", Tab::Overview), + ("ai", Tab::Ai), + ("history", Tab::History), + ("processes", Tab::Processes), + ] { + for dark in [false, true] { + let case_name = format!( + "{name}-{width}x{height}-{}", + if dark { "dark" } else { "light" } + ); + if case.as_ref().is_some_and(|c| c != &case_name) { + continue; + } + covered += 1; + let mut app = app(5, tab); + app.dark = dark; + let mut ui = + Simulator::with_size(settings(), (width as f32, height as f32), app.view()); + let target = ui.find("QA device 0").unwrap(); + assert!(target.visible_bounds().is_some()); + let snapshot = ui.snapshot(&app_theme(dark)).unwrap(); + let path = dir.join(format!( + "fixture-{name}-{width}x{height}-{}", + if dark { "dark" } else { "light" } + )); + assert!( + snapshot.matches_image(&path).unwrap(), + "Visual diff: {}", + path.display() + ); + // A second render must be identical with frozen observations. + assert!( + ui.snapshot(&app_theme(dark)) + .unwrap() + .matches_image(&path) + .unwrap() + ); + } + } + } + if let Some(case) = case + && case != "fleet" + { + assert_eq!(covered, 1, "Unknown QA case {case}"); + return; + } + for count in [0, 1, 2, 16, 32] { + let app = app(count, Tab::Overview); + let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); + assert!( + ui.snapshot(&theme()) + .unwrap() + .matches_image(dir.join(format!("fixture-fleet-{count}"))) + .unwrap() + ); + } + let mut app = app(5, Tab::Overview); + let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); + ui.click("AI locale").unwrap(); + for message in ui.into_messages() { + let _ = app.update(message); + } + assert_eq!(app.tab, Tab::Ai); + let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); + ui.click("QA device 4").unwrap(); + for message in ui.into_messages() { + let _ = app.update(message); + } + assert_eq!(app.selected.as_deref(), Some("qa-4")); + let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); + assert!(ui.find("Non strumentato").is_ok()); + ui.click("Torna alla panoramica").unwrap(); + for message in ui.into_messages() { + let _ = app.update(message); + } + assert_eq!(app.tab, Tab::Overview); +} +#[test] +#[ignore = "Requires a graphical backend. Run scripts/qa-ui.sh."] +fn metric_rendering() { + let dir = std::env::var("MOONITOR_QA_DIR").unwrap(); + for value in [0.0, 1.0, 7.0, 36.0, 37.0, 99.0, 100.0] { + let reading = Reading::reported(value, "fixture", 100); + let m = Metric::percent("CPU", Some(&reading), false); + let mut ui = Simulator::with_size( + settings(), + (286.0, 100.0), + container(metric(m, GREEN)).padding(22).style(panel), + ); + let label = format!("{value:.0}%"); + let value_bounds = ui.find(label.as_str()).unwrap(); + assert!(value_bounds.visible_bounds().is_some()); + assert!( + ui.snapshot(&theme()) + .unwrap() + .matches_image(std::path::Path::new(&dir).join(format!("metric-{value}"))) + .unwrap() + ); + } +} + +#[test] +#[ignore = "Requires a graphical backend. Run scripts/qa-ui.sh."] +fn changing_metrics_keep_visible_glyphs() { + use iced_test::core::renderer::Headless; + use iced_test::runtime::{UserInterface, user_interface}; + for font in settings().fonts { + iced_test::renderer::graphics::text::font_system() + .write() + .unwrap() + .load_font(font); + } + let mut renderer = iced_test::futures::futures::executor::block_on( + ::new(FONT, 16.0.into(), None), + ) + .unwrap(); + let mut cache = user_interface::Cache::default(); + let dir = std::path::PathBuf::from(std::env::var("MOONITOR_QA_DIR").unwrap()); + std::fs::create_dir_all(&dir).unwrap(); + for (i, value) in [0.0, 37.0, 7.0, 0.0, 100.0, 1.0, 99.0, 8.0, 10.0, 50.0] + .into_iter() + .enumerate() + { + let reading = Reading::reported(value, "fixture", 100 + i as u64); + let element = container(metric(Metric::percent("CPU", Some(&reading), false), GREEN)) + .padding(22) + .style(panel); + let mut ui = + UserInterface::build(element, iced::Size::new(286.0, 100.0), cache, &mut renderer); + ui.draw( + &mut renderer, + &theme(), + &iced_test::core::renderer::Style { text_color: INK }, + iced::mouse::Cursor::Unavailable, + ); + let rgba = Headless::screenshot(&mut renderer, iced::Size::new(572, 200), 2.0, BG); + // Inspect the numeric value region, independently of widget selection or bar pixels. + let ink = (400..535) + .flat_map(|x| (44..98).map(move |y| (x, y))) + .filter(|(x, y)| { + let at = (y * 572 + x) * 4; + rgba[at] < 100 && rgba[at + 1] < 120 && rgba[at + 2] < 120 + }) + .count(); + image::save_buffer( + dir.join(format!("dynamic-{i}-{value}.png")), + &rgba, + 572, + 200, + image::ColorType::Rgba8, + ) + .unwrap(); + assert!( + ink > 30, + "Value {value} lost visible glyphs after update {i}: {ink} ink pixels" + ); + cache = ui.into_cache(); + } +} + +#[test] +#[ignore = "Requires a graphical backend. Run scripts/qa-ui.sh."] +fn scene_picking_filter_keyboard_and_scroll() { + let nodes = crate::fixtures::fleet(2); + let fleet = FleetViewModel::new(&nodes, None, Instant::now()); + let scene = Scene { + selected: None, + devices: fleet.devices, + camera: Camera::default(), + dark: false, + }; + let size = iced::Size::new(800.0, 400.0); + for index in 0..2 { + let mut ui: Simulator<'_, Message> = Simulator::with_size( + settings(), + size, + widget::shader(scene.clone()).width(Fill).height(Fill), + ); + ui.point_at(scene.test_device_point(index, size)); + ui.simulate(iced_test::simulator::click()); + assert!( + ui.into_messages() + .any(|m| matches!(m,Message::Select(id) if id==format!("qa-{index}"))) + ); + } + let mut app = app(5, Tab::Processes); + let mut ui = Simulator::with_size(settings(), (1280.0, 800.0), app.view()); + ui.click(widget::Id::new("process-filter")).unwrap(); + ui.typewrite("missing"); + ui.tap_key(iced::keyboard::key::Named::Backspace); + for m in ui.into_messages() { + let _ = app.update(m); + } + assert_eq!(app.filter, "missin"); + let mut ui = Simulator::with_size(settings(), (1280.0, 800.0), app.view()); + assert!( + ui.find("Nessun processo corrispondente nel campione.") + .is_ok() + ); + ui.point_at((900.0, 600.0)); + ui.simulate([iced::Event::Mouse(iced::mouse::Event::WheelScrolled { + delta: iced::mouse::ScrollDelta::Lines { x: 0.0, y: -10.0 }, + })]); + assert!(ui.snapshot(&theme()).is_ok()); + drop(ui); + let _ = app.update(Message::NextNode(1)); + assert_eq!(app.selected.as_deref(), Some("qa-1")); + let _ = app.update(Message::NextNode(-1)); + assert_eq!(app.selected.as_deref(), Some("qa-0")); +} diff --git a/crates/moonitor-desktop/src/view_model.rs b/crates/moonitor-desktop/src/view_model.rs new file mode 100644 index 0000000..462b52c --- /dev/null +++ b/crates/moonitor-desktop/src/view_model.rs @@ -0,0 +1,355 @@ +//! Presentation contracts: no collectors, storage or fabricated observations. +use crate::{ + config::{NodeKind, VisualKind}, + engine::NodeState, +}; +use moonitor_core::{Reading, UnavailableReason}; +use std::time::{Duration, Instant}; + +pub const FRESH_FOR: Duration = Duration::from_secs(4); +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum NodeStatus { + Online, + Stale, + Unreachable, + Uninstrumented, + Connecting, +} +impl NodeStatus { + pub fn of(node: &NodeState, now: Instant) -> Self { + if matches!(node.config.kind, NodeKind::Unavailable) { + Self::Uninstrumented + } else if node.sample.is_some() { + if node.error.is_none() + && node + .last_seen + .is_some_and(|t| now.saturating_duration_since(t) < FRESH_FOR) + { + Self::Online + } else { + Self::Stale + } + } else if node.error.is_some() { + Self::Unreachable + } else { + Self::Connecting + } + } + pub fn label(self) -> &'static str { + match self { + Self::Online => "Online", + Self::Stale => "Obsoleto", + Self::Unreachable => "Non raggiungibile", + Self::Uninstrumented => "Non strumentato", + Self::Connecting => "In connessione", + } + } + pub fn color(self) -> [f32; 3] { + match self { + Self::Online => [0.23, 0.49, 0.36], + Self::Stale => [0.70, 0.45, 0.15], + Self::Unreachable => [0.72, 0.25, 0.23], + Self::Uninstrumented => [0.48, 0.51, 0.50], + Self::Connecting => [0.35, 0.46, 0.65], + } + } +} +#[derive(Debug, Clone, PartialEq)] +pub struct DeviceSceneModel { + pub id: String, + pub label: String, + pub kind: VisualKind, + pub status: NodeStatus, + pub position: [f32; 3], +} +pub struct FleetViewModel { + pub devices: Vec, + pub selected_id: Option, + pub monitored: usize, + pub online: usize, +} +impl FleetViewModel { + pub fn new(nodes: &[NodeState], selected: Option<&str>, now: Instant) -> Self { + let columns = (nodes.len() as f32).sqrt().ceil().max(1.0) as usize; + let rows = nodes.len().div_ceil(columns); + let devices = nodes + .iter() + .enumerate() + .map(|(i, n)| DeviceSceneModel { + id: n.config.id.clone(), + label: n.config.label.clone(), + kind: n.config.visual_kind, + status: NodeStatus::of(n, now), + position: [ + ((i % columns) as f32 - (columns - 1) as f32 / 2.0) * 2.6, + 0.0, + ((i / columns) as f32 - rows.saturating_sub(1) as f32 / 2.0) * 2.6, + ], + }) + .collect::>(); + let selected_id = selected + .filter(|id| devices.iter().any(|d| d.id == *id)) + .map(str::to_owned) + .or_else(|| devices.first().map(|d| d.id.clone())); + Self { + monitored: devices + .iter() + .filter(|d| d.status != NodeStatus::Uninstrumented) + .count(), + online: devices + .iter() + .filter(|d| d.status == NodeStatus::Online) + .count(), + devices, + selected_id, + } + } +} + +#[derive(Debug, Clone)] +pub struct Metric { + pub label: String, + pub value: Option, + pub detail: String, + pub provenance: String, + pub stale: bool, +} +impl Metric { + pub fn percent(label: &str, reading: Option<&Reading>, stale: bool) -> Self { + let (value, provenance) = match reading { + Some(Reading::Available { + value, + source, + quality, + sampled_at_unix_ms, + }) if value.is_finite() && (0.0..=100.0).contains(value) => ( + Some(*value), + format!( + "Fonte: {source} · qualità: {quality:?} · campionato: {sampled_at_unix_ms} ms Unix" + ), + ), + Some(Reading::Available { .. }) => { + (None, "Valore fuori intervallo: atteso 0–100%".into()) + } + Some(Reading::Unavailable { reason }) => (None, unavailable(*reason).into()), + None => (None, "Nessuna osservazione ricevuta".into()), + }; + Self { + label: label.into(), + value, + detail: String::new(), + provenance, + stale, + } + } + pub fn memory(snapshot: &moonitor_core::HostSnapshot, stale: bool) -> Self { + let mut m = Self::percent("Memoria", None, stale); + match ( + &snapshot.memory.total_bytes, + &snapshot.memory.available_bytes, + ) { + ( + Reading::Available { + value: total, + source, + sampled_at_unix_ms, + .. + }, + Reading::Available { + value: available, + source: available_source, + sampled_at_unix_ms: available_at, + .. + }, + ) if *total > 0 && available <= total => { + m.value = Some((*total - *available) as f64 / *total as f64 * 100.0); + m.provenance = format!( + "Derivata: (totale − disponibile) / totale · fonti {source}, {available_source} · timestamp {sampled_at_unix_ms}, {available_at} ms Unix" + ); + } + (Reading::Unavailable { reason }, _) | (_, Reading::Unavailable { reason }) => { + m.provenance = unavailable(*reason).into() + } + _ => m.provenance = "Memoria: contatori non validi".into(), + } + m + } + pub fn gpu(snapshot: &moonitor_core::HostSnapshot, stale: bool) -> Self { + let reading = snapshot + .gpus + .iter() + .filter(|g| { + g.utilization_percent + .value() + .is_some_and(|v| v.is_finite() && (0.0..=100.0).contains(v)) + }) + .max_by(|a, b| { + a.utilization_percent + .value() + .unwrap() + .total_cmp(b.utilization_percent.value().unwrap()) + }) + .or_else(|| snapshot.gpus.first()); + let mut m = Self::percent( + if snapshot.gpus.len() > 1 { + "GPU · massimo disponibile" + } else { + "GPU" + }, + reading.map(|g| &g.utilization_percent), + stale, + ); + if let Some(g) = reading { + m.detail = g.name.clone(); + } + if snapshot.gpus.len() > 1 { + m.provenance.push_str(&format!( + " · massimo fra {} GPU censite; vedere AI locale per ogni GPU", + snapshot.gpus.len() + )); + } + m + } + pub fn text(&self) -> String { + self.value + .map(|v| format!("{v:.0}%")) + .unwrap_or_else(|| "N/D".into()) + } + pub fn explanation(&self) -> String { + let state = if self.stale { + "Ultima lettura conservata · obsoleta" + } else if self.value.is_none() { + "Dato non disponibile" + } else { + "Campione corrente" + }; + format!( + "{} · {}\n{}\n{}", + self.label, + self.text(), + self.provenance, + state + ) + } +} +pub fn unavailable(reason: UnavailableReason) -> &'static str { + match reason { + UnavailableReason::Unsupported => "Non supportato dal sensore", + UnavailableReason::PermissionDenied => "Permesso negato", + UnavailableReason::NotConfigured => "Sorgente non configurata", + UnavailableReason::TemporarilyUnavailable => "Temporaneamente non disponibile", + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::config::NodeConfig; + pub fn nodes(count: usize) -> Vec { + (0..count) + .map(|i| NodeState { + config: NodeConfig { + id: format!("node-{i}"), + label: format!("Node {i}"), + kind: NodeKind::Unavailable, + visual_kind: VisualKind::Compact, + ssh_alias: None, + remote_agent: None, + note: String::new(), + }, + sample: None, + last_seen: None, + error: None, + history: Default::default(), + }) + .collect() + } + #[test] + fn fleet_counts_selection_and_layout_follow_identity() { + for count in [0, 1, 2, 5, 16, 32] { + let nodes = nodes(count); + let vm = FleetViewModel::new(&nodes, Some("missing"), Instant::now()); + assert_eq!(vm.devices.len(), count); + assert_eq!(vm.monitored, 0); + assert_eq!(vm.online, 0); + assert_eq!(vm.selected_id.is_some(), count > 0); + for (i, a) in vm.devices.iter().enumerate() { + for b in &vm.devices[i + 1..] { + assert_ne!(a.position, b.position); + } + } + } + let mut nodes = nodes(5); + nodes.reverse(); + assert_eq!( + FleetViewModel::new(&nodes, Some("node-1"), Instant::now()) + .selected_id + .as_deref(), + Some("node-1") + ); + nodes.truncate(1); + let vm = FleetViewModel::new(&nodes, Some("node-1"), Instant::now()); + assert_eq!(vm.devices.len(), 1); + assert_eq!(vm.selected_id.as_deref(), Some("node-4")); + } + #[test] + fn freshness_and_instrumentation_are_distinct() { + let nodes = crate::fixtures::fleet(5); + let now = Instant::now(); + let vm = FleetViewModel::new(&nodes, None, now); + assert_eq!(vm.monitored, 4); + assert_eq!(vm.online, 1); + assert_eq!( + vm.devices.iter().map(|d| d.status).collect::>(), + vec![ + NodeStatus::Online, + NodeStatus::Stale, + NodeStatus::Unreachable, + NodeStatus::Connecting, + NodeStatus::Uninstrumented + ] + ); + assert_eq!( + NodeStatus::of(&nodes[0], now + FRESH_FOR), + NodeStatus::Stale + ); + } + #[test] + fn unified_memory_is_not_added_and_gpu_max_is_named() { + let mut s = crate::fixtures::sample("qa"); + assert_eq!(Metric::memory(&s, false).value, Some(50.0)); + assert!(s.gpus[0].memory_total_bytes.value().is_none()); + let mut gpu = s.gpus[0].clone(); + gpu.id = "gpu-1".into(); + gpu.utilization_percent = Reading::reported(80.0, "QA GPU 1", 10); + s.gpus.push(gpu); + let m = Metric::gpu(&s, false); + assert_eq!(m.value, Some(80.0)); + assert!(m.label.contains("massimo")); + assert_eq!(s.gpus.len(), 2); + } + #[test] + fn zero_and_absence_have_different_values_and_all_reasons_survive() { + let zero = Reading::Available { + value: 0.0, + source: "fixture".into(), + quality: moonitor_core::Quality::Reported, + sampled_at_unix_ms: 10, + }; + assert_eq!(Metric::percent("CPU", Some(&zero), false).text(), "0%"); + let mut reasons = std::collections::HashSet::new(); + for reason in [ + UnavailableReason::Unsupported, + UnavailableReason::PermissionDenied, + UnavailableReason::NotConfigured, + UnavailableReason::TemporarilyUnavailable, + ] { + let m = Metric::percent("GPU", Some(&Reading::Unavailable { reason }), false); + assert_eq!(m.text(), "N/D"); + assert!(m.value.is_none()); + reasons.insert(m.provenance); + } + assert_eq!(reasons.len(), 4); + assert!(Metric::percent("CPU", None, false).value.is_none()); + } +} diff --git a/docs/architecture.md b/docs/architecture.md index 118a645..aa5fcc1 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -7,7 +7,7 @@ | `moonitor-core` | Shared telemetry types and measurement semantics | Implemented | | `moonitor-agent` | Local platform collection and Ollama adapter | Implemented | | `moonitor-store` | SQLite summaries, seven-day retention and recent history | Implemented | -| `moonitor-desktop` | Native Rust egui/eframe fleet and device UI | Implemented | +| `moonitor-desktop` | Native Rust Iced/wgpu fleet and device UI | Implemented | The headless agent must not depend on the desktop rendering stack. @@ -55,12 +55,19 @@ The initial process list contains bounded CPU-heavy processes and AI name matche not an exhaustive process census. The UI has fleet, overview, process, AI, disk, network and recent-history views. -Rendering uses glow/OpenGL and one-second repaint scheduling, coalescing samples -from different nodes. Collection, SSH and SQLite run outside the UI thread. +Rendering uses Iced 0.14 and wgpu, with one-second state polling. Collection, SSH +and SQLite run outside the UI thread. `view_model.rs` defines availability, +ID selection, scene entities and typed percent metrics. `scene.rs` caches uploaded +meshes until fleet identity/geometry changes; camera, selection and state invalidate +the color pass, geometry invalidates shadows. There is no continuous animation. +The list alternative removes the shader widget. GPU-free startup is not yet qualified. +Ingress drops are counted and shown; schema-1 history still only stores summaries. + +See [W0 audit and target module boundaries](moonitor-w0-audit-and-plan.md). ## References -- [egui repaint scheduling](https://docs.rs/egui/latest/egui/struct.Context.html) +- [Iced 0.14](https://docs.rs/iced/0.14.0/iced/) - [NVIDIA Management Library](https://developer.nvidia.com/management-library-nvml) - [Spark memory reporting](https://nvidia.custhelp.com/app/answers/detail/a_id/5775/) - [Ollama loaded models](https://docs.ollama.com/api/ps) diff --git a/docs/moonitor-professional-upgrade-blueprint.md b/docs/moonitor-professional-upgrade-blueprint.md new file mode 100644 index 0000000..aa70cad --- /dev/null +++ b/docs/moonitor-professional-upgrade-blueprint.md @@ -0,0 +1,265 @@ +# Moonitor · Professional Upgrade Blueprint + +Data review: 23 ottobre 2026 +Target: Moonitor 2.0, desktop-native local-first observability for personal compute and AI labs +Repository: mothx9/moonitor (privato) +Branch remoto analizzato: main, commit ba91ef433e83721ea52aad6fbea0d32a30bccf84 (22 ottobre 2026) +Materiali UI: screenshot e registrazione forniti dall'utente, relativi alla build locale Iced/3D non pubblicata nel branch esaminato. +Tipo di lavoro: review e target design, nessuna modifica al repository. + +## 0. Decisione di prodotto + +Moonitor non sarà soltanto un aggregatore di metriche CPU/RAM/GPU per cinque computer. Diventerà un observability workbench locale capace di rispondere a quattro domande: + +1. Che cosa sta succedendo nella flotta, adesso? +2. Quale workload/modello/processo causa un cambiamento e come si spiega? +3. Quali prestazioni e consumi sono misurabili, con quale confidenza? +4. Quale azione conviene valutare, senza sacrificare sicurezza e controllo dell'utente? + +North-star: Understand, compare and diagnose the behavior of your personal compute lab, especially local AI workloads, without a cloud requirement. + +Differenziazione: correlazione fra hardware eterogeneo, inferenza locale, energia e timeline degli eventi. Non competere sul mero inventario host con Netdata, Beszel o Grafana. Non trasformarlo prematuramente in un orchestratore di workload né in un agente che esegue comandi sui nodi. + +## 1. Ambito e limiti della verifica + +Nel repository main sono presenti quattro crate (moonitor-core, moonitor-agent, moonitor-store, moonitor-desktop). Il desktop pubblicato è egui/eframe + glow/OpenGL. La UI Iced + wgpu + 3D visibile nella registrazione risulta solo locale; non è possibile revisionarne la sorgente scene.rs o gli shader dal repository remoto. Le note tecniche locali fornite dall'utente indicano che tale versione disegna cinque oggetti indipendentemente dalla flotta configurata e non riflette lo stato online/offline nello shader: considerare questi problemi da verificare nel codice locale, non problemi confermati nel branch GitHub. + +### Elementi riutilizzabili + +- moonitor-agent: raccolta local/SSH di CPU, RAM, processi, filesystem, reti, Linux PSI, NVIDIA NVML e Apple IOKit; polling a frequenze differenti. +- moonitor-core: tipi con distinzione esplicita fra Reading::Available e Reading::Unavailable; indicazione della sorgente e qualità. +- moonitor-desktop/engine.rs: SSH persistente con known-hosts e batch mode, payload di dimensione limitata, canali bounded e reconnect. +- moonitor-store: SQLite WAL, campionamento di riepiloghi, retention e test null-vs-zero. +- config: validazione di ID, alias SSH e percorsi agent. +- Script e note di qualification già presenti. + +### Debiti verificati + +| Tema | Prova nel codice pubblicato | Implicazione | +| --- | --- | --- | +| Store nel processo desktop | Engine::start apre history.sqlite; README precisa che il desktop deve restare attivo | Lo storico si interrompe quando l'app viene chiusa | +| Modello AI centrato su Ollama | HostSnapshot.ollama: RuntimeSnapshot; collect_ollama() legge /api/ps | Non esiste un'ontologia generale di runtime e inferenze | +| Storico povero | samples(node, received_ms, source_ms, cpu, memory_percent, gpu, gpu_board_watts) | Non conserva GPU individuali, runtime, eventi, sorgenti e granularità utile all'analisi | +| GPU sintetizzate col massimo | store e engine calcolano max() delle utilization dei GPU | Perdita della differenza fra acceleratori multipli | +| Processi parziali | Top 64 CPU + 32 candidati AI per nome, non un censimento esaustivo | UI non deve promettere un process manager completo | +| Test limitati | Sette test riportati in qualification; CI Rust static/unit | Nessuna verifica adeguata della nuova UI, screenshot o interazioni | +| Distribuzione locale | .app costruita da script, firmata ad-hoc, con .local/fleet.toml incluso nel bundle | Non è una release distribuita/notarizzata; configurazione locale da separare dal bundle | +| Qualità delle letture | Reading è un buon inizio; validazione HostSnapshot ancora parziale | Estendere controlli di range, clock, fonti, stale e copertura | + +## 2. Audit dell'interfaccia Iced/3D (screenshot e video) + +### Criticità P0/P1 + +P0 · Metri coerenti e visibili: le percentuali devono sempre essere leggibili, non soltanto la progress bar; ogni numero deve avere etichetta, unità, definizione, fonte, stato, timestamp. Fallimento di visualizzazione = bug funzionale. + +P0 · Data-driven scene: la scena contiene esattamente i nodi del modello di flotta e li aggiorna con aggiunta/rimozione, scelta dispositivo, online, stale, unreachable, uninstrumented. Nessun oggetto hard-coded. Un nodo non monitorabile non entra nel denominatore “nodi online”. + +P1 · Information architecture: la sidebar ripete dispositivi che appaiono nuovamente in scena e card; la navigazione privilegia categorie di risorse (processi, dischi, rete) più che casi d'uso (flotta, workload, energia, problemi). + +P1 · Home data-first: la grande scena isometrica domina la vista; gli andamento e le attività importanti finiscono sotto il fold. Nessuna diagnosi sintetica o spiegazione di cambiamenti. + +P1 · Pagine vuote: selezionare iPhone in AI locale produce una pagina quasi tutta vuota con “Telemetria non disponibile”; l'assenza del sensore va trattata in un componente riutilizzabile che spiega perché e cosa è possibile configurare, non con chilometri di superficie vuota. + +P1 · Charts deboli: linee sottilissime in assenza di tempo/scala leggibili, nessuno zoom/brush/crosshair, nessuna sovrapposizione di eventi, nessuna comparazione multi-nodo; il range è sempre 5 minuti. + +P1 · 3D come illustrazione: oggetti procedurali generici, scala e illuminazione da mockup, nessuna topologia autentica, connessione o flusso rappresentato. Rendering senza semantica. + +### Conservare dalla direzione visiva + +Nome Moonitor, simbolo lunare, palette verde/salvia, pulizia e ampio spazio di lavoro, sensazione di desktop tool e non di sito web. Il problema non è il minimalismo: è l'insufficiente priorità alle informazioni e l'assenza di un sistema visuale/di interazione rigoroso. + +## 3. Information architecture v2 + +### Navigazione primaria + +| Sezione | Domanda / azione principale | Contenuto minimo | +| --- | --- | --- | +| Overview | La flotta sta bene? Che cosa richiede attenzione? | Stato reale, carichi AI, GPU, energia misurata, anomalie, eventi recenti | +| Fleet | Quali nodi ci sono e come si relazionano? | Inventario, stato, capacità, connettività, gruppi, topologia; drilldown | +| Workloads | Che cosa sta girando, dove, con quali prestazioni? | Runtime, modelli, esecuzioni, code, token/s, TTFT, tempi, risorse | +| Energy | Quale potenza misurabile, quanta energia, quale efficienza? | Scopes, fonti, W/Wh, copertura, confronti con finestre equivalenti | +| Events | Che cosa è cambiato? Quando e perché? | Timeline unificata di eventi, alert, disconnessioni, inizi/fini job | +| Explore | Confronta dettagli storici e correlazioni | Filtri per metrica/nodo/run, timeframe, overlay e annotazioni | +| Settings | Come sono collegate fonti e dati? | Onboarding, agenti, connessioni, sensori, storage, accessibilità, privacy | + +Processi, storage, rete, sensori e GPU specifiche vivono dentro il dettaglio del nodo, non come sei sezioni globali equivalenti. Si può aggiungere un'area Diagnostics mirata dopo il primo release candidate. + +### Pagina Overview, viewport desktop di riferimento + +Top bar: logo compatto, Overview, breadcrumb di contesto, selettore finestra temporale, freshness, comando ricerca globale e stato della raccolta. + +Riga 1: quattro KPI interpretabili: (1) nodi monitorati vs censiti, (2) workload AI attivi e in attesa, (3) GPU occupate/capacità, (4) potenza totale solo se interamente e non ambiguamente misurata. Se non misurabile, mostra “copertura energetica” o “potenza GPU misurata”, non inventare watt totali. + +Riga 2, 65/35: a sinistra vista timeline delle risorse/workload con selettore CPU/GPU/RAM; a destra “Lab Map” compatta in 2D/3D con device state e collegamenti realmente conosciuti. La Lab Map può diventare full-screen in modalità immersiva. + +Riga 3: tabella Workloads attivi, con nodo, modello, runtime, tokens/s, TTFT, CPU/GPU attribuibili, ultime attività; empty-state valido se i runtime non espongono dati. + +Riga 4: Events/Alerts sintetici e stato/qualità delle sorgenti. I grafici non devono apparire soltanto dopo uno scroll profondo. + +### Dettaglio dispositivo + +Header persistente: nome, alias, chipset, OS, stato + ultimo contatto + sorgente. Tab interni: Summary / Compute / Processes / Storage / Network / AI / Sensors / History. Non duplicare le card dispositivo in ogni pagina: usare un device switcher unico, accessibile da top bar, command palette e Fleet. + +## 4. Design system (proposta da approvare con mock e screenshot) + +Identità: instrument-grade, quiet premium, editorial clarity. Non glassmorphism gratuito, non dashboard piena di chip e ombre, non cartone 3D. + +- Palette: canvas chiaro caldo #F6F8F5, surface #FFFFFF, testo primario #17251F, testo secondario #65756C, bordi #DDE5DD; dark canvas #0D1613, surface #14201A, testo #EAF2EC. Accento salvia/verde solo per enfasi e selezione; rischio non usa lo stesso colore del brand. +- Tipografia: SF Pro/System oppure Inter per UI; mono tabulare (SF Mono/Geist Mono) per timestamp, valori e identificatori. Headline 28–32, page headings 19–22, testo 13–14, metadati 11–12, KPI 24–30. +- Layout: scala 4/8pt, card con padding 16–24, raggio coerente 12–14, bordi fini; sidebar 208–224 px collassabile; barra superiore 56–64; ritmo verticale ripetibile; densità default e compact. +- Color semantics: Healthy, Busy, Warn, Critical, Stale, Uninstrumented, Unreachable, Unknown. Mai affidare lo stato esclusivamente al colore. +- Data vis: gridline discrete, assi e tooltip precisi, unità esplicite, marker per assenza/stale e per eventi. No linee continue attraverso missing-data. Time range comuni: live, 15m, 1h, 24h, 7d (solo se storage supporta). +- Motion: 3D e micro-animazioni on-demand, reduce-motion supportato. Focus/keyboard/contrast prima di spettacolo. +- Locale: italiano/inglese attraverso message catalog, unità coerenti SI/IEC (MiB vs MB) e formati locali. + +### 3D: decisione architetturale + +Non rimuovere la scena, ma cambiare il suo ruolo. Lab Map è un componente di osservabilità, non un'immagine di copertina. Ogni asset (glTF ottimizzato o geometria parametrica curata) ha device ID, stato, label, health ring e popover. La scena deve ridimensionarsi 0–32 nodi, degradare bene senza GPU supportata, e consentire list-view alternativa. Implementare il rendering solo quando l'utente interagisce o lo stato visibile cambia; idle non deve causare animazione continua. Per grandi flotte raggruppare i device, evitare la pretesa di modelli hardware fotorealistici per ogni variante. + +Scelta UI tech: mantenere Iced + wgpu provvisoriamente. Non cambiare framework per gusto estetico prima di misurare input latency, resa tipografica, accessibilità, native behavior, screenshot deterministici e rendering su macOS/Arch. Effettuare un ADR solo se emerge un limite riproducibile. + +## 5. Data model 2.0 + +Il crate moonitor-core deve distinguere entity, observation, measurement, event, runtime, workload, source: + +- Node: identità, piattaforma, capability discovery, connettività, ultima ricezione. +- DeviceComponent: CPU package/core, GPU accelerator, SoC, disk, network interface, energy meter, memory domain. +- MetricDescriptor: key canonica, unità, aggregabilità, scope, qualità, tipo (gauge/counter/histogram). +- Observation: node/component/workload IDs, sampled_at, received_at, value, availability reason, source, source version, quality, freshness. +- RuntimeInstance: engine (Ollama/vLLM/YVEX/MLX/altro), host, port/path opzionale, capability set, status. +- ModelInstance: model ID, quantization, context, residency, memory accounting e origin runtime. +- WorkloadRun: run ID/correlation ID, runtime, model, host, state, start/end, batches/requests/tokens latencies quando strumentate. +- Event: device connect/disconnect, runtime up/down, model loaded/unloaded, run lifecycle, metrics threshold, storage error, performance anomaly. +- EnergyObservation: boundary (GpuBoard, CpuPackage, SoC, WholeDevice), meter ID, W, intervalli validi, coverage, provenienza. + +Invarianti: assente ≠ zero; stale ≠ offline; fonte nominale ≠ valore garantito; GPU unified ≠ VRAM aggiuntiva; non sommare sensor boundary sovrapposte. Timestamp della sorgente e della ricezione separati; metriche del runtime non inferite da percentuali GPU. Per il valore totale energia, esigere sorgente esplicita e copertura misurata; integrazione Wh ammessa soltanto su intervalli validi, con lacune annotate. Non attribuire energia a un run quando più workload condividono la stessa GPU senza una metodologia verificabile. + +## 6. Architettura tecnica target + +```mermaid +flowchart LR + subgraph Devices + A[Mac/Linux platform collectors] + B[GPU/vendor collectors] + C[AI runtime adapters] + D[Optional energy meters] + end + A --> I[Bounded ingestion + schema validation] + B --> I + C --> I + D --> I + I --> M[Normalization + source quality] + M --> H[Hub optional / SQLite WAL & rollups] + H --> Q[Query + correlation + event rules] + Q --> UI[Native Iced desktop / view models] + UI --> SC[Semantic Lab Map 2D/3D] + UI --> CH[Charts / workload explorer / alerts] +``` + +Deployment phase 1: agent read-only e SSH persistente come ora; desktop locale operativo e fallback offline. Phase 2: moonitor-hub opzionale headless always-on su Zima, riceve/coordina campioni dai nodi e persiste storico senza desktop aperto, con spool/replay e deduplication. I nodi più sensibili non devono necessariamente esporre un listener: preferire SSH fidato o canale outbound autenticato, scegliendo esplicitamente transport policy. Autorizzazioni di rete minimali. + +Persistence: partire da SQLite e migrazioni forward-only versionate. Tabelle per entities, metric descriptors, timestamped samples (con status), events, runtime/workload runs, alert states, source diagnostics. Rollups (1s/10s/1m/5m) e retention configurabile; nessun ingresso illimitato di labels/cardinalità. La dashboard non interroga continuamente snapshots completi. Non introdurre Prometheus/ClickHouse senza un benchmark che lo giustifichi; supportare import/export OpenTelemetry e Prometheus come adapters, non come obbligo di infrastruttura. + +AI observability adapters prioritari: YVEX locale (strumentazione esplicita e consensuale), Ollama (stato modello e dati per richiesta solo dalle API/integrazioni che li espongono), vLLM (Prometheus /metrics, richieste se abilitate), in seguito llama.cpp/MLX. Per ogni adapter dichiarare capability matrix: model_state, queue, tokens, TTFT, ITL, KV-cache, memory, power, request_traces. Non millantare attributi assenti. + +Alerts: rule engine locale read-only, threshold+durata, dedup e quiet period, provenance, ack, event timeline; prima avvisi in-app, poi integrazioni configurabili. Nessun blocco o kill di processo da alert automatico. + +## 7. Roadmap e acceptance gates + +### Wave 0 — Consolidare e qualificare il lavoro locale (P0) + +1. Salvare senza perdite la versione Iced/3D in un branch separato; versionare sorgenti, shader e test, non .local/ con configurazioni private. Conservare un baseline tag del vecchio desktop. +2. Riprodurre e correggere le metriche illeggibili con una single source of truth per text/bar/tooltip, fallback esplicito N/D, zero visualizzato come 0%. +3. Eliminare nodi hardcoded, rendere la scena derivata dalla config e da NodeState, usare veramente stati availability/freshness nel rendering; test con 0 (empty UX), 1, 2, 5, 16, 32 nodi (distinguendo le config non valide). +4. Test UI con screenshot di Overview/AI/History/Processi in 1280x800, 1440x900, 4K, light/dark, Mac e Linux; click/keyboard/scroll/modal/empty/stale. +5. A/B baseline dei collector con inferenza AI su Exon e Spark; screenshot e video della build verificata, non solo cargo test. + +Gate W0: una persona diversa da chi sviluppa riconosce stato dei dispositivi e valori CPU/GPU senza ambiguità; visual diff e interazioni riproducibili; repo/bundle/local allineati. + +### Wave 1 — Product design e nuovo shell desktop (P1) + +1. Definire screen map con Overview, Fleet, Workloads, Energy, Events, Explore, Settings e device detail; wireframe prima del coding. +2. Tokens visivi, griglia, responsive states, data-viz, empty/error/loading, keyboard, reduced-motion, unit e locale. +3. Costruire UI component library isolata: MetricCard, StatusBadge, NodeSwitcher, TimeRange, MetricChart, EventsTable, UnavailableState, SourceTooltip. +4. Overview semantic data-first; Lab Map sempre sincronizzata col modello dati, non più dominante. + +Gate W1: niente valori fuori viewport senza ragione; ogni view deve rispondere a un quesito operativo; accessibilità minima e screenshot approvati. + +### Wave 2 — Observability core e timeline (P1) + +1. Normalizzare serie/capability/source + schema evolvibile; migrazioni DB e golden fixtures. +2. Conservare i singoli componenti e serie importanti, eventi temporali e stati runtime. +3. Time ranges multipli, downsampling, zoom, inspect, comparazione per nodo e correlazione di eventi. +4. Separare ingestion, query e view models; errori e dropped samples visibili. +5. Valutare hub always-on su Zima solo dopo lo storage locale stabile. + +Gate W2: recuperare sessioni storiche con desktop chiuso (quando hub attivo), grafici non collegano gap, unavailable/stale/source verificati su scenari sintetici. + +### Wave 3 — AI workloads, potenza ed efficienza (P1/P2) + +1. Integrare almeno un runtime realmente in esecuzione con richieste misurabili; test end-to-end: start→request→stop, GPU e timeline. +2. Metriche runtime reali: throughput, queue, TTFT/ITL, context, KV-cache, token counts, p50/p95 quando disponibili; normalizzazione di unità/definizioni. +3. Potenza GPU NVIDIA e altri sensori dichiarando lo scope; external wattmeter opzionale per whole device. +4. Energia Wh con coverage; comparatore performance/watt solo per misure comparabili. +5. Eventi correlati, alert e report di sessione esportabile con provenance. + +Gate W3: rispondere per almeno un lavoro AI reale “chi, dove, quanto, da quando, cosa è cambiato?” con link ai campioni originali e dichiarazione dei limiti. + +### Wave 4 — Release engineering e operatività (P1) + +1. Package macOS pulito con config in Application Support, senza file .local/fleet.toml dentro release distribuite; signing/notarization/distribution per release esterne. +2. Install/update agent via SSH con protocol/schema negotiation, rollout/rollback e fail-safe. +3. CI multi-platform, snapshot/golden tests, soak ≥24h, reconnect network/sleep-wake, benchmark overhead inference on/off. +4. Backups/migrations, import/export redatti, error reporting locale, log rotation, diagnostics bundle privacy-safe. +5. Versionamento coerente binary/schema/desktop e release notes. + +Gate W4: clean install e upgrade senza perdita di dati, senza disclosure di configurazioni private e senza monitor disconnesso che passa per “online”. + +## 8. Casi di test non negoziabili + +- Metriche 0, None, Unsupported, PermissionDenied, NotConfigured, TemporarilyUnavailable mostrate distintamente. +- Cambiamento 5→1 nodo produce 1 asset 3D, 1 card e 1 item inventario; i nodi non monitorati non contano come offline. +- Un GPU Apple Unified non aggiunge 24 GB al RAM totale del nodo; Spark NVML memory Unsupported non appare 0 GiB. +- Due GPU sullo stesso nodo rimangono due entità; il valore sintetico (max/sum) reca etichetta e significato. +- Un gap SSH interrompe la linea storica e marca stale; retry e recupero non creano duplicati o contatori negativi. +- Una visita ad AI locale con dispositivo non supportato non genera pagina bianca, ma empty state informativo e navigazione valida. +- Storico 7d, clock drift, sequenze fuori ordine, database riavviato, migrazioni e corruzione leggera hanno percorsi di recovery testati. +- Bench di inferenza senza/col collector su carico riproducibile, con almeno 5 repliche e statistica su throughput, TTFT, GPU/CPU power, collector overhead e intervalli di confidenza. +- Nessuna raccolta di prompt, output, variabili d'ambiente, token segreti o command line integrali per default. + +## 9. Metriche di accettazione (budget preliminari, da confermare con misure) + +- Idle desktop+collector: obiettivo indicativo <2% di un core logico e <150 MiB RSS endpoint sul Mac target; qualificare separatamente con scena visibile/nascosta e background/foreground. Non presentare come già garantito. +- Rendering in quiet state: nessuna animazione continua e refresh di scena solo su dati/interazione; GPU overhead ridotto al minimo durante inferenza. +- Telemetry latency: p95 da ricezione campione a UI aggiornata <1 s, con stato freshness evidente, nelle condizioni hardware previste. +- Inference impact: obiettivo <2% regressione mediana throughput in confronto paired on/off e nessuna regressione sostanziale di TTFT p95; misurare anziché promettere. +- Reliability: no data loss silenziosa; backlog e drop conteggiati e visibili. +- UI: no clipping/overlap per viewport di test, tastiera, reduced-motion, contrasti, nessuna selezione desincronizzata, eventuali stati stale distinguibili. + +## 10. Ordine di lavoro per Codex + +Prima PR consigliata, strettamente limitata: W0 - checkpoint Iced UI + correctness + deterministic QA. + +- Commit il lavoro Iced/3D su branch feature/native-workbench senza .local/segreti; allineare dipendenze/doc. +- Estrarre FleetViewModel e DeviceSceneModel derivati dall'unico stato ingestito; rimuovere ogni array hard-coded. +- Test automatici su flotta variabile e availability state. +- Rendere metric label/value/bar/tooltips un'unica componente tipizzata con unavailable supportato. +- Snapshot/interaction tests per schermate e dimensioni, con artifacts registrati in .local/qa ignorata. +- Benchmark A/B su Mac con scena idle e caricata; Exon/Spark con carico AI rappresentativo. +- Niente nuove sezioni decorative o librerie prima che i gate P0 siano superati. + +Seconda PR: W1 - design system / information architecture scaffold con fixture canoniche e schermate Overview, Fleet e Workloads; 3D ridotta e semanticamente utile. + +Terza PR: W2 - normalized timeseries + event model con migrazione SQLite e view models per query. + +Non creare 20 schermate e non introdurre un hub distribuito prima che il primo taglio verticale (una workload AI osservabile su un nodo, una timeline e un insight verificabile) funzioni davvero. + +## 11. Risorse di riferimento + +Fonti repo: README, architecture, requirements, qualification, core, agent, engine, store, packaging. + +Standards/ecosistema: Beszel, NVIDIA DCGM exporter, vLLM metrics, OpenTelemetry GenAI semantics, Netdata anomaly detection. + +## Regola del progetto + +Ogni schermo deve rispondere a una domanda; ogni numero deve spiegare la propria origine; ogni animazione deve rappresentare qualcosa; ogni nuova feature deve passare test con dati reali o fixture esplicite. diff --git a/docs/moonitor-w0-audit-and-plan.md b/docs/moonitor-w0-audit-and-plan.md new file mode 100644 index 0000000..8427998 --- /dev/null +++ b/docs/moonitor-w0-audit-and-plan.md @@ -0,0 +1,87 @@ +# Moonitor — audit operativo e piano di qualificazione + +Data: 23 ottobre 2026. Riferimento progettuale: [blueprint integrale](moonitor-professional-upgrade-blueprint.md). Questo documento descrive evidenze e gate; il blueprint resta un documento di indirizzo, non una attestazione di funzionalità. + +## Provenienza e conservazione + +- Main locale e remoto verificati con fetch: `ba91ef433e83721ea52aad6fbea0d32a30bccf84`, desktop egui/eframe+glow. +- Migrazione locale preesistente salvata senza modifiche in `f75afc0`, branch `feature/native-workbench`. Tag locale `baseline/egui-2026-10-22` sul main precedente. +- Copia aggiuntiva di diff binario, file sorgenti non tracciati e stato Git in `.local/checkpoints/20261023-124305-before-w0/`. Configurazioni, SQLite, screenshot e dati reali restano ignorati in `.local/`. +- Il bundle avviato sul Mac prima della W0 è già Iced/wgpu: la divergenza è fra main remoto e sorgenti/bundle locali, non fra un bundle egui e sorgenti Iced. Non è una release notarizzata. + +## Audit del checkpoint (prima delle correzioni W0) + +| Area | Evidenza nel codice | Giudizio / confine | +|---|---|---| +| Workspace | Quattro crate, edition 2024, MSRV 1.96 | Separazione collector/core/store valida; desktop troppo monolitico | +| UI | Iced 0.14, wgpu, Inter locale; `ui.rs` | Migrazione effettiva, non pubblicata su main. Sei tab, selezione per indice, colori chiari fissi | +| Rendering | `scene.rs`, `scene.wgsl`, `composite.wgsl` | Mesh procedurali, MSAA 4, shadow map 1024, cap offscreen 1600; cache evita render 3D continuo | +| Scena | `ANCHORS[5]`, `DEVICE_IDS[5]`, mesh `OnceLock` | Cinque asset anche con altra configurazione; shader ignora bitset live; selezione ignota ricade sul primo asset | +| Metriche | `metric(Option)`, `pct`, `unwrap_or(0)` | Perdita di motivo/fonte/qualità/timestamp; barra assente equivalente a zero; numeri mancanti negli screenshot reali | +| Stato | `NodeState::live`, ricezione monotona <4s | Base valida; denominatore online include nodi senza agente; campioni conservati devono restare esplicitamente obsoleti | +| Processi | top 64 CPU + 32 candidati AI per nome | Non è un censimento esaustivo; nessuna prova che candidato AI significhi inferenza attiva | +| GPU | NVML, IOKit; memoria unified | Buona distinzione memoria. Aggregato max perde identità nello storico; UI attribuisce la prima misura board a ogni GPU: errato su multi-GPU | +| Runtime | Ollama `/api/ps`, timeout 300ms, polling lento | Modelli residenti, non richieste/throughput/TTFT. YVEX e vLLM non implementati | +| Transport | SSH persistente, known hosts strict, batch mode, frame max 512KiB, reconnect | Riutilizzare; canale bounded 16 scarta silenziosamente su `try_send` | +| Schema | `HostSnapshot::validate` | Valida versione, ID, cardinalità, CPU; non tutte le grandezze, clock o correlazione GPU/power | +| Store | SQLite WAL, campione 5s, retention 7d, query 720 punti | NULL distinto da zero. Solo riepiloghi; nessuna migrazione versionata, nessun hub; si interrompe chiudendo il desktop | +| History | UI 5 minuti, gap >7.5s | Nessuno zoom/assi/crosshair; gap e freschezza hanno soglie diverse; dati stored 5s non equivalenti al live 1s | +| Packaging | script `.app` ad-hoc | Copia `.local/fleet.toml` nel bundle: non adatto a distribuzione. Versione statica; nessuna attestazione commit/binary | +| Test | sette test di unità/protocollo/SQLite | Nessuna prova UI, screenshot o interazioni deterministiche pre-W0 | +| CI | Ubuntu/macOS, Rust stable non pin | Run main Linux passa; Mac cancellato dal runner, non evidenza di errore sorgente. Iced locale non ancora qualificato in CI | +| Benchmark | script 32s CPU/RSS, diagnostics render | Misure esplorative, non confronto paired inference; nessun TTFT, intervallo confidenza, scene/list/background controllato | + +## Architettura target e confini + +Si conservano i quattro crate. Non si introduce un hub, una nuova UI library o una nuova infrastruttura in W0. + +- **core**: contratti di dominio/serializzazione e invarianti. W2 aggiunge entità, observation, metric descriptor, capability, event e identità dei componenti; W3 runtime/workload/energy boundary. Nessun widget. +- **agent**: adattatori read-only per piattaforma, GPU e runtime, frequenze differenziate e limiti di payload. Nessuna raccolta predefinita di prompt/output/env/command line completa. Telemetria runtime soltanto se esposta/strumentata. +- **store**: persistenza locale e query; W2 migrazioni forward-only, sample/status/source per componente, eventi, retention/downsampling. DB fallito deve essere visibile. Hub opzionale solo dopo stabilità dello storage. +- **desktop/engine**: acquisizione bounded e stato ricevuto, shutdown/reconnect; UI non esegue SSH direttamente. W2 separa ingestion e query più nettamente. +- **desktop/view_model** (W0): identità selezionata, classificazione stato, conteggi monitorati/censiti, modello scena e metrica tipizzata. Nessun collector o valore inventato. +- **desktop/scene**: geometria parametrica e rendering derivati da device ID/kind/state. Non decide disponibilità, non deduce topologia. Cache invalidata su geometria/stato/camera; elenco accessibile come alternativa. +- **desktop/ui**: componenti di presentazione; W1 introduce shell, tokens, catalogo locale e device detail dopo i gate P0. + +### ADR W0-001 — conservare Iced 0.14 + wgpu + +Decisione: conservare framework e geometrie valide. Bloccare toolchain e lockfile; aggiungere `iced_test` solo come dipendenza di sviluppo per rendering e interazioni headless. Test unitari puri non dipendono da GPU. Test visuali separati richiedono backend grafico e font dichiarati. Un cambio framework richiede un limite riproducibile con evidenze e ADR separato. + +### ADR W0-002 — identità e assenza + +Selezione per ID, mai per posizione; fallback al primo nodo soltanto se quello selezionato è stato rimosso. Flotta vuota è configurazione valida e produce empty state; >32, ID duplicati o alias non sicuri restano invalidi. Forma opzionale in config (`visual_kind`) con default generico, nessuna associazione fra ID privato e geometria nel codice. Un nodo `unavailable` è censito ma escluso dai monitorati e dagli offline. Stale conserva ultimo valore e motivo, non implica spegnimento fisico. + +### ADR W0-003 — disponibilità e potenza + +Text/bar/tooltip derivano dalla stessa metrica; zero ha barra zero e testo `0%`; assenza ha `N/D`, motivo e nessuna barra numerica. Aggregati GPU etichettati come massimo disponibile. La potenza per GPU non è attribuibile su nodi multi-GPU con schema 1: mostrare assenza anziché replicare il primo sensore. Nessun totale whole-device o Wh inventato. + +## Milestone e dipendenze + +| Milestone | Dipende da | Interventi | Gate verificabile | +|---|---|---|---| +| W0 | checkpoint immutabile | Build pin, correctness metriche/stati, scena 0–32, selezione ID, test e bench | Tutti i gate sotto; test Rust da soli non completano W0 | +| W1 | P0 W0 + review umana screenshot | Wireframe, screen map, tokens/componenti, Overview data-first, device detail | Schermate rispondono a quesito operativo, no clipping, tastiera/contrasto, screenshot approvati | +| W2 | W0 stabile, contratti W1 | Observation/capability/source, migrazioni SQLite, serie componenti/eventi, query/time ranges | Gap non collegati, migrazioni/recovery/clock verificati; desktop chiuso solo se hub esplicitamente attivo | +| W3 | W2 + runtime reale disponibile | Taglio verticale run→request→stop, token/latency reali, energy scopes/coverage, alert read-only | Chi/dove/quanto/da quando/cambiamenti con campioni originali; metriche non esposte restano assenti | +| W4 | W0–W3 qualificati | Package pulito, agent negotiation/rollback, CI multi-platform, soak≥24h, backup/privacy/export | Clean install/upgrade senza perdita, nessuna config privata nel bundle, reconnect/sleep-wake | + +## Matrice di accettazione W0 + +Stati: **PASS** solo con evidenza registrata, **FAIL** difetto riprodotto, **PENDING** non misurato. Il report di esecuzione separato aggiorna gli esiti, senza riscrivere la baseline. + +1. Checkpoint/tag e verifica nessun file `.local` tracciato; build `--locked` con toolchain pin; manifest sorgente/binary/bundle. +2. Valori 0/100/None e quattro UnavailableReason distinti; text/bar/tooltip concordi. Campioni stale dichiarati. Screenshot reale senza numeri scomparsi. +3. Flotte 0/1/2/5/16/32; >32/duplicate invalidi; 5→1 e reorder conservano identità e numero asset; click stesso ID in scena/inventario/dettaglio. Nessun live finto per iPhone. +4. Overview/AI/History/Processi a 1280×800, 1440×900 e 3840×2160 logici, light/dark, Mac/Linux; dichiarare scale factor fisico, renderer/font. Click, keyboard, scroll, tooltip, empty, stale. Nessuna auto-approvazione di un nuovo golden: baseline nuova richiede review. +5. Confronto idle scena visibile/elenco e foreground/background, CPU di un core, RSS endpoint, contatori pass render. La soglia preliminare <2%/<150MiB non è una promessa. Latenza p95 ricezione→presentazione <1s va strumentata, non dedotta dal timer 1s. +6. Exon e Spark: paired inference collector off/on, ≥5 repliche, input/model/runtime/version/hash, warmup, throughput e TTFT/p95, potenza con scope, statistiche e intervalli confidenza. Nessun carico concorrente modificato; se non isolabile dichiarare confondenti. +7. Persona diversa dallo sviluppatore identifica CPU/GPU/stato dagli screenshot e dalla build. Gate umano esplicitamente aperto finché non c'è riscontro. + +## Vincoli e rischi residui + +- Linux GUI e dark theme non diventano qualificati perché Mac compila. Il tema attuale contiene colori fissi; la matrice dark è un requisito aperto finché non implementato e ispezionato. +- Il canvas 3D richiede wgpu; un elenco senza scena riduce lavoro grafico, ma non prova fallback su macchina priva di backend GPU. Accessibilità assistiva e native behavior richiedono test reali. +- Exon è un host condiviso con carico elevato e swap già utilizzato al controllo iniziale. Build e benchmark devono avere limiti di memoria/concorrenza; non arrestare workload altrui. Spark non aveva runtime in PATH né modello piccolo già qualificato alla prima ricognizione; trovare/qualificare un runtime è una dipendenza del benchmark, non una licenza per inventarne i risultati. +- Le misure di ottobre 22 in `.local/qa` sono baseline esplorative pre-W0; non sono risultati delle nuove modifiche. +- Screenshot con dati reali, config, IP/alias e processi restano locali. Fixture QA hanno nomi generici e vengono compilate solo nei test. +- Non si promette un process manager completo, autonomia always-on, throughput AI, energia whole-device, release distribuita o approvazione visiva prima dei rispettivi gate. diff --git a/docs/moonitor-w0-qualification.md b/docs/moonitor-w0-qualification.md new file mode 100644 index 0000000..c6255bc --- /dev/null +++ b/docs/moonitor-w0-qualification.md @@ -0,0 +1,95 @@ +# W0 — implementazione e qualificazione + +23 ottobre 2026. Riferimento: [audit e gate](moonitor-w0-audit-and-plan.md). +La W0 consolida la migrazione; non equivale al redesign completo W1. + +## Interventi + +- Checkpoint della migrazione Iced `f75afc0`, branch separato e tag baseline egui. +- Blueprint integrale versionato; Rust 1.96.0 e Cargo.lock riproducibili. +- `FleetViewModel`, `DeviceSceneModel`, metriche tipizzate e selezione per ID. +- Flotta 0–32, forme configurabili, mesh/picking/stato/shader sincronizzati; nessun + array di cinque nodi nel renderer. Conteggio online esclude nodi non strumentati. +- `0%` distinto da `N/D`; barra assente quando non c'è misura; motivi e provenance + nei tooltip. Stato obsoleto esplicito; aggregato GPU etichettato massimo disponibile. +- Nessuna attribuzione della prima potenza board a tutte le GPU di un nodo. +- Drop di ingresso contati e visibili; separazione dati reali/fixture compilate solo nei test. +- Tema scuro, elenco alternativo, scorciatoie, screenshot e viewport da CLI. +- Bundle senza fleet privata: config esterna in Application Support, copia precedente + preservata, manifest con hash sorgenti e binari, firma ad-hoc verificabile. + +## Difetto di cattura riprodotto + +Lo screenshot richiesto nello stesso `Tick` che sostituisce i paragrafi catturava +un batch del renderer precedente con riferimenti deboli a testi ormai sostituiti. +La prova locale `live/dark-before-final.png` perde CPU/GPU mentre conserva una +memoria rimasta stabile. La cattura differita su un altro turno dell'event loop +(`live/dark-deferred.png`) contiene tutti i valori. La finestra reale è stata +ispezionata tramite Computer Use: numeri presenti e click su AI locale funzionante. +Il test `changing_metrics_keep_visible_glyphs` controlla i pixel dei numeri dopo +successivi aggiornamenti, oltre alla presenza del widget nel tree. Questa evidenza +spiega le catture riprodotte; non riclassifica automaticamente ogni screenshot o +video storico dell'utente come semplice problema di acquisizione. + +## Test eseguiti + +- macOS: fmt, check, clippy `-D warnings`, unit/protocol/storage tests. +- Fixture 0/1/2/5/16/32, ID invalidi/duplicati/>32, reorder e rimozione della selezione, + stati online/stale/unreachable/connecting/uninstrumented, zero e quattro motivi + unavailable, RAM unified e massimo GPU esplicito, mesh finite/identità esatta. +- UI: Overview/AI/History/Processes × 1280×800/1440×900/3840×2160 × light/dark, + snapshot doppi identici; click navigazione, picking con ID generici, input tastiera, + filtro, scroll, flotta vuota e nodo senza agente. Scala headless 2: 4K logico + produce 7680×4320 fisici. I PNG sono specifici del renderer/piattaforma. +- Linux Arch/Exon: test Rust e matrice grafica headless wgpu. Il primo run con + molti renderer nel medesimo processo falliva creando un device dopo due + screenshot 4K; isolando ogni caso in un processo, la matrice termina. Cgroup + massimo 4 GiB e due core, nessun workload preesistente arrestato. +- Mac nativo: cattura CLI e finestra reale; AX espone solo la finestra e i controlli + di sistema, non i widget. Questo è un limite di accessibilità ancora aperto. + +## Misure + +Artefatti privati in `.local/qa/w0/`. I risultati del 22 ottobre restano storici, +non vengono riutilizzati come attestazioni di questa build. + +- Exon, Qwen2.5-Coder-7B Q4_K_M già presente, llama.cpp 7156, 166 token di prompt + senza cache e 512 generati, warmup, cinque coppie off/on con ordine alternato: + mediana variazione throughput **+0,865%**, bootstrap CI95 **[−0,942%; +2,465%]**. + TTFT p95 esplorativo: **80,35 ms off / 81,87 ms on**. Nessuna regressione + mediana >2% in questo carico. Cinque richieste per condizione non qualificano + la coda di latenza sotto traffico reale. Potenza GPU board campionata a 200 ms; + CPU package e whole-device restano non misurati. +- Mac, scena visibile con diagnostica di latenza attiva: **2,40% di un core**, + RSS osservato massimo **116,83 MiB** su 30,4 s. Elenco con stessa diagnostica: + **2,11%**, **116,97 MiB**. Il budget CPU preliminare 2% non è rispettato da queste + misure strumentate; la modalità normale viene misurata separatamente. +- Contatori render: la sessione diagnostica di 240 s produce 2 passaggi scena e + 1 shadow pass; le composizioni UI continuano sui dati/interazioni, non la geometria. +- Ricezione→richiesta di redraw strumentata separatamente; non è una misura della + presentazione fisica sul display. Risultati dettagliati nel JSON di latenza. +- Spark GB10, stesso modello (entrambi gli shard SHA-256 verificati), llama.cpp 9529, + 166 token di prompt senza cache e 512 generati, cinque coppie: mediana throughput + **−0,077%**, CI95 **[−0,482%; +0,774%]**; TTFT p95 esplorativo **91,57 / 91,62 ms**. + Entrambi i benchmark raggiungono il budget mediano preliminare per questo carico; + non sono un confronto diretto fra host, avendo versioni runtime diverse. +- Ricezione→richiesta di redraw, 231 osservazioni: mediana **378,89 ms**, p95 + **962,25 ms**, massimo **1001,32 ms**. La misura non include il tempo fino ai pixel + effettivamente presentati dal display. +- Modalità normale, cinque nodi, finestra visibile, 30,36 s: **3,39% di un core**, + RSS massimo osservato **124,28 MiB**. Budget memoria rispettato, CPU **non rispettato**. + Una misura precedente è stata invalidata dall'uscita programmata del processo; + non viene utilizzata. L'ottimizzazione del desktop resta da qualificare con la W1. + +## Gate ancora aperti + +- Riconoscimento indipendente di stato/CPU/GPU e approvazione visiva da parte dell'utente. +- Accessibilità assistiva, fallback su macchina priva di backend GPU, presentazione + display p95 strumentata end-to-end e registrazione video della build. +- Soak 24 h, sleep/wake, packaging notarizzato, migrazioni/clock/history 7d e + osservabilità delle richieste in produzione appartengono alle wave successive. +- I benchmark sono su host condivisi; nessuna dichiarazione generale di impatto + inferenza <2% per tutti i runtime/modelli. Sorgenti, hash e campioni sono negli artifact. + +La nuova richiesta dell'utente di vedere il redesign avvia il [lavoro W1](moonitor-w1-interface-design.md), +con i gate esterni sopra ancora dichiarati aperti. Non si dichiara W0 universalmente qualificata. diff --git a/docs/qualification.md b/docs/qualification.md index 9d1375e..d3d60cd 100644 --- a/docs/qualification.md +++ b/docs/qualification.md @@ -1,3 +1,5 @@ +> Historical qualification of the initial desktop. For the current Iced/wgpu branch use [W0 qualification](moonitor-w0-qualification.md); results below are not evidence for the new changes. + # First working version — 2026-10-22 ## Verified diff --git a/docs/roadmap.md b/docs/roadmap.md index eba6fff..24f789c 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,3 +1,5 @@ +> Historical implementation sequence. The active roadmap is now [W0–W4](moonitor-w0-audit-and-plan.md), based on the [professional blueprint](moonitor-professional-upgrade-blueprint.md). Iced/wgpu migration is checkpointed; see [current qualification](moonitor-w0-qualification.md). + # Implementation sequence ## 0. Repository foundation diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..c2294d8 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "1.96.0" +profile = "minimal" +components = ["rustfmt", "clippy"] diff --git a/scripts/benchmark-inference.py b/scripts/benchmark-inference.py new file mode 100644 index 0000000..9bcdd76 --- /dev/null +++ b/scripts/benchmark-inference.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 +"""Paired local llama.cpp HTTP inference, collector off/on. No prompts or outputs persisted. +Run on the target node, inside a bounded cgroup. Own processes are always stopped. +""" +import argparse, hashlib, json, math, pathlib, random, socket, statistics, subprocess, threading, time, urllib.request + +def sha(path): + h=hashlib.sha256() + with open(path,'rb') as f: + while chunk:=f.read(4*1024*1024):h.update(chunk) + return h.hexdigest() +def terminate(p): + if p and p.poll() is None: + p.terminate() + try:p.wait(10) + except subprocess.TimeoutExpired:p.kill();p.wait() +def request(url,payload,timeout=90): + body=json.dumps(payload).encode() + req=urllib.request.Request(url,body,{'Content-Type':'application/json'}) + started=time.perf_counter();first=None;timings=None + with urllib.request.urlopen(req,timeout=timeout) as response: + for line in response: + if not line.startswith(b'data: '):continue + data=json.loads(line[6:]) + if data.get('content') and first is None:first=time.perf_counter()-started + if data.get('stop'):timings=data.get('timings') + if not timings or first is None:raise RuntimeError('Runtime did not expose completion timing/first token') + return {'ttft_seconds':first,'elapsed_seconds':time.perf_counter()-started,'timings':timings} +def proc(pid): + s=pathlib.Path(f'/proc/{pid}/stat').read_text().rsplit(')',1)[1].split() + rss=next(int(l.split()[1]) for l in pathlib.Path(f'/proc/{pid}/status').read_text().splitlines() if l.startswith('VmRSS:')) + import os + return {'at':time.perf_counter(),'cpu_seconds':(int(s[11])+int(s[12]))/os.sysconf('SC_CLK_TCK'),'rss_mib':rss/1024} +def quantile(xs,p): + ys=sorted(xs);at=(len(ys)-1)*p;lo=math.floor(at);hi=math.ceil(at) + return ys[lo]+(ys[hi]-ys[lo])*(at-lo) +def bootstrap(xs): + rng=random.Random(23);medians=[statistics.median(rng.choices(xs,k=len(xs))) for _ in range(10000)] + return [quantile(medians,.025),quantile(medians,.975)] +def main(): + parser=argparse.ArgumentParser(description=__doc__) + parser.add_argument('--server',required=True,type=pathlib.Path);parser.add_argument('--model',required=True,type=pathlib.Path) + parser.add_argument('--agent',required=True,type=pathlib.Path);parser.add_argument('--output',required=True,type=pathlib.Path) + parser.add_argument('--replicates',type=int,default=5);args=parser.parse_args() + if args.replicates<5:parser.error('At least five paired replications are required') + existing=[] + for entry in pathlib.Path('/proc').iterdir(): + try: + if entry.name.isdigit() and (entry/'comm').read_text().strip()=='moonitor-agent':existing.append(entry.name) + except OSError:pass + if existing:raise RuntimeError('A collector is already running; off/on would be invalid') + args.output.parent.mkdir(parents=True,exist_ok=True) + with socket.socket() as sock:sock.bind(('127.0.0.1',0));port=sock.getsockname()[1] + url=f'http://127.0.0.1:{port}' + results={'schema':1,'fixture_prompt':True,'prompt_output_stored':False,'model_sha256':sha(args.model),'model_parts_sha256':{p.name:sha(p) for p in sorted(args.model.parent.glob(args.model.name.split('-00001-of-')[0]+'-*-of-*.gguf'))},'runtime_sha256':sha(args.server),'agent_sha256':sha(args.agent),'runtime_version':subprocess.check_output([str(args.server),'--version'],stderr=subprocess.STDOUT,text=True).strip(),'replicates':[],'limits':{'threads':2,'context':1024,'tokens':512,'gpu_layers':99},'power_scope':'GpuBoard','cpu_power_watts':None,'limitations':['Shared host; concurrent user workloads are not stopped','TTFT p95 from only five requests per condition is exploratory','GPU power polling adds equal observer overhead to both conditions','No whole-device or per-run energy attribution']} + server=agent=power=None;power_samples=[] + def read_power(): + for raw in power.stdout: + try: + watts,util=map(float,raw.strip().split(','));power_samples.append((time.perf_counter(),watts,util)) + except ValueError:pass + try: + with (args.output.parent/'runtime.log').open('w') as log: + server=subprocess.Popen([str(args.server),'-m',str(args.model),'--host','127.0.0.1','--port',str(port),'-c','1024','-ngl','99','-t','2','-b','128','-ub','128','--parallel','1'],stdout=log,stderr=log) + deadline=time.monotonic()+180 + while True: + if server.poll() is not None:raise RuntimeError('Dedicated runtime exited; inspect runtime.log') + try: + with urllib.request.urlopen(url+'/health',timeout=1) as r: + if r.status==200:break + except Exception: + if time.monotonic()>deadline:raise RuntimeError('Runtime startup timed out') + time.sleep(.5) + # Fixed non-private fixture; disable prompt cache for each measured request. + base=('Explain how a CPU and a GPU perform matrix multiplication. Use precise technical language. ' * 10) + def payload(pair):return {'prompt':f'Benchmark case {pair}. '+base,'n_predict':512,'temperature':0,'seed':23,'ignore_eos':True,'cache_prompt':False,'stream':True} + request(url+'/completion',payload(-1)) + try: + power=subprocess.Popen(['nvidia-smi','--query-gpu=power.draw,utilization.gpu','--format=csv,noheader,nounits','--loop-ms=200'],stdout=subprocess.PIPE,stderr=subprocess.DEVNULL,text=True) + threading.Thread(target=read_power,daemon=True).start() + except OSError:results['power_scope']=None + for pair in range(args.replicates): + row={'pair':pair,'order':['off','on'] if pair%2==0 else ['on','off']} + for condition in row['order']: + if condition=='on': + agent=subprocess.Popen([str(args.agent),'--node-id','benchmark','--interval-ms','1000'],stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL) + time.sleep(3) + if agent.poll() is not None:raise RuntimeError('Collector exited') + before=proc(agent.pid) + start=time.perf_counter();measurement=request(url+'/completion',payload(pair));end=time.perf_counter() + if measurement['timings'].get('cache_n',0)!=0 or measurement['timings']['predicted_n']!=512:raise RuntimeError('Unexpected prompt caching or token count') + if agent: + after=proc(agent.pid);measurement['collector_cpu_percent_one_core']=(after['cpu_seconds']-before['cpu_seconds'])/(after['at']-before['at'])*100 + measurement['collector_rss_endpoint_mib']=max(before['rss_mib'],after['rss_mib']);terminate(agent);agent=None + watts=[w for t,w,u in power_samples if start<=t<=end] + measurement['gpu_board_watts_mean']=statistics.mean(watts) if watts else None + measurement['gpu_power_sample_count']=len(watts) + row[condition]=measurement + time.sleep(1) + results['replicates'].append(row) + args.output.write_text(json.dumps(results,indent=2)+'\n') + finally: + terminate(agent);terminate(power);terminate(server) + changes=[(r['on']['timings']['predicted_per_second']/r['off']['timings']['predicted_per_second']-1)*100 for r in results['replicates']] + results['summary']={'throughput_paired_change_percent_median':statistics.median(changes),'throughput_paired_change_bootstrap_ci95':bootstrap(changes),'ttft_off_p95_seconds':quantile([r['off']['ttft_seconds'] for r in results['replicates']],.95),'ttft_on_p95_seconds':quantile([r['on']['ttft_seconds'] for r in results['replicates']],.95),'throughput_preliminary_target_met':statistics.median(changes)>-2} + args.output.write_text(json.dumps(results,indent=2)+'\n');print(json.dumps(results['summary'],indent=2)) +if __name__=='__main__':main() diff --git a/scripts/build-manifest.py b/scripts/build-manifest.py new file mode 100644 index 0000000..5308ba7 --- /dev/null +++ b/scripts/build-manifest.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +"""Record source and artifact hashes without including private configuration.""" +import hashlib, json, pathlib, subprocess, sys +root=pathlib.Path(__file__).resolve().parents[1] +def run(*args):return subprocess.check_output(args,cwd=root,text=True).strip() +paths=run('git','ls-files','-co','--exclude-standard').splitlines() +source={p:hashlib.sha256((root/p).read_bytes()).hexdigest() for p in sorted(set(paths)) if (root/p).is_file()} +manifest={'commit':run('git','rev-parse','HEAD'),'dirty':bool(run('git','status','--porcelain')),'rustc':run('rustc','-Vv'),'source_sha256':hashlib.sha256(json.dumps(source,sort_keys=True).encode()).hexdigest(),'files':source,'binaries':{}} +for name in ['moonitor','moonitor-agent']: + p=root/'target/release'/name + if p.exists():manifest['binaries'][name]=hashlib.sha256(p.read_bytes()).hexdigest() +path=pathlib.Path(sys.argv[1]);path.parent.mkdir(parents=True,exist_ok=True);path.write_text(json.dumps(manifest,indent=2)+'\n') diff --git a/scripts/measure-process.py b/scripts/measure-process.py new file mode 100644 index 0000000..28fcd6f --- /dev/null +++ b/scripts/measure-process.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 +"""Measure an existing owned desktop process; CPU is percent of one logical core.""" +import argparse,json,pathlib,subprocess,time,statistics +p=argparse.ArgumentParser(description=__doc__);p.add_argument('pid',type=int);p.add_argument('output',type=pathlib.Path);p.add_argument('--seconds',type=int,default=30);p.add_argument('--label',required=True);a=p.parse_args() +if not 10<=a.seconds<=300:p.error('Use 10–300 seconds') +def sample(): + fields=subprocess.check_output(['ps','-p',str(a.pid),'-o','time=,rss='],text=True).split() + parts=fields[0].split(':');cpu=sum(float(n)*60**i for i,n in enumerate(reversed(parts))) + return {'at':time.monotonic(),'cpu_seconds':cpu,'rss_mib':int(fields[1])/1024} +rows=[sample()] +for _ in range(a.seconds):time.sleep(1);rows.append(sample()) +r={'label':a.label,'pid':a.pid,'window_seconds':rows[-1]['at']-rows[0]['at'],'cpu_percent_one_core':(rows[-1]['cpu_seconds']-rows[0]['cpu_seconds'])/(rows[-1]['at']-rows[0]['at'])*100,'rss_observed_max_mib':max(r['rss_mib'] for r in rows),'rss_median_mib':statistics.median(r['rss_mib'] for r in rows),'samples':rows} +a.output.parent.mkdir(parents=True,exist_ok=True);a.output.write_text(json.dumps(r,indent=2)+'\n');print(json.dumps({k:v for k,v in r.items() if k!='samples'},indent=2)) diff --git a/scripts/package-macos.sh b/scripts/package-macos.sh index 9d67387..c863bc3 100755 --- a/scripts/package-macos.sh +++ b/scripts/package-macos.sh @@ -13,7 +13,20 @@ app_dir="$repo_dir/.local/moonitor.app" mkdir -p "$app_dir/Contents/MacOS" "$app_dir/Contents/Resources" cp target/release/moonitor "$app_dir/Contents/MacOS/moonitor" if [ ! -f .local/fleet.toml ]; then cp config/fleet.example.toml .local/fleet.toml; fi -cp .local/fleet.toml "$app_dir/Contents/Resources/fleet.toml" +config_dir="$HOME/Library/Application Support/moonitor" +mkdir -p "$config_dir" +# Preserve an existing user configuration. Never embed private fleet data in a bundle. +if [ ! -e "$config_dir/fleet.toml" ]; then + cp .local/fleet.toml "$config_dir/fleet.toml" + chmod 600 "$config_dir/fleet.toml" +fi +if [ -f "$app_dir/Contents/Resources/fleet.toml" ]; then + backup_dir="$repo_dir/.local/checkpoints/$(date -u +%Y%m%dT%H%M%SZ)-bundle-config" + mkdir -p "$backup_dir" + cp "$app_dir/Contents/Resources/fleet.toml" "$backup_dir/fleet.toml" + rm "$app_dir/Contents/Resources/fleet.toml" +fi +python3 scripts/build-manifest.py "$app_dir/Contents/Resources/build-manifest.json" cat > "$app_dir/Contents/Info.plist" <<'PLIST' diff --git a/scripts/qa-ui.sh b/scripts/qa-ui.sh new file mode 100755 index 0000000..34ce597 --- /dev/null +++ b/scripts/qa-ui.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Renderer-specific candidates on first run; pixel comparisons on later runs. +# Each viewport owns a process/device so large Vulkan snapshots release all allocations. +set -eu +cd "$(dirname "$0")/.." +export MOONITOR_QA_DIR="${MOONITOR_QA_DIR:-$PWD/.local/qa/w0/visual}" +mkdir -p "$MOONITOR_QA_DIR" +MOONITOR_QA_CASE=fleet cargo test --locked -p moonitor-desktop ui::qa:: -- --ignored --test-threads=1 +for size in 1280x800 1440x900 3840x2160; do + for tab in overview ai history processes; do + for theme in light dark; do + MOONITOR_QA_CASE="$tab-$size-$theme" cargo test --locked -p moonitor-desktop ui::qa::visual_matrix_and_interactions -- --ignored --exact --test-threads=1 + done + done +done From 60fdf3614a1a6406207400cf9f972168544cfdbb Mon Sep 17 00:00:00 2001 From: Francesco Maiomascio Date: Fri, 23 Oct 2026 14:26:24 +0200 Subject: [PATCH 3/3] Redesign native observatory shell and integrate supplied Moonitor identity --- Cargo.lock | 18 + README.md | 20 +- assets/brand/README.md | 17 + assets/brand/moon-original.png | Bin 0 -> 570671 bytes crates/moonitor-desktop/Cargo.toml | 2 +- .../moonitor-desktop/assets/moonitor-128.png | Bin 0 -> 12433 bytes .../moonitor-desktop/assets/moonitor-256.png | Bin 0 -> 38907 bytes crates/moonitor-desktop/src/fixtures.rs | 40 +- crates/moonitor-desktop/src/main.rs | 5 +- crates/moonitor-desktop/src/scene.rs | 61 +- crates/moonitor-desktop/src/ui.rs | 659 ++++++--------- crates/moonitor-desktop/src/ui/chart.rs | 238 ++++++ crates/moonitor-desktop/src/ui/qa.rs | 115 ++- crates/moonitor-desktop/src/ui/workbench.rs | 760 ++++++++++++++++++ crates/moonitor-desktop/src/view_model.rs | 3 +- docs/architecture.md | 9 +- docs/moonitor-w1-interface-design.md | 70 ++ docs/moonitor-w1-qualification.md | 137 ++++ scripts/build-icons.sh | 13 + scripts/build-receipt.py | 30 + scripts/package-macos.sh | 5 + scripts/qa-ui.sh | 8 +- 22 files changed, 1749 insertions(+), 461 deletions(-) create mode 100644 assets/brand/README.md create mode 100644 assets/brand/moon-original.png create mode 100644 crates/moonitor-desktop/assets/moonitor-128.png create mode 100644 crates/moonitor-desktop/assets/moonitor-256.png create mode 100644 crates/moonitor-desktop/src/ui/chart.rs create mode 100644 crates/moonitor-desktop/src/ui/workbench.rs create mode 100644 docs/moonitor-w1-interface-design.md create mode 100644 docs/moonitor-w1-qualification.md create mode 100755 scripts/build-icons.sh create mode 100644 scripts/build-receipt.py diff --git a/Cargo.lock b/Cargo.lock index b54dfe9..1402cfa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1174,6 +1174,7 @@ dependencies = [ "iced_runtime", "iced_widget", "iced_winit", + "image", "thiserror 2.0.21", ] @@ -1233,6 +1234,8 @@ dependencies = [ "half", "iced_core", "iced_futures", + "image", + "kamadak-exif", "log", "lyon_path", "raw-window-handle", @@ -1591,6 +1594,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kamadak-exif" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1130d80c7374efad55a117d715a3af9368f0fa7a2c54573afc15a188cd984837" +dependencies = [ + "mutate_once", +] + [[package]] name = "khronos-egl" version = "6.0.0" @@ -1895,6 +1907,12 @@ dependencies = [ "pxfm", ] +[[package]] +name = "mutate_once" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d2233c9842d08cfe13f9eac96e207ca6a2ea10b80259ebe8ad0268be27d2af" + [[package]] name = "naga" version = "27.0.3" diff --git a/README.md b/README.md index 14a0e56..2120a1d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +Moonitor cratered crescent moon + # moonitor A native system monitor for a small LAN/VPN homelab, with a dedicated view of @@ -18,7 +20,7 @@ local AI workloads and their resource and energy use. The MacBook, Exon, Spark and Zima have produced real live samples together in the desktop. The iPhone is inventoried and explicitly marked as not instrumented. -See [qualification](docs/qualification.md) for evidence and limitations. +See [W0 qualification](docs/moonitor-w0-qualification.md) and [W1 qualification](docs/moonitor-w1-qualification.md) for evidence and limitations. ## Run @@ -54,18 +56,24 @@ The installer keeps binaries by content hash and refuses to replace an unmanaged existing agent. The desktop starts remote agents on connection and closes its SSH children on exit. Missing agents and broken connections appear in the UI. -## W0 consolidation +## Native workbench · W0 / W1 The design reference is the [professional upgrade blueprint](docs/moonitor-professional-upgrade-blueprint.md). See the [verified audit, decisions and W0–W4 gates](docs/moonitor-w0-audit-and-plan.md) -and [W0 execution report](docs/moonitor-w0-qualification.md). W1–W4 are not implemented by this change. +and [W0 execution report](docs/moonitor-w0-qualification.md). The [W1 interface redesign](docs/moonitor-w1-interface-design.md) introduces Overview, Fleet, Workloads, Energy, Events, Explore and Settings, with resource tabs inside node detail. W2–W4 remain planned. The Lab Map uses exactly the configured fleet (0–32 nodes), stable IDs and actual availability. Optional `visual_kind = "laptop" | "tower" | "compact" | "board" | "phone"` selects reusable geometry; its default is generic. Uninstrumented nodes do not -count as monitored/offline. `--no-scene` or **Solo elenco** suspends the 3D scene. +count as monitored/offline. `--no-scene` or **Elenco** suspends the 3D scene. Use `--theme light|dark` and `--size 1280x800` for repeatable UI checks. -Keyboard: Cmd/Ctrl+1…6 selects a tab, Alt+Left/Right changes node, Tab/Shift+Tab moves focus. +The Overview combines current metrics, an inspectable five-minute resource chart, +a compact Lab Map and observed model residency. Fleet is a comparable inventory. +The node switcher preserves the current page; map and inventory clicks open node detail. +Workloads does not infer active requests from loaded models. Events explicitly explains +that historical events are not yet stored. Energy exposes GPU board scope and coverage. +Use `--section fleet|workloads|energy|events|explore|settings|device` to open a view. +Keyboard: Cmd/Ctrl+1…7 selects a primary section, Alt+Left/Right changes node, Tab/Shift+Tab moves focus. ## Development @@ -76,7 +84,7 @@ cargo build --release --locked -p moonitor-agent -p moonitor-desktop ``` Toolchain is pinned in `rust-toolchain.toml`; use the committed `Cargo.lock`. -The first visual run records candidate baselines in `.local/qa/w0/visual`; it is not +The first visual run records candidate baselines in `.local/qa/w1/visual`; it is not human approval. Subsequent runs compare pixels. Synthetic fixtures exist only in `#[cfg(test)]` modules. Real screenshots use `--screenshot FILE.png --exit-after 12`. diff --git a/assets/brand/README.md b/assets/brand/README.md new file mode 100644 index 0000000..ea370ab --- /dev/null +++ b/assets/brand/README.md @@ -0,0 +1,17 @@ +# Moonitor artwork + +`moon-original.png` is the artwork supplied by the repository owner on 23 October +2026 for the app and repository identity. The original file is preserved unchanged, +including its alpha channel. This note does not assign an artist or infer a license. + +The repository README references this original. The desktop embeds size-converted +128 px and 256 px PNG copies in `crates/moonitor-desktop/assets/`. They are decoded +once for the sidebar and window icon. Iced's `image-without-codecs` feature enables +raster rendering without enabling its default codec collection; the already-used +`image` crate supplies PNG decoding. Iced adds two small transitive dependencies, +`kamadak-exif` and `mutate_once`, recorded in Cargo.lock. + +On macOS, `scripts/build-icons.sh` uses `sips` and `iconutil` to create the standard +16–1024 px icon representations in `.local/moonitor.icns`. Packaging installs it +as `Contents/Resources/moonitor.icns` and declares `CFBundleIconFile` before signing. +No background removal, recoloring or AI regeneration is applied. diff --git a/assets/brand/moon-original.png b/assets/brand/moon-original.png new file mode 100644 index 0000000000000000000000000000000000000000..0de0fb2c44403e1fec41aa3b4759a79cd15192fd GIT binary patch literal 570671 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

1TNM~Xj@lmTh(O7Z$;xZ#{{1TE0DT2Tf z{5z2HqXsjiJz+jxt<17!eBZ5Bi%I~D^a?TqR2UvQw^wC5UR~7L)YsbMg_WSsl)bS=jH04e!$@>fJwp4bA@=oT-o*dGq>(~^iH{!O{ z#*;b}oWVP+#&Tv99K32ehJ`z^F2-Mdd^aD>jr19B{ZY8$0s7O@|7T1GFV1`C%a5%G^Ad{9pNv~G0~(-(iIJcsiTtt( zmMvrPh)QN(0y{4Ar1|iq3OpZ5G;kKW_z@8ODP-n23lMH>)ok-9} zrBoWq(WAA}pF)@E2r65Y2nPWPwRTJF^muw6ZG*-pcMCu%iGTvcldDm|fL6+xvHv*3 z$bu2!K9Qt<&|K(mk1G)!gx44LkDu|+%!8F_yZSU#rMtvrlHAi6dzefmwS-aBiz+4_ zTXF)Ot@e%Me6fhJc>BN)ogp-fW6V z*S(;{>}nR!z=?FxNuVBUw819jsHipo=#QL-{fjtav__N-)#P@O9DHk&5sLNw=#^z6 zQlMa-QPxI@?4nA=4~%48fA-s8wPDVVs_6I8HeQmMwL=X?g)1xgO4-={!;~JJ^Cyu$bBbm3Py4?3dDcreGS2UrJf$0M zFjP1u&S0rT?D(K#D%_$%#-~kPrm(@CkFfNk@ksa90yXLc)xEjuP72 z`061`LF}b~E<^_DZZ9fYK}EQao<+lgI`<)4)}ZE07rUBz&n)eP&V?D*%_J=TRpwi&hfoy&r^v{i1*~4V;Wb_)$JsIBDkO4icaN zAtWpuxVT!pIx(?}QFktU)!%;}Nr^H!lPUU6h5g4TDAo?RnW4uA1PHBG(E|bU;}QjV ziIB`a1`wzwrxyRCK(>&On8csYIADxdOOih*5^OZ7wMKPBCz+{W=)QfK-+b}l%)QwJ zHnWz$&rUh(F(~|m8ULm3i9deVFI}H@-@Evze(l@=yLx@Otj*c2lZLk={=z_w1EFF~ zwhcJX)i^i{p{|Q64ILyR9|a~>kq8g$vC8r$wtrENaKlI7``UfH9^-;T@E8e@YA-jc z?WC@Fm2JcoVh$#dNu#_YKydirEcJqNS_x+RD z40G-^5&cDN13)Me4nZku3;R2UOF?_rITQd}*HGqm?ol z5Iek&a?Yt}_swu}i+jy!R*lTh=2hiOLZdj1Az5p;Atp!++D%P~*EA$(Mdb@4elqMS z+cOv)-Td`^XY383LCK=!p{7rKQel6E4qpA5uiq4CD){5aaxQ*V0T-qx&}1-_E7Ki~gM>HYum z%YtXWe`a85_K?xty~Jm3{Ki*YQg3}s$%p&crKTy#4#Ug9*rJzm!pJeFSC=q@7=s%< zPYf)TBKd7hv`@4i1?H-^jv$(Ym;3v|cQJ}@jFstWCT zC_=DNESC8*E&Q-qBdb^I{p1XymtT%>t?% zRh<>JKZQ$0Kr~lU%XDkGcHhL}T1rDMEMs7RDW^%wXM!{ZG}EXLTi8n01~6Q1X}C}`&6Q% zB`p%f#jdEyo5t;z0q7$wbz3%;Ef-B`L|&Xgegi10^j;gLN)N`HW^@PG({+h8pFW%S z^T=NRG_ACntogla4acyU54sW2jGCF7GpZYkC#9HZ?@dTsxsNh59>1tI)$NL6 zfC*i;I%_H&=u3|kPwn&2mYPs&wuTWwX|>pG0SOAix$`2L8tnExk&|969P<0hUJoYy znl+;NZxavp1+o0^J@6!1czQ#PecYV&T?QTuDwsIu>Ic31Y5H+vfig(NugU0UqV2Wj ztj7k-!l(ZE_=@vE8YaalGM>}wWCfSGaA99OVWEW&Ch^SWlxMoIY2wHl1v5jik~Dxl ze&acyr0Cj2!ad15A&b>@WF}M}x3!j8)~*jUZ8U0pHHmaOxCIGU%1Z^cscB4!7`ZJc z0!S?!8>+*xup}y4U)hTig;vN^A4M9Y0TL8!0Pr!y&+-X|>5d|WNTR*3a;?$ZVlNPu zG-Wz8sgc17bG(_qrDRT0kNL4Su3)O=c}|zW6shN3C=hfFvW`dE)_GVgiUq)PFnIX9an&eE{ONyS!w$7p@>Auxk$kVc{}-v zrQ_1Se)+(eF@ITl|G@0$)lLGwbnC}ndh0^oZGhnePTEJD$)HW8Fxu8h`b@z?|Fg=S z&}4iMBpMq^q&F$-J=fL7!Jn+=d{gW($Bd0TcVe}d-?CeF#-iKkEL8Pul)fXOY)gXk z_?$HH=7L{8vEKO9pVwUmT`A#n{|VdrW#Hx~SllZ6o#aD5t{C)2^~6;%ZCQC)?!T5O zFzcI%d}8rnL0O^6DvhdTj(d2ViCZ!{ue&}{QhF}Fb{`RHY{gAQ$iznSPeYk_*aS{U z-q$=cErE|?e5bd!QZdjUOD~}lL?=l9N*}BOCOsG?`tmKSMMtJ{4!DxaCJDgES!rp= zlBl&JRk~jWW8q};sRp`$^-z>Lg@nA~LQ()I0FogtlW=;HE5)FOPnJ4z<|aH=+Th+S z?#)-qxQg(^c5AlRjsWL)_mV2C{8=3v)KYvCsXo(W!BdjlK{wKkU-$KGBYQ%iF-B?~ zWx5jhY8`Q$cWiFQuicHt<*=xVlf_hpJ~QamgTJIM&DnAW;8gPEsZd^G$MWod z-@nFZ5{I4Ws+TbT9j(h#Q3vYgWu)b-J`M~HimN&!xHeis_ z>8*p%NMzM*=kho`R0<6wo66|HhPa?0fK^K>%FZb$0N$~Bj&x7d3Te7gA?SCQY36n(o3Eqjn08|m^aq#mDK*E#L=rV zLX;jQmVi*A9x|9XBD{p*@iIFFv21=sc|`S>w#iGfj}Mvz=%QBnWjg$2B9XSiW9$KS zl%1nFHX_U93(yLo-Jp7#zH$o5f}N)pKZ(~W2Vsm>=4Wz%U})B7=EGru;*kEtIwB|< z;BaPYh4?f&cx93EH;qrW4slu8Uga`RTpbd5uk>^)YLKQ8JIOpKG+EQV<|(0mX7jT{ zpPQ`xKPe6|7HC7#cyS8zM-gQP*XsT8z?>X=9x-V6TWIr&nl9v5`N+F%YUzguS;XD_**K z!=)P{@Flr0MM#J$S+YmBH^k6?yIH-U+h^9hB^=nijq^ zdo(~yt{G=xb0&pmy!IT)7UdM3qmx}o)?4genGxx_AmUp{1VwTSJ_fQ=_&``EOEivv z6SLNZNRqXPvsW8Uy`zf#8Q~3hc|vXAesxM4vp-HF4Iojv8gY`#+W_o|5Ih3xJN)q5 z(qu`Vgx%lF%)~#aL;DJjBXbIV?i1b3Er19DIak!M6OZClD|uwF<#w03HSQCiOq8Q> z68O^sKAX)t4AfJk6k2jHfM(??gKf}_XJ((=Fl&8;v{*69i3sT_pElg;ldz@^iQjH7 zXQe&LI6}&B=fF@yRPKXww#EL}M!uA9F zrKYXWC1x;Zf4||pLb&JCa~{y{{Xct*e%bXTT<=ihbOPl6x-n|t#fO&*bH~njx!}V+ za#7E>gK{W1lX<6Sqj?8KAQHZZ9Tv(d_E{hk;O$w0#VR;D=>#ds9`(1`2s~Qv*IS_+ z10kW0YucicBJt0khl^geOdjxb#gsOql~549fs)Je>titX@kWhOmCqieBV&4!ahgtk zZMqdDjt<=&%OfrnEr8;tt-&8Qy#4&{X)mIPUsqBV5v2xBDuvJ#@K*8}0PIVpK3W!V zK)}v)xtVpUgoqwb`=?A8Np<=}6&X1C{5XmN0|<*MklH@2YMF-MYSzv=d+xM`q>b!0 z4}$OfKB}D3q|*~ML}JsR@v(zA(c+jqv~>H}B;+RkIva-* z%o2GXvAw|k$@0pmJYpR=MxJ=~n^XS6d_7-wr~gg?yZ!|8eUcAcXgb)VBsTKi#ctas zW?zk)u^fml(=aI!&RJD2UHsKt%N*5^OEO9OiL9Mc5;=)(*!0k~AP`7YSy}|0(bd~) zjhi(i6l_m4+&O?|u{&++G2drqTnv0Ew|&CxYrQHL_Ms)vojoJt%R42j-qj4e`(5Wj zkzGkjl)6M{!AN(oR+22D5tPPo(0^bSfNvR52TldDDgJA)BP%1gpdjg134Q_^l6u-U zIU@D+sg`6^+5%$&d>LDbRX~sgDa=hENzMh4Lm8kFVhfdTiamRDzaBdh%bJGZCgv7V zI{d9hAw3_M1(O!*slEQfi$Ty2f%gWjJtig8U`-HYr`Ug^Tj2cI$6vlN>Yr-;^ z0p!G4$V^t7S6kNtdBmu|r3jI#o77i-`iCEEIlrCpIr-k9gb_EghNZir@mK*kqCBYT zWa(Ec)k_;(0eU76z`@ERc1?_)vIxE9vU76(&JRA1z5C^=_TD`o%s+dzkWGa@N55B^ zFa7@Y^xac;QsRtb4;#6`M2EQxDJ%GGiqa=^gOUZ@j}^tRG^cKdL#XIn!lIVca(S?n z=2=XhFmvVxhE^qi_>33QTzhjn30=ECxh|ww)~Y{of;$z5?pJhQckA7MPM;pQby5DQ z6W8`%d?oJZAoI(5lg>|Y?mteo#{%upvGZv2!QgIqlnuvfu`E#_3(FTmk;%3D`ek^n z-f|q=cj6()1w8rz_7e?s?hJVPr$vi@QqcW3X-QX+rEZLX+64(^%~z<#sgf1sg;`Cy3@_zKQ^Esd ziXACPrI;Rh39EG-vFZk%8>x@PZ#LtH97iaaJQRsrfBCyPM@;50bcUHz;(@jU?2gO6 ze(5~SfHc%Opdqrd3Pq3roQ|zV3hvEENm)+!4Ti?PbF%JsUAb=CmK)E-gw{#&JsKJG zBF&d%9ol#%Ez(nrK6%^iXPzDLUE-}_Z&j}B$#F$6DGaus(E`-mZH>yf6D82Q?6#nx z$Mk?p6!7@iC;Khx{2;ddO4lphr{AsGQkoJjTcZoN7-Y%&!1I#pkwvS z1Fs(5BfDJnhp_5F^q+bT5?FivDR7q6{PIno5&IMB7w&uO*4|@x{uVn{w_MR_j!Ldo zp`B6hwrF(r1bf`nvMl(WNVwz2Mh{T-UKxM@7Uha2Cx$y-VGwTSO}TP?@k|fvrA(c~ zyK3d$9O)FJr$_F4@Wu1*e*5X8<$j-cPS|n$Hw>%qo%!UGm&ZK%W>=;6@T>dFzVMqo z2tZPyoAfw{Lmkv;N6Q*7NTWQerr=Zmiph$~%8D5qLaSx1PF>f+m*?R777`MmA*_rc zlVz!=@Fd7A=q{};5Ez<9b$qD^fFpU?d~8OM-Pj{7+akIgB<96DlKvKEPW@%A60QcSVL;g>9 zHhj^d7svpFx@)5s27Xa5vXt0doD0Gjl@~$!+SW9g-hW5$bJG?qKmB3q{3~?>-Wib* z(nm@aP*@?u1To2q#mbEj0{jqyluwl(q=PA=Bf?oYzU9*A^@n@CK4{n7e-6ygJUby= z!oi&WHT_=kOkMSR>-&$M-qCw&U|owt6Vz2NkVvD1VM4YhDhzX8-D9J&2c?C3&gq0% zhq;`UBw$^GZ%P+D(G$^&+^a^Ajm2Dsw@oNBZI3K|f;OUZ{-ei}G`8X21+2=g|1tdi z`{fTmxs?0u`1bX-t9}0}oU(#k>d7o)FZ5AFFbI>FpeTImq#ZCAz)qSyiMZkA;KAVk z9JNa3i?D3L!ar~j-^-X)-brN)cV(&s{|3nf}0Uz^$I1b-(<)*HT!o(`Dd(4vo$GE<=ZmXr)-Ok_hqZ8%&$cyRl$s@mB%=ONSx9TDuL-3ODb7dCYTI7`<8f_ z4cKBLc>=gc7VHkd_qTb-vSs~8M=?sEH{~#Ln|6!Fbf^`GDHlKxmzR&*ODT4WRQhng zaM|UQ$z#-80^7jAW%V8IjR}S@iygqQ1SnG@Ap5Y_D%*@`Ar)a^QgOht5kCY?d-%8M zE63NL2}wuFfTE$W?AW!2pvAw>UfgtK#r5w$vzXIZw3HR}QBRGqth){}Y?0ZzZQ8qK z?>C&WNy4nTfp3P97GI)~IlHklNDx(iHZZM>mCc>^YMJfI_I{<;|Nl}w-}*>+?bqnr z_fD<6Go)Whw;~0F0Z8dtLip3hMbP)#Shi=D(E#Oqyt;gL;J|f^>w1afl2{sh@5)|n zR)#x4!7l|dpf=ZW%v6NbzCPs6yh9!5re1j7x*+;6vs8>V-%_aGcke>aXF3spOv`C4 z?e+|a?Y z!XvM)tpz6p$LnI=uGfbD~-gF0{-m9%l^&lZ&<@Q*%}E zQxCCU7BtxDlk z_;T5iQzM0&kqM)))5(#S8b4=TjOa=G6QGt(jkG7|#j@(CjmbX^?fJ#b?RQFsb?Lux ziNLc4qbi)Tqs6emLOQ3EWWg2)NCu@UUo!M9OMnqgdTfaSG69<-Srp35OpdeYdrgC> zklWomE2F}a5P+SL`^RKX8n;~k+@qgg>vc5ytqVuDXSAh6Mcc`?(^?I|$&nM~F$i;w z1SSel5KMnwbaYf_rmtIfK4Hv&Qp#&2Re%HvX#}Jye5bsuCAsK`VK^k;d>D1LEh>jg zZPvN{*${voUD$zUx}>s0fI>yfwly2~e$#$SJiUg35P%;kyIt})>EsPuH>wOH=0WT& zmB+ZP7Zi9^!ZC?h*D~!g%87=4FtW%^$ zpV3z0td~=Nf^Sm4>CSgAjBqV@>aG0`ZarwZc-|WFLL|XkxJ`;I2`Z}e;5?3T5rD1c zMTE**>~RH?pZWN!lCz1^ZvJiB%BL0`ADP_eMtXuuRLRoy@q5Z5gBA>!_FVhD#kZUL z1@u*L7Ya5}FE|w(-wl9##FYsIA{!fW5|oNYD=mG7ZMLDI+U6$4W$LRCs7SIJDeWpg z%}2=|$TbdgUO2ONXZz6sYv2CgH0TeWWB_;G9d+wo*FXLx<{h2T>t522^G2RqjjThI z>(M%)urkF6GB0n~;E@qY?GE%AT{w($^{m3k=1#D{keNmen?78wOQ#&5EXylwIWaW# zlZFOUs%t__N^!c4(CQ4qqVp$C|Nk80t!@VGbAMS)eoZi zjJZ?lb`_5^%N1sge)-1gbY0d72t9duXISPYiD8v1aqA=2W>eR5rx`2&QY|RaIk9jh zN!5&pWBcTkA77Eka!O_s+lRhQAGl=2+AhPUcIoQ`#RB&utVZVL3zj*(@#dK3W&7Tb zBwIp2ftH39-m45~u{w-Q6CCt9i*^2bV!Ql4UqlVr+#Q3TwYfxm$r^W-fvc9FA`*&Z zY)t8)Z9Hv`PIwO!&bQ18DH-p(>-XgYo9<)`@6ofzOP_V&njydzkY~BY7tXtVe{i}2 zqGXv@hr!(npxt<2*MZs_Up#{qaaqjXhPls&SuCt&8d=Krxb6SA^xKXRGY(EZ{YH1x zbG*g^qqv@Ln_icA{H`ZVE0Z(8{cr?Kk@B|LedT(fNr4{rhP@9C3e>wg16$5z{w~?YudGGgMEzH0;ApYzgTWEUs=TGd>y+E}it-V+@~1W-6T~y~|$$ zR3!;68XaCIt5DIO^w!$;n4C!oGyj->1j~~xgMw4)VKbaUxG6~~5jF_vd6O-$oogpy z1zHOk$vc9dX+e21nt4VcWWMNQENkknTv@-UdD_M`GP|Zs#6#i~d5mHbaSn_K#ykSu z7+c}ByZmXr*r?=rdh^Yi-1pACJ@eh`Z#`N^|HSUS2faaW%Hp-Y2A@d@KHU)Ca@b(C@WImVEDjH)4rVDoM71tw zL~tgO7<&L3EuV1g9YJ>vsL_)1+Stpst*JAmN)u2>X_&zR-*2@Lma24R+XU3Jthez5 zU)oW~SS0;7a-&4)b!0uYd01X7Esa^}m2`4hD<=C*$RB?DFGuG-|F1U+jxR-%8BkIS zBrlDzth%JmNqeWBQ16N+!n4vdLha`AhX+TdzBjZX^x&h97j&F>cK4w}TZ#ks{xwX7 zT-P!RY||%zgV{%;uOuISRN+Sj<9!dCJa2uk?X&8&j-|Wq%{}n%{)Yxnsi^3&gs7w2<^C2J$dFAD6Ci?Kvy}ayuuk2TMV6-C z5?kS^#YJ45jH|=c6%bi$2x<|myjIk4NgoR(8FnGv&*2SGuK3?&=E+#XwX?IZa8A?1 z1-qO-{Ua;YW~kd3CPoCH+2C!l!iJ`6+&)=sp(%BO?#=-hITA6U=we)Mx`eGgVU(CB ztq|v&sAo^PCSlLT$UZLFI$ZfCk=3t#F$2CEU!cf{3P=RiB<+!nE33amz?P8{d2qf3%FL<|Kl+ zXq6O{J|0uVdwTW=@EF>4_zQsBBqa%@Y$i^jP2baN*H}r-1l4LGgy=-U*K*Q=14Nyn ziP=w!D;)DHtc%sF$52{?x>FJ}*C{gy#F=#54<#EHP=j@(T~M1<0Rb1@x;^UF@K2lm zepa5y`-+nVKK58kJGm-K6Io}1lSRj3jhv+S#E}~-&<^X?ec14*)-XHu>8t+J?|t>_ z=SQC}qOqo5Gn!F=m98p|xRGTzuTLw9b&&>Yv=Mf;z+ zdZp_Z<;6QXo&GFm&(x8Hf-NK1=;Rn1)Y{s5r7NS~{fa}2!m3+)Bo}`3uGva@DMYf% z9~mRHbZgP6qAIr}c&0{W?Lfyl6OpB@R97!o`2ZJ$O1ed{(+7f+#5xAfU^MIb62hg- z@FDOu-0{KMKh<}zF^juA$r+X>@4hKSw0-dE9c930!`e(6`&#|_Nu?OH1>GAY$Sguj zu`M}a{)i00nfnFqFuqRG41|1!ZL6nPB{-|%AnZjw!s|gRi*x2$I}Ski>xIdKcC6cU zIi^UU-985h@9W{(3wK|Bcz2lt}4An2BAU{owIN?F%*JGB&UcI}h?`Rj$xw@qnlnYA}0XHbA>#!SQ2(>l(3@?@9A zKV4sZbo#?1mrj4R@}scRjYQ$$@v~Shy5oL;Qu%pbOpa*!HsGX@K|UM@6~bN>-a)S( zfF+5+0%VV>A`*U>6Fda@VW9O8$Sd_uROy86M{V04y;o@` zLyfIXbItL?mYL&xRRM-^SH7sew|lW?)`I8{_a-J8iv)S1b-);x-Bx_M&&r&iT7qtT zWx#dkn_-bO51o1OCa+Jo5sX9lW4UNE0--|+8=TQH(oF!-@BrxZ16ok~MEDSiY9%?C zDNe8?**hV#0u~S?M>Xsbn@w(n!I90=R?7~(HHdN+^306cqZLXDI7mcjP-*I*lp?(i zK}l3a#R>dfo8Aper&hUhKQOLVni#!v&G-VWr%yb0x9iK2r8jzP^0WO(+<+!y&qIz@ zA`Mpi;Kc#nQt(Nf1lC5>P(PuK2O zjon_5lU6-#KmaG1s*OffDgTQz05FJ;+wBZ9-K#zVDZbN9-=8ird<7pX%ab==JL!K928E;j<> z0unsASY$+}0xY6^bxL*W&@Q>D-)HJVQ^O^-v|BXALnsKD^Y&=Z^zD`qLgTVb7gm2p zp_6)(5qg9>DvqV}e7$4unrC7{UwQ_5KMn38iZU~l?mK!b8Q-ucaC$&mGRxAaA^--E z;gXnS<+#Ob!+%4%1V0G@sYLNn&o)y!2G>$IE7u`|mgrflApIcr?CKV7yYZ%#*V=Cx zPOn*`ZHefne4J-ajz11J=Z^quR=Q_yk~8{=?+4%onT=^|! z#y{@9_Q#ufH_yF$^ZT5|KlS;rZ}qvzy+3@DyU=+?Zf#PM;yQH}VvX)H0*}USyU#Z^ zCYBDMjxZn>O5qUM8ciw1BqB?8D~_)&TB~JnXv5OyKH3`NDt>VC=7iBll->15s!_ZP z4*l0H=Qnf|cD~g3cAk?scnH2^^8O^b2fB(gA&K^A{WP{B2*W!lL8ZzwW>NCT@wnlW zC)rX)@s*FwqruylY!@vDgrH`r$0jVl6Bq-*@eheN==su;ug7#|rHPjb3KEo%FosDc zqZOTikGNNvHyLuRLU6DJZ5V9}oIH%5BI;MO%A%hil1zH<$?4~>XMK7RpV7bW{bN@C zk?zVB3quq_jJYJUP0#jU*Rb48u*@kXB!rKg`9jv#7jpwu!A9bfoF3~R^C=p%MZUc> zXH(6VHFZTd$ENmZYbSaoV}0V%52_~bn$%T(btvtzdlm0Y{Qkkpoi7u?yJm^~c&6@L zi`}qkKDra5-jrzBCRSJPt$lQ5`K1T>Bd*r8-P&??<>Y*0UKcZ}F4hREaX=tuizn_) z4+zfLp)GBPU+v5GiFQIdmBXOp2~nD4%hz`k8kHtVvzG{a0jV9uiXml)7zEe)8LR(v zd;V?W!|NOWBQhINXl#4G`}~Ze!mRxVehdkCw|lJE&Hcj~A(@9%)@H3lja!8J=~bn3 zriU+}o}^KM?oqCSBgh~LMq)fb1hWrwz<}!Xxq+umcYbG0<$Jft)ThsQw=JbfqVt3P zo4RSk{hHj=5ZM)722{l4eKT_B)nBXpyL1^ae$$M6?wK&JRFG=EdL{`uHv^8*BPGhk zmTDSgkv0qr(i&%VA;qh;tCeH)%%bF=O1DcA(9wfd)(C0WmVN{P;BKB3zsz(CgcEW^ zlJGSRyhJN>+QN%gFR(5TNFh zhejp4t-XcR0Zq0wxI6s6KF|~C}NpW$l#*r--Xg}zufn8{! zev;3C$F@3{$g4Ut8$||@vAfI1tnE_Rl3w*)W4~kDqi4!DCTI*nD^}j$bU2GREfMDV z2XymS&!`+MTo5*a2%~rx+M^@3=nTU%x!Rd}AvBDys{s zeW0X#J{97bAhxZ3c#*F8&L00@<(Nfl(|SG~AZtS`(4B)sm1NO-Sv9~_)w*u~7+2+S zsT+AqI4IdjsB0-DO(aHVu&L$3;@bZ?U4}jxa7J>v9G)$Ajri&AfLF>7zPskuQgcuL zbQR+5Oq+3PnG>u#a`n1%Ll?8SS z&Pu}^77w*jWb2r-)Kq!$6p!7TLm8+K`~N| zZzzoH=`(YpL<$L4J8cv!VXT&5dP&KK+?5-d*I8K6L}ZZL8#@pz`r5maRv&ae!0N{( zs99x9VQK5R5Flu57}EqWHzQ$@Cww{2BDL#5%j`O+UZC#3n$yVfx*h+0UKm22_3ip#fL{~vhI{|US&+WfpVmybOiJ0thK*Z$tnw5?-^+&O6VGxpq9>jYi8 zX(F2jBjk?W=DxW>B-)bA1Q#c$VLG;$kjSH`LoiG!HlgIEn6w!iBDS67#v2Z+!%?i_{*GK-< z@4*XWrqKr8QL-w}^un^v3ES;J=#u%qtM%5on5-;d94VDB<8jO`1_cCddFYYYeao=} zO7;|`+-fA=L+>bNoUscqj`cH3yuggaz{IW~2-I<+J3qn>$}%y{x>;5BardihlIjRV zQ<-z) zV2`MCXSABSRP-xCo83mPG0>1)Y2yzk{SK@a=47SQGL>E#fw>8^&(9+|jo_{hX5;#q zH-7Q%_bbkr5^8%b>Z7fu)WFt#$8~K4-Q!f}&W_n_vC2o=R2vhwo{j%#e)?Oh4n6w3 z&w?9+ZdvzFeQDm-H#-dnOknTC%x%S6L=G=fZRAz=2C**$&)3d-Rp*4~~4C_}*LDEur0>LDErOe%-*4AJ{?z zj3UPBVddB#PYB;c6>5J@EX#quP9b`1;DmX04ECdD;ZTBTFW+|CH+03y{1x-&`fJHK zAW(UG!NbiXdoFy~Z(7ISrZ36q;lbdmRG4YDjIG!g8GSX==A}R5sJR69=xTN0Q=`G( zx+@WZHID+p;#W-(=(CpSFTLPr+{qDAS<2imZE1t@88RpLk}L6V(>@OBuUne(i4EcPUOf_YFeaJ7zu03A^V>e0VSJYv!35(WYLK+m&Y&VbDAcL+pv>vvS4mtya!HPAY zsf4MO+V(4T@IcyeKqLr^P0R4Gn_=O$r7e-!$@;%;*LL^0uK#uIKF>ZqZNkibf4`s4 z`}o7@cN$)QeQ@Q;SMDt9)PUxIP7}qPE=&j|z%m$hP}oP3_r=~EYPtR4za3fp=JO}Y z(s}(nMH+3P&*-|VVR*!?A~DA&scyLIw#AQ1Yv)TZ-%2U-|0L&!^61o!kB5 z@-Mqb-t&c|k$;#ix^K%o+xx}TuUq%@@9n&;VfM|F;#t?g89`4LSks>*xY}v*;5rhj zYP65TsqVyI!g+v$nAE;8arl=R;8L74lb8n%3^s743Xt8dJ9v7w#(0Evcj(|&r1$*b z2CWq>Ji6==!&o*8Hye|aG2L0iu~6K3ayjNHRka|)`DpRpY)|44MkK!`mz9vNduTUy zZWCH|o$u~R&#iCHxOniX(-$+Ju)a1sJ+;KSsl{yBtQ@J4UON}QtdSLis;OJJnD7aa zM!J+I$YK#5wTJ&qlbq5&&Zu~$TGKdw_U@Ux?n&!ip0Fmdf8x|#fq<`y@NqRUXcREY z$s=NOD)X1GIN1BIB}f1MN$t`}KVSUg)=0&`*V7U*T*-MpB6nB=pBRV#Nir(A54q%A zFxwe;lV~EpeCEO70|q?0o|%V~V^+oP)~t19rhqj+8NCqXseIjQyYGzJ3_qj-fNPeE zp7?D2FxHyV-+J9-^cU_|zRCYVQ-1AHd8+Sp)VxQ(+XbCj`uQ#M_Wb4b-BUVJ|Z|r&^Jmr)QpEIzjC0NW@T=`?&`C>2{1~FXxeCW!}9k50yCi=j{w+OGbPIq>PGzd&h6hn^xl1EiWtn3o#9n0+{@1$8M-oMPv4}mP2VnfXW60DWSbw? zFDPm=@}*-7Zdmuy&GhIh#uR8%b`aoxATeQ7?gI`1?iF;A8xz$Y1b;@)@X=FtHtDv- zlkSdbc*-09P!7Oi`fqM3jGjMp>i!ecNX}@;?y;vtx{>$T8o8SyI^k6^HbA0d+jNmP z+N^;lv${4Ca_rFV_}v3*vxABut9g+{)t|L5x?+6pPnIQ7GUwnW-bSL*uc> z@=@?OXzbma1`s)>HZwIbC3ek^c<_x@A2kfP^UE8@)IE6Pz4z61E&S7gX_K<0Y#D8^ zDf7AFqTBQLpP0Gl&J$k*UidI#tNzoz#PjdXJA3T!Ln&Xnr`Ag4y^4DkX={fEZg5eNIdBHe_5gbw7}hw^?iHC*MGV5$e+HtF!izgoHtal&sE*L z?1_WTMvWM$#?T}}QUuT**#Js&Y+K~;vdi#1+5xhVd&3sTw9!Z-V=dwfRC24@Gj9&^ z0rqe1GQbLZ+u!bw0UyY z580gyD?VGi)+#tN(#o@us8}Mamnvc~9I*AI%IL~zikU#Rfg&!dX;St1n2=!;6?&uF zPvX|X*ih=TIeN$S8F!8}&3|*=zS%KyrHD9kutp`U*=%G$$vh;Mx2eaKK+g=og zOd*V=$~@##4$6(nXbcvSG4lPT7tg%;<%N0M(aZrcB4LZNUOnMbYjQ3;Vn6ypt|}$s zTtDfhr$=0;X31rAVrCaoZkAt4)X|pTw41&Ai1gI18arwcF;H<}!#kI~H*(y9+^0=WF zm{aX>ipM&uKD2^sxuv+L)XiyQdZ6`{(v~}RfA(qB=!-A8iClAvLLMtJ1z^89xqd@J0!Ao*6K4fM zKb~+!$t3-x(Pvh^GoJ5n)@yH>V!au>H|z)rp>93XE_bAWWr0O>=+vGROOe#(Fe})F zGM^%KB$q+-KQ_zHUtsr166!^j#7nkk7NF6VG~Hw@S|}JYMoY~?^XhM}+;dOIb^G2r zY&Nv|Bg$8eQB&Er;A}lfl58yp7`I|5{xNY$>H+@VVXt35X4>=HlxN$8N6mayIK3nyC=Qx>359SPk7lZdhW}K232qz>C5t22b;D0J=x0e5Vtyz_F zTJ_zUx4&ES^|G;-m!13g=L=sw`;Q-vy!`a;kKgV4L(K22MICU1T!A2-9MPNd0nYfx zr$PD*jmQy~);3l_${U@sU^*ct?eKae3M344lmC|i)&9mbtrho!{@B^VPd{jgDR_3~ z*`O)Py1H=6sT_1cKA~>SQs|j&2Z;QBX_(^mK^oA;YNxO~?Tn=?z5z~gnt0$CgAtL- zB8s{BwwHEB)URT{-v1^Isl%{KPrkrte=l7d!aPz{b*sC#FyO>&`s4w*MzK zu&#|OR$dJv+sN}iGjpwEb8z0pkk!qK#yo}6!R6jtvIP=N*t!;Qb{`^;H@|nU?vrt~ zf4TRadoSO6c2U>CC#H|uq1iReY;dPaX+?c1C2)YPhRBY(*yNgUT%IGrW2h8~Zql@| zkoMXWaV&8wgX^g|*L0ha@Xc`NNJGq2$viE(McI4<)PlZl?Wx~ieDi$T^OJ)hktwN zvzq&~iN0z6SmrG=#DFjYIiX}9j;?-1DoPs|k2-`9&IF}nm>Uj3I4CFKuLeKQsJnjY zrZ!E5U}Y`R3u4#FqwT}(M_ZZXkxO0?Est;nc>Yx>S>mG@7q7Ny3BR%fW;&>>+mX%W zVKi6Q1Y;YADJN9_X8tB#)pq6H!lv6Tt6dI)UsS;or*NP3ePH@v`uFSJF14?^a{1L| zOERY~&bDaMHs1Nu-?#p(zVqc_dw!07YRCFX%ag%NpkqRew4eqDw>DI05_E-XyVziy zL9~`R$q1d9sxlmvov2H2?!Kf;jDVAznX1$-#x;({wh!E8@UK;xlj&BlZ5%dJ8!$9l zwr#z%`L?&;Ilgt}_0f0T|JT_n$N{yzd+sM%fy6T6SIUp^g*HL&+rY^Hw|ykEUIV8VAz`j(#W-uohF z?SRiR^PO_xaC=v(M9iRK5plRFY(GEQUx6o9SuA*Thy!JEitf(`^&-(+Qf89<cYj& zxf^&1(X6JE>xSwDLNe53E;6>ky%P1NN=(|0a<{Kc*Fp5Bp*KM73w;9oe$pZdu`NXg z1HA$2;c=o0SJS)XH^cdV6awz`Q^L?DksVgD`a)QO!2G|MlnCA??{%B37 zb&@}Zjh`Pwi6mmlgSXVMi#3!E(uQi9l-6Z(iWK`gDQX1GNXmNXIrHIc6~M}$|2vKT zGV_|@Vy!h%=lSX7w|_YN#r-E&R7`jLzrWouUAXOoWiNH=Kas^`JlSr`Hyq~GH^WAb=HfJ}h&HLKX1^blpiM))XM9Mgpb7M7fr$z`$@{js zz4fv3;kRFz_w$!~wmx|yESPxprT1sQfUUs0yy(drv(CNuXv1?k{Nieluoew0vT|CA zK0#cOD#TM9UFcU51&h?Zdv}j=H`i@y5qK6wb)G?6e}2Al#Cjsgm3$&ZEL6NxoE=wy z%G2r;nVM*4_kt6bUpWys_3=~B4jDb*hqqEPVln>`>YnX?mbufwSiaTDEMXCt1@<;E zp|{CSKbS>o2&|g5Z@v-;pm5PdRQB3C%(y}}o;0s>#DJwi60KnpH0hqBjhRcvFv4?S z-qN4X%vwBBE&`g4)?0j7QA3CcZ-FBaU^s;N0SXzqcYbl}pr;09-kOEOf^@vmq=f?l zkmP=_lQ*(F#?dMdWbRQxG`U4}lSgfLVejHR4j*(q^Yk`V)&mXy&3;j&^}n_|-j*kb zi+{MQWRLE9^RkkqbxTh9SB!zcg1sqmp~N5YJYtjMc&RSg89y^e6P-eGEW1+@#Q3=S&9x)f`C7F=&9bCx zSGGLf+Auk9q?OMwGj8%aARY@VtRi@E2u*9>=IWR3%FLYI_u{JWy{9z&r8~w0kv(5* zuYd5jkN#ZSx^&qtNDU=5hW9fK5mE};qeM;?0Qf+*(m0ZfV)EH<9=~%}#fOXKWQ9N1 zz~>Y~-j<3K4FO>cMk;P-HHV$Hx~3wk%}*$gbH$qKbMB8X6Hmt=fIsjRVYD0f9@j~frzH?ksPLbB5p|mAF&E}p zPv@)`h6F4Ff;XTXSv?~L2Se{S3Zt&T-0EsOuKWv3SJ1}YJnaOM&(qylcaN?Ds+Y#nm; zf}#_@Pv{@2cVqkm3FTN`F-FTaAxW)fr_1APE+`x*lERU_goaRe?}V@{NTCh!(Tlfr z{q6ERkK>Er^P1y#u2=J4Jy+#HBFw6&wG zYEd>0A6xwZyOy#cH!o?Xr1(5Howsu0RfKu?suoQebML7g>s8Wpoaf3$VKi#ht$L4+ zG8Cz0O()uS=X%e~UA*}@lE>**>_XH8*Z>|0mzrA$^AuuWR&(;CDvv!Bg32j2t#2sZ z89%J!ci6O5E&t_L-@fS@dseXZ%1LSe*q=Uqs&wW@5AQMV7+Z3~iQ3;V_34qlLPTuV z_$@h(wtS9%Xwej&rGuS{bjHmJMZ7J>e>sBk^r$+IL2~rb^?J}ci51J}2?P=K|P7KM0}H1|_b6Z5YYG z8!#9)SaD@efY@@l!~6Cf`Q-gSU$U8Y$h4x8C5Ew3V5*$S2d}nBVnZlqgf~SZ=bv3u z4#o168$I&pKO}DacEg#K=Vv8Tt+;C#m^$tR0$PQN87idY?m)k@B9B=Y(XttqlR`i` zW`oq9mReI0%Yy<}tlSBNl}FkAQ9a|SDn$L#-i`KFlJN-mHF_U&;h!^a&7^@~#17FD zh*u?ztZov)CZmGoLVMRx-f2hpW9=845Zhwq6 zF&uk2P9~|xqnDaFE^<=$=g)rTrD1nZ-pT*o-=0G%%hiZ1VCGh`?VuicvZ?nP>h=qZ zmATP8E9;gu=e>%3*|TQ)ZytSO6lTt8lW{c|Vb3jUhxyY>nag~Smd}PfV7P{ZU-R9= zMy0NNXqy&8fUomb#8W2!9F;0U1ZX#nYt349ZB4ZzFU%%e*Gb-Rhekzlw$>^9Qp7WS z$IJPPE*|`GNXH9-Ssx!iCKuA!j3Y)293nQgK*-k$NmgR!Jxk^%i9#Q+Aq&=vO+31a z1@1HnjtNBm4VEMRVPF+Xx(hZyaB1cwTQg3@;$G5r{2>%J?<@*23qis%@Q_SAY0UDk z=aPKYnl+eRrv}>Kwv!)!{LTZiI@bh|ulDnKP=r7amZuuIKl})J{G+O4`R?(Xkz2t( z$siAH>zPFaqQ-OVaqD&dBmBa@_6zO);i)^Wea9^iiQ^yr)HC+I1#8xR^p^t@K6g}a z`-A-+fh4mqGSe@V`e3qC+~pDt9vLRLO#Ti2O6)=!2Tb#uECpB7QIl}4S_R+Zk`ox3S%&x9%ZwtPs{tl{+w_eE3# zZEzxr3$ynSpf-w<)a5-b4Wk{m^oI1>>D{UzMup+!7Xx#3ZwZmqST4s&^=iV2-_WchnK4H+cGyk^}kF7X;?w8)0 zdoSE)pY+^;{B7$FC&;0wtMCtPXz+vEr<}rxz#(I1{!!Uz#b7y*B)7ob!u?0rC6e~Q ziF`+je))vLYOhcfp(x2RPU2SNU%X)i_<6Prmb4+KLI&CBrE$9a>4M*Z;|OVx1Lh29 zq);frg_B9he8r$#;g$({1io{-LyNY{npoAqlWi*OthE>#UVO4->G1=@+kN}T z)f%;mo@=s_vC%iz3u3_}tR!VJb`Xe?w4?Iw;jhjboN}&v!~uUyLah)L(QRl zm~nF&$21}YMX;yM+Z&2mT=&f78()4Q@cLKd@7#IUjJ)A4ZVU#!y8U8~-62Cx$0Tfv z6o@cR4ZcqjnizFy3=nFaj{_E_R>HIskbD>&b1f(R{!i^iTQ&mcuZ7gnLrcr71Pqp# zDe9+%Z@9B{sp~FhuC6EuE;C&vc_?$1q~MYpDyHd%CnOB^!cL%Q=O0_88}#kvMJ2Fk z?&jX;@^n>sMFXi?C0mYU4UjO8WzSteARA(Ozu>|~hBkc?lXrwrNSIlpW9EVRQuzOO zCyen8)cMbSw0Y%@Km9iO^t;`)8Z#q!)_uy(-@H1%NL_ipW3B}cf`JhaGAg1aaEo%~ zvFcizZAw*?92Ak>(nLg7UG2G;Vo3_lgC-M`U6>MucUhfP7W_6y>|+leCNP7+GOII-Ju z9{M7+=t%M5IK}0e*s(XpQINz2bac70;Tz;abpi{x+2T~bMRrZPH7ZB7 zET2TIUb!f`{`J8kL5cJJHPP#)HUI7bn^0BKR~BVk*|BxiNEqIiI97irsRw!y@|^)gt0-UdR{WhsKgzBSH@gzk^vmj z)(Rq^ZsfYmgN4Q0lo}3_rh_##g*O7B?&HU8z>fDZ^p%1C+ z*7oKgq~ipn?nybv6}~K$QP(N3Z|T5G{T#VVQr~I3WmDI!vnN}XYdsG`DV=e>CL#I;Tk~0|WjOHo5G_IsyRr)fAPMGJR@De2uL> zr*q~Qqpi;wc{o%morJLsN6Y3`v4~ZjBRrzrM^X_c229|_M>P760Jz>Q?Xo#y%T z1xt#2N#F=|EfmF~Bvi(3r>8udy#p_!I>9lva`cQlN6o#os^-_L{+E^4fS-cKBN-<* zl$=cP^Y1S2oW`i&_Q&?c?fJ&|(i`5Ki91P!$=2DFb^%2)gt5?%|4$;K@fNj5^p6Gk zbK(!E!{X@Nzaf9LgiehcPJv>T5(jk4AQh|^yg;{{R*cBKdo|SzzDKVpSzj&ttZ4PG zulkYbCVy!*Z|6i6g)ZFE358q6md`o%(Yq-(J)%B7&R#ry@s9Pb8MiIIAPyc})wcGd zEoTqh_epx^t?9+ddZRo~R`*U^NZ@SW5HghWQ30)ifTbp4t{69)~_nH4`1)!fe9 zWT-VZ`-N}Eu9ju96S|GjUw(R~V)Bq7yZ>^awod0xx~-(cbGj;SJzCL0)A&IpDf3XL zw*N7`^NneAjnUmU15KOAgT0Gv(@=^mAYTcD=~^Icetn|Gs0##RT)gl7CE{1HZcHpB!fR3d{L(+U3*uO%n)s=e2~U|>nT?zY_!U^vYMuD7 z0C0ZPt69~Ra|=v4RV`dS5*XX>HV@kU!`p4Y3aVF4D7%X6{USFW8R(hQcw}EiNeR^| z#Z8CXZf;bQ7RrR)dS2)9Qv8Q>!`RnWNu!HsHgv$K=v? zCXIXw3f+ye(@$f=mU`y$9=3trSq6_U+{Ch`Ge2?jQ;&3y&iXd?mW)?6etGdi!`wYH zV@7>DXwa-NGqV0^`KWL8p1#`6-CHsW;&e`-6B0II;<;M(UDdZxz~;a+TiM|aHIV?m zB6ZCGyQhAw(gYY@$0Xb;v;#vmM66QOkWubm(FJt-@SXzTyFup5ugdgpp}^T?`Qk zG6J+HTu(u69jsK%V)yiKgs&vgIOED6hy9B9uNrzyI9)*2!yEt5jLVyM)4h)!n%?8B zUk#ZvYo^vfFGF{3<)3 z!xRrJkqkoSBUY=Nj^35bxf&T!5^XByF?MNz(yL3Xz@8;WV5l_AfyjS3uOvw(J6Y(Z z1WYvwcSur&+ofd!*w^NFW_RR%eBHdyJ{x)%wm9p`w~rF*{(|nwl9I2_CKdGkYrwsS zefP}Vr8R1BSCcJkMybgx>L3#ch){<*%&;L=g@Q#`!=ArC-1*wO<6`(pL)IjsQi!Ah zVTT$AJ7W?nW_W}3Eic&~!JU42{H?R!zjXWOISkQrEh@LzE}R;1PZ=*N6Y5l9x|-E- zoyr%ax<(|lv9J&|g5Uw#rpd3Eje-oUAY4{76GD|Q6SRn7k~a>LDNp2@^)$$#}CpK#JuluVwl`AftcoFXj~H!68o8*pHn=DvIPHtP&L=h&sAEms4ah< z@uaMT>~`=v_yK*2dt5m)mQ-Z1akkl@Kgl5lL4iEVTi!`!Dx;PtBI&3?@!ugnl91Mp#G zpW`BPtb$CoT{qtO^3B(ey;!KXwrPrNu`1J$nOV;H+O6LSaS!wEIz3$IPRpMvGb-VkAj|rbq z^2q-a_4@IzssTZL=R8e){T^fE$q5gCG|Ia2ckKb=HgatsGd$pNN#PpwyuEwJ(X(z& zQL<{&9sEuMZAd&4K`a#UFwP|g1&Rfe86eR+Ko1{9TtOU);AgfulshiTrVB>2NUPcB z5JU18g_@TK6=8Fu;*O&yM{>wlrHjPG>Wiud?2X~E@W2W;I|jp{al(+YMjtyTjWWN> z+dXFOcF+CqFZJy^i~?%ef#he`>%umzzAxYI@}q}Q>jO;!dTyhhX!$EXr#8r=J$C`S zEH^C{LAUdUr?-7^s|$TgyhW{aVjpz5=WZb1TzG5=T2@~EnmN4I8tVSr?Pt&at8(|Z zgz^Bx=yFs6T|UnTR6TMG@W^g5F9cF1_TpZuPWftx-6^NAKCHwjGBQ|QIt#fZlJ>Mr zscB=ji(n`mf~{m5nafE|6`pFFmTY6f<>Pi3Evg!`)oaU*eQ0N>x|Dce4d??`t(vnF zb(2hrYgYZ*Wb=tp_Tk)&Sp2nU6P1){tV;{+{*n~Xa&RBJTum9D@cM`ubkp&~?Ta8! z#Y+lJH^9~y+56Jm|Mg|Pb4_=2->9KKogMI^b8e+~eQ%wcRuJpoRb!kK%PK7;k%;Ey5^sGL!}*-z_-`{O+V6tN@;jpEy-~pWQsh*vIW6;Cc_l{R;a0 z{G;*e}F!Z<&}N8J@cif?FV6vf;1LRkQD^ zBq-fTg3^#@cCr@4bhFhFU!^SyOT5p72!o|5-7;XF8o)uOX*!{hSA~M3kD1e0_gp&f zmWjruVwIJcCqcp>Op&P>%LiyVGCZBarZ8urAVYhA!GDhyLOF)IVbvJ=|f+JMGG2aKdiU~;00QRg3_oRy{o z7kL|m(=Bjv(3xhoxj0s}(*<3jf#mLwCw%&kC3zQab(bGq9wKfpp)1+ck})iSfIj*k zcH2UTa8Qd4R`c2!JaoRhbR+YQk+h-l=a~e>G0w9-)Ruc|3PjMEbyKUKkaDVVaGAfj z#I;khr3N~!>pB+Cxa(g-u&gDRg;yzOAupX2B2Y%!WmbstqgQA-h<`v~1ZreYjyMGB{z8008KzJf&DTP>$4r?4o;s$PfN z+BejRQC$>`+1DV^Mda{*}aYoc1O?E|S z5i`!l>5n3so&A;d$U4ucEceVDteN{L30XOPNrhxPJB}Tl6fenO*M&!`8^6E)s#g4|dy%&#i2fN8AHZ%Io+5)BrIU zoAQ)eaIyl=!%QkM5X!wpEm?=lG{^tl`!`L#`1(|WHs)S>`|1De{K!n<^k4pYjd$k* zZ$91e!-XT0pZI$9=G@69JNn{y=aLEy0efsp+JQzb;(FdQCDVt{F2O&WKjM4`jCDK* z5Rw@Vo%0xD>th^Z1G+G3aAIUs{E98doi^vp*alzKs87cgl(Rjnb>Q7jM7%b0;g)&{ z9U&VyzC7!|w2)7)Rs{}j9qmJzVVl8Y#qZxPi-3{Y(4t|Q_mS4;&h;z$zN3l&@NVS6fnY$FJ|*S&I2xSvYMexna4McaSy7!ByPk^h_qkC& zICa%4vVHI=T7zjO1}zKBVKJ@M@}$44+V#=%G6=wt{~`d__PeO$=DJxoad!`1b>*YC z_s;t9NXLfV^`C`@#0DC&(Rd0~UmByTR1q%>*4q}~?MFeyzobF<&BhEH#pso)~WC#JgJxKy(_7o}t zrI3*rebHLUNKhnH;bfJtnSe&4y2Unr&q7!*im2<9dfGsgDk;bU8Q}H4IxkZ9O{Nga zFv8!I9g8glJy(;N_%v42v^1V3J}I*TuKsTJWP6O+xV-^+O9al5q#)6)3J9Np!&yyc zZ_imz``3S%va3R4m6{8hg%rI+C5vGqS#nAR(BkmOO0;tj*$m>bRw81M5E3aTSrReI z&uHU@XED=gZ_`)pzAwD$AZ2RrHN5?B)ul(owwG_8b6fr9-#%Vj^v*+ARSqT+=jwds z$3!`XY+rB@d^79JI{ln+wX;V({&B`DgKJdkR^BmX>v3A#Hjh&Nbws`CN5&7o(45Px zts8+%6GnY2C?k-cwUD`93M%RCMe_!ExpS@Zuk#!I!aT!Y1_$XAAW0T z;Jyd;MEx{KadTYxBe~yK)u9i5_>19ME>&FK-jby!*RA=c?ej11o%;AI$wLPQO3JO! z5Y(b0b6|{6$`U9@Ayf$0#Vm8*o@ArH2{vs5|G$DQQ=BS)&icsR=T?G?t4#!x_U-A> z=t-?f@fJz`G(^j6$Kh;Y!s?2G249Do=whLm|9IC!qB;ioKgLFPR{ha_lkh0%j~ht> z8fwCAtcOqxJ261eHWEu8lcUz=;SfOz0!YI4z>Ko0hCCXLAX65sZ1j{{VOXe~mKKeP z(R5plO58?ei!nK! zpdCuvqJ+Kodz%ixo##EqBhx?DU0)_s$(!vq)zQT?qAGKW53t zw_jd*Zptmoj!*e$-@ILUNt!w|H5Q(~Rz@#akMN;pZQXQF`hDS7-=1nYNMV+ei~`mE z7H26$jSh)&lc-!e#3%=?zH%pSr2!b!xn*0sDbhKl^tiLhsC!EF%JvgsPDN-HLis8U zk_+E@`{Un)f18>4zZRrl16{6fyXpHH)lkZfQt90W&v2|OEb_8s)JNx+m7l*; z3tfq>kr_cZkV*g@)d(DNKBK#NwNog;$_}^JF+#fQ(51wO`}V*1w@C}^^$)L~Zj+Z4_DjAXF8Dl@llT@Os$)G~P*y*mw%}iq z9MN7SVm*R1STx)I;&3P=j-|R6z4h9~x1N0T&_7pEzVU0e*p;qpT8^!4jmgcc`u_Ta z*7oy>r+z+h&xHE7=U@2ehB@_qsDnUMZy*SOFIka=N#KB*|v67O+R#L(W}e8{i$@p<5N2{IX5`zzGazMAU2;J zcX?l2((L+~zV}|bcUT71X`2WTMABJM!|2-4Q|Bd8w5ftYLWx+UwUzo zs0Lc9^AwE|`?a#&BF%BVu>@L`F9jqC;HTBE?{`YBq!-_KUyZHiKkZHoeG|0*7V*8k z4wh%EbHU<+z0dsSrQ3V1+w*8%*+wTVMvcb3rDMvPGlnsK9_q9|lw3bbX{appl3YUp*Je7TyR?{q8GZ9F>!J^GWf@5{N+Hh1_lp=L`uR%3$4maB($;U)DS*x8Wk^F zMG(uiO0DFfMT9nIKGLgv7wU)V(g*7D^xc~tq|2u6=p#PHEtqg-23lVk_9#mjHlif0 zeWu^pT)Q^SYix|TT%ysY@-k0otFt{4`(ebK7;ZW{j;%w<6I&STuc>ZX<7QrPvm8;! zMyRP-bFwqjfstBG%%Tz))mdym+am1U!L?RfNNZX?QB{{3Gc0=7upghebANuaN<9MU z{cR2Ek^Z0B{E#&=N85{`=b=+U@PXJlIP_cI?Xi)kCk%UILD}0$Rl0FdSt#ND%eONZEc`DwaE(2B z?6s;FdWfIL%#1m)(gw~oo#_*x^7f(D{{=&_af9#!o3rFV%rfx`(4qZgi4l_7Tw0qRK zP&+!SC8&xw0;}@XIAcdRO+8V7gdvO|0=-Eebb_8>DYPe$aE%Q|uWLTjW%93$;Yjit zRklSUy|`#|s;Kr`pH+p)z=RMH>i1~>W;kXxb7{R1b6l+9aLfD4){e%+ToEfF_Lj6H zeX~kD^z~z?4!V+wokwn&-+PEm^`xl`Co6Y7Lo@%!m#cSr5R-}!ws+D zPdSyHxs9#GTBBXZtV?(3ER7;3?jM3|24n!-)?BEx(+c8$oaF1+Jd!F1I#^yIF>&%j zFRkztZNJ0^@;~aY?0*Y?C)}0uUDwZFcKx&C%`+Xle)-qnUzVhQasAk&9Sd>))ZDF+Yd=q*XMHuA@S?;wI&EAG%=79s@Weya~wyfUxA4AukD_;CcHLA zNnW&lPPXLE76O%#RM(*J2J8Rw)A8NF+2EIEIC7d2cNtl{{t$5=r2i$k($n5)LP+TL7!J(x#;VIKN+O$Z8k_NJaXceqP z$*|#30~ajMhC*f4a8kdB)mW=f1AdKFVP8YH)1NYwpZE$RNHFX)Cp}+T_#uHl;p#Xt z(hi~yTGQd>&c)JDE0)}#4~B8g-}Ca#UtIFXhwuTxP=trA1_usbcBk&9^{zTGI!OD7G$H`Gw%9nGSp%t2%<0vW)ozga4`;{m|3{11Eml2e4pVmD?)CW z$wP^Qs*ys)N$N!C}H@chc?zvp8nf&?Ne9&Vg1i{-F54M zrNt9RNY-#oM3A^4TgtsejH?pJo?vGrcZtw2ZG@hXT()*{9S1oETPfSy%h-gqi##@s zU+D8Zw$_9X+vC?Ron)t@1Y?EbW$!H3dey3vj#`Kpej0?KTJ``R-nmedN&wO1ee<{K z7e9XRo>iA_nflqWpJN-t{w!9uG2z*R-sqg1WwuL3s09`bQ`b?&dj#>|WFu3+(~aqT z7<`5VSR>t5X&MF4M!JU?jR09F-rb~buLyA6#Cd|)DS6MTLTQOEPKR;BWH&)Y@K6lb z%#_+$6p0F+LLQVq+)l&ZR5M%LIp~Q|U91C^b3cVhFJ%bdjy)3uT)Mtbc6V zb)F6(x`2LpN?em7t%|>P#pKkD>>ky4pnLb&s>kBSf9Qg{0zyTphiKlQ<+3Sw19%p4g&->=ycV78ogv8D|L#Kop@Vqwp z(;Xh!f(DLaVt@KzFLkwbxGeMrv%Kw#M=ri~IeFC&*H88S@sCI6H+qWF7Z#-#EiWo~ z>FMEFpFQ;6vlF&$n6zL%+bKr|CgTWU5j-7cF9!lgYM$RX_BSl!DDsS~KMJS}O3+#C z;w)3}t9izv>hwyZkTKPg`!aW@@nq*Cw}+5^Lr|lV(jH4#qz6i;sRT7h)-)<6IzD^m zglQt=kED~s>wY}R-(=8gDkIj^yndl?+INzFY(#*5$a)&26tqMZ8q)fi{XlV^9CS~9 z(H+AMa`l%cEU&QWY$M7REjGM-^8t;=H8&Ni(qNromMwW=^J)$A&oR7w=iYfr?I~B% zZ}DN8VcjeuZoj5KMX zQuM1#GUY-&`u6+pzOcgae{|!QEmyCYAEsU^lJ?ZrzA-ax-lQ!B#Ys0LyHKr5^&Lc% zcqrR7ELx{;L)HfHEmN*uU9zPv`K4Dr1xwzGfOKpVfz5ob=}?bY;2M#nZ4*T#aVN(lA#S!WPn zL2RVPqC+TS_)W!2Q(ifNrms-w^gR3kI6`u?lmwb<9AvKc}$rQW_%b<1%ACLT%CHXsEsM zN6~;G0n;OObE!Blg0a2PiPU?7R=fgvzGU~#B>4L1mu4QQZrsUl%O11E%Up5~4 z_p~v=bj?-t|JXc#>bvQep7(rj^=&$J`NMCmd5aW78;|%v%a$W&^TBB3S&BDEDwojs z31|&#c@zuP#o=5`MOaYvPK!uO06P0V1$M=YApg6a;6ybW;;T|Y? z)S1=|9f76!Wnv(YXrkJr(zwg=LHycs!5OjTnO#|vb8OXX3y0jr58ASvT)g>PM)KxC z8E}bn+!5r9uq-H9l^`rhHlhtP&Qx?ksBFArCU2V(bJ~9>xgpL#L_PIaXl_xY9o@%+ zETxEQv_#$jPjHN)TP4$R_>)^(7743U>-1Y;;yBx!x;~$a?A`*O`;r%F@nR7tfVK}~A{K($|3@Poo#^*KS9YXfq|UGM$wX7$;zf>N&6 z{`t%G*I1`j+F!4MsVl!OaDP4emaK2?nx3U`w#wo~GEV$88kFo`YRVx^27~%L=PQM^ zCYhQn1rhf01n^3ROC5b>{OYKi%|0TdLr^N%w{4=`-c$7)q000%6Ro}r3oL@&?Fp5jfZcDIPz2;gH!qU{PNKz8Fyb-J1}ml zS>_?fLvSo>jlqP#ne%Z{cRq7ZhIg~;bPzH6ceJQpk7qc>_V}k5@ zo`#b{sm~f^UC=={NK(?VMt($x{Po!W;vSeOZTi5-DQJa(}&RVUn zy*1njfn-zo6Qc~j=ynO!ngKR>@37PFG=9D~3LT?ytRl};X}}*gbx_?}*{RXT3qOKh zYfzEzdl-#8Y$1rU0R>UrtyCJj5#sT+R|_7^>b#+DQTC_#8DqcJZd8P4%GLkt>#n}` zx(~g*C-y0Ew&mM~jpBi}6HeV7r%=}dtI%0i+?c1<8DzPsszfQqSuw`c*hDU!$EvHM z4gljY{`if&TfMV0nOo&)>j- zC_*-Eq;g?HX+bkh5B6-!lYG0Nt#q@;zF@*gB@O21Y` z$Qu|o%VT-5NsAm(D&o(|)`i#y`+bPB{_(o&;~B4w`O5*JEjOaT-Pb*LLG{sni4=(2 z6~0mAVsh==cQSPn1%Pz?j53rdZF0eEg4eAPckjv#5rmdO!nD-79M56fAe;*}M;p;g zC-owFNtrOk10$|u*h=CyhDPAc-!c)1(x{}h*#=WW(+WQ2QNqBi+rEfq)o;(2rR5cY z7KRtM#(ekU!iG&n_0xp5_QyI6RGU);h2Zixv0>|vwWEtV^k(*g(jjtRy7U>dd;Ctj}xH;=VM)K^&4^0V2kFP4+;xo023Dnr@|zsl{X2!XOhx44&z4ct*i!sP6=@? z(b8P3@|Lri2c^^e=JXZL+^t=GDX6JSjkD<@PUnarJHGp%>c*h4$Iifq#0?LA&5A)T zE>_&1CT*fOB&9$=*5gGo%EB4Uxo_a(`o)@iM}Bi}c5K#gOVElm483Hl&dKR1<6B`< zQ>!9^X@(Ui`kt2q4a24bM3{8OHo*}P7&ikJH<=xxqvbk@2YmawOOI&kr$KE^W?S^@ zd^TAn#y7-`;@sCISuK4&2NwjVx`h@wgbs9W2~$@#dKqJ@Rz1^$>^sSpwjd)p2jKFK zTe$%oXEka^oo9Gm`(r2erEfjHtY=nQywEy@gZ09x@PAb0Gy!8-8ul%(9$->2R|P{s z5?N=My^4N>46w^_{Dv!Y+VQAw{p>cMeVM;m zW)|#3ok#UNtDnr0LRLv^&moA3jd^b4uo1&>f6}9!bo$Jm_`4<vv4_A4Vs(R^^P)L@O>nRoo_xDc+eJ@e7lj?opa~SD!uUjkGEm{Kn*i&2H#cDHTDG z$agF04?J)||2XY}`sEAuZSloa&`94?X98PF&0A7i=e>W(>G8Siw-wJfI8- zq)1y`eia8Am_z|u$HA{vE?KQ1r_Nd((x_(Ld-ust_kL9HEAEIM z;oLPL(r{X7=d7{b_wYY!p0XT_DlgG(Sy$R*Xl#HxOX5oKKpurcR~;T3^~u|!=`@R$ zFcKJP^?8x@I=;$Ab&1pQgqXpIbk?=5(M6q zu2kVun#r7Eeexu|i+kBhS77pr_wh!t+bI44E&jt0G+vIL(eJ}YtS$X^U7{XXktL5J z*$kD2_n1w=ky%r=$Y(gGvkUsLc>D2=L@)XJjD`tMkH(~$!yahDUytWGPh>*OFNcac<>|plWGSrZuN>!*a9-N zYI73n_0+rxU(8JF^`;`WLa5#MQ@f60B@_=bZ?q&Xb-&HnuUMdjC-Dpj6<6!dDiO+=u?zShVve1p)`a^?t6L>J=YOrEB*-oTJ& z0tApq%TBUZ3O(3Kd+$k&a%9I~C!DafZtV(-##qUmd$brm9Fw24UaN7l3iE#G40U=( z`xQQQ%9EKI6HIj!DQrIX&Mh-{ZCpQnnyzA6<%YE%hI@OH-uu_p9s#q=cMo_ro(sqm zk$D98pHQ?CiXb*KoyJYOoekN>#J_%6*3w^Gj%o+Ljv|u6`IEIKy-`8}gfnhUlUCi> zq%GIfEhyceT%XOlQqFLU9>l*tT*JA{&7q|H)t44H4v$M;8xxD5*Y9)&{Sj@fC%j^( z2#7?hjqf1_dF67RfEiT7=v8?P9lMPZ&9JsQy}uaUps@AYlcxEf8*%XBsf?V;KPBs} ze1!&UYWnu}{8q=Z3zt4x{!_Q(sdC~{13dAaDvO{$Qo#eSCe}vDJnEnJhfM@`M{9(F~p{IBxTzEd5%!jNM zB8n`1XV!iESo|pw^Rba-riQ4oGd@{v8hZc#oCQU{o&_tOcsMf!`Dx#rw?3Qm+FSK+ z{;u-b{HadKZNx621grYOmJ&WWI?Lu-0pN~+82`l?)CFU-VWSI&voQJ*Mie`OW#six zIMnq7ncrD!I3rs)J7so(mg2_JLBPNXW-H-}TfOW*q~dXp4upc^P9Zz*PZP6xYhImp z8%Ex@i8$K20J2i~-b#%*kw`^P?!~cTV zR0(ApNl23Fs*ZcYG)S6JMHst|GU^beS6|90z< zYa8#BTBjg|e9iNpxnb9^=R~By$A)e~PwqdMrgH_Dy^1-5F!CJA*9nV}nm`mpO&<2X zL;$O!f)AXN&#AM8R^L7RsijBjj=yrxp?e8_*IJB?wiM?}2 zOMI&!9xYc4Dn>!US>QA1z~4?2aI$!$B0?IIq2yq9Svv4OdyO6C_fbd-F|c{gl}mo^y_v-~Yi&Cx?iYxBVX?;@>v( zt!LZQ)@=Vab`Nc@%IerW4`U!UMm=x+0HA0|<%G1yrcC!=DIXFkEi0*&QR>_sqJ3Z9^E(#ZtzwTc zIQVg8jUTuNOo^sw;f*BlF`~5PEOCEAglVS33OIw}lX48Kfu31yb5q$CJYa75%H%5Y zh*ds50<0hT-vWpRResruotoj9G=zd?m)l*<%ih0B^hX8!UCNx_gXD5;1@ zjXue@uK3p-5A=4wH>l%q%9lB&*fL|ZCF=ONhS_7rKjeGj`c+>RjT}b*^>$1uT0Spk z^cHm$;#(dSjn*kxG`*95csCZj9V#5N+=cxo3whr+*b6?lciGR{-qO^ezB*%PLl zLrDSNL{kPOV!?Fh*J)ZSB4kBd5Etv;G+X8896|lj3%0%DEu2wXqc)9F88{RV`R-3n9Y6i$jj!lDk1l_&s_687N5kA* zRW}f}S65%ajxoD6=Pvk{cS`2Lusl@v;fI1C3&Qf}tjXRC`26ZAl4(EnO@6RQWzHDDI+UPO>H_2>Nc!D7`l|2 zVd|xXE)Yjmy{t->lV+GL21p+4XiF#L!HxFXC(BG8yrla=2VE4E(m~k8&hO__gmqDuk$YDOtxkh|$_~f0Q-ujQ9lR6jf+c>J{clQ@X z56}(Nl%cRQiHCYLIPQff6tOopfuL~w3Y*aq&%i^5fz~G(?Hh+}k1++DOa?3=+5luT zY8_HLyOE%gc0d=bH7t>bf?JZRQ%QRoj+xx{a@SroM^3&=FRZggLR8+3ZVaSdo_N-0 zIQ-16wTbUMl%QLZ`tqgeDA~FdM~T2h72%_dYojqv5Q`SAHm8KMIXz-)89VDy60-D= z9i!d3Vf&qQquJLUCy}VDsd>|Y+Jl{14QtI7lE&=j)3qRv!SvXs_m@$wO1(ftmxyy@ zSUAtRIX6Iht4W2M74Rj3;v%pl_4v3NYlTaNU3eQp^L^Rz z7pE@kJ$3)4OHcpp%H#1-rueh@qS;(sqH?EMg-s_L{H8Q;FpcB#zU(rMDim}PL1*C@ zbMcX_C?J2F`xW;DpQjYS&(~8&p{-|2eaX-^eyPE7M7R?Y5L<;&gerKL(tU?PoJ9p# zgh@Si@387!H{P5eej0Q+W5$&kzwWM=Rt>(EkddkCyf16qit#(&zVhbQ37^;>UHbeN zn^wO+ZPJoiH*jtsb!zo4t7tMyCVx6zqIQQa+kCoB74RlU)2Lb10gT5`c$^fkN!gl* z=HJrhyo&?oN_^_Ng#_o9@W_V_r5!1@bDi_gBC8?XhK?FIm}J!f$m9GNWZ*a@URb@4 z15+R{Rl0xuaiMg7$w;|&>5xRNTGmfA#$r5#@y_c;F{O^CYE$y~l%@hFh-GV=06w&E zEm^20rdBuD|~Zm2?Ws*XCq5`N3KrXp&6ZY`~x|l^7t%)Vw*+^aEQ!l zjI-8I45Vk+RDSpom73)h6>QCBV=KQ&X+j_k5E^#@BA9GGNK_asoJVA;HSEJ`@+?0zS& zw8_H}9Wr{-_=>K&l(>2oLf>|IV6}Mi!MhyNibLwY>*rp&@16h1ZtuM&yDj?s#N98x zd&l;^Gq+EDWPSW#tz=gA3YM~RU0U0x;}ff6{p|2vso`oIf0`U#aE1{=vm$loO%LAw zLG-wtBV)5ae?)F`qz_WZ2CTxmd_vz(Cjm=*&NnQGP)#NtrC(ZxI)|ZAg zb#86%orIW3kPr}qaoB+XqNo8eVnq!RX%L*-qNp_(1ks=%R>3iWpde7gP=um5YkjQ> zA~;q9VuT7(hhi)$iWb|VBE@<9?#J5q?T_y|*XcQJRWdw#J!{?T9yFAaBA(v_3xc*J z6%GSked;rb(qx;rpumRZO}WunyuqdE? zCrp;IKq0*m#D8P!XN z%LR5qIQge04^gORaK{-1Q~}3I;RcYnWd&l52yi*YJjqwmcu`}(k3+g*Lr+!Y{B!6D zA;roP=KAOzu|Pzv)CcLIg!XlSKM3VUnISfm(7{$D`H8)ypzGT)Nc1fh?R06nmma6n z8j%`a&65MuSDO%KtrMy$B_dz38GC{qly-q0RAQW$NC`EnE(|LX&?9iwYS56fSxR(( zG?xbGTN)_FACxXE0m+6E%V~Z$X$La&9PBOY{?Xcu*UlYHSQ-V6XsL8j0&F ztCLT<-*?&t>ZR>}M%!JV`qNErYad>y8FgCq+uoL&NuBA|9oaLTb~Ez2o=`nv(^AB5 zONR6`542{es3{CA-SL+p!zeCeS0rz-Vr$#-_SRLBLOk%;t+geYZwBoR<6IM7SiZ8~ z>WdYpTQ82@`1$Ck+#}ghi-dtx9maN;Nqqd8@!)1bkEvV~;-NOgWzhy3G1ZK{7p9_; z{#t@6VT$7vb|Xsl`b0zwWgtEmKF}aM$x1e33k;?cD9haq;7mcYh3pby$_69d-AdnF zsy14NgkR)CM3)p3CFR-rwpSt?Qf?=;Q+Q z=2+h<9$RCC+K``1*M@*QRQ(euPR2!K126|Ao_yilHltghZ%c}!XfmC`x8AUQc@j=BNdt+h# z3)AJ1SZ!f;Jzfo;D)3qog^l@oVdTwHGldRxb195(k`>Tj2zbU)Z2t*JL%}i=dnO_? z5e?0UBQ{@Hm~Z_#*OS&IFu^zhMa9mx!ZAe;S%rT$4@nOysc_^ zLaa`o+j}V55)~sJ3}CTt=AQe#cH8@BSCfB>d+}uN;WtN4S6>X+Sl|}L##i|O(;22Q zfkuhm+BOX|GdLM)hSy7)rY*J!AMCJz^nL!mpec&Mu zHdw<(c2Xo|Bu1WCIjV0?=3?89LxCjLW;M7)A!>%D)lu5aK?rf}$;t|ZTty?p!-4e_ zT2qd`0ip+(wRj7w^#TV|Y*V|#l^};o5|D{o8%?aDK*iy$VyTP>XoPwQ z9mGm>vVd?Y0ruMfP+ts#@Fl78XwSsilUe5B>l;~PHvFGA^E%H@VlKntHRncn+viwT zb*%n5Gjpl!VrEwB5gvrc_s@CnP%TaIKVwYr0UARjTwYy!bF^;IgiXk5AwG zdTm?y`}DKx{=U_xd3OAx;l*(3iH%UGc{Y+vmr>2OmmWRtbUgd?^B~U97e_YDTeB=3 z+yFN|o5vz*8pINsD1?8Cs&S8d7~>+K)s}$^lfsEId(4N&18}@10Tfk z8YAV#=P2wy9#=rh&KAV4!4Q1>yy5VLy|>wjmoD559|28jpl>+3A~~`H)tXsccB~1wF35wRF+KJK z(NW2}B6Q~0dMu1zwygG=$H_nNMkpHp4%!k=c*v6|J*MPy7OPus)V>_X2a+8?rXA46qN*2&8MdTR>cBC$!U)S3&sWrZ!0_pM8TR!B9;iN#&^i^1$_!C zv^MN7;&kjPHXI2BVs`93ze=?yh!8urHP#y6y>lBf`{upYw9!56H&65Weo6h86L_;+ zg$7=HJlKg~hmj*5&F0l7I^;r&cpS;#2B^c((a9m;#x~eyGv5JIX{sG?+Pq}vV%#iJ z;L&0w2eUpIxv*vt_2}{30ls0;rI4Hv(Ke}Bk7J;up(M>RU>H6cV-DhVA*F732P8-< z(P1$nM|%%~eNsQ?7v&g{;0T1~!v_lyJz#4L?i*5Ao|DJCbt!%_@=Qm?W5@7!D;)lH zfm_$@-vJgur*YF4tqHob^{At_PHD7LYDAdi9Yr$eU8K5_OsbTaHRL8$1}R-1Qdy4C znG;JovsS$<+x9x{@t9R+B%ViY@vt=gFkW+ci(12Mol#vFS?GV}r}HOlyS=^C{~f#I ztzzHQKkF1y8?2pRX_RTBqR>VcR|S}Ofvl_7UiP}7uIB0b4d7I4oFYA!v_%c73UF&B zq!n6!x;tB7 z(co_2RK7yOC1i-iEf!8Gxs;0p2n?-9OF%|`3g!|dv zlolS%Gx|_4vmr1bR?tFJ5t;x7@kksa>|_f?UwurZT}gftcLreKbOifl8I>YEf8rK6;1(B=uKNvV_xlxzjW z5Fgc>co^B}q&$rBNFS-2f5i^#8EVzpb6a8{m#f6(9fkmn2!&dJQ5gTIUf^&_>oL;5t^5dGl_4XHh$>0;`XTvh!=|L z^SR&}$PSp#Suz9FovLtdlO&cTTo@hj?9UaQKYV_>`tsxPU(g(SH#WI{)RY^K|5%Z+ z-yNE)i|{dlZjxrg_)}%FbY8qXtF9+F?YI`nMR8+N5FgQzqg@P=ffUr1Z&)A;?HNX@z&dq@l{$+BEE!y``iLxpz5hxC}6D|@}z zI{NeC;0a!cnfr0Q!FKbIgvMJd65l<$-no6&VolSEtb6G=aDifkqre}5HqvrPU7&a6 z%FG%}UozO^py>wMtN^~p1l8)*sdB>taR|B~fiiwPn-2qRb3k4;4K6e$z#sI*fwMgV zbAulFuXr3#In}|cW|`69rP3rE8}2E#*x2A?Lw@PT7l@Y5lL00T2SpOb6CYOMDL}{D zwS~x2$F|y(V^%C+%3SO2f00v3zue0H7j_5DtK;)e=;_aS+h#wl{rpfz(qD7OdhfiM z(!FweP*rWAt9l$Iy{uoB5=eaVP+w>z%o$W1bc(ok@93VE+Z7zhnfv=v0;`RcY6CER zY@{i^8cHwJi4(9NR5*(P0C73e0qy{5m0oEJJV3Z0z-nf)hZf7eOhAeZXp3q%ds8&A zsl)?C!Z)KpI!oW4Z=bSVUKG%hF(rYg~LCY5g9J@I0&$I+%j-4Pee7cej9nrrcd zC#J=Lgb3|;F6N*IQPNJ9SI}p%gXt+KUIZM%7y|HJY*Gfp#)BKel^4)h&nX#@%4AZc zs%H5F^We-4Z^=p8?aTT?@${s|GvK?>Q*VHHL`x)OLSLxYC-i~va9h>;_wM~(J=sup zqD-^U(ZN7VZz#Y){%8tA`cHjX77#cwS#*@bSzupZ?DOWM76przr*J@Aqp;he1-WLZ zPTt&@U7+`dAd@%~M~-6zQ2=fh-e>I5Lvp7Qye_f}V-iU|{lPA4!W6pq0^T zGqmHb*$rv_7i1+2fq$JTd*lktG3zQ9Kl+T;>H4hWY`l7jtB6fia$;#ydck@>7-he! z>B8;FLD`hETshE}@MpOCIHV1z>i@Q`rSsT_Cjx{LTPBs}aAeC*4NC>e&5-q}qC_u|1$`_U&I#T#T7guk+Sy)z9 z=+iOkb%d8xR$8Su94)I-Sm5Mmr;uqM+aei+9ZBnb_wx9QezR~IG(+5UOvW7&vZH)^380Vgtm{PpD|w1T!nqdKa^P-9cjlZW7$m%$_ys(+FK5A7aQ5F>9;16(1J z;cDYq8s+JD3m8ObYVu&mU2q}{)*QW{2mub-7*)+EXFxPrVBmO;`D)KZ>g&hK{{V1r z96tWdyU$-fY;3EtZ##0s@-WhLA+e7@olCPhZH6sigprgwkb)H4DA-V~Rq63!u!phk zEslF~f8R|@|Mzt*(-$_bZo0Z92-)6&(g}7a4^3MnRjGl6%2a_<8I4c-$bjC*?;Xkv z`tzgx8OW=)Y`B|kJFen&hVk!Ri|>sz5}HdF~YbB5gsg{A9h4d#x;QR z4&x;>rAn?K7(-JaL?~#5sXT>Mlf#Fc729truPA@og6T_}hdrLRWW}cJ@%G{vR~jqq z!i&BV>(la)r%t`Ox#GR+tXZ>;Hp#*2lJY~4dZ|dIIH2lqSu$8!Qpgp=a0j^t+@Hnp zFLIK4BZ3)0o=SDA!MhF%J6IZfakyr%sjQlQNLL@_HHWHtbnI5c-+!b>46;BG^fAxS z1V>Mt7!%p5&WHY*gTx??8X7GRBPU3YMh99;tg(vmxq{CDK+erOk{EuV-A0NnWP@-X zAmWH5=b36nq*ST!oo2cew(Tic@9+Piq5tEV%KPMp+oRIGPJg$GKjq}>C+1NmFR4yv zTl^pz8sbQRgA9l)Ug;^8?(bu>t#g(>w0cZ09x#vspYvM8 zpA*K9|3NQv4Kk+7rBn1O=JE$RQjaoEN(giA}UT7|d?M zZu!T>Kgy|ES?;p0CRPqmR07gtY87wAIYGElEf!*cwWK^ZVTy-6eiOhiG#!6QDcFUpC~--D8&Vo@w_h6B?Ej=pr_XJy$T@$)

6bb>0;M{-VHK@(W>#sgUoAuhx&MgOMOU>Q!rH1e^r*&dK_sYnVK!w$N{-DQEngpW!JwDlV4rY0(-!x zMmXFjV5=?21U(Cmn%falFTeiU#@~G7jSagkY7Cb12sR7`hQ>0l&^!|S0I6z+bLvu1 zi$eSHv9%e%>tdWEEF`ZBwD2Avv*^z?lXJUDgkTwy#DI3WgH_IFeT^uijcM1nC8a6QAl^-W#(M6EC4byOY&yyC$aQ?Y;(AY{fO=u}X#1Af_t6l~BW=Lu1qNY^4sN zKr6VN)py;jpwrBlGXMrj$a)_Y*AA`k#0@-0E(wN+$h&**-O<+q=(MS00ZyBk*=y0qE9yBE;2K$k9x){Kvz9Of_(jFs9%y0*YB2GZ@^(sFZTbb_%9 z?ftn)3B#la6@Qj(nwI`ttQNAI6tO~?&8+1zU%nBLs>FJEC*5NJUhCgZ8OJI9%JWm;Nbzzlv(8!mH!1@g;40g0y$I0TCPJa9F zXCz$Q_i{j97WXt9n42DZH(>wm>Dl?!S%HqTURrr=vaI-ec+>K($9xMgD{xfoyhjB5 z#CL;1Mxxu|!+QMe8fck#cyu!C3~0Q=1o_XHk-!vJq-t_@a=OmQy=Tx+J4L6 z@Yt&TX7PHVfbk+feQfc$1u`RFP4-h5zRUhV4j8U7{dcyxz(OL6;dg|HGahLoUl|~n zA*QY(@N;!zM5%yos2YY~SIi+ynXOoupV5*K-HY7LtiPm*9kYnb%L`~6d>^wJjt2x4 zBh{`FX1wCt=K9GyNqy_dNALP(9i`lZIfV^>9tS2Thpyb(zU3}d{Qct-(*Z@Rc+}Lq za82vDo&l&Ju%c5l69nvIH5h{;VTgoOnDL51#}Fh63H-DI zDu`Gg&^U@(FOXwIpYDi2Hm=r%UBX=6#fmSO=OWg%DrP<06cgINwUS0Irk-Gm`d0vbF!9GZmkC%|v60h}BV zj91=C79fj!L5=T}!#<0|nqy-lO$>uN>JKWj8p)N2C=nfion{NLt+~Xayjf%d6>Kj0 z*~XOL4j4i!o`ohXGo<8F!TGL$*!T_sJ|eaqQ7n%m%cawv%4{ZZxXP>U+7O`ll2;Fq z^w-PSKyWEITrPhO2YPyTeVl=JO*@k6rqQjhF8pypkS(&Hw^GLld14~!u0T^o zwvyXw4>S1o(NEpm_{!HGi^{6mE!Fz~9qAp_KRGbcoLg8TX-y~#*vY_SM>XP}L8Qx~ za7zqhF;sv?dsKt3%FMsVZjCG8m?rJBH`Fhmz zx&bsk{rRTC#nE|9d)v>Kk~0v_Cai5D0)w{xf-->1CGPci8BPnSpVo(C@GQz?E)_1a zcy$Wyp&wL*u1gPHe8iM_J2SCBS0X$UUGa^^vZSn4XwFP~7%8p_uU>qQ64Zi1_1zPO z(%=busEuELL}Z&MCMPE)SfwOh%t_{=XithaRf%Vr1{T>sLH$$nm^aK z?}~jp_Z>VkHGHg^E6pSq!nFv1AK8Sr43yGqYjr0`}!fSfc^tloN zP>j}JgoO|ZJOVgv`(a6`xrh+J&##L+DNz)f&E=(e`u;4GvP`uj7H{#t76DO6!Y!vk znh=-Y`iDS_v4J44p@@>;7b(;O_}*~!oyARQ%ACbh&{a#=kh+S@EjYKGuvb9jZ};sz zbn(vq%a2Tr9KT=$L2_}OBjxF7IAEp3wI(KpUrGi4|l3wFKmmr_M5<_q# zQLgsSdw2Ka6Glr2(D`kCFKZY`%!VmSMA}XvBi-ONJ2W}OP`c9x3=d_ zBk0CUojIflhYVED$vp=4a7DTn3Fc1X!6NU|X|V7O^b4bS$e3 zP9J3oZw&k?RN&bv+pFVmQE3*Lu8J*<7$`K~)pM+__yT45qjT-c|99Y9_nt8Ld~@|5 z;e7k9XZ?F7MhD+IzqoQcYIPT*@2jJn!6z`SgR{&CJoxYvF&F=`7eBXg*`<4{O+MC7 z)mvNl20~&ijDrXOBn!T__z5=dAq2R@yrI=vAe-peGI*|+Mm zCfFG$jYT#sjgJqRx(=?(iXW~jy0>_*1i&r?fGsf_vXr(wgL$U~7iODF3v#&ocElJT^tevu0ZH04R|Ju$5PpUX>dcn}Dp!Za(_TgO5gKz3Pg~8~uCP zooIT{;F^Co3h@@*3WY(qP@#hkVOD>#qFx(3%`U%Tju3Nooh>Q>(Sl3U-#p8N=VoU@ z+Ym%n7S((QCLOTTnzCyG0zA<3d6K2T)6>)8H#%|_pgmcG7GRbvp_nv%4__YkVqXv` zkY0Qj;H-QQaUt)2O0IOENp;=h_gPyIe@i6|$ zj=WjUAlSh^{_bd<&FvTqe7^C`Z#M=9hhl9)Utcd#3@b)fY1tpMimsd+C%u_AsO=a z@u|-8)jzu|3b_=B{)Nn*0$2#Ca5f8%&t-GcJ9_sXYEF(Ey*nap(o25fCN2Drve<$M z7q#rvi4*^}t-a&dX@Og82x=`?vjVov)V`|vq}q9UXo6L7%z0B24N#>XWIFKfd+uk% zf0~U$-5BZE*EnHf))~*2M=PF zeE%icdZ#K;(SQz>+>&vNfkkHqPM;o(I&KYjZvM=f0YIQ&Qd=-K!K(eX=-gv+psGFQ z=UN7x>kV|kh&(WXHaSfYYA%KK3gRm9{y)n+Sx% zOSGqRlp%Ho#(OOAt9WA^{|Dc>yYkYnwCw5D9;$aElZ0D@c!~5GFa0f9#*0`G)4VyG z!6>$-%v!e`fAsLC)dZ>)6Tyda`3rD>T1E9tA@IQifA|~kJn_z+uI?TGcozU28O}gC+jst4CM>2uj%tMg+9E9-b>Dk@z7;*dLIlyT+&L}$P`f;|*ZS7kq zGT(1vqQyNrP!czC3LhT*GsXJ`Le;y8Q%ps9Os1=fB;o3@if33`Y%3gnAs*sL%q^_3{b;X}dD;s^=bz z1x0EEs^M;^aci%Gb!KE*oYASa33yvq7a)y|PXIdB)AO!?F^!;|o128rJe7XY9eAy| z8LR=F#$H@}!e-@TokxRezcEs!AUjh0st0 zY;-Pe;-Hf_;tT;$l>sSm#g$jS0g1RdT^R%TA^&dgeeZjN!tJ-;zKU(V&t7-kb)3$- z_0_cO&Beu7-DlOcMj`;>*PNYUu#O5Oer(O11zQsixW!j6Bu7ZY2niAX5+dCwDIgt^ zPC`;TMu#90f^w6>r0eB(uz)7s~gD^HsX zf=JjzK4B5Lg^f_y*{`+D@Oq}GQysx6>VXPLqj6olhY&|If7yxXh2#6mT3CUIi+hvE zSEa+^!Q#Hj$rsPAYqA`c+?6aX3uxtn!EYNv7#c5@Y(Ko*7L7)_k+ zk&$pvvNKB_7SW z{r1-!cjMXfMQ*kw$cDHV_EM_Qy~W=NQ4m@^UX(+*0PM^ml@=P+G@0`F8w9pCz1x|g zyI8u|NM0h>xT~wlHQ>LO4(bLAnVgg)eO|o%AU(>SbBLa|_n4!%D0zNd{TnShZoNUt zrU??L{fdE0@oBK-_7pJz_tC{5Pdf3b>y_2L3CORKkvM05&)HE`Ew8Rv zt_+>gjwQD+Whb&33&sABLx|<$r)^w-3e%G9^;WODOQ_CvX z;`+L#ftc3Yx{3-xMcKy`qwEsXwQp0pWS~Tm8+~>!4K3!5xPpVD;YBH&=}1!p6N?VF zv3-?UVvW$4t9wrBo~U6dG6)GhS|c{(7ik}NqW(~eZ1alK-)%My+ZhubJjvEo`-%U3 z+j8Fy5;KaQ0q>2X2&uqDiLYNV3^qDI!;8_z$*10nZz{uem+(L8nV0w0 zB!Dm<0lDM?QMvu^ z#p!lbsQ~dd1x3)LvSn$j|9x-NOxtyzbqXI&w0{`R04a#8G!^8tHt^^t{ztqy$A;1J z60d^lZn$hWjsVtc5CW5V9rz7S8~m9Lkl>Y)MVh{|-c-G09A#VShWjHDs1O4n;l%w3 z8vjeX)4qHtfn8XEhB4dn&Hd*18Q4tD`M7KprmrOK7&2+F{cP_`2*SdJqyf18r$;pD z8nxqU>s!G|g;NLlJ%|pL1kD1qA;IpHF0afi+bKCF`UKlrMC17c11#wVtzgp!lFom} z2E*%=9-JugVgDwu)TfnUdzH}{5BmjYj{eBG8+()A%T$peH3b|fpQ}_;5ghauL-ep`CN=8yIl=);fvZL; zifd+~yHhm#rxwC*(c0VKxH!CZ8)<@+TOZmqS(t6E6=HdP5whOy?R~)nm~GaxffSf{ zsOQiR)EQSg=f`?`ML-$B`V{^dxaw}5Ehk!zWY}kRnBwlZ=;FWfx2$!_BHJeW1%ES~ z6_oL+LXO_M$HIYoz8yThKg6iS_?p2BJ7=)da*313Z-A+^V z=s48$aHW_nZz1WUwZW`>_SUuzRIHP}J!qH+m(!E+ziyQaxF-cGVz_Bi=uJx6PPf`dUDN#!RN^_(=+3FwLpt z7Guli?E4F>%tmXm<5{EqPRy)o=>3{r+mT1He0%T8ya`}5HBLuu-oQ-d$Q2K0WMkX# zcq-oKb68kLL!`_DoXZeJXL5|}16&8%fHQacb67tB5X1*;1W znnyRm>x#R{lKezVQ5|R`_@?cu1MM$raWzj(M`IpOvao@Z+>!VWApWD5?RPBI(u%eY z9hH0+E5EwajtX-w9G&~(_UgHo{6BYtf7PS|YLa9t`FYs^Z>O2)=lX<-pNHyEih*RQ zA@LYP8!~Py`fPHoSibS*KsC*E!(ZWPTKG}Z9^1Xx+}xO@+d|tW#`ppAN7${q4c3r{fLweE7^GC&tJSZRU!w za89hGdWy}8$j(+03!YS5 zV03JltaH3Zb@V4DdFu4yQV`n({-No6ggZv~D%mfPF3rho1unkpDV@N3a5-(pEY1~r zhh_PXDtL6zrbdfHy~miyFzK{~{mt}l*uQTRPO0nbbNe za1wr7bMvFJd=>!fkGn)6Od#Ulx2`{K_yHx{o;|fdN$rD9@*kXLE-zV8xTJ5$40yXN zv^VI*?>f4s$Cjy)m$k}&PKK^VdvEbXoGyG#eSK@^jwJ1FTRrDQJ|%W#GSc?9Nx7`& z5dGCPMd9Oz7TxIRG^*V!U!73TL1TMt+^fFNYWc%J?w@V-By<`7gxF4>L3{waPpbuj zu4oH+qHk$wXkM~b>-LX%Ed6;etvIrWR*eR(j>w!WEsEW&O+|J+lj|v1gdD`3blzW; zM@w*z@Q*v_`#DZol(JC6skUW#d-Se8N-?#9FLJb~-R!S_j}K@7i$l)ZWy5^F7WS2l zD6AYwy{|=QC7&Z*6QVsO{pSB&7U;Df=Vuuk(EIa11F=?R2AS)Bvl{%=pf!6rmWJuxZjD6Xc|wMlcp4v>64lD4Icr>n|@h;lY2=a%&Z8a z6O_&#%B>~K1;AZa67dgD2#A<~lm`ZB;d_kGk-T3s)2|rIa;#ouWV1D|+m@yyF|rJl z+kj*1gs9>6OO_B2jgVf%Is-z~AxSEWCq(2(t0qN3C$63eP8bP#T2Ar#w=*HLHEpM? zOJ#_(6b=a2p`%TOju*cF(eVUkI`2#J|^y%v>seU!$a#1-m zd$*GqX^NI5de-q~7xnR-wE$SlqWKnMP<-K7-*;2UH0#o@dEnzMylbVGEX~duwAH-D zWcW`J9Vq}7?qiwT8L4r-8T#YlI8P$=a2F>$y3dvc{Q>cGY9c;P!_%`+CK)QR(NXVr zA`@OEf~VW|DT@p337!RdKdbJtn+N)G>t(vKzb}7OvlZ!cQG`btC2**bt{PM-n>+#6 ze(zZ~m;1G?$w_Azbu(74dw;gwzb|R`{baG%6ob4U7(MmiH5_&X@HyODBdS)4q}B(+8gCpUq9jC{rHeuK|pD4mR-<> z%Xdv$YqT1lj(<%T8xQI)ucBpkqaCfssoRM)*hLX&Jki!Js8^A#-Pcq!ruh+?v;D9^ z2k{^>B|jSTf7pY*2dB{lZgRd{#FfB6Lv&$YtE9IvnD$Z$-j5bXnSc2+Oz_7!xn6)T zsb9alWy*-UVDLZ96i`=o1-6JMs8e-tI98}*M>gA>)|E@w8-7(6rzr@_c$(Wpq%Ki@ zM$(IT$0fQ()Ppkl#u4hB(S4b%H#?Nch9>pd9l*n4Ir&AZH!4NH6H87tn4N&(;-wfdyAx0NZ!WaouC+g-DlZ-yUtjT zLEhQAO%m*xV1U@<`(7z*&b|BbsN>Ho|5MET4NMGl@kw!jdB@3!16Rc5Nh{B!|ELpM zwOTpGzDG=-H;*hcnecDGn49)ZUNvmW<>o%HIh6$Bpq(JN*9t@3@yl9Mb%claW z!2yw&w(bVTy2GLSf$;3qK~h*s63zM=SI2ImWT;x(2?iRgm#-;LCax4v(q1DPNZp+4 zTYrR7fJbU9jq-ZQ{7Np1kNoua z`|YE$33p8VXT-Q7QfY#41Waze@Y6`_r}v1CSBM;#SCZ=FFw{RMLY_r>cQ(}Tj7ns2 zFuJ{}RpD(`-_#-ze|4aq7E^(7F3h1^r%`hWoxHlYDcXRWnn3!RRcyucI6NOww&1wpbBUjV6^z6SByEb;8zabBjhZ-|ci>v&?R zqHFrIF0cHF^NXxRBcgB05C@1cg@7g`znm-{eT;#YM?JF3> zs@p8i0Q~~+6dkj(xc9(zFJw*_+O*MRFUq>yYX&T_BJA>e&xE0VBfQp}oW1#}4>QgF zb|(xp41E^SVImO^vG!h`7cri0Qqp(MQb9}(3h~mnl}`V~3NWY#j&MmQr#{b-dbb>14U`!pG6t z<{4HhMFOAbW>%JxN_tA2jirnKC*#p~5Yvw^1w7_BE0s*+fY>CcgYj3JQ9xQvP}T{D6IEld7RX3MsiiqOyO!>rwQ2wrVc_b@*9+q+$snVyo z5Pp-MGh)eY6gljM3}TC2U(m#VuyDPyr}w9LHs-|l%r=eI~2LSYDACGMbJ@Sq$M zmOt}`dGtskY7aoeAOU=4ePY#DkB7$uJv<}5&S@j}hzKUH9zz9`94NQ&;bNl6H^jEi zV+1NLW}R)%26irAEKo2Gyp}7lI|R(TUcynCuld;U~fZbnwkYqGfrkGIFOtd zoq1V3IhW2|g1ypGA4;Mi{{Jnz|A;Bp>(X`)bd-&RHU3X@h;iwtKmX8rTZ`U&lhl0= YULBSO>cD9(01v11N=?2()-33M0H{sG`~Uy| literal 0 HcmV?d00001 diff --git a/crates/moonitor-desktop/src/fixtures.rs b/crates/moonitor-desktop/src/fixtures.rs index a8fd306..0c0671f 100644 --- a/crates/moonitor-desktop/src/fixtures.rs +++ b/crates/moonitor-desktop/src/fixtures.rs @@ -8,8 +8,9 @@ use std::{ sync::Arc, time::{Duration, Instant}, }; +pub const TIME_MS: u64 = 1_792_742_400_000; pub fn sample(id: &str) -> HostSnapshot { - let t = 1_792_742_400_000; + let t = TIME_MS; HostSnapshot { schema_version: SCHEMA_VERSION, node_id: id.into(), @@ -51,7 +52,21 @@ pub fn sample(id: &str) -> HostSnapshot { temperatures: vec![], pressure: vec![], ollama: RuntimeSnapshot { - models: Reading::unavailable(UnavailableReason::NotConfigured), + models: if id == "qa-0" { + Reading::reported( + vec![LoadedModel { + name: "QA model · fixture".into(), + size_bytes: 4 << 30, + gpu_allocation_bytes: None, + context_length: Some(8192), + quantization: Some("QA Q4".into()), + }], + "QA runtime", + t, + ) + } else { + Reading::unavailable(UnavailableReason::NotConfigured) + }, }, battery_percent: Reading::unavailable(UnavailableReason::Unsupported), collector_duration_ms: 1.0, @@ -96,7 +111,26 @@ pub fn fleet(count: usize) -> Vec { } else { None }, - history: Default::default(), + history: if i % 5 < 2 { + (0..60) + .map(|j| moonitor_store::HistoryPoint { + received_at_ms: TIME_MS - (59 - j) * 5_000, + cpu_percent: if (20..25).contains(&j) { + None + } else { + Some((j * 7 % 35) as f64) + }, + memory_percent: Some(50.0), + gpu_percent: if (20..25).contains(&j) { + None + } else { + Some((j * 11 % 70) as f64) + }, + }) + .collect() + } else { + Default::default() + }, } }) .collect() diff --git a/crates/moonitor-desktop/src/main.rs b/crates/moonitor-desktop/src/main.rs index 9c7af5c..93cef90 100644 --- a/crates/moonitor-desktop/src/main.rs +++ b/crates/moonitor-desktop/src/main.rs @@ -67,9 +67,12 @@ fn main() -> Result<()> { } "--node" => selected_node = Some(value()?), "--tab" => tab = value()?, + "--section" => { + display.section = Some(ui::Section::parse(&value()?).context("Unknown section")?) + } "--help" | "-h" => { println!( - "moonitor [--config fleet.toml] [--data-dir PATH]\n [--node ID] [--tab overview|processes|ai|disks|network|history]\n [--screenshot PNG] [--exit-after SECONDS]\n [--size WIDTHxHEIGHT] [--theme light|dark] [--no-scene]" + "moonitor [--config fleet.toml] [--data-dir PATH]\n [--node ID] [--tab overview|compute|sensors|processes|ai|disks|network|history]\n [--section overview|fleet|workloads|energy|events|explore|settings|device]\n [--screenshot PNG] [--exit-after SECONDS]\n [--size WIDTHxHEIGHT] [--theme light|dark] [--no-scene]" ); return Ok(()); } diff --git a/crates/moonitor-desktop/src/scene.rs b/crates/moonitor-desktop/src/scene.rs index 6a8b14f..e47aacf 100644 --- a/crates/moonitor-desktop/src/scene.rs +++ b/crates/moonitor-desktop/src/scene.rs @@ -1139,6 +1139,7 @@ impl iced::widget::canvas::Program for Scene { ) -> Vec { use iced::widget::canvas; let mut frame = canvas::Frame::new(renderer, bounds.size()); + let mut labels: Vec = Vec::new(); let matrix = camera(self.camera, bounds.width / bounds.height, &self.devices); for (i, d) in self.devices.iter().enumerate() { let p = matrix.project_point3( @@ -1153,17 +1154,67 @@ impl iced::widget::canvas::Program for Scene { 0.0, ), ); - let label = if self.devices.len() > 16 { + let label = if self.devices.len() > 8 || bounds.width < 300.0 { format!("{:02}", i + 1) } else { format!("{:02} {}", i + 1, d.label) }; + let width = label.chars().count() as f32 * 5.7 + 14.0; + let x = ((p.x + 1.0) * bounds.width / 2.0) + .clamp(width / 2.0, (bounds.width - width / 2.0).max(width / 2.0)); + let mut y = ((1.0 - p.y) * bounds.height / 2.0 - 12.0) + .clamp(10.0, (bounds.height - 10.0).max(10.0)); + // Separate labels that project close together; never cover another name. + let desired_y = y; + for step in 0..20 { + let shift = if step % 2 == 0 { + step as f32 * 10.0 + } else { + -(step as f32 + 1.0) * 10.0 + }; + let candidate = (desired_y + shift).clamp(10.0, (bounds.height - 10.0).max(10.0)); + let rect = Rectangle { + x: x - width / 2.0 - 2.0, + y: candidate - 10.0, + width: width + 4.0, + height: 20.0, + }; + if labels.iter().all(|other| !rect.intersects(other)) { + y = candidate; + break; + } + } + labels.push(Rectangle { + x: x - width / 2.0 - 2.0, + y: y - 10.0, + width: width + 4.0, + height: 20.0, + }); + let plate = canvas::Path::rounded_rectangle( + iced::Point::new(x - width / 2.0, y - 9.0), + iced::Size::new(width, 18.0), + 4.0.into(), + ); + frame.fill( + &plate, + if self.dark { + iced::Color::from_rgb(0.078, 0.125, 0.102) + } else { + iced::Color::WHITE + }, + ); + let c = d.status.color(); + frame.stroke( + &plate, + canvas::Stroke::default() + .with_width(0.8) + .with_color(iced::Color::from_rgb(c[0], c[1], c[2])), + ); frame.fill_text(canvas::Text { content: label, - position: iced::Point::new( - (p.x + 1.0) * bounds.width / 2.0, - (1.0 - p.y) * bounds.height / 2.0, - ), + position: iced::Point::new(x, y), + font: iced::Font::with_name("Inter"), + align_y: iced::alignment::Vertical::Center, color: if self.dark { iced::Color::from_rgb(0.918, 0.949, 0.925) } else { diff --git a/crates/moonitor-desktop/src/ui.rs b/crates/moonitor-desktop/src/ui.rs index 8a2c764..560f419 100644 --- a/crates/moonitor-desktop/src/ui.rs +++ b/crates/moonitor-desktop/src/ui.rs @@ -44,6 +44,7 @@ pub struct DisplayOptions { pub size: iced::Size, pub dark: bool, pub scene_visible: bool, + pub section: Option

, } impl Default for DisplayOptions { fn default() -> Self { @@ -51,13 +52,37 @@ impl Default for DisplayOptions { size: iced::Size::new(1380.0, 940.0), dark: false, scene_visible: true, + section: None, } } } +fn app_icon() -> Option { + let pixels = image::load_from_memory(include_bytes!("../assets/moonitor-256.png")) + .ok()? + .into_rgba8(); + window::icon::from_rgba(pixels.to_vec(), pixels.width(), pixels.height()).ok() +} +fn brand_icon() -> widget::Image { + static ICON: std::sync::OnceLock = std::sync::OnceLock::new(); + let handle = ICON.get_or_init(|| { + // RGBA handles upload synchronously: the first frame must contain the brand too. + let pixels = image::load_from_memory(include_bytes!("../assets/moonitor-128.png")) + .expect("embedded brand PNG") + .into_rgba8(); + widget::image::Handle::from_rgba(pixels.width(), pixels.height(), pixels.into_raw()) + }); + widget::image(handle.clone()).width(34).height(34) +} fn tone(color: Color, theme: &Theme) -> Color { if !theme.extended_palette().is_dark { return color; } + if color == AMBER { + return Color::from_rgb(0.94, 0.72, 0.40); + } + if color == Color::from_rgb(0.98, 0.94, 0.86) { + return Color::from_rgb(0.20, 0.14, 0.09); + } if color == Color::from_rgb(0.72, 0.25, 0.23) { return Color::from_rgb(0.94, 0.57, 0.53); } @@ -150,6 +175,8 @@ fn app_theme(dark: bool) -> Theme { #[derive(Clone, Copy, Debug, PartialEq)] pub enum Tab { Overview, + Compute, + Sensors, Processes, Ai, Disks, @@ -160,6 +187,8 @@ impl Tab { pub fn parse(s: &str) -> Option { Some(match s { "overview" => Self::Overview, + "compute" => Self::Compute, + "sensors" => Self::Sensors, "processes" => Self::Processes, "ai" => Self::Ai, "disks" => Self::Disks, @@ -170,7 +199,9 @@ impl Tab { } fn label(self) -> &'static str { match self { - Self::Overview => "Panoramica", + Self::Overview => "Summary", + Self::Compute => "Compute", + Self::Sensors => "Sensori", Self::Processes => "Processi", Self::Ai => "AI locale", Self::Disks => "Archiviazione", @@ -178,19 +209,11 @@ impl Tab { Self::History => "Storico", } } - fn icon(self) -> &'static str { - match self { - Self::Overview => "overview", - Self::Processes => "process", - Self::Ai => "ai", - Self::Disks => "disk", - Self::Network => "network", - Self::History => "history", - } - } } -const TABS: [Tab; 6] = [ +const TABS: [Tab; 8] = [ Tab::Overview, + Tab::Compute, + Tab::Sensors, Tab::Ai, Tab::Processes, Tab::Disks, @@ -203,10 +226,13 @@ pub enum Message { CaptureScreenshot, Frame, Select(String), + SwitchNode(String), ToggleScene, Focus(bool), NextNode(i32), Tab(Tab), + Navigate(Section), + Theme(bool), Filter(String), Sort(bool), Orbit(f32), @@ -225,10 +251,12 @@ pub struct App { scene_visible: bool, dark: bool, tab: Tab, + section: Section, filter: String, sort_memory: bool, camera: Camera, started: Instant, + view_time_ms: u64, screenshot: Option, exit_after: Option, window: Option, @@ -256,10 +284,16 @@ pub fn run( dropped_events: 0, pending_samples: Vec::new(), tab, + section: display.section.unwrap_or(if tab == Tab::Overview { + Section::Overview + } else { + Section::Device + }), filter: String::new(), sort_memory: false, camera: Camera::default(), started: Instant::now(), + view_time_ms: now_ms(), screenshot: screenshot.clone(), exit_after, window: None, @@ -268,9 +302,10 @@ pub fn run( App::update, App::view, ) - .title("moonitor") + .title("moonitor · Compute Observatory") .window(window::Settings { size: display.size, + icon: app_icon(), min_size: Some(iced::Size::new(1160.0, 760.0)), position: window::Position::Centered, ..Default::default() @@ -307,8 +342,8 @@ pub fn run( Key::Character(ref c) if modifiers.command() => c .parse::() .ok() - .filter(|i| (1..=6).contains(i)) - .map(|i| Message::Tab(TABS[i - 1])), + .filter(|i| (1..=7).contains(i)) + .map(|i| Message::Navigate(SECTIONS[i - 1])), _ => None, } }), @@ -321,6 +356,9 @@ impl App { fn update(&mut self, message: Message) -> Task { match message { Message::Tick => { + if self._engine.is_some() { + self.view_time_ms = now_ms(); + } if let Some(engine) = &self._engine { let shared = engine.state.lock().unwrap(); if std::env::var_os("MOONITOR_RENDER_DIAGNOSTICS").is_some() { @@ -395,6 +433,7 @@ impl App { Message::Select(id) => { if self.nodes.iter().any(|n| n.config.id == id) { self.selected = Some(id); + self.section = Section::Device; } } Message::ToggleScene => self.scene_visible = !self.scene_visible, @@ -405,6 +444,11 @@ impl App { widget::operation::focus_next() }; } + Message::SwitchNode(id) => { + if self.nodes.iter().any(|n| n.config.id == id) { + self.selected = Some(id); + } + } Message::NextNode(delta) => { if !self.nodes.is_empty() { let current = self @@ -417,7 +461,12 @@ impl App { self.selected = Some(self.nodes[next].config.id.clone()); } } - Message::Tab(tab) => self.tab = tab, + Message::Tab(tab) => { + self.tab = tab; + self.section = Section::Device; + } + Message::Navigate(section) => self.section = section, + Message::Theme(dark) => self.dark = dark, Message::Filter(s) => self.filter = s, Message::Sort(memory) => self.sort_memory = memory, Message::Orbit(dx) => self.camera.yaw += dx, @@ -427,195 +476,40 @@ impl App { Task::none() } fn view(&self) -> Element<'_, Message> { - let fleet = FleetViewModel::new(&self.nodes, self.selected.as_deref(), Instant::now()); - let Some(node) = self - .nodes - .iter() - .find(|n| Some(n.config.id.as_str()) == fleet.selected_id.as_deref()) - else { - return container(column![text("Nessun dispositivo configurato").size(24), text("Aggiungi un nodo local o ssh nel file fleet.toml. I dispositivi senza agente possono essere censiti come unavailable.").size(14)].spacing(16)).padding(32).into(); - }; - let header = row![ - column![ - eyebrow("WORKSPACE / HOMELAB"), - text(self.tab.label()).size(34).font(STRONG) - ] - .spacing(8), - Space::new().width(Fill), - pill( - &format!( - "{} / {} monitorati online · {} censiti", - fleet.online, - fleet.monitored, - fleet.devices.len() - ), - GREEN - ), - text("LOCALE / VPN").size(10).tone(MUTED) - ] - .spacing(20) - .align_y(alignment::Vertical::Center); - let mut body = column![header].spacing(22).width(Fill); - if let Some(error) = &self.storage_error { - body = body.push(notice(&format!("Storico non disponibile: {error}"))); - } - if self.dropped_events > 0 { - body = body.push(notice(&format!( - "Coda di acquisizione piena: {} aggiornamenti scartati", - self.dropped_events - ))); - } - if self.tab == Tab::Overview { - let scene = Scene { - selected: fleet.selected_id.clone(), - devices: fleet.devices.clone(), - dark: self.dark, - camera: self.camera, - }; - let controls = row![ - text("IL TUO HOMELAB").size(10).font(MEDIUM).tone(MUTED), - Space::new().width(Fill), - small_button( - if self.scene_visible { - "Solo elenco" - } else { - "Mostra 3D" - }, - Message::ToggleScene - ), - small_button("−", Message::Zoom(-0.1)), - small_button("+", Message::Zoom(0.1)), - small_button("Ripristina", Message::ResetCamera) - ] - .spacing(6) - .align_y(alignment::Vertical::Center); - let scene_panel = container( - column![ - container(controls).padding([14, 18]), - if self.scene_visible { - Element::from(widget::stack![ - widget::shader(scene.clone()).width(Fill).height(300), - canvas(scene).width(Fill).height(300) - ]) - } else { - Element::from(container(self.scene_list()).height(300).padding(18)) - }, - container( - row![ - text(format!("{:02}", self.nodes.len())) - .font(STRONG) - .size(12) - .tone(GREEN), - text("DISPOSITIVI").size(10).tone(MUTED), - Space::new().width(Fill), - text(if self.scene_visible { - "Trascina per ruotare · clicca per selezionare" - } else { - "Seleziona un dispositivo · elenco sincronizzato" - }) - .size(10) - .tone(MUTED) - ] - .spacing(8) - ) - .padding([10, 18]) - ] - .spacing(0), - ) - .style(|theme| { - themed_panel( - theme, - container::Style { - background: Some(Color::from_rgb(0.95, 0.956, 0.938).into()), - border: Border { - radius: 18.into(), - color: LINE, - width: 1.0, - }, - ..Default::default() - }, - ) - }) - .width(Fill); - body = body.push(row![scene_panel, self.inspector(node)].spacing(16)); - } else { - body = body.push(self.device_strip()).push(self.node_heading(node)); - } - if self.tab == Tab::Overview { - body = body.push(self.device_strip()); - } - body = body.push(self.details(node)); - let main = scrollable(container(body).padding([28, 28]).width(Fill)).height(Fill); - container(row![self.sidebar(), main].spacing(0)) - .style(|theme| { - themed_panel( - theme, - container::Style { - background: Some(BG.into()), - text_color: Some(INK), - ..Default::default() - }, - ) - }) - .width(Fill) - .height(Fill) - .into() + self.workbench_view() } - fn sidebar(&self) -> Element<'_, Message> { - let brand = row![ - canvas(Icon("moon", LIME)).width(28).height(28), - text("moonitor").size(23).font(STRONG).tone(Color::WHITE) - ] - .spacing(8) - .align_y(alignment::Vertical::Center); - let mut nav = column![ - container(brand).padding([8, 0]), - text("PERSONAL OBSERVATORY") - .size(8) - .tone(Color::from_rgb(0.49, 0.60, 0.53)), - Space::new().height(30), - text("MONITORAGGIO") - .size(9) - .tone(Color::from_rgb(0.47, 0.57, 0.51)) - ] - .spacing(10); - for tab in TABS { - let chosen = self.tab == tab; - let color = if chosen { - LIME - } else { - Color::from_rgb(0.70, 0.76, 0.71) - }; - nav = nav.push( + fn scene_list(&self) -> Element<'_, Message> { + let mut rows = Column::new().spacing(8); + for node in &self.nodes { + let (state, color) = status(node); + rows = rows.push( button( row![ - canvas(Icon(tab.icon(), color)).width(18).height(18), - text(tab.label()).size(12).font(MEDIUM) + text(&node.config.label).size(14).width(Fill), + text(state).size(12).tone(color) ] - .spacing(12) - .align_y(alignment::Vertical::Center), + .spacing(16), ) - .on_press(Message::Tab(tab)) + .on_press(Message::Select(node.config.id.clone())) .width(Fill) - .padding([13, 12]) - .style(move |theme, state| { + .padding(10) + .style(|theme, state| { themed_button( theme, button::Style { background: Some( - if chosen { - Color::from_rgb(0.16, 0.23, 0.18) - } else if matches!(state, button::Status::Hovered) { - Color::from_rgb(0.12, 0.18, 0.14) + if matches!(state, button::Status::Hovered) { + BG } else { - NAV + PAPER } .into(), ), - text_color: color, + text_color: INK, border: Border { - radius: 9.into(), - ..Default::default() + color: LINE, + width: 0.7, + radius: 6.0.into(), }, ..Default::default() }, @@ -623,219 +517,8 @@ impl App { }), ); } - nav = nav.push(Space::new().height(32)).push( - text("I TUOI DISPOSITIVI") - .size(9) - .tone(Color::from_rgb(0.47, 0.57, 0.51)), - ); - for node in &self.nodes { - let (_, color) = status(node); - nav = nav.push( - button( - row![ - text("•").tone(color).size(15), - text(&node.config.label).size(11).tone( - if self.selected.as_deref() == Some(node.config.id.as_str()) { - Color::WHITE - } else { - Color::from_rgb(0.58, 0.67, 0.61) - } - ) - ] - .spacing(10), - ) - .on_press(Message::Select(node.config.id.clone())) - .style(button::text) - .padding([7, 9]) - .width(Fill), - ); - } - let footer = column![ - row![ - text("•").tone(LIME), - text("Raccolta attiva") - .size(11) - .tone(Color::from_rgb(0.73, 0.81, 0.74)) - ] - .spacing(8), - text("1 s · SQLite locale") - .size(10) - .tone(Color::from_rgb(0.44, 0.55, 0.48)), - text("moonitor / 0.1.0") - .size(9) - .tone(Color::from_rgb(0.37, 0.47, 0.41)) - ] - .spacing(10); - container( - column![ - scrollable(nav).height(Fill), - container(footer).padding([14, 0]) - ] - .spacing(0), - ) - .padding([24, 18]) - .width(202) - .height(Fill) - .style(|theme| { - themed_panel( - theme, - container::Style { - background: Some(NAV.into()), - ..Default::default() - }, - ) - }) - .into() - } - fn scene_list(&self) -> Element<'_, Message> { - let mut rows = Column::new().spacing(8); - for node in &self.nodes { - let (state, color) = status(node); - rows = rows.push( - button( - row![ - text(&node.config.label).size(14).width(Fill), - text(state).size(12).tone(color) - ] - .spacing(16), - ) - .on_press(Message::Select(node.config.id.clone())) - .width(Fill) - .padding(10) - .style(button::secondary), - ); - } scrollable(rows).height(Fill).into() } - fn device_strip(&self) -> Element<'_, Message> { - let mut devices = Row::new().spacing(10); - for (i, n) in self.nodes.iter().enumerate() { - let chosen = self.selected.as_deref() == Some(n.config.id.as_str()); - let (state, color) = status(n); - let cpu = n - .sample - .as_ref() - .and_then(|s| s.cpu_utilization_percent.value().copied()); - let content = column![ - row![ - text(format!("{:02}", i + 1)).size(10).tone(MUTED), - Space::new().width(Fill), - text("•").tone(color) - ] - .align_y(alignment::Vertical::Center), - text(&n.config.label).font(STRONG).size(13), - row![ - text(format!("{} · CPU {}", state, pct(cpu))) - .size(11) - .tone(if n.live() { INK } else { color }), - ] - ] - .spacing(10); - devices = devices.push( - button(content) - .on_press(Message::Select(n.config.id.clone())) - .padding(14) - .width(190) - .style(move |theme, s| { - themed_button( - theme, - button::Style { - background: Some( - if chosen { - Color::from_rgb(0.91, 0.95, 0.88) - } else if matches!(s, button::Status::Hovered) { - Color::from_rgb(0.94, 0.96, 0.92) - } else { - PAPER - } - .into(), - ), - text_color: INK, - border: Border { - color: if chosen { GREEN } else { LINE }, - width: 1.0, - radius: 12.into(), - }, - ..Default::default() - }, - ) - }), - ); - } - scrollable(devices) - .direction(scrollable::Direction::Horizontal( - scrollable::Scrollbar::default(), - )) - .into() - } - fn inspector<'a>(&self, n: &'a NodeState) -> Element<'a, Message> { - let (state, color) = status(n); - let mut content = column![ - row![ - eyebrow("DISPOSITIVO SELEZIONATO"), - Space::new().width(Fill), - text("•").tone(color) - ] - .spacing(8), - text(&n.config.label).size(25).font(STRONG), - text(state).size(10).font(MEDIUM).tone(color) - ] - .spacing(10); - if let Some(s) = &n.sample { - content = content - .push(text(short_cpu(&s.cpu_name)).size(11).tone(MUTED)) - .push(Space::new().height(8)); - let total = s.memory.total_bytes.value().copied(); - let used = total - .zip(s.memory.available_bytes.value().copied()) - .map(|(t, a)| t.saturating_sub(a)); - let stale = !n.live(); - let mut cpu = Metric::percent("CPU", Some(&s.cpu_utilization_percent), stale); - cpu.detail = format!("{} core logici", s.cpu_cores_percent.len()); - content = content.push(metric(cpu, GREEN)); - let mut memory = Metric::memory(s, stale); - memory.detail = format!("{} / {}", bytes(used), bytes(total)); - content = content.push(metric(memory, Color::from_rgb(0.49, 0.58, 0.41))); - content = content.push(metric( - Metric::gpu(s, stale), - Color::from_rgb(0.51, 0.58, 0.64), - )); - content = content.push( - row![ - text("Potenza GPU").size(11).tone(MUTED), - Space::new().width(Fill), - text(watts(gpu_power(s))).size(15).font(MEDIUM) - ] - .align_y(alignment::Vertical::Center), - ); - content = content.push(text("Intero dispositivo: N/D").size(9).tone(MUTED)); - } else { - content = content - .push(Space::new().height(18)) - .push(text(&n.config.note).size(13).tone(MUTED)) - .push( - text( - n.error - .as_deref() - .unwrap_or("In attesa dei primi campioni."), - ) - .size(11) - .tone(MUTED), - ); - } - if n.sample.is_some() && !n.live() { - content = content.push( - text("Ultimo campione conservato · dati obsoleti") - .size(10) - .tone(AMBER), - ); - } - container(content) - .padding(22) - .width(286) - .style(panel) - .into() - } fn node_heading<'a>(&self, n: &'a NodeState) -> Element<'a, Message> { let (state, color) = status(n); let mut c = column![ @@ -870,7 +553,7 @@ impl App { text(status(n).0).size(18).font(STRONG), text(&n.config.note).tone(MUTED).size(12), text("Questa vista richiede un agente sul dispositivo. Controlla il tipo di nodo e l'alias SSH in fleet.toml; un dispositivo senza agente resta visibile nell'inventario.").size(13), - small_button("Torna alla panoramica", Message::Tab(Tab::Overview)) + small_button("Vai alla flotta", Message::Navigate(Section::Fleet)) ] .spacing(12), ) @@ -888,9 +571,21 @@ impl App { ] .align_y(alignment::Vertical::Center), row![ - plot("CPU", &n.history, 0, GREEN), - plot("Memoria", &n.history, 1, Color::from_rgb(0.49, 0.58, 0.41)), - plot("GPU", &n.history, 2, Color::from_rgb(0.51, 0.58, 0.64)) + plot("CPU", &n.history, self.view_time_ms, 0, GREEN), + plot( + "Memoria", + &n.history, + self.view_time_ms, + 1, + Color::from_rgb(0.49, 0.58, 0.41) + ), + plot( + "GPU", + &n.history, + self.view_time_ms, + 2, + Color::from_rgb(0.51, 0.58, 0.64) + ) ] .spacing(24) ] @@ -921,6 +616,76 @@ impl App { ); card(content).into() } + Tab::Compute => { + let mut c = + column![text("CPU · carico per core").size(18).font(STRONG)].spacing(14); + for (i, value) in s.cpu_cores_percent.iter().enumerate() { + let reading = Reading::reported( + *value as f64, + "sysinfo · CPU core", + s.sampled_at_unix_ms, + ); + c = c.push(metric( + Metric::percent(&format!("Core {i}"), Some(&reading), !n.live()), + GREEN, + )); + } + for gpu in &s.gpus { + c = c.push(card( + column![ + text(&gpu.name).size(17).font(STRONG), + metric( + Metric::percent( + "Utilizzo GPU", + Some(&gpu.utilization_percent), + !n.live() + ), + GREEN + ) + ] + .spacing(12), + )); + } + c.into() + } + Tab::Sensors => { + let mut c = column![text("Sensori disponibili").size(18).font(STRONG)].spacing(14); + if s.temperatures.is_empty() + && s.pressure.is_empty() + && s.battery_percent.value().is_none() + { + c = c.push(notice( + "Questo agente non espone sensori aggiuntivi su questo nodo.", + )); + } + for t in &s.temperatures { + c = c.push(table_row( + [ + &t.label, + &format!("{:.1} °C", t.celsius), + "Temperatura", + "Sistema", + ], + false, + )); + } + for p in &s.pressure { + c = c.push(table_row( + [ + &p.resource, + &format!("{:.1}%", p.some_avg10_percent), + "Stallo PSI · avg10", + "Linux", + ], + false, + )); + } + c.push(metric( + Metric::percent("Batteria", Some(&s.battery_percent), !n.live()), + GREEN, + )) + .into() + } Tab::Processes => self.processes(s, false), Tab::Ai => { let mut c = column![row![ @@ -1080,9 +845,21 @@ impl App { let plots = card( column![ text("Utilizzo · ultimi 5 minuti").size(18).font(STRONG), - plot("CPU", &n.history, 0, GREEN), - plot("Memoria", &n.history, 1, Color::from_rgb(0.49, 0.58, 0.41)), - plot("GPU", &n.history, 2, Color::from_rgb(0.51, 0.58, 0.64)), + plot("CPU", &n.history, self.view_time_ms, 0, GREEN), + plot( + "Memoria", + &n.history, + self.view_time_ms, + 1, + Color::from_rgb(0.49, 0.58, 0.41) + ), + plot( + "GPU", + &n.history, + self.view_time_ms, + 2, + Color::from_rgb(0.51, 0.58, 0.64) + ), text("SQLite locale · riepilogo ogni 5 s · conservazione 7 giorni") .size(11) .tone(MUTED) @@ -1205,14 +982,14 @@ fn panel(theme: &Theme) -> container::Style { border: Border { color: LINE, width: 1.0, - radius: 16.into(), + radius: 12.into(), }, ..Default::default() }, ) } fn card<'a>(content: impl Into>) -> widget::Container<'a, Message> { - container(content).padding(22).width(Fill).style(panel) + container(content).padding(18).width(Fill).style(panel) } fn eyebrow(s: &str) -> widget::Text<'_> { text(s).size(9).font(MEDIUM).tone(MUTED) @@ -1296,18 +1073,16 @@ fn metric<'a>(metric: Metric, c: Color) -> Element<'a, Message> { ] .spacing(7); if let Some(value) = metric.value { - content = content.push( - progress_bar(0.0..=100.0, value as f32) - .girth(4) - .style(move |_| progress_bar::Style { - background: LINE.into(), - bar: c.into(), - border: Border { - radius: 2.into(), - ..Default::default() - }, - }), - ); + content = content.push(progress_bar(0.0..=100.0, value as f32).girth(4).style( + move |theme| progress_bar::Style { + background: tone(LINE, theme).into(), + bar: c.into(), + border: Border { + radius: 2.into(), + ..Default::default() + }, + }, + )); } else { content = content.push(text(metric.provenance.clone()).size(11).tone(MUTED)); } @@ -1336,7 +1111,7 @@ fn mini_stat<'a>(label: &str, value: &str) -> Element<'a, Message> { .into() } fn table_row(values: [&str; 4], heading: bool) -> Element<'static, Message> { - let mut r = Row::new().spacing(20); + let mut r = Row::new().spacing(20).width(Fill); for (i, v) in values.iter().enumerate() { r = r.push( text(v.to_string()) @@ -1376,12 +1151,6 @@ fn gpu_power(s: &HostSnapshot) -> Option { .collect::>>()?; (!readings.is_empty()).then(|| readings.iter().sum()) } -fn short_cpu(s: &str) -> String { - s.replace("AMD Ryzen 9 ", "Ryzen 9 ") - .replace(" 12-Core Processor", "") - .replace("Intel(R) Celeron(R) CPU ", "Celeron ") - .replace(" @ 1.10GHz", "") -} struct Trend { points: Vec<(f32, Option)>, color: Color, @@ -1389,10 +1158,11 @@ struct Trend { fn plot<'a>( label: &str, points: &std::collections::VecDeque, + end_ms: u64, field: u8, color: Color, ) -> Element<'a, Message> { - let since = now_ms().saturating_sub(300_000); + let since = end_ms.saturating_sub(300_000); let data: Vec<_> = points .iter() .filter(|p| p.received_at_ms >= since) @@ -1544,6 +1314,31 @@ impl canvas::Program for Icon { line((4., 15.), (20., 15.)); line((15., 18.), (17., 18.)); } + "energy" => { + line((14., 2.), (5., 14.)); + line((5., 14.), (11., 14.)); + line((11., 14.), (10., 22.)); + line((10., 22.), (20., 10.)); + line((20., 10.), (13., 10.)); + line((13., 10.), (14., 2.)); + } + "events" => { + line((4., 5.), (20., 5.)); + line((20., 5.), (20., 18.)); + line((20., 18.), (4., 18.)); + line((4., 18.), (4., 5.)); + line((8., 9.), (16., 9.)); + line((8., 13.), (13., 13.)); + line((8., 21.), (16., 21.)); + } + "settings" => { + line((3., 6.), (21., 6.)); + line((3., 12.), (21., 12.)); + line((3., 18.), (21., 18.)); + line((8., 3.), (8., 9.)); + line((16., 9.), (16., 15.)); + line((10., 15.), (10., 21.)); + } "history" => { line((3., 18.), (7., 14.)); line((7., 14.), (11., 16.)); @@ -1569,5 +1364,9 @@ impl canvas::Program for Icon { } } +mod chart; +mod workbench; +use workbench::SECTIONS; +pub use workbench::Section; #[cfg(test)] mod qa; diff --git a/crates/moonitor-desktop/src/ui/chart.rs b/crates/moonitor-desktop/src/ui/chart.rs new file mode 100644 index 0000000..7705d36 --- /dev/null +++ b/crates/moonitor-desktop/src/ui/chart.rs @@ -0,0 +1,238 @@ +//! Shared resource chart. Receipt time, bounded window, explicit gaps and inspection. +use super::*; +use iced::{Point, Rectangle, mouse}; +const WINDOW: u64 = 300_000; +const GAP: u64 = 7_500; +pub(super) const SERIES: [Color; 3] = [ + GREEN, + Color::from_rgb(0.62, 0.48, 0.31), + Color::from_rgb(0.35, 0.55, 0.71), +]; +pub(super) struct ResourceChart { + points: Vec, + end: u64, +} +impl ResourceChart { + pub(super) fn new(points: &std::collections::VecDeque, end: u64) -> Self { + Self { + points: points + .iter() + .filter(|p| { + p.received_at_ms >= end.saturating_sub(WINDOW) && p.received_at_ms <= end + }) + .cloned() + .collect(), + end, + } + } + fn nearest(&self, at: u64) -> Option<&HistoryPoint> { + self.points + .iter() + .min_by_key(|p| p.received_at_ms.abs_diff(at)) + .filter(|p| p.received_at_ms.abs_diff(at) <= GAP / 2) + } +} +fn value(p: &HistoryPoint, field: usize) -> Option { + [p.cpu_percent, p.memory_percent, p.gpu_percent][field] + .filter(|v| v.is_finite() && (0.0..=100.0).contains(v)) +} +fn connected(a: &HistoryPoint, b: &HistoryPoint, field: usize) -> bool { + b.received_at_ms > a.received_at_ms + && b.received_at_ms - a.received_at_ms <= GAP + && value(a, field).is_some() + && value(b, field).is_some() +} +impl canvas::Program for ResourceChart { + type State = Option; + fn update( + &self, + state: &mut Self::State, + event: &canvas::Event, + bounds: Rectangle, + cursor: mouse::Cursor, + ) -> Option> { + if matches!( + event, + iced::Event::Mouse(mouse::Event::CursorMoved { .. } | mouse::Event::CursorLeft) + ) { + let next = cursor.position_in(bounds); + if *state != next { + *state = next; + return Some(widget::Action::request_redraw()); + } + } + None + } + fn draw( + &self, + state: &Self::State, + renderer: &iced::Renderer, + theme: &Theme, + bounds: Rectangle, + _: mouse::Cursor, + ) -> Vec { + let mut frame = canvas::Frame::new(renderer, bounds.size()); + let left = 33.0; + let top = 9.0; + let width = (bounds.width - left - 8.0).max(1.0); + let height = (bounds.height - top - 24.0).max(1.0); + let start = self.end.saturating_sub(WINDOW); + for v in [0.0, 50.0, 100.0] { + let y = top + height * (1.0 - v / 100.0); + frame.stroke( + &canvas::Path::line(Point::new(left, y), Point::new(left + width, y)), + canvas::Stroke::default() + .with_width(0.5) + .with_color(tone(LINE, theme)), + ); + frame.fill_text(canvas::Text { + content: format!("{v:.0}"), + position: Point::new(left - 8.0, y), + color: tone(MUTED, theme), + size: 10.0.into(), + font: FONT, + align_x: alignment::Horizontal::Right.into(), + align_y: alignment::Vertical::Center, + ..Default::default() + }); + } + for (fraction, label, align) in [ + (0.0, "−5 min", alignment::Horizontal::Left), + (0.5, "−2 min 30 s", alignment::Horizontal::Center), + (1.0, "Ora", alignment::Horizontal::Right), + ] { + frame.fill_text(canvas::Text { + content: label.into(), + position: Point::new(left + width * fraction, top + height + 9.0), + color: tone(MUTED, theme), + size: 10.0.into(), + font: FONT, + align_x: align.into(), + ..Default::default() + }); + } + for (field, color) in SERIES.into_iter().enumerate() { + let point = |p: &HistoryPoint| { + Point::new( + left + width * p.received_at_ms.saturating_sub(start) as f32 / WINDOW as f32, + top + height * (1.0 - value(p, field).unwrap_or(0.0) as f32 / 100.0), + ) + }; + for pair in self.points.windows(2) { + if connected(&pair[0], &pair[1], field) { + frame.stroke( + &canvas::Path::line(point(&pair[0]), point(&pair[1])), + canvas::Stroke::default().with_width(1.8).with_color(color), + ); + } + } + if let Some(last) = self.points.last().filter(|p| value(p, field).is_some()) { + frame.fill(&canvas::Path::circle(point(last), 2.0), color); + } + } + if self.points.is_empty() { + frame.fill_text(canvas::Text { + content: "In attesa di campioni nella finestra".into(), + position: Point::new(left + width / 2.0, top + height / 2.0), + color: tone(MUTED, theme), + size: 11.0.into(), + font: FONT, + align_x: alignment::Horizontal::Center.into(), + ..Default::default() + }); + } + if let Some(cursor) = state + .filter(|p| p.x >= left && p.x <= left + width && p.y >= top && p.y <= top + height) + { + let at = start + (((cursor.x - left) / width) * WINDOW as f32) as u64; + frame.stroke( + &canvas::Path::line( + Point::new(cursor.x, top), + Point::new(cursor.x, top + height), + ), + canvas::Stroke::default() + .with_width(1.0) + .with_color(tone(MUTED, theme)), + ); + let label = if let Some(p) = self.nearest(at) { + let secs = p.received_at_ms / 1000; + format!( + "{:02}:{:02}:{:02} UTC · CPU {} RAM {} GPU {}", + secs / 3600 % 24, + secs / 60 % 60, + secs % 60, + pct(p.cpu_percent), + pct(p.memory_percent), + pct(p.gpu_percent) + ) + } else { + "Nessun campione in questo intervallo".into() + }; + let box_width = (label.chars().count() as f32 * 5.3 + 16.0).min(bounds.width); + let x = (cursor.x - box_width / 2.0).clamp(0.0, (bounds.width - box_width).max(0.0)); + let y = top + 3.0; + frame.fill_rectangle( + Point::new(x, y), + iced::Size::new(box_width, 24.0), + tone(PAPER, theme), + ); + frame.fill_text(canvas::Text { + content: label, + position: Point::new(x + 8.0, y + 6.0), + color: tone(INK, theme), + size: 10.0.into(), + font: FONT, + ..Default::default() + }); + } + vec![frame.into_geometry()] + } + fn mouse_interaction( + &self, + _: &Self::State, + bounds: Rectangle, + cursor: mouse::Cursor, + ) -> mouse::Interaction { + if cursor.is_over(bounds) { + mouse::Interaction::Crosshair + } else { + mouse::Interaction::default() + } + } +} +#[cfg(test)] +mod tests { + use super::*; + fn point(t: u64, v: Option) -> HistoryPoint { + HistoryPoint { + received_at_ms: t, + cpu_percent: v, + memory_percent: v, + gpu_percent: v, + } + } + #[test] + fn gaps_missing_values_and_reversed_time_are_never_connected() { + let zero = point(10_000, Some(0.0)); + assert!(connected(&zero, &point(15_000, Some(10.0)), 0)); + for other in [ + point(15_000, None), + point(20_000, Some(0.0)), + point(5_000, Some(1.0)), + point(10_000, Some(1.0)), + point(15_000, Some(f64::NAN)), + ] { + assert!(!connected(&zero, &other, 0)); + } + } + #[test] + fn inspection_does_not_fill_gaps_or_include_future_values() { + let chart = ResourceChart::new( + &[point(10_000, Some(0.0)), point(30_000, Some(100.0))].into(), + 20_000, + ); + assert_eq!(chart.nearest(10_000).unwrap().cpu_percent, Some(0.0)); + assert!(chart.nearest(20_000).is_none()); + assert_eq!(chart.points.len(), 1); + } +} diff --git a/crates/moonitor-desktop/src/ui/qa.rs b/crates/moonitor-desktop/src/ui/qa.rs index 457600b..865834b 100644 --- a/crates/moonitor-desktop/src/ui/qa.rs +++ b/crates/moonitor-desktop/src/ui/qa.rs @@ -11,10 +11,16 @@ fn app(count: usize, tab: Tab) -> App { scene_visible: true, dark: false, tab, + section: if tab == Tab::Overview { + Section::Overview + } else { + Section::Device + }, filter: String::new(), sort_memory: false, camera: Camera::default(), started: Instant::now(), + view_time_ms: crate::fixtures::TIME_MS, screenshot: None, exit_after: None, window: None, @@ -57,6 +63,15 @@ fn selection_messages_do_not_follow_indices() { assert!(app.selected.is_none()); } #[test] +fn switching_context_keeps_the_page_and_absent_data_is_not_stale() { + let mut app = app(5, Tab::Overview); + let _ = app.update(Message::SwitchNode("qa-4".into())); + assert_eq!(app.section, Section::Overview); + assert_eq!(app.selected.as_deref(), Some("qa-4")); + assert!(!Metric::percent("CPU", None, true).stale); + assert!(Metric::memory(&crate::fixtures::sample("qa-0"), true).stale); +} +#[test] #[ignore = "Requires a graphical backend. Run scripts/qa-ui.sh."] fn visual_matrix_and_interactions() { let dir = @@ -66,11 +81,17 @@ fn visual_matrix_and_interactions() { let case = std::env::var("MOONITOR_QA_CASE").ok(); let mut covered = 0; for (width, height) in [(1280, 800), (1440, 900), (3840, 2160)] { - for (name, tab) in [ - ("overview", Tab::Overview), - ("ai", Tab::Ai), - ("history", Tab::History), - ("processes", Tab::Processes), + for (name, section, tab) in [ + ("overview", Section::Overview, Tab::Overview), + ("fleet", Section::Fleet, Tab::Overview), + ("workloads", Section::Workloads, Tab::Overview), + ("energy", Section::Energy, Tab::Overview), + ("events", Section::Events, Tab::Overview), + ("explore", Section::Explore, Tab::Overview), + ("settings", Section::Settings, Tab::Overview), + ("ai", Section::Device, Tab::Ai), + ("history", Section::Device, Tab::History), + ("processes", Section::Device, Tab::Processes), ] { for dark in [false, true] { let case_name = format!( @@ -83,10 +104,33 @@ fn visual_matrix_and_interactions() { covered += 1; let mut app = app(5, tab); app.dark = dark; + app.section = section; let mut ui = Simulator::with_size(settings(), (width as f32, height as f32), app.view()); - let target = ui.find("QA device 0").unwrap(); + let target = ui.find(section.label()).unwrap(); assert!(target.visible_bounds().is_some()); + if section == Section::Overview { + for label in [ + "Resource timeline", + "Lab Map", + "Modelli osservati", + "0%", + "37%", + ] { + assert!( + ui.find(label).unwrap().visible_bounds().is_some(), + "{label} below fold in {case_name}" + ); + } + } + if section == Section::Fleet { + let header_x = ui.find("STATO").unwrap().visible_bounds().unwrap().x; + let value_x = ui.find("Online").unwrap().visible_bounds().unwrap().x; + assert!( + (header_x - value_x).abs() <= 12.0, + "Fleet columns misaligned: {header_x} vs {value_x}" + ); + } let snapshot = ui.snapshot(&app_theme(dark)).unwrap(); let path = dir.join(format!( "fixture-{name}-{width}x{height}-{}", @@ -125,24 +169,39 @@ fn visual_matrix_and_interactions() { } let mut app = app(5, Tab::Overview); let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); - ui.click("AI locale").unwrap(); + ui.click("Fleet").unwrap(); for message in ui.into_messages() { let _ = app.update(message); } - assert_eq!(app.tab, Tab::Ai); + assert_eq!(app.section, Section::Fleet); let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); ui.click("QA device 4").unwrap(); for message in ui.into_messages() { let _ = app.update(message); } assert_eq!(app.selected.as_deref(), Some("qa-4")); + assert_eq!(app.section, Section::Device); + let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); + ui.click("AI locale").unwrap(); + for message in ui.into_messages() { + let _ = app.update(message); + } + assert_eq!(app.tab, Tab::Ai); let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); assert!(ui.find("Non strumentato").is_ok()); - ui.click("Torna alla panoramica").unwrap(); + ui.click("Vai alla flotta").unwrap(); for message in ui.into_messages() { let _ = app.update(message); } - assert_eq!(app.tab, Tab::Overview); + assert_eq!(app.section, Section::Fleet); + for section in SECTIONS { + let mut ui = Simulator::with_size(settings(), (1440.0, 900.0), app.view()); + ui.click(section.label()).unwrap(); + for message in ui.into_messages() { + let _ = app.update(message); + } + assert_eq!(app.section, section); + } } #[test] #[ignore = "Requires a graphical backend. Run scripts/qa-ui.sh."] @@ -277,3 +336,39 @@ fn scene_picking_filter_keyboard_and_scroll() { let _ = app.update(Message::NextNode(-1)); assert_eq!(app.selected.as_deref(), Some("qa-0")); } + +#[test] +#[ignore = "Requires a graphical backend. Run scripts/qa-ui.sh."] +fn list_alternative_selection_and_theme() { + let dir = std::path::PathBuf::from(std::env::var("MOONITOR_QA_DIR").unwrap()); + std::fs::create_dir_all(&dir).unwrap(); + for dark in [false, true] { + let mut app = app(5, Tab::Overview); + app.dark = dark; + app.scene_visible = false; + let mut ui = Simulator::with_size(settings(), (1280.0, 800.0), app.view()); + let path = dir.join(if dark { + "fixture-list-dark" + } else { + "fixture-list-light" + }); + assert!( + ui.snapshot(&app_theme(dark)) + .unwrap() + .matches_image(&path) + .unwrap() + ); + assert!( + ui.snapshot(&app_theme(dark)) + .unwrap() + .matches_image(&path) + .unwrap() + ); + ui.click("QA device 4").unwrap(); + for message in ui.into_messages() { + let _ = app.update(message); + } + assert_eq!(app.selected.as_deref(), Some("qa-4")); + assert_eq!(app.section, Section::Device); + } +} diff --git a/crates/moonitor-desktop/src/ui/workbench.rs b/crates/moonitor-desktop/src/ui/workbench.rs new file mode 100644 index 0000000..a864430 --- /dev/null +++ b/crates/moonitor-desktop/src/ui/workbench.rs @@ -0,0 +1,760 @@ +//! W1 shell: operational questions, shared node state, no synthetic production data. +use super::*; +use iced::widget::column; +use iced::widget::pick_list; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum Section { + Overview, + Fleet, + Workloads, + Energy, + Events, + Explore, + Settings, + Device, +} +pub(super) const SECTIONS: [Section; 7] = [ + Section::Overview, + Section::Fleet, + Section::Workloads, + Section::Energy, + Section::Events, + Section::Explore, + Section::Settings, +]; +impl Section { + pub fn parse(value: &str) -> Option { + SECTIONS.into_iter().chain([Self::Device]).find(|s| { + s.label().eq_ignore_ascii_case(value) || (*s == Self::Device && value == "device") + }) + } + pub(super) fn label(self) -> &'static str { + match self { + Self::Overview => "Overview", + Self::Fleet => "Fleet", + Self::Workloads => "Workloads", + Self::Energy => "Energy", + Self::Events => "Events", + Self::Explore => "Explore", + Self::Settings => "Settings", + Self::Device => "Dispositivo", + } + } + fn icon(self) -> &'static str { + match self { + Self::Overview => "overview", + Self::Fleet => "network", + Self::Workloads => "ai", + Self::Energy => "energy", + Self::Events => "events", + Self::Explore => "history", + Self::Settings => "settings", + Self::Device => "overview", + } + } + fn subtitle(self) -> &'static str { + match self { + Self::Overview => "Il laboratorio, adesso.", + Self::Fleet => "Nodi, capacità e disponibilità.", + Self::Workloads => "Runtime e modelli osservati nel laboratorio.", + Self::Energy => "Potenza misurata, con confini espliciti.", + Self::Events => "Cambiamenti e qualità delle sorgenti.", + Self::Explore => "Andamento recente delle risorse.", + Self::Settings => "Sorgenti e preferenze di visualizzazione.", + Self::Device => "Telemetria e risorse del nodo selezionato.", + } + } +} +#[derive(Debug, Clone, PartialEq, Eq)] +struct NodeChoice { + id: String, + label: String, +} +impl std::fmt::Display for NodeChoice { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.label) + } +} +impl App { + pub(super) fn workbench_view(&self) -> Element<'_, Message> { + let fleet = FleetViewModel::new(&self.nodes, self.selected.as_deref(), Instant::now()); + let node = self + .nodes + .iter() + .find(|n| Some(n.config.id.as_str()) == fleet.selected_id.as_deref()); + let choices = self + .nodes + .iter() + .map(|n| NodeChoice { + id: n.config.id.clone(), + label: n.config.label.clone(), + }) + .collect::>(); + let selected = choices + .iter() + .find(|n| Some(n.id.as_str()) == fleet.selected_id.as_deref()) + .cloned(); + let switcher = pick_list(choices, selected, |n| Message::SwitchNode(n.id)) + .placeholder("Seleziona nodo") + .text_size(12) + .padding([9, 12]) + .width(190) + .style(|theme, state| { + let mut style = pick_list::default(theme, state); + style.background = tone(PAPER, theme).into(); + style.border.color = tone(LINE, theme); + style.border.radius = 7.0.into(); + style + }); + let top = row![ + column![ + text(self.section.label()).size(26).font(STRONG), + text(self.section.subtitle()).size(12).tone(MUTED) + ] + .spacing(5), + Space::new().width(Fill), + pill("LIVE · 1 s", GREEN), + switcher + ] + .spacing(16) + .align_y(alignment::Vertical::Center); + let content = match self.section { + Section::Overview => self.overview(&fleet, node), + Section::Fleet => self.fleet(&fleet), + Section::Workloads => self.workloads(), + Section::Energy => self.energy(), + Section::Events => self.events(), + Section::Explore => node.map(|n| self.explore(n)).unwrap_or_else(empty_fleet), + Section::Settings => self.settings(), + Section::Device => node.map(|n| self.device(n)).unwrap_or_else(empty_fleet), + }; + let mut body = column![content].spacing(18); + if let Some(error) = &self.storage_error { + body = body.push(notice(&format!("Storico: {error}"))); + } + if self.dropped_events > 0 { + body = body.push(notice(&format!( + "Acquisizione: {} aggiornamenti scartati per coda piena", + self.dropped_events + ))); + } + container(row![ + self.workbench_sidebar(), + column![ + container(top).padding([24, 26]), + scrollable( + container(body) + .padding(iced::Padding { + top: 0.0, + right: 26.0, + bottom: 24.0, + left: 26.0 + }) + .width(Fill) + ) + .height(Fill) + ] + .height(Fill) + .width(Fill) + ]) + .width(Fill) + .height(Fill) + .style(|theme| { + themed_panel( + theme, + container::Style { + background: Some(BG.into()), + text_color: Some(INK), + ..Default::default() + }, + ) + }) + .into() + } + fn workbench_sidebar(&self) -> Element<'_, Message> { + let brand = row![ + brand_icon(), + text("moonitor").size(22).font(STRONG).color(Color::WHITE) + ] + .spacing(9) + .align_y(alignment::Vertical::Center); + let mut nav = column![ + brand, + text("COMPUTE OBSERVATORY") + .size(9) + .color(Color::from_rgb(0.58, 0.68, 0.61)), + Space::new().height(26) + ] + .spacing(14); + for section in SECTIONS { + let selected = self.section == section + || (self.section == Section::Device && section == Section::Fleet); + let color = if selected { + LIME + } else { + Color::from_rgb(0.72, 0.79, 0.74) + }; + nav = nav.push( + button( + row![ + canvas(Icon(section.icon(), color)).width(18).height(18), + text(section.label()).size(13).font(MEDIUM) + ] + .spacing(12) + .align_y(alignment::Vertical::Center), + ) + .width(Fill) + .padding([12, 13]) + .on_press(Message::Navigate(section)) + .style(move |_, state| button::Style { + background: Some( + if selected { + Color::from_rgb(0.17, 0.25, 0.19) + } else if matches!(state, button::Status::Hovered) { + Color::from_rgb(0.12, 0.18, 0.14) + } else { + Color::TRANSPARENT + } + .into(), + ), + text_color: color, + border: Border { + radius: 9.into(), + ..Default::default() + }, + ..Default::default() + }), + ); + } + let monitored = self + .nodes + .iter() + .filter(|n| !matches!(n.config.kind, crate::config::NodeKind::Unavailable)) + .count(); + let footer = column![ + text("RACCOLTA LOCALE") + .size(9) + .color(Color::from_rgb(0.55, 0.65, 0.58)), + text(format!("{monitored} nodi strumentati")) + .size(12) + .color(Color::from_rgb(0.80, 0.86, 0.81)), + text("SSH · archivio sul dispositivo") + .size(10) + .color(Color::from_rgb(0.55, 0.65, 0.58)), + text("Moonitor / Native workbench") + .size(9) + .color(Color::from_rgb(0.45, 0.55, 0.48)) + ] + .spacing(9); + container(column![nav, Space::new().height(Fill), footer].spacing(18)) + .padding([28, 20]) + .width(220) + .height(Fill) + .style(|_| container::Style { + background: Some(NAV.into()), + ..Default::default() + }) + .into() + } + fn overview<'a>( + &'a self, + fleet: &FleetViewModel, + node: Option<&'a NodeState>, + ) -> Element<'a, Message> { + let observed_runtime = self + .nodes + .iter() + .filter(|n| n.live()) + .filter_map(|n| n.sample.as_ref()) + .filter(|s| s.ollama.models.value().is_some()) + .count(); + let models = self + .nodes + .iter() + .filter(|n| n.live()) + .filter_map(|n| n.sample.as_ref()) + .filter_map(|s| s.ollama.models.value()) + .map(Vec::len) + .sum::(); + let gpu_values = self + .nodes + .iter() + .filter(|n| n.live()) + .filter_map(|n| n.sample.as_ref()) + .flat_map(|s| s.gpus.iter()) + .filter_map(|g| g.utilization_percent.value().copied()) + .collect::>(); + let power = self.measured_power(); + let stats = row![ + stat( + "NODI MONITORATI", + &format!("{} / {}", fleet.online, fleet.monitored), + &format!( + "{} censiti · {} non strumentati", + fleet.devices.len(), + fleet.devices.len() - fleet.monitored + ) + ), + stat( + "MODELLI RESIDENTI", + &if observed_runtime > 0 { + models.to_string() + } else { + "N/D".into() + }, + &format!("Ollama osservato su {observed_runtime} nodi") + ), + stat( + "GPU · MASSIMO OSSERVATO", + &pct(gpu_values.iter().copied().reduce(f64::max)), + &format!("{} acceleratori con misura", gpu_values.len()) + ), + stat( + "POTENZA GPU MISURATA", + &watts(power.0), + &format!("{} nodi con lettura · board", power.1) + ) + ] + .spacing(12); + let timeline = if let Some(n) = node { + self.resource_timeline(n) + } else { + empty_fleet() + }; + let middle = row![ + container(timeline).width(Length::FillPortion(3)), + container(self.lab_map(fleet, 220.0)).width(Length::FillPortion(2)) + ] + .spacing(16); + column![stats, middle, self.model_table(true), self.source_summary()] + .spacing(18) + .into() + } + fn resource_timeline<'a>(&self, n: &'a NodeState) -> Element<'a, Message> { + let s = n.sample.as_ref(); + let title = row![ + column![ + text("Resource timeline").size(16).font(STRONG), + text(format!("{} · ultimi 5 minuti", n.config.label)) + .size(11) + .tone(MUTED) + ] + .spacing(4), + Space::new().width(Fill), + small_button("Apri nodo →", Message::Select(n.config.id.clone())) + ] + .align_y(alignment::Vertical::Center); + let metrics = row![ + metric( + Metric::percent("CPU", s.map(|s| &s.cpu_utilization_percent), !n.live()), + chart::SERIES[0] + ), + metric( + s.map(|s| Metric::memory(s, !n.live())) + .unwrap_or_else(|| Metric::percent("RAM", None, false)), + chart::SERIES[1] + ), + metric( + s.map(|s| Metric::gpu(s, !n.live())) + .unwrap_or_else(|| Metric::percent("GPU", None, false)), + chart::SERIES[2] + ) + ] + .spacing(16); + card( + column![ + title, + metrics, + canvas(chart::ResourceChart::new(&n.history, self.view_time_ms)) + .width(Fill) + .height(135), + text("Utilizzo % · passa sul grafico per ispezionare") + .size(10) + .tone(MUTED) + ] + .spacing(12), + ) + .height(320) + .into() + } + fn lab_map<'a>(&'a self, fleet: &FleetViewModel, height: f32) -> Element<'a, Message> { + let scene = Scene { + selected: fleet.selected_id.clone(), + devices: fleet.devices.clone(), + camera: self.camera, + dark: self.dark, + }; + let content: Element<'a, Message> = if fleet.devices.is_empty() { + empty_fleet() + } else if self.scene_visible { + widget::stack![ + widget::shader(scene.clone()).width(Fill).height(height), + canvas(scene).width(Fill).height(height) + ] + .into() + } else { + container(self.scene_list()).height(height).into() + }; + card( + column![ + row![ + text("Lab Map").size(16).font(STRONG), + Space::new().width(Fill), + small_button( + if self.scene_visible { "Elenco" } else { "3D" }, + Message::ToggleScene + ), + small_button("−", Message::Zoom(-0.1)), + small_button("+", Message::Zoom(0.1)), + small_button("↺", Message::ResetCamera) + ] + .align_y(alignment::Vertical::Center), + content, + text("Seleziona un nodo per aprire il dettaglio") + .size(10) + .tone(MUTED) + ] + .spacing(10), + ) + .height(height + 100.0) + .into() + } + fn fleet<'a>(&'a self, fleet: &FleetViewModel) -> Element<'a, Message> { + let header = row![ + text(format!("{} nodi censiti", fleet.devices.len())) + .size(17) + .font(STRONG), + Space::new().width(Fill), + text(format!( + "{} online / {} monitorati", + fleet.online, fleet.monitored + )) + .size(12) + .tone(MUTED) + ]; + let mut rows = column![ + header, + table_row(["DISPOSITIVO", "STATO", "CPU / RAM", "GPU"], true) + ] + .spacing(10); + for n in &self.nodes { + let cpu = n + .sample + .as_ref() + .and_then(|s| s.cpu_utilization_percent.value().copied()); + let memory = n + .sample + .as_ref() + .and_then(|s| moonitor_store::memory_percent(s)); + let gpu = n + .sample + .as_ref() + .and_then(|s| Metric::gpu(s, !n.live()).value); + rows = rows.push( + button( + column![ + table_row( + [ + &n.config.label, + status(n).0, + &format!("{} / {}", pct(cpu), pct(memory)), + &pct(gpu) + ], + false + ), + text( + n.sample + .as_ref() + .map(|s| format!("{} · {}", s.cpu_name, s.os)) + .unwrap_or_else(|| n.config.note.clone()) + ) + .size(11) + .tone(MUTED) + ] + .spacing(3), + ) + .width(Fill) + .padding(10) + .on_press(Message::Select(n.config.id.clone())) + .style(|theme, state| { + themed_button( + theme, + button::Style { + background: Some( + if matches!(state, button::Status::Hovered) { + BG + } else { + PAPER + } + .into(), + ), + text_color: INK, + border: Border { + color: LINE, + width: 0.7, + radius: 6.0.into(), + }, + ..Default::default() + }, + ) + }), + ); + } + column![card(rows), self.lab_map(fleet, 300.0)] + .spacing(18) + .into() + } + fn device<'a>(&'a self, n: &'a NodeState) -> Element<'a, Message> { + let tabs = Row::with_children(TABS.iter().map(|tab| { + button(text(tab.label()).size(12)) + .on_press(Message::Tab(*tab)) + .padding([8, 12]) + .style(move |theme, state| { + themed_button( + theme, + button::Style { + background: Some( + if self.tab == *tab { + Color::from_rgb(0.90, 0.94, 0.86) + } else if matches!(state, button::Status::Hovered) { + LINE + } else { + Color::TRANSPARENT + } + .into(), + ), + text_color: if self.tab == *tab { GREEN } else { MUTED }, + border: Border { + radius: 7.0.into(), + ..Default::default() + }, + ..Default::default() + }, + ) + }) + .into() + })) + .spacing(6); + let mut body = column![self.node_heading(n), tabs].spacing(20); + if self.tab == Tab::Overview && n.sample.is_some() { + let s = n.sample.as_ref(); + body = body.push( + row![ + card(metric( + Metric::percent("CPU", s.map(|s| &s.cpu_utilization_percent), !n.live()), + GREEN + )), + card(metric( + s.map(|s| Metric::memory(s, !n.live())) + .unwrap_or_else(|| Metric::percent("RAM", None, false)), + GREEN + )), + card(metric( + s.map(|s| Metric::gpu(s, !n.live())) + .unwrap_or_else(|| Metric::percent("GPU", None, false)), + GREEN + )) + ] + .spacing(12), + ); + } + body.push(self.details(n)).into() + } + fn model_table(&self, compact: bool) -> Element<'_, Message> { + let mut rows = column![ + row![ + text("Modelli osservati").size(16).font(STRONG), + Space::new().width(Fill), + small_button("Workloads →", Message::Navigate(Section::Workloads)) + ] + .align_y(alignment::Vertical::Center), + table_row(["MODELLO", "NODO", "RUNTIME", "MEMORIA MODELLO"], true) + ] + .spacing(8); + let mut count = 0; + for n in &self.nodes { + if let Some(s) = &n.sample + && let Some(models) = s.ollama.models.value() + { + for m in models { + if !compact || count < 3 { + rows = rows.push(table_row( + [ + &m.name, + &n.config.label, + if n.live() { + "Ollama · residente" + } else { + "Ollama · obsoleto" + }, + &bytes(Some(m.size_bytes)), + ], + false, + )); + } + count += 1; + } + } + } + if count == 0 { + rows=rows.push(text("Nessun modello residente osservato. La disponibilità dei runtime è indicata nelle sorgenti.").size(12).tone(MUTED)); + } + if !compact { + rows=rows.push(text("Residenza del modello ≠ inferenza attiva. Token/s, TTFT e code richiedono metriche delle richieste.").size(11).tone(MUTED)); + } + card(rows).into() + } + fn workloads(&self) -> Element<'_, Message> { + let mut runtime = column![ + text("Runtime · copertura delle sorgenti") + .size(17) + .font(STRONG) + ] + .spacing(12); + for n in &self.nodes { + let state = n + .sample + .as_ref() + .map(|s| reading_reason(&s.ollama.models)) + .unwrap_or("Nessuna osservazione"); + runtime = runtime.push(table_row( + [&n.config.label, "Ollama", state, status(n).0], + false, + )); + } + column![self.model_table(false),card(runtime),notice("Questa vista osserva lo stato dei modelli. Tempi e risorse delle singole richieste non sono ancora esposti dalle sorgenti collegate.")].spacing(18).into() + } + fn measured_power(&self) -> (Option, usize) { + let values = self + .nodes + .iter() + .filter(|n| n.live()) + .filter_map(|n| n.sample.as_ref()) + .filter_map(|s| gpu_power(s)) + .collect::>(); + ( + (!values.is_empty()).then(|| values.iter().sum()), + values.len(), + ) + } + fn energy(&self) -> Element<'_, Message> { + let power = self.measured_power(); + let mut rows = column![ + text("Misure di potenza GPU").size(17).font(STRONG), + table_row(["NODO", "POTENZA", "CONFINE", "STATO"], true) + ] + .spacing(12); + for n in &self.nodes { + rows = rows.push(table_row( + [ + &n.config.label, + &watts(n.sample.as_ref().and_then(|s| gpu_power(s))), + "GPU board", + status(n).0, + ], + false, + )); + } + column![row![stat("POTENZA GPU MISURATA",&watts(power.0),&format!("{} nodi con lettura corrente",power.1)),stat("INTERO LABORATORIO","N/D","Nessun totale whole-device disponibile"),stat("ENERGIA","N/D","Intervalli e copertura non disponibili")].spacing(12),card(rows),notice("La potenza GPU non rappresenta il consumo totale del dispositivo. La memoria unificata non aggiunge capacità alla RAM del nodo.")].spacing(18).into() + } + fn source_summary(&self) -> Element<'_, Message> { + let mut row = Row::new().spacing(18); + for n in &self.nodes { + let (state, color) = status(n); + row = row.push( + button( + column![ + text(&n.config.label).size(12).font(MEDIUM), + text(state).size(11).tone(color) + ] + .spacing(5), + ) + .on_press(Message::Select(n.config.id.clone())) + .style(button::text), + ); + } + card( + column![ + text("Sorgenti").size(14).font(STRONG), + scrollable(row).direction(scrollable::Direction::Horizontal( + scrollable::Scrollbar::default() + )) + ] + .spacing(10), + ) + .into() + } + fn events(&self) -> Element<'_, Message> { + let mut events = + column![text("Diagnostica della raccolta").size(17).font(STRONG)].spacing(12); + let mut count = 0; + for n in &self.nodes { + if let Some(error) = &n.error { + events = events.push(notice(&format!("{} · {error}", n.config.label))); + count += 1; + } + } + if let Some(error) = &self.storage_error { + events = events.push(notice(error)); + count += 1; + } + if count == 0 { + events = events.push( + text("Nessun errore di raccolta segnalato.") + .size(13) + .tone(GREEN), + ); + } + column![card(events),card(column![text("Timeline eventi non disponibile").size(16).font(STRONG),text("L'archivio corrente conserva riepiloghi delle metriche. Non contiene ancora eventi storici di connessione o esecuzione dei workload.").size(13).tone(MUTED),small_button("Controlla la flotta →",Message::Navigate(Section::Fleet))].spacing(12)),self.source_summary()].spacing(18).into() + } + fn explore<'a>(&self, n: &'a NodeState) -> Element<'a, Message> { + card( + column![ + text(format!("{} · storico recente", n.config.label)) + .size(18) + .font(STRONG), + text("Ultimi 5 minuti · dati ricevuti · campioni persistiti ogni 5 s") + .size(12) + .tone(MUTED), + plot("CPU", &n.history, self.view_time_ms, 0, GREEN), + plot( + "RAM", + &n.history, + self.view_time_ms, + 1, + Color::from_rgb(0.48, 0.58, 0.40) + ), + plot( + "GPU · massimo disponibile", + &n.history, + self.view_time_ms, + 2, + Color::from_rgb(0.40, 0.56, 0.66) + ), + text("0–100% · le interruzioni delle misure restano visibili come lacune.") + .size(11) + .tone(MUTED) + ] + .spacing(20), + ) + .into() + } + fn settings(&self) -> Element<'_, Message> { + column![card(column![text("Aspetto · sessione corrente").size(18).font(STRONG),row![small_button("Chiaro",Message::Theme(false)),small_button("Scuro",Message::Theme(true)),small_button(if self.scene_visible{"Disattiva 3D"}else{"Attiva 3D"},Message::ToggleScene)].spacing(12),text("Il rendering 3D si aggiorna su dati e interazioni. Nessuna animazione continua.").size(12).tone(MUTED)].spacing(16)),card(column![text("Collegamento delle sorgenti").size(18).font(STRONG),text("I nodi e gli alias SSH sono configurati in fleet.toml. Le credenziali restano nella configurazione SSH del sistema. Le modifiche alla flotta richiedono il riavvio dell'app.").size(13).tone(MUTED),text("Archivio locale SQLite · riepiloghi ogni 5 s · conservazione 7 giorni. La raccolta si ferma chiudendo il desktop.").size(13).tone(MUTED),text("Tastiera: Cmd/Ctrl+1…7 navigazione · Alt+←/→ nodo · Tab e Shift+Tab focus.").size(12).tone(MUTED)].spacing(14)),self.source_summary()].spacing(18).into() + } +} +fn stat<'a>(label: &str, value: &str, detail: &str) -> Element<'a, Message> { + card( + column![ + text(label.to_owned()).size(9).font(MEDIUM).tone(MUTED), + text(value.to_owned()).size(28).font(STRONG), + text(detail.to_owned()).size(10).tone(MUTED) + ] + .spacing(8), + ) + .into() +} +fn empty_fleet<'a>() -> Element<'a, Message> { + card(column![text("Nessun dispositivo configurato").size(18).font(STRONG),text("Aggiungi un nodo local o ssh in fleet.toml per iniziare la raccolta. Puoi censire dispositivi senza agente come unavailable.").size(13).tone(MUTED)].spacing(12)).into() +} diff --git a/crates/moonitor-desktop/src/view_model.rs b/crates/moonitor-desktop/src/view_model.rs index 462b52c..6b76a58 100644 --- a/crates/moonitor-desktop/src/view_model.rs +++ b/crates/moonitor-desktop/src/view_model.rs @@ -139,11 +139,12 @@ impl Metric { value, detail: String::new(), provenance, - stale, + stale: stale && reading.is_some(), } } pub fn memory(snapshot: &moonitor_core::HostSnapshot, stale: bool) -> Self { let mut m = Self::percent("Memoria", None, stale); + m.stale = stale; match ( &snapshot.memory.total_bytes, &snapshot.memory.available_bytes, diff --git a/docs/architecture.md b/docs/architecture.md index aa5fcc1..93da070 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -54,7 +54,14 @@ seconds. Snapshot transmission and basic counters run at one-second intervals. The initial process list contains bounded CPU-heavy processes and AI name matches, not an exhaustive process census. -The UI has fleet, overview, process, AI, disk, network and recent-history views. +The primary shell has Overview, Fleet, Workloads, Energy, Events, Explore and Settings. +Processes, compute, sensors, AI, storage, network and history live in node detail. +`ui/workbench.rs` owns the screen composition; `ui/chart.rs` renders receipt-time +series with explicit gaps and nearest-sample inspection; `ui.rs` retains application +state, reusable metric components and resource views. The chart window uses the +UI polling timestamp, frozen in tests for reproducibility. W1 introduces no new +collector API. The existing Iced image feature is enabled for the supplied brand +asset; its two additional transitive packages are documented in assets/brand/README.md. Rendering uses Iced 0.14 and wgpu, with one-second state polling. Collection, SSH and SQLite run outside the UI thread. `view_model.rs` defines availability, ID selection, scene entities and typed percent metrics. `scene.rs` caches uploaded diff --git a/docs/moonitor-w1-interface-design.md b/docs/moonitor-w1-interface-design.md new file mode 100644 index 0000000..094a4c7 --- /dev/null +++ b/docs/moonitor-w1-interface-design.md @@ -0,0 +1,70 @@ +# W1 — redesign della shell e delle viste operative + +23 ottobre 2026. Dopo la consolidazione W0, l'utente ha chiarito che si aspettava +un redesign completo dell'interfaccia. Questa wave cambia struttura e gerarchia +visiva, mantenendo collector, transport, SQLite e rendering Iced/wgpu. +La qualificazione indipendente della W0 resta un gate esplicito; non viene implicata +dall'avvio del lavoro di design. + +## Screen map e contratti + +- **Overview**: situazione della flotta. KPI osservabili, andamento del nodo scelto, + Lab Map compatta, modelli residenti osservati e problemi di raccolta. +- **Fleet**: inventario di tutti i nodi con stato, capacità, contatto e accesso al dettaglio. + La mappa è una seconda rappresentazione dello stesso modello, con alternativa elenco. +- **Workloads**: runtime osservati, modelli residenti e copertura. Un modello caricato + non è dichiarato un'inferenza attiva; token/s, TTFT e code restano non disponibili. +- **Energy**: potenza GPU board realmente disponibile e sua copertura; nessuna + stima whole-device, somma di domini sovrapposti o integrazione Wh implicita. +- **Events**: capacità e diagnostica corrente. Senza persistenza eventi non si + inventa una timeline. L'empty state spiega il limite e conduce alla Fleet. +- **Explore**: storico recente già disponibile, con selettore nodo e finestre + realmente supportate. Niente selettore 7d che restituisce sempre cinque minuti. +- **Settings**: stato delle fonti/configurazione e preferenze della sessione. +- **Device detail**: switcher unico, stato e ultimo contatto, tab Summary / Compute / + Processes / Storage / Network / AI / Sensors / History; le risorse appartengono al nodo. + +## Wireframe prima dell'implementazione + +```text +┌──────────────────┬─────────────────────────────────────────────────────────────┐ +│ moonitor │ Overview Live · ultime letture [selettore nodo] │ +│ Compute lab ├─────────────────────────────────────────────────────────────┤ +│ │ Monitorati Modelli residenti GPU Potenza GPU │ +│ Overview ├─────────────────────────────────────┬───────────────────────┤ +│ Fleet │ Resource timeline │ Lab Map │ +│ Workloads │ CPU / Memoria / GPU │ 3D compatto o elenco │ +│ Energy │ percentuali + scala + tempo │ stato + selezione │ +│ Events ├─────────────────────────────────────┴───────────────────────┤ +│ Explore │ Modelli osservati: runtime / nodo / modello / memoria │ +│ ├─────────────────────────────────────────────────────────────┤ +│ Settings │ Stato delle sorgenti e problemi di raccolta │ +│ │ │ +│ Raccolta / errori │ │ +└──────────────────┴─────────────────────────────────────────────────────────────┘ +``` + +Dettaglio nodo: header compatto e switcher; tab orizzontali; metriche e grafici +prima dei dati granulari. Fleet: righe comparabili con intera riga selezionabile. +Nessuna lista dispositivi duplicata nella navigazione primaria. + +## Design system + +- Canvas caldo `#F6F8F5`, superficie bianca, testo `#17251F`; palette scura equivalente. +- Verde salvia come selezione/enfasi; stato accompagnato sempre da testo. +- Inter locale, numeri allineati; heading 24–28, card 13–14, metadati ≥11. +- Sidebar 220, topbar compatta, spaziatura 8/16/24, bordi sottili, raggi 10–14. +- Densità guidata dai dati, non da grandi vuoti. Overview verificata a 1280×800. +- Luna fornita dall’utente come asset originale, con derivati PNG e icona macOS. +- Animazione soltanto su input/stato. Camera 3D, forme e shader della W0 riutilizzati. +- Tooltip di fonte/qualità/timestamp; assenza distinta da zero e da dato obsoleto. + +## Accettazione + +1. Tutti i percorsi principali navigabili, selezione ID coerente fra mappa, Fleet e dettaglio. +2. Overview mostra KPI, andamento e mappa nel viewport di riferimento senza scroll profondo. +3. Nessun workload, evento, watt totale o numero AI inventato; capacità assente esplicita. +4. Screenshot light/dark e test di click/tastiera/filtri mantenuti; nuove baseline + sono candidate, non approvate automaticamente. +5. Rendering senza regressione di loop continuo; nuova build e bundle identificabili. +6. Review umana dell'interfaccia separata dai test automatici. W2–W4 non dichiarate implementate. diff --git a/docs/moonitor-w1-qualification.md b/docs/moonitor-w1-qualification.md new file mode 100644 index 0000000..86d909e --- /dev/null +++ b/docs/moonitor-w1-qualification.md @@ -0,0 +1,137 @@ +# W1 — redesign nativo e identità dell'app + +23 ottobre 2026. Segue la [specifica W1](moonitor-w1-interface-design.md) e il +[report W0](moonitor-w0-qualification.md). L'avvio del redesign è autorizzato dalla +correzione esplicita dell'utente dopo la W0; non implica il superamento automatico +dei gate esterni W0. Il layout precedente è stato rifiutato dall'utente. + +## Cambiamento verificabile + +- Shell nuova con Overview, Fleet, Workloads, Energy, Events, Explore e Settings; + sidebar senza seconda lista dei dispositivi, top bar persistente e switcher per ID. +- Overview con quattro indicatori derivati da osservazioni correnti, andamento CPU / + RAM / GPU sopra il fold, mappa compatta, modelli osservati e stato delle sorgenti. +- Grafico condiviso con scala percentuale, tempo di ricezione, cursore e campione + puntuale. I gap, valori assenti, timestamp duplicati o inversi non generano segmenti. + L'ispezione non sceglie campioni lontani attraverso una lacuna. +- Fleet confrontabile con intestazioni allineate, righe selezionabili e disponibilità + esplicita. Click su nodo/mappa apre il dettaglio; lo switcher conserva la vista. +- Dettaglio con Summary, Compute, Sensori, AI locale, Processi, Archiviazione, Rete e + Storico. Senza campione viene mostrata una spiegazione e una via di ritorno; non si + etichetta più un dispositivo mai strumentato come ultima lettura obsoleta. +- Lab Map alimentata dal modello W0: etichette con fondo leggibile, separazione delle + etichette vicine, selezione e stati; controlli camera e alternativa elenco. +- Palette chiara/scura, componenti metrici condivisi, barre e avvisi leggibili anche + nel tema scuro. Nessun cambio di framework o di collector. +- Luna fornita dall'utente nel README, nella sidebar, nell'icona finestra e nel bundle + macOS. Originale conservato identico: SHA-256 + `29d498e83a19c74fc1713f4bf2ad93c76bd27828c29881cb21f64bf14667766d`. + [Procedura icone](../assets/brand/README.md), conversione standard 16–1024 px. + +## Semantica e limiti delle viste + +Workloads espone residenza dei modelli e disponibilità dell'adapter Ollama; non +rappresenta richieste, throughput o TTFT inventati. Energy espone potenza GPU board +con copertura, non potenza totale del laboratorio né Wh. Events mostra diagnostica +corrente e spiega l'assenza di una timeline persistita. Explore usa i cinque minuti +realmente disponibili in memoria; non simula selettori 24h/7d. Processi rimane un +campione limitato, non un censimento completo. UI in italiano con nomi delle sezioni +in inglese: un catalogo di localizzazione completo resta da implementare. + +`ui/workbench.rs` compone le viste; `ui/chart.rs` gestisce il grafico; `ui.rs` mantiene +stato, input, metriche e dettagli delle risorse; `view_model.rs` conserva le invarianti +W0. Nessuna nuova sorgente, hub, servizio, porta o modifica di protocollo/storage. +L'unica feature UI aggiunta è il rendering immagini di Iced per l'icona fornita. + +## Verifica riproducibile + +```sh +scripts/check.sh +MOONITOR_QA_DIR="$PWD/.local/qa/w1/visual-current" scripts/qa-ui.sh +scripts/package-macos.sh +``` + +La prima esecuzione registra candidati, non un'approvazione umana. Le successive +confrontano i PNG. Ogni caso viene anche renderizzato due volte e deve restituire +pixel identici con osservazioni e clock congelati. Le fixture sono `cfg(test)`, con +nomi QA espliciti, stati misti e lacune nelle serie; non sono una modalità del prodotto. + +- 18 test Rust workspace: 3 agent, 14 desktop, 1 store; fmt/check/clippy con warning + trattati come errori. Cinque test grafici sono eseguiti separatamente dal runner. +- 60 casi per piattaforma: dieci viste × 1280×800 / 1440×900 / 3840×2160 × light/dark. + Overview/Fleet/Workloads/Energy/Events/Explore/Settings e AI/History/Processes del nodo. +- Elenco alternativo: due catture light/dark aggiuntive, selezione del dispositivo + e contrasto delle righe; verifica aggiunta dopo la prova della finestra reale. +- Controlli di visibilità dei valori CPU/GPU, timeline, mappa e modelli nel viewport; + allineamento delle intestazioni Fleet; stabilità della selezione; filtro e tastiera; + picking della scena; scroll; nodo non strumentato; flotta 0/1/2/5/16/32. +- Snapshot dei numeri dopo aggiornamenti successivi con verifica dei pixel dei glifi, + non solo presenza del testo nel tree. Test di regressione su gap/assenza/clock inverso. +- macOS: finestra reale ispezionata in entrambi i temi, letture dei cinque nodi, + cursore del grafico, Fleet, dettaglio, Workloads e scorciatoie Cmd+1…7. +- Linux/Exon: renderer headless wgpu/NVIDIA; lavoro confinato a due core e 4 GiB, + senza fermare servizi o workload esistenti. Non equivale a una sessione interattiva + X11/Wayland completa. + +L'accumulo di molti device headless nello stesso processo falliva su NVIDIA con +`Create new headless renderer`. Il runner ora isola sia ogni test d'interazione sia +ogni viewport in un processo, così le allocazioni vengono rilasciate. Il fallimento +iniziale e i log successivi restano negli artifact; non è stato ignorato un test. + +Il test elenco ha inoltre intercettato il caricamento asincrono del logo PNG: il +primo frame poteva precedere l'upload e differire dal secondo. Il piccolo asset viene +ora decodificato una sola volta in RGBA; Iced carica questo handle sincronicamente. +Il doppio screenshot elenco e il confronto Overview con la baseline esistente +verificano la correzione senza introdurre attese arbitrarie nella UI. + +Artifact locali ignorati: `.local/qa/w1/`. Le matrici anteriori `visual-v2`, +`visual-final` e `visual-brand` documentano le iterazioni; la matrice della sorgente +corrente è `visual-current`. Log: `checks-current.log`, `visual-current-macos.log`, +`linux/qualification-current.log`. Catture live: `brand-dark-live.png` e +`overview-final-1440.png` e `current-dark-live.png`; i nomi `fixture-*` indicano dati sintetici di test. + +## Prestazioni e gate aperti + +Build con icona raster finale, cinque nodi, Overview dark 1440×900 attivata con +Cmd+1, 30,36 s: CPU **1,61% di un core logico**, RSS massimo **138,94 MiB**. +Artifact: `performance-current-visible.json`. In questa finestra i due budget +preliminari sono rispettati; non è una qualificazione statistica o di lunga durata. +La modalità elenco, stessa finestra e cinque nodi in una sessione separata di +30,35 s, misura **1,65% di un core** e **134,84 MiB RSS massimo** +(`performance-current-list.json`). La differenza CPU è compatibile con il rumore +di queste brevi osservazioni; non prova una differenza causale tra 3D ed elenco. + +La prima misura W1 (prima dell'icona raster), cinque nodi, Overview visibile a +1440×900, 30,35 s: CPU **2,17% di un core logico**, RSS massimo **143,02 MiB**. +È una finestra esplorativa, non una distribuzione statistica né un confronto paired +con W0; il target CPU <2% non è attestato. I collector non sono cambiati: i benchmark +paired di inferenza Exon/Spark restano descritti nella W0, senza estendere il risultato +alla UI nuova o a runtime/modelli non misurati. + +Restano aperti: approvazione visiva dell'utente sul nuovo layout; accessibilità dei +widget alle tecnologie assistive (AX espone solo la finestra); avvio senza backend +GPU; profilo rigoroso foreground/background e latenza fino alla presentazione fisica; +video di sessione; soak e sleep/wake. La UI ha tastiera e modalità senza scena, ma +questi due fatti non dimostrano accessibilità completa o assenza di dipendenza GPU. + +Prossimo lavoro: chiudere la review W1 e i budget misurati, poi W2 — modello delle +osservazioni/serie/eventi, migrazioni SQLite e query storiche. Le metriche di richiesta +AI e l'energia integrata appartengono alla W3. Nessuna di queste capacità è dichiarata +realizzata dal redesign. + +## Esito delle verifiche + +macOS e Linux: 18 test Rust passati, matrice delle 60 viste passata, più i test +grafici di metriche aggiornate, picking/interazioni e le due catture elenco. +Dopo il caricamento RGBA del logo, ripetuti i controlli mirati elenco e il confronto +Overview con la baseline già registrata; entrambi passano. Nessun gate umano è +considerato approvato da questi test. + +## Identità del pacchetto + +Il manifest nel bundle registra commit, stato dirty, hash delle sorgenti e del binario +di build. La firma macOS cambia i byte Mach-O: confrontare direttamente il suo SHA +con il binario non impacchettato sarebbe scorretto. La ricevuta esterna +`.local/moonitor-build-receipt.json` registra separatamente hash di build, eseguibile +firmato, manifest e icona. Il packaging verifica la firma prima di scrivere la ricevuta. +La ricevuta resta esterna per evitare un riferimento circolare dentro la firma. diff --git a/scripts/build-icons.sh b/scripts/build-icons.sh new file mode 100755 index 0000000..8b947e6 --- /dev/null +++ b/scripts/build-icons.sh @@ -0,0 +1,13 @@ +#!/bin/sh +# Deterministic size conversion of the supplied artwork; original pixels retained. +set -eu +cd "$(dirname "$0")/.." +source_icon=assets/brand/moon-original.png +iconset_dir=.local/moonitor.iconset +mkdir -p "$iconset_dir" +for size in 16 32 128 256 512; do + sips -z "$size" "$size" "$source_icon" --out "$iconset_dir/icon_${size}x${size}.png" >/dev/null + retina=$((size * 2)) + sips -z "$retina" "$retina" "$source_icon" --out "$iconset_dir/icon_${size}x${size}@2x.png" >/dev/null +done +iconutil -c icns "$iconset_dir" -o .local/moonitor.icns diff --git a/scripts/build-receipt.py b/scripts/build-receipt.py new file mode 100644 index 0000000..de1f8a5 --- /dev/null +++ b/scripts/build-receipt.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +"""Record signed bundle hashes outside the signature's own resource envelope.""" +import hashlib +import json +import pathlib +import sys + +app = pathlib.Path(sys.argv[1]) +output = pathlib.Path(sys.argv[2]) +root = pathlib.Path(__file__).resolve().parents[1] + +def digest(path): + return hashlib.sha256(path.read_bytes()).hexdigest() + +manifest_path = app / 'Contents/Resources/build-manifest.json' +manifest = json.loads(manifest_path.read_text()) +unsigned = digest(root / 'target/release/moonitor') +assert unsigned == manifest['binaries']['moonitor'], 'Build changed after manifest creation' +receipt = { + 'commit': manifest['commit'], + 'dirty': manifest['dirty'], + 'source_sha256': manifest['source_sha256'], + 'build_binary_sha256': unsigned, + 'signed_bundle_binary_sha256': digest(app / 'Contents/MacOS/moonitor'), + 'manifest_sha256': digest(manifest_path), + 'icon_sha256': digest(app / 'Contents/Resources/moonitor.icns'), + 'note': 'Signing changes Mach-O bytes. Build and signed hashes intentionally differ.', +} +output.parent.mkdir(parents=True, exist_ok=True) +output.write_text(json.dumps(receipt, indent=2) + '\n') diff --git a/scripts/package-macos.sh b/scripts/package-macos.sh index c863bc3..42cd559 100755 --- a/scripts/package-macos.sh +++ b/scripts/package-macos.sh @@ -12,6 +12,8 @@ fi app_dir="$repo_dir/.local/moonitor.app" mkdir -p "$app_dir/Contents/MacOS" "$app_dir/Contents/Resources" cp target/release/moonitor "$app_dir/Contents/MacOS/moonitor" +scripts/build-icons.sh +cp .local/moonitor.icns "$app_dir/Contents/Resources/moonitor.icns" if [ ! -f .local/fleet.toml ]; then cp config/fleet.example.toml .local/fleet.toml; fi config_dir="$HOME/Library/Application Support/moonitor" mkdir -p "$config_dir" @@ -34,6 +36,7 @@ cat > "$app_dir/Contents/Info.plist" <<'PLIST' CFBundleExecutablemoonitor CFBundleIdentifierdev.maiomascio.moonitor CFBundleNamemoonitor +CFBundleIconFilemoonitor.icns CFBundlePackageTypeAPPL CFBundleShortVersionString0.1.0 CFBundleVersion1 @@ -42,4 +45,6 @@ cat > "$app_dir/Contents/Info.plist" <<'PLIST' PLIST codesign --force --sign - "$app_dir" +codesign --verify --deep --strict "$app_dir" +python3 scripts/build-receipt.py "$app_dir" .local/moonitor-build-receipt.json printf '%s\n' "$app_dir" diff --git a/scripts/qa-ui.sh b/scripts/qa-ui.sh index 34ce597..a30bd69 100755 --- a/scripts/qa-ui.sh +++ b/scripts/qa-ui.sh @@ -3,11 +3,13 @@ # Each viewport owns a process/device so large Vulkan snapshots release all allocations. set -eu cd "$(dirname "$0")/.." -export MOONITOR_QA_DIR="${MOONITOR_QA_DIR:-$PWD/.local/qa/w0/visual}" +export MOONITOR_QA_DIR="${MOONITOR_QA_DIR:-$PWD/.local/qa/w1/visual}" mkdir -p "$MOONITOR_QA_DIR" -MOONITOR_QA_CASE=fleet cargo test --locked -p moonitor-desktop ui::qa:: -- --ignored --test-threads=1 +for test in list_alternative_selection_and_theme changing_metrics_keep_visible_glyphs metric_rendering scene_picking_filter_keyboard_and_scroll visual_matrix_and_interactions; do + MOONITOR_QA_CASE=fleet cargo test --locked -p moonitor-desktop "ui::qa::$test" -- --ignored --exact --test-threads=1 +done for size in 1280x800 1440x900 3840x2160; do - for tab in overview ai history processes; do + for tab in overview fleet workloads energy events explore settings ai history processes; do for theme in light dark; do MOONITOR_QA_CASE="$tab-$size-$theme" cargo test --locked -p moonitor-desktop ui::qa::visual_matrix_and_interactions -- --ignored --exact --test-threads=1 done

;=0;*vffl0QxZhoat<9LuZbnGc_ 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 U2U}#)Y8imQ)78&qol`;+06*OKDF6Tf literal 0 HcmV?d00001 diff --git a/crates/moonitor-desktop/Cargo.toml b/crates/moonitor-desktop/Cargo.toml index 9936e3b..549b7d9 100644 --- a/crates/moonitor-desktop/Cargo.toml +++ b/crates/moonitor-desktop/Cargo.toml @@ -17,7 +17,7 @@ serde.workspace = true serde_json.workspace = true anyhow.workspace = true toml = "1.1.6" -iced = { version = "0.14.0", default-features = false, features = ["wgpu", "tokio", "canvas", "x11", "wayland", "crisp"] } +iced = { version = "0.14.0", default-features = false, features = ["wgpu", "image-without-codecs", "tokio", "canvas", "x11", "wayland", "crisp"] } bytemuck = { version = "1.25", features = ["derive"] } glam = { version = "0.30", features = ["bytemuck"] } image = { version = "0.25.10", default-features = false, features = ["png"] } diff --git a/crates/moonitor-desktop/assets/moonitor-128.png b/crates/moonitor-desktop/assets/moonitor-128.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9d1a7b5c126231dae9c5f48cebbd579d1f8c95 GIT binary patch literal 12433 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 bpAbqX5iL4j?0;AYLVE6!d=pAMgba literal 0 HcmV?d00001 diff --git a/crates/moonitor-desktop/assets/moonitor-256.png b/crates/moonitor-desktop/assets/moonitor-256.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3d1c6213bd9cbdce9bfd08f502d0ced465494a GIT binary patch literal 38907 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