From 4741d40e1b506467b6be4395e963f58de5e87654 Mon Sep 17 00:00:00 2001 From: gentpan Date: Sun, 13 Sep 2026 02:44:05 +0500 Subject: [PATCH] =?UTF-8?q?OpenStats=EF=BC=9AmacOS=20=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=A0=8F=E7=B3=BB=E7=BB=9F=E7=9B=91=E6=8E=A7=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 菜单栏:CPU/GPU/内存多样式、网速两行、温度、风扇 - 面板:概览仪表盘、进程、散热、防休眠,液态玻璃与浅色/深色主题 - 采集层:CPU/内存/网络/GPU/磁盘/电池/进程/SMC 温度与风扇,按界面分级采样 - root 辅助工具:风扇调速、合盖不睡眠,断开时自动恢复 - XcodeGen 工程、单元测试、截图模式 --- .gitignore | 7 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/icon_128x128.png | Bin 0 -> 3045 bytes .../AppIcon.appiconset/icon_128x128@2x.png | Bin 0 -> 6530 bytes .../AppIcon.appiconset/icon_16x16.png | Bin 0 -> 433 bytes .../AppIcon.appiconset/icon_16x16@2x.png | Bin 0 -> 767 bytes .../AppIcon.appiconset/icon_256x256.png | Bin 0 -> 6530 bytes .../AppIcon.appiconset/icon_256x256@2x.png | Bin 0 -> 15728 bytes .../AppIcon.appiconset/icon_32x32.png | Bin 0 -> 767 bytes .../AppIcon.appiconset/icon_32x32@2x.png | Bin 0 -> 1443 bytes .../AppIcon.appiconset/icon_512x512.png | Bin 0 -> 15728 bytes .../AppIcon.appiconset/icon_512x512@2x.png | Bin 0 -> 42127 bytes App/Assets.xcassets/Contents.json | 6 + App/Info.plist | 32 + App/main.swift | 3 + Helper/com.openstats.helper.plist | 22 + Helper/main.swift | 209 ++++++ Makefile | 41 ++ Packages/OpenStatsKit/Package.swift | 22 + .../Sources/HelperShared/HelperProtocol.swift | 30 + .../Sources/Metrics/CPUSampler.swift | 84 +++ .../Sources/Metrics/Formatting.swift | 110 +++ .../Sources/Metrics/HardwareSamplers.swift | 114 +++ .../Sources/Metrics/MemorySampler.swift | 42 ++ .../Sources/Metrics/MetricsHub.swift | 115 +++ .../OpenStatsKit/Sources/Metrics/Models.swift | 139 ++++ .../Sources/Metrics/NetworkSampler.swift | 71 ++ .../Sources/Metrics/ProcessSampler.swift | 90 +++ .../Sources/Metrics/SensorSampler.swift | 30 + .../Sources/Metrics/SysctlHelpers.swift | 38 + .../OpenStatsUI/AppKit/AppController.swift | 229 ++++++ .../OpenStatsUI/AppKit/MenuBarRenderer.swift | 292 ++++++++ .../OpenStatsUI/AppKit/StatusPanel.swift | 143 ++++ .../Sources/OpenStatsUI/Design/Charts.swift | 196 ++++++ .../OpenStatsUI/Design/Components.swift | 654 ++++++++++++++++++ .../Sources/OpenStatsUI/Design/Glass.swift | 54 ++ .../Sources/OpenStatsUI/Design/Tokens.swift | 166 +++++ .../OpenStatsUI/Panel/KeepAwakePage.swift | 144 ++++ .../OpenStatsUI/Panel/OverviewPage.swift | 556 +++++++++++++++ .../OpenStatsUI/Panel/PanelRootView.swift | 112 +++ .../OpenStatsUI/Panel/ProcessesPage.swift | 174 +++++ .../OpenStatsUI/Panel/ThermalPage.swift | 217 ++++++ .../OpenStatsUI/Settings/SettingsView.swift | 421 +++++++++++ .../Snapshot/SnapshotRenderer.swift | 101 +++ .../Sources/OpenStatsUI/State/AppModel.swift | 103 +++ .../OpenStatsUI/State/AppSettings.swift | 198 ++++++ .../OpenStatsUI/State/FanController.swift | 117 ++++ .../OpenStatsUI/State/HelperClient.swift | 173 +++++ .../State/KeepAwakeController.swift | 189 +++++ .../OpenStatsUI/State/MetricsStore.swift | 80 +++ .../OpenStatsKit/Sources/SMC/FanControl.swift | 142 ++++ .../Sources/SMC/SMCConnection.swift | 238 +++++++ .../Sources/SMC/TemperatureCatalog.swift | 58 ++ .../Tests/MetricsTests/MetricsTests.swift | 135 ++++ README.md | 156 +++++ ThirdPartyNotices.md | 31 + docs/PLAN.md | 404 +++++++++++ docs/images/keepawake-light.png | Bin 0 -> 229641 bytes docs/images/menubar-dark.png | Bin 0 -> 11431 bytes docs/images/overview-dark.png | Bin 0 -> 321707 bytes docs/images/overview-light.png | Bin 0 -> 321416 bytes docs/images/settings-menubar-light.png | Bin 0 -> 251488 bytes docs/images/thermal-dark.png | Bin 0 -> 211719 bytes project.yml | 83 +++ scripts/make-icon.swift | 64 ++ 65 files changed, 6903 insertions(+) create mode 100644 .gitignore create mode 100644 App/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_128x128.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_16x16.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_256x256.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_32x32.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_512x512.png create mode 100644 App/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png create mode 100644 App/Assets.xcassets/Contents.json create mode 100644 App/Info.plist create mode 100644 App/main.swift create mode 100644 Helper/com.openstats.helper.plist create mode 100644 Helper/main.swift create mode 100644 Makefile create mode 100644 Packages/OpenStatsKit/Package.swift create mode 100644 Packages/OpenStatsKit/Sources/HelperShared/HelperProtocol.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/CPUSampler.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/Formatting.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/HardwareSamplers.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/MemorySampler.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/MetricsHub.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/Models.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/NetworkSampler.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/ProcessSampler.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/SensorSampler.swift create mode 100644 Packages/OpenStatsKit/Sources/Metrics/SysctlHelpers.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/AppController.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/MenuBarRenderer.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/StatusPanel.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Charts.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Components.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Glass.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Tokens.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/KeepAwakePage.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/OverviewPage.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/PanelRootView.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ProcessesPage.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ThermalPage.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Settings/SettingsView.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/Snapshot/SnapshotRenderer.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppModel.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppSettings.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/State/FanController.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/State/HelperClient.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/State/KeepAwakeController.swift create mode 100644 Packages/OpenStatsKit/Sources/OpenStatsUI/State/MetricsStore.swift create mode 100644 Packages/OpenStatsKit/Sources/SMC/FanControl.swift create mode 100644 Packages/OpenStatsKit/Sources/SMC/SMCConnection.swift create mode 100644 Packages/OpenStatsKit/Sources/SMC/TemperatureCatalog.swift create mode 100644 Packages/OpenStatsKit/Tests/MetricsTests/MetricsTests.swift create mode 100644 README.md create mode 100644 ThirdPartyNotices.md create mode 100644 docs/PLAN.md create mode 100644 docs/images/keepawake-light.png create mode 100644 docs/images/menubar-dark.png create mode 100644 docs/images/overview-dark.png create mode 100644 docs/images/overview-light.png create mode 100644 docs/images/settings-menubar-light.png create mode 100644 docs/images/thermal-dark.png create mode 100644 project.yml create mode 100644 scripts/make-icon.swift diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51abb5a --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.DS_Store +build/ +*.xcodeproj/ +xcuserdata/ +.build/ +.swiftpm/ +Packages/OpenStatsKit/Package.resolved diff --git a/App/Assets.xcassets/AppIcon.appiconset/Contents.json b/App/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..5ec5b29 --- /dev/null +++ b/App/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "filename" : "icon_16x16.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "filename" : "icon_16x16@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "filename" : "icon_32x32.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "filename" : "icon_32x32@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "filename" : "icon_128x128.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "filename" : "icon_128x128@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "filename" : "icon_256x256.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "filename" : "icon_256x256@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "filename" : "icon_512x512.png", + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "filename" : "icon_512x512@2x.png", + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} \ No newline at end of file diff --git a/App/Assets.xcassets/AppIcon.appiconset/icon_128x128.png b/App/Assets.xcassets/AppIcon.appiconset/icon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb0ecd906d143233ee186ec21c729312d3ef7e9 GIT binary patch literal 3045 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 ZhRR>0M9DZsS_s}a;r7=|NH;{{}$`d zM>aWT9bjw7NlQty>+=`hb?5*7dR<4oL?-WsIlfvAuNoy9PM`n5(+Xm^K0K)B*k8Qpw;p~AM2`6U! z>0GEjwf*6Jd$zXs`~Ml=nWKA%fv1-3_onYW`uCVw7cv}Wn9x%7Dtd;@;n)2CC2vGX zO30kPfB5JHNe#9I-g!3vnjhNlQjn5QV$f(cOkiO@yk+hEi&K;f4^}1YYB(wE*=3;? z!ha(wpo>Y>|51ri15>e-j{O1`9?O}X5#EKXm>CjXl1e8rE`J0HI!{+Wmvv4FO#lEc BnE3zz literal 0 HcmV?d00001 diff --git a/App/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png b/App/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..191f659fc02fa2d629823e0cc775120f9a805472 GIT binary patch literal 767 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}7O4@QX}-P; zT0k}j17mw80}DtA5K93u0|V0nCb)>g0%imoB-!uha1yAb)YHW=B!cs8_}=UgM}hxu zYpXrKa709KIx4|_spGn|IfWQ?8OJR{dvyC5&m!A>ig%9 zF4@D>!TjX%(@)$p^_f2f`*yG!e=pmA<4ieoW36+1xzgO-+AM8m+#Ocxs>cE&C4QRi ztG{@}V}`!h_X%?fe>SIB9nb2NFWsnhAhnb$-c}Belb(o!c@}yQFqy~rNWXbkDOE=%Pjw-DY8OHr)kc**b`az zt9p#`J{E)}gik-PIok5g%cZ+Fddltn*PN8d?)QB1jQB~ns=h@?1)KQHoW1_hqZdqd zQ>E*c-Hl{irNOi+ZLQi`Lrd9&Hz$p>8eQi39sc-l$tL?bKYFKz-kzQ;*}O64(V7E~ zHXWJy+CH|h!df(;VVc5JmKj&x9#1u$!^qdXnTfC7_V2UDUDx9G=D(=g}b$lvJq z@sm7<#dL?o)>B^Y)KXK^K6UHeMPo%};e-hjt-aO4RQ6VKu4w|*;l*-f3Zw_S>;-8^?;6D^|Z178-Ew{#m_d-3^m< vr6-Ci_WEzRrEyu`h5v7|kkJ0zZ}E-$y=_nISi;682TF*Zu6{1-oD!M<{a8&T literal 0 HcmV?d00001 diff --git a/App/Assets.xcassets/AppIcon.appiconset/icon_256x256.png b/App/Assets.xcassets/AppIcon.appiconset/icon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..e04611f989978cb40e44ac51c8987cbbf180cdd3 GIT binary patch literal 6530 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 literal 0 HcmV?d00001 diff --git a/App/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/App/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6df3ed9e1faf4995a1636220deba3d39a4e68a GIT binary patch literal 1443 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

5`Jf+%8Kd0Y2Ml|P z;`0L*_UrP+gcL{NEn~(ZX8Rd{n_X-Ss<=}i*gRE&^{A2EM5|X(lZEY5O9(&)1;;7b zrId-_Zrz&cG0hLakn;y+M7>TfTGcH}#+J|=#kYwTyIkF6r274BPZNdC(EiSRZ{{^n z4x5NX_aNSd-cXedx#Z4BTABTgxlp`9Cz`fRE=@)nFrMsZ^5hb?Xm94VErihnmzGEXCsMQ`e}`TIC!qL~q-~^7e0O5J)pm8oa-1;fvZQRYC$D79 zH<0cREfvoHsb4vr_sOrYDQ=81m&9=0d&zR3K#eNXJFr-6HPzH*>Ba7$WBd?RlXDiU zlXr^#4F~y=i*vMMYA@t zIJO~mYNG41O!x}`el?rT^BTegatco8^9?^1pNg{HckyOHD2!D!dPw4HlcZFFr#S4y zp9l3c+UTYJQl1AM+&oox>&CL8=ywBW+W7CNFxj`UpC+brmwm0oXA-6#BMnJWhZJ8s zUAO3GCndbD%v9YQE~bPecnTM{=Fn9FFlBq}>8I3Q7drtZS??#i!xfXKw%6nF32&bmlQtle?o5=?x+{P^YGL#QE=-?Y>2lXH(YL4rl5!|4?% zQ7%bLNmWBWrZQr-iibMK$NRBW;j!d9@gl5=-IM# zpywxUk!o>K*b_CRaR%&X>FDTpN4=a?Ew;KNBC{4Iy_e4~z4ZFfvTpB1h>e1+tLzSM z6vNJ05G)Ui$TFGT8Ci1F1NP(tUuhUa@RsFUo(hS~jl8|FsF*j1H5Mc%rC9ocP6I-8a#%nH0+y@}rOHW~{mU$Tge!kUI1p_9Q(~D8s$R z?nNLyVGz8}_+doHA?%P5;@E43G%~}on?>tit%R%J<2RnT5?J3m_3WdBv|!xo6HlXo zMX411)h~qx%lGR@YGLutPgZ6OeqZamJ6l}*;sBHvyN={!7&h`US-NAx2s`$OI;qHI z!XkZ5mX)>nzW)BSsD4jG)lbt3vO{iOoXyHOA(;5}QEXnuV0E1+>75K4wYO<_)XbdZ zp8CTPb@U+6Y?%JW*VgOaQ$1BT?kwtRL5jLO-)r5l?(9YI=FyedKj9<(0DrpqZ_EQ-B~sHuiORy0@qN$Vuj~N_TC)(;@@-t4kJqy@*;rliVC_^Ag_%dK8uPE+_acPx>8$KqB4usl2F})PQl!UW zk~0hF{EawMmlC0!#6zUg+u9I=>&yEH3l%dBfs#JDY)G5D zR&0{3r_iEqJO219V`aPoWZ*%kF3}XhdKTR@JkGRFn{*Hy(N|}Y-)L)=4TY;`)HX!2r<_|&)w%iDXIJ$-QT`C7&AKf1USP zV9z2GlP#(sb=D?XKH0#}+m-;gPU5wk@tsErlM-FwXt_@a;&EQXS2t4KPQjXaq6JdB z^Uh3E9~B?-vp&EGS|8leK30ozy4U=%yfH8lp&};->zq>Eq37~E2Ucvpio5;kbZD(L zORAc7SXUr#s=HxH(wmZv3`=Tp?TZcjT0+Zz6-gx(?PAjQhNi%#s_aW<>aQqrKv&W6 zd1|qFI6Cgq~UBkUd-VOT|yR~NWc zl!Nb{ggqi>>guXs9#$;vY#*ejIlvlm`pTbdOhic-Sw`5Ys4@qEwKp#uFRmUqhb9Ww z{t2NZsp!iDmnKuMl{2vW^Y=0^4;+b4sNxw_a!`9o&L0j^*>< zTB5^h-D^w>W0&6p8gGJSif7awW~W6q(qMn-543}1;c6X*t?Nu2pCKu35x<`8=!(Rv z_fbzDKx1TLTDaSv^AfaS@n+K?P>lWffinC6Q@|K&djRT}KCSCHv`XQ9 z+W3H=oH`xge|7$h(vSRKm9vbnuOZ8y|1=R!{Z*;m-}pF}q4Lcty)9V+qt04Ft>7bX5y*NS@)jYxO^H9B2+;4^LuB_rpt(dCgCYKo&=^hREyr z7=f`S)OKHjns3DPoD=LGmFS4XgvXBd7G+Hd_JVd$o}rFQpUYZ8W^&~ z%)CnvVSyMGf$MPd{xCMs!?;Hym*-UJFye7 z1a011gL_dbvXLKd^sf4|Ed@W?34`DopNjD=cT@M?QJj_}gcMYyp zl%GyT#b4T=0u_TrbTyg!6+kr`v9yVIi-z&1q@|P#Dy^(suS^7+8AM6Y8nEW z$^?IDh0+5mi6k}(UTr{-c(&UI-G+%QAK4F#fnX@(+IiQTP;lhmBl^o&hqotUf0ajY zf7|y{NRiVbvJO>0Ma~a`7{^ya;x1IGBU7qmf@dBWg#zUh%gM8{-p{3LPx!>aXzi8{ z1=?OKA0U6duUK%z1{q7)WEowL1O@EZm*F+f-#kwEz6G|TeeVJ$f*Xb8GJJ;7KE}|K zc*ZYqpFf~>%Zwu49c|nxGe=;9)fJdupZO+Np4c3qKa%#F=NaYlsw$2avzIpwf4tLW z=2J=+sqQDVb37W_f;7E*QH3 z^A(d|YVZ|1Q+i;lhBvWd#5rfxPBj;Eo`NklV19G+Js9My`+NzbxQjJWo~Ty{r8HW@ zSI$*NH^DTb&lOh{L#)mB@^gYUJMYi*oZH;F~0!qHZ!{WI=fUw+Flm&CBPQSj2#H5#mJj4!h{?)N8d@@-4UWLLYLo=n&kLppJiWZnWEeJu53?5-E6GNfFQeT#&DHx8MurigCsAWZ|4w z%>PV-SyF6PlKFrYaus(yuns7`e^aqMN)D3yU#`3p%zov2fFuA`vvet6O>TAvRsTOz zMRPo#eH@B|We)HGNgE6%&|9ng1a=_=>S)~A0piC`x2!64?J&30Up;t2|Q*d@x19A*XU$UiaXLgd1;?rC`&Nn+x>D4*vA@0 zML`4$`sS4@2mZac{!th&kz=2mIUR2L*W^ws0(1`4BWQvzSK!F(S0Qj(eR<*okK;5! z^c?cyPUr?dEGR+hS#}^#W?Wjh{{N8h9U!6R7z+&$_M!;i{bIQ^wc=xh+)^KVWm9Nd`f2-B*~8>i}V(6FvhqizBLEFCGv}FbOSyUnsW= zbaV&s09b_|3XN@VQtf33ws{DM56o}P^Mi;0qR9XN*3SaX1GbN_$L(@HkaR?=9;7cc zfCALr`6D#F{`V|MS#Xxshg@9$yS=^siGA!3on?+3BoKoc=nmLY$hen6i6*`lqlTDSLOJEPI zao>T0)Br%(+H%iqNB^?q!_lKQwWN4C+fMb|+0P$DOifIQwl>S^Oi7aJDM;6%CGe{HaeA6t)(E@HI+>xU<9NW3=;++S#b+@UEN^LT}KTBvG;5 z+T?5zI*i#*_M_Yn-@>6e@f}nV!w-lCXQq1+?%=)79LQKzcD zD2wcBqR&&63R6n@9TI@t2rcORxk&#QO4Z#ua@$o?%5Bwyjb8PFWG{R<>8R3bMsyhK z=^hcitM|_ABL8JNby&MknFJ&zApHu-!UV?JAVf}T3w@briU(i+&c0Nw(9%TMjLi!I zS74la7z(d#@a3_7+4fU3SbWj?ga^i8%zs57&&C<u+u$8c-1CI9bqx5qB#8Ff|*lT|3=2 zz`mR465$0LIr;5hFO(!>CFhqFSDPq?JIOBY_b|UsmJQSz4Y@zP8@Dzm`%ea9{`DDb z*UMsr5o>$|1)=y6nT6u{vW!bNQ}g7}^>l}J$|Ww`F|bBfQ>dd8#Z6-3&oe+Z(hzUe z*CxbH7HrLuVnulL>L2Cfg8`H-oKJwb<$DduiEjwinL&%oZM@LA>&-_b|G1aj``^fr z+cCY`_Ze0?5+NQm5@Frc-Tqu%(pjBB8Lt^p6%($Sz}YG*CZPX3oFcY6Lx>TNdmT{L8`dY1K|& zxdiyvNv4l^|8D?RCKTT&-iorns8~y38>oynVOxceqmc}w@!mdgG5ZfvKDPIO1O~;%ZAPK;Z zkdS83Y!PaXYLz;&;uc1prfxF@hRuayp=uv9Nab{}!N!0tXS-70WwhQQOH1ebhT9I| zP<14F2`$nkc?w`E19H92*)f7^M6i&#&nJJgnYGrPGr+KBV78A+&rr~8`dDsit7jSR z^P74I31_x`d!{0Y2H+5bz#jPWF>^t}c%K9q3+~K2O819^C1+JCbji}pG^Ta{O%n*R zLW({xf$18Zu-Z{ZbH#;fPc*b>ye~S!CshV5{wV?y0W^o~Es_{~)zs;a7$PmZLHWvI zrGB7xfG47`{+_36`07rZ!DulcAHg1pfX3cIMsL};e!$7+zzb-9>=ax8KS7Ur^-Mp+ ziELcN8y>wNnXQK9OW4;;2)E-ew09_11lm6q-}RLM3aMLRgQI2GyblR&N!(!47UCeI z9QhVn`O{*Dw;q5j>qFD=(2UP;i47o6mwv^-Dg6f>-@=^ejyC520VrH@5CdPE@)Nf;5&z{|;s53WZIz$_`IM;~7$&BN8}v9N2d_VGBEmC`IDbCKaVKn* z0Tdo3&w#p`Vhj*o9ft_P5f5B8O4225v;-ouI|ZM6U0B;mo;R`r>h+$Nq5zyR=be3P z`G;`XWP|ay(oGraGzQ+89hdBKynj5Ix!Mn85wKz8dU?MFJtAWtHIZ`!wkNz>*kdq2d1Xy#>#*Meo}xDL!Ew)Yx2)^`(Ap#5D4>w#XyZqX5&Kv!NOiN{GbZampB>=S1reET3@!vqQbZ z;1Fjuvy`CSQAA`|i?C(I=r{GgYfBdGIeUX6Wv7!K>j%gu89OfzJ(jlG*IbV+qj}&n z6zs~@-@G`vlVm-@3-T91pB*4Ew#Q!JR?6jf#YbD2Bdm!+!omx81Yi(w^+iTAJw!L5 z+4&5gve}p)gxIj**A)U$$}RPn9qyk2jQw%m9BPitV$OZ!1;zvpGiXykJ!%eXI-V)~ z?~EcUa0wn&hQ?{|l-U!=001vkd^R?40>CcIY7;nqDA++Y?&yXCe}G)VeEhTIG;=#C zwn8VQpl&k-cbSrzsT@mX>$h5hW#1cb8@aPg9F<$$gi5nqn=Z3l(}~+Y3bX&Nõ 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 + + + + CFBundleDevelopmentRegion + zh-Hans + CFBundleDisplayName + OpenStats + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + OpenStats + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + LSUIElement + + NSHumanReadableCopyright + © 2026 OpenStats + + diff --git a/App/main.swift b/App/main.swift new file mode 100644 index 0000000..85c36f9 --- /dev/null +++ b/App/main.swift @@ -0,0 +1,3 @@ +import OpenStatsUI + +OpenStatsApplication.main() diff --git a/Helper/com.openstats.helper.plist b/Helper/com.openstats.helper.plist new file mode 100644 index 0000000..db6278e --- /dev/null +++ b/Helper/com.openstats.helper.plist @@ -0,0 +1,22 @@ + + + + + Label + com.openstats.helper + BundleProgram + Contents/MacOS/OpenStatsHelper + MachServices + + com.openstats.helper + + + AssociatedBundleIdentifiers + + com.openstats.app + + + RunAtLoad + + + diff --git a/Helper/main.swift b/Helper/main.swift new file mode 100644 index 0000000..f3b70f6 --- /dev/null +++ b/Helper/main.swift @@ -0,0 +1,209 @@ +// +// OpenStatsHelper +// +// 以 root 运行的辅助工具,由 SMAppService.daemon 注册。 +// 只做三件事:设置风扇转速、切换“合盖不睡眠”、在客户端断开时恢复默认。 +// + +import Foundation +import HelperShared +import SMC + +final class HelperService: NSObject, NSXPCListenerDelegate, OpenStatsHelperProtocol, @unchecked Sendable { + /// 所有可变状态只在该队列上访问 + private let queue = DispatchQueue(label: "com.openstats.helper.state") + private let listener = NSXPCListener(machServiceName: HelperConstants.machServiceName) + private let stateURL = URL(fileURLWithPath: "/Library/Application Support/OpenStats/helper-state.plist") + private let idleTimeout: TimeInterval = 30 + + private var connections: Set = [] + private var fans: FanControl? + private var manualFans: Set = [] + private var sleepDisabledByHelper = false + private var idleExit: DispatchWorkItem? + + func run() { + queue.sync { + fans = (try? SMCConnection()).map(FanControl.init) + recoverFromPreviousRun() + scheduleIdleExit() + } + listener.delegate = self + listener.resume() + dispatchMain() + } + + // MARK: NSXPCListenerDelegate + + func listener(_ listener: NSXPCListener, shouldAcceptNewConnection connection: NSXPCConnection) -> Bool { + // 系统在收到消息前校验调用方签名,不符合要求的连接会被直接失效 + connection.setCodeSigningRequirement(HelperConstants.clientRequirement) + connection.exportedInterface = NSXPCInterface(with: OpenStatsHelperProtocol.self) + connection.exportedObject = self + + let id = ObjectIdentifier(connection) + connection.invalidationHandler = { [weak self] in + guard let self else { return } + self.queue.async { self.connectionClosed(id) } + } + queue.sync { + connections.insert(id) + idleExit?.cancel() + } + connection.resume() + return true + } + + // MARK: OpenStatsHelperProtocol + + func protocolVersion(reply: @escaping @Sendable (Int) -> Void) { + reply(HelperConstants.protocolVersion) + } + + func setFanTarget(fan: Int, rpm: Double, reply: @escaping @Sendable (String?) -> Void) { + queue.async { [self] in + guard let fans else { return reply("无法访问 SMC") } + guard (0.. 0 else { return reply("无效的风扇参数") } + do { + try fans.setManual(fan: fan, rpm: rpm) + manualFans.insert(fan) + reply(nil) + } catch { + reply("设置风扇失败:\(error)") + } + } + } + + func setFanAutomatic(fan: Int, reply: @escaping @Sendable (String?) -> Void) { + queue.async { [self] in + guard let fans else { return reply("无法访问 SMC") } + guard (0.. Void) { + queue.async { [self] in + reply(resetFans()) + } + } + + func setSleepDisabled(_ disabled: Bool, reply: @escaping @Sendable (String?) -> Void) { + queue.async { [self] in + reply(applySleepDisabled(disabled)) + } + } + + func sleepDisabled(reply: @escaping @Sendable (Bool) -> Void) { + queue.async { [self] in + reply(currentSleepDisabled()) + } + } + + // MARK: 状态恢复 + + private func connectionClosed(_ id: ObjectIdentifier) { + connections.remove(id) + guard connections.isEmpty else { return } + // 应用已退出或崩溃:把系统恢复到默认状态 + _ = resetFans() + if sleepDisabledByHelper { _ = applySleepDisabled(false) } + scheduleIdleExit() + } + + private func recoverFromPreviousRun() { + guard let data = try? Data(contentsOf: stateURL), + let state = try? PropertyListDecoder().decode(PersistedState.self, from: data) else { return } + if state.sleepDisabled { + sleepDisabledByHelper = true + _ = applySleepDisabled(false) + } + if state.fansOverridden { _ = resetFans() } + } + + private func scheduleIdleExit() { + idleExit?.cancel() + let work = DispatchWorkItem { [weak self] in + guard let self, self.connections.isEmpty else { return } + exit(0) + } + idleExit = work + queue.asyncAfter(deadline: .now() + idleTimeout, execute: work) + } + + // MARK: 风扇 + + private func resetFans() -> String? { + guard let fans else { return manualFans.isEmpty ? nil : "无法访问 SMC" } + do { + try fans.resetAll() + manualFans.removeAll() + persist() + return nil + } catch { + return "恢复风扇失败:\(error)" + } + } + + // MARK: 睡眠 + + private func applySleepDisabled(_ disabled: Bool) -> String? { + let result = runPmset(["-a", "disablesleep", disabled ? "1" : "0"]) + guard result.status == 0 else { + return "pmset 执行失败:\(result.output.trimmingCharacters(in: .whitespacesAndNewlines))" + } + sleepDisabledByHelper = disabled + persist() + return nil + } + + private func currentSleepDisabled() -> Bool { + let output = runPmset(["-g"]).output + return output.split(separator: "\n").contains { line in + let parts = line.split(whereSeparator: \.isWhitespace) + return parts.first == "SleepDisabled" && parts.last == "1" + } + } + + private func runPmset(_ arguments: [String]) -> (status: Int32, output: String) { + let process = Process() + process.executableURL = URL(fileURLWithPath: "/usr/bin/pmset") + process.arguments = arguments + let pipe = Pipe() + process.standardOutput = pipe + process.standardError = pipe + do { + try process.run() + } catch { + return (-1, error.localizedDescription) + } + let data = pipe.fileHandleForReading.readDataToEndOfFile() + process.waitUntilExit() + return (process.terminationStatus, String(decoding: data, as: UTF8.self)) + } + + // MARK: 持久化 + + private struct PersistedState: Codable { + var sleepDisabled: Bool + var fansOverridden: Bool + } + + private func persist() { + let state = PersistedState(sleepDisabled: sleepDisabledByHelper, fansOverridden: !manualFans.isEmpty) + guard state.sleepDisabled || state.fansOverridden else { + try? FileManager.default.removeItem(at: stateURL) + return + } + try? FileManager.default.createDirectory(at: stateURL.deletingLastPathComponent(), withIntermediateDirectories: true) + try? PropertyListEncoder().encode(state).write(to: stateURL, options: .atomic) + } +} + +HelperService().run() diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f531151 --- /dev/null +++ b/Makefile @@ -0,0 +1,41 @@ +PROJECT := OpenStats.xcodeproj +SCHEME := OpenStats +CONFIG ?= Debug +DERIVED := build/DerivedData +APP := $(DERIVED)/Build/Products/$(CONFIG)/OpenStats.app + +.PHONY: generate build run stop test snapshot icon open clean + +## 由 project.yml 生成 Xcode 工程 +generate: + xcodegen generate --quiet + +## 编译 App(含辅助工具) +build: generate + xcodebuild -project $(PROJECT) -scheme $(SCHEME) -configuration $(CONFIG) \ + -derivedDataPath $(DERIVED) -destination 'platform=macOS' -quiet build + +## 编译并启动(会先结束正在运行的 OpenStats) +run: build stop + open $(APP) + +stop: + -pkill -x OpenStats + +## 单元测试 +test: + cd Packages/OpenStatsKit && swift test + +## 用本机实时数据渲染各页面截图到 build/snapshots +snapshot: build + $(APP)/Contents/MacOS/OpenStats --snapshot build/snapshots + +## 重新生成应用图标 +icon: + swift scripts/make-icon.swift App/Assets.xcassets/AppIcon.appiconset + +open: generate + open $(PROJECT) + +clean: + rm -rf build diff --git a/Packages/OpenStatsKit/Package.swift b/Packages/OpenStatsKit/Package.swift new file mode 100644 index 0000000..5d0b277 --- /dev/null +++ b/Packages/OpenStatsKit/Package.swift @@ -0,0 +1,22 @@ +// swift-tools-version: 6.0 +import PackageDescription + +let package = Package( + name: "OpenStatsKit", + defaultLocalization: "zh-Hans", + platforms: [.macOS(.v14)], + products: [ + .library(name: "SMC", targets: ["SMC"]), + .library(name: "Metrics", targets: ["Metrics"]), + .library(name: "HelperShared", targets: ["HelperShared"]), + .library(name: "OpenStatsUI", targets: ["OpenStatsUI"]), + ], + targets: [ + .target(name: "SMC"), + .target(name: "Metrics", dependencies: ["SMC"]), + .target(name: "HelperShared"), + .target(name: "OpenStatsUI", dependencies: ["Metrics", "SMC", "HelperShared"]), + .testTarget(name: "MetricsTests", dependencies: ["Metrics", "SMC"]), + ], + swiftLanguageModes: [.v6] +) diff --git a/Packages/OpenStatsKit/Sources/HelperShared/HelperProtocol.swift b/Packages/OpenStatsKit/Sources/HelperShared/HelperProtocol.swift new file mode 100644 index 0000000..41c4d0a --- /dev/null +++ b/Packages/OpenStatsKit/Sources/HelperShared/HelperProtocol.swift @@ -0,0 +1,30 @@ +import Foundation + +public enum HelperConstants { + public static let machServiceName = "com.openstats.helper" + public static let launchdPlistName = "com.openstats.helper.plist" + public static let appBundleIdentifier = "com.openstats.app" + /// 与 App 版本同步;App 发现辅助工具版本不一致时提示重新安装 + public static let protocolVersion = 1 + + /// 用 Developer ID 签名后填入 Team ID,辅助工具会据此严格校验调用方。 + /// 为空时只校验 bundle identifier,仅适用于本地开发。 + public static let teamIdentifier = "" + + public static var clientRequirement: String { + let identifier = "identifier \"\(appBundleIdentifier)\"" + guard !teamIdentifier.isEmpty else { return identifier } + return identifier + " and anchor apple generic and certificate leaf[subject.OU] = \"\(teamIdentifier)\"" + } +} + +/// 辅助工具以 root 运行,只暴露固定的少量操作,不提供任意命令执行能力。 +/// 所有回调中的 `String?` 为错误描述,nil 表示成功。 +@objc public protocol OpenStatsHelperProtocol { + func protocolVersion(reply: @escaping @Sendable (Int) -> Void) + func setFanTarget(fan: Int, rpm: Double, reply: @escaping @Sendable (String?) -> Void) + func setFanAutomatic(fan: Int, reply: @escaping @Sendable (String?) -> Void) + func resetAllFans(reply: @escaping @Sendable (String?) -> Void) + func setSleepDisabled(_ disabled: Bool, reply: @escaping @Sendable (String?) -> Void) + func sleepDisabled(reply: @escaping @Sendable (Bool) -> Void) +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/CPUSampler.swift b/Packages/OpenStatsKit/Sources/Metrics/CPUSampler.swift new file mode 100644 index 0000000..6e39010 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/CPUSampler.swift @@ -0,0 +1,84 @@ +import Darwin +import Foundation + +public struct CPUSampler { + private var previousTicks: [[UInt32]] = [] + + public init() {} + + public static func topology() -> CPUTopology { + let brand = Sysctl.string("machdep.cpu.brand_string") ?? "CPU" + let logical = Sysctl.int("hw.logicalcpu") ?? ProcessInfo.processInfo.activeProcessorCount + let levels = Sysctl.int("hw.nperflevels") ?? 1 + + guard levels > 1 else { + return CPUTopology(brand: brand, logicalCores: logical, + clusters: [CPUCluster(id: 0, name: "核心", coreIndices: Array(0.. 0 else { continue } + let raw = Sysctl.string("hw.perflevel\(level).name") ?? "" + clusters.append(CPUCluster(id: level, name: localizedClusterName(raw), coreIndices: Array(offset.. String { + switch raw.lowercased() { + case "super": "超级核" + case "performance": "性能核" + case "efficiency": "能效核" + default: raw.isEmpty ? "核心" : raw + } + } + + public mutating func sample() -> CPULoad? { + var cpuCount: natural_t = 0 + var info: processor_info_array_t? + var infoCount: mach_msg_type_number_t = 0 + let kr = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &cpuCount, &info, &infoCount) + guard kr == KERN_SUCCESS, let info else { return nil } + // 内核分配的数组必须归还,否则每次采样都会泄漏 + defer { + vm_deallocate(mach_task_self_, vm_address_t(bitPattern: info), + vm_size_t(Int(infoCount) * MemoryLayout.stride)) + } + + let states = Int(CPU_STATE_MAX) + var ticks: [[UInt32]] = [] + ticks.reserveCapacity(Int(cpuCount)) + for core in 0.. 0 else { return nil } + + var averages = [Double](repeating: 0, count: 3) + let loadCount = getloadavg(&averages, 3) + let user = Double(sumUser) / Double(sumAll) + let system = Double(sumSystem) / Double(sumAll) + return CPULoad(total: min(1, user + system), user: user, system: system, perCore: perCore, + loadAverage: loadCount > 0 ? Array(averages.prefix(Int(loadCount))) : []) + } +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/Formatting.swift b/Packages/OpenStatsKit/Sources/Metrics/Formatting.swift new file mode 100644 index 0000000..a855d91 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/Formatting.swift @@ -0,0 +1,110 @@ +import Foundation + +public struct History: Sendable { + public let capacity: Int + public private(set) var elements: [Element] = [] + + public init(capacity: Int) { + self.capacity = max(1, capacity) + elements.reserveCapacity(self.capacity) + } + + public mutating func append(_ element: Element) { + if elements.count == capacity { elements.removeFirst() } + elements.append(element) + } + + public var last: Element? { elements.last } +} + +public enum Format { + public enum ByteBase: Sendable { + case binary // 内存:1 GB = 1024³,与活动监视器一致 + case decimal // 磁盘:1 GB = 1000³,与访达一致 + } + + private static let units = ["B", "KB", "MB", "GB", "TB", "PB"] + + public static func bytes(_ value: UInt64, base: ByteBase = .binary) -> String { + bytes(Double(value), base: base) + } + + public static func bytes(_ value: Double, base: ByteBase = .binary) -> String { + let step: Double = base == .binary ? 1024 : 1000 + var amount = max(0, value) + var index = 0 + while amount >= step, index < units.count - 1 { + amount /= step + index += 1 + } + if index == 0 { return "\(Int(amount)) B" } + let digits = amount >= 100 ? 0 : 1 + return "\(amount.formatted(.number.precision(.fractionLength(digits)))) \(units[index])" + } + + public static func rate(_ bytesPerSecond: Double) -> String { + bytes(bytesPerSecond) + "/s" + } + + /// 菜单栏用的紧凑写法:692K、1.2M + public static func compactRate(_ bytesPerSecond: Double) -> String { + let value = max(0, bytesPerSecond) + switch value { + case ..<1024: return "\(Int(value))B" + case ..<(1024 * 1024): return "\(Int(value / 1024))K" + case ..<(1024 * 1024 * 1024): + let mb = value / 1024 / 1024 + return mb >= 10 ? "\(Int(mb))M" : "\(mb.formatted(.number.precision(.fractionLength(1))))M" + default: + return "\((value / 1024 / 1024 / 1024).formatted(.number.precision(.fractionLength(1))))G" + } + } + + /// 菜单栏网速:保留完整单位,数字最多 3 位,宽度稳定 + /// 例:512 B/s、12 KB/s、154 KB/s、1.2 MB/s、12 MB/s、1.1 GB/s + public static func menuBarRate(_ bytesPerSecond: Double) -> String { + let units = ["B/s", "KB/s", "MB/s", "GB/s"] + var value = max(0, bytesPerSecond) + var index = 0 + // 超过 999 就进位,避免出现 1023 KB/s 这种 4 位数 + while value >= 999.5, index < units.count - 1 { + value /= 1024 + index += 1 + } + let text = index >= 2 && value < 9.95 + ? value.formatted(.number.precision(.fractionLength(1))) + : String(Int(value.rounded())) + return "\(text) \(units[index])" + } + + public static func percent(_ fraction: Double) -> String { + "\(Int((min(1, max(0, fraction)) * 100).rounded()))%" + } + + public static func temperature(_ celsius: Double, fahrenheit: Bool = false) -> String { + fahrenheit ? "\(Int((celsius * 9 / 5 + 32).rounded()))°F" : "\(Int(celsius.rounded()))°C" + } + + public static func rpm(_ value: Double) -> String { + "\(Int(value.rounded())) RPM" + } + + public static func duration(minutes: Int) -> String { + let hours = minutes / 60 + let rest = minutes % 60 + switch (hours, rest) { + case (0, _): return "\(rest) 分钟" + case (_, 0): return "\(hours) 小时" + default: return "\(hours) 小时 \(rest) 分钟" + } + } + + public static func uptime(since date: Date, now: Date = Date()) -> String { + let minutes = max(0, Int(now.timeIntervalSince(date) / 60)) + let days = minutes / (60 * 24) + let hours = (minutes / 60) % 24 + if days > 0 { return hours > 0 ? "\(days) 天 \(hours) 小时" : "\(days) 天" } + if hours > 0 { return "\(hours) 小时" } + return "\(minutes) 分钟" + } +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/HardwareSamplers.swift b/Packages/OpenStatsKit/Sources/Metrics/HardwareSamplers.swift new file mode 100644 index 0000000..a7dfd83 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/HardwareSamplers.swift @@ -0,0 +1,114 @@ +import Foundation +import IOKit +import IOKit.ps + +// MARK: - 磁盘 + +public enum DiskSampler { + public static func sample(volume: URL = URL(fileURLWithPath: "/")) -> DiskUsage? { + let keys: Set = [.volumeLocalizedNameKey, .volumeTotalCapacityKey, + .volumeAvailableCapacityForImportantUsageKey] + guard let values = try? volume.resourceValues(forKeys: keys), + let total = values.volumeTotalCapacity else { return nil } + // “重要用途可用空间”包含可清除空间,与访达显示一致 + let available = values.volumeAvailableCapacityForImportantUsage ?? 0 + return DiskUsage(volumeName: values.volumeLocalizedName ?? "磁盘", + total: UInt64(total), available: UInt64(max(0, available))) + } +} + +// MARK: - 电池 + +public enum BatterySampler { + public static func sample() -> BatteryStatus? { + guard let blob = IOPSCopyPowerSourcesInfo()?.takeRetainedValue(), + let sources = IOPSCopyPowerSourcesList(blob)?.takeRetainedValue() as? [CFTypeRef] else { return nil } + + for source in sources { + guard let description = IOPSGetPowerSourceDescription(blob, source)?.takeUnretainedValue() as? [String: Any], + description[kIOPSTypeKey] as? String == kIOPSInternalBatteryType else { continue } + + let current = description[kIOPSCurrentCapacityKey] as? Int ?? 0 + let maximum = description[kIOPSMaxCapacityKey] as? Int ?? 100 + let isCharging = description[kIOPSIsChargingKey] as? Bool ?? false + let pluggedIn = description[kIOPSPowerSourceStateKey] as? String == kIOPSACPowerValue + let charged = description[kIOPSIsChargedKey] as? Bool ?? false + let minutesKey = isCharging ? kIOPSTimeToFullChargeKey : kIOPSTimeToEmptyKey + let minutes = (description[minutesKey] as? Int).flatMap { $0 > 0 ? $0 : nil } + + var status = BatteryStatus(level: maximum > 0 ? Double(current) / Double(maximum) : 0, + isCharging: isCharging, isPluggedIn: pluggedIn, isFullyCharged: charged, + minutesRemaining: pluggedIn && !isCharging ? nil : minutes) + fillRegistryDetails(&status) + return status + } + return nil + } + + private static func fillRegistryDetails(_ status: inout BatteryStatus) { + let service = IOServiceGetMatchingService(kIOMainPortDefault, IOServiceMatching("AppleSmartBattery")) + guard service != 0 else { return } + defer { IOObjectRelease(service) } + + status.cycleCount = IORegistry.property(service, "CycleCount") as? Int + if let data = IORegistry.property(service, "BatteryData") as? [String: Any], + let design = data["DesignCapacity"] as? Int, design > 0, + let capacity = (data["NominalChargeCapacity"] as? Int) ?? (data["FullChargeCapacity"] as? Int) { + status.health = min(1, Double(capacity) / Double(design)) + } + if let adapter = IORegistry.property(service, "AdapterDetails") as? [String: Any] { + status.adapterWatts = adapter["Watts"] as? Int + } + } +} + +// MARK: - GPU + +public enum GPUSampler { + public static func sample() -> GPUUsage? { + var iterator: io_iterator_t = 0 + guard IOServiceGetMatchingServices(kIOMainPortDefault, IOServiceMatching("IOAccelerator"), &iterator) == KERN_SUCCESS else { + return nil + } + defer { IOObjectRelease(iterator) } + + var best: GPUUsage? + while case let service = IOIteratorNext(iterator), service != 0 { + defer { IOObjectRelease(service) } + // 只读取需要的属性,避免复制整张属性表 + guard let stats = IORegistry.property(service, "PerformanceStatistics") as? [String: Any], + let utilization = stats["Device Utilization %"] as? Int else { continue } + let usage = GPUUsage(name: IORegistry.property(service, "model") as? String ?? "GPU", + utilization: Double(min(100, max(0, utilization))) / 100, + coreCount: IORegistry.property(service, "gpu-core-count") as? Int) + if best == nil || usage.utilization > best!.utilization { best = usage } + } + return best + } +} + +// MARK: - 系统信息 + +public enum SystemInfoReader { + public static func read() -> SystemInfo { + let product = IORegistryEntryFromPath(kIOMainPortDefault, "IODeviceTree:/product") + var modelName = Sysctl.string("hw.model") ?? "Mac" + if product != 0 { + if let name = IORegistry.string(fromData: IORegistry.property(product, "product-name")), !name.isEmpty { + modelName = name + } + IOObjectRelease(product) + } + + let version = ProcessInfo.processInfo.operatingSystemVersion + let patch = version.patchVersion > 0 ? ".\(version.patchVersion)" : "" + var bootTime = timeval() + var size = MemoryLayout.size + let boot = sysctlbyname("kern.boottime", &bootTime, &size, nil, 0) == 0 + ? Date(timeIntervalSince1970: TimeInterval(bootTime.tv_sec)) : nil + + return SystemInfo(modelName: modelName, + osVersion: "macOS \(version.majorVersion).\(version.minorVersion)\(patch)", + bootDate: boot) + } +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/MemorySampler.swift b/Packages/OpenStatsKit/Sources/Metrics/MemorySampler.swift new file mode 100644 index 0000000..eeb959e --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/MemorySampler.swift @@ -0,0 +1,42 @@ +import Darwin +import Foundation + +public struct MemorySampler { + private let total = ProcessInfo.processInfo.physicalMemory + private let pageSize: UInt64 = { + var size: vm_size_t = 0 + host_page_size(mach_host_self(), &size) + return UInt64(size) + }() + + public init() {} + + public func sample() -> MemoryUsage? { + var stats = vm_statistics64() + var count = mach_msg_type_number_t(MemoryLayout.stride / MemoryLayout.stride) + let kr = withUnsafeMutablePointer(to: &stats) { + $0.withMemoryRebound(to: integer_t.self, capacity: Int(count)) { + host_statistics64(mach_host_self(), HOST_VM_INFO64, $0, &count) + } + } + guard kr == KERN_SUCCESS else { return nil } + + // 与“活动监视器”口径一致:App 内存 = internal - purgeable + let internalPages = UInt64(stats.internal_page_count) + let purgeable = UInt64(stats.purgeable_count) + let app = (internalPages > purgeable ? internalPages - purgeable : 0) * pageSize + + var swap = xsw_usage() + var swapSize = MemoryLayout.size + let swapUsed = sysctlbyname("vm.swapusage", &swap, &swapSize, nil, 0) == 0 ? swap.xsu_used : 0 + + let level = Sysctl.int("kern.memorystatus_vm_pressure_level") ?? 1 + return MemoryUsage(total: total, + app: app, + wired: UInt64(stats.wire_count) * pageSize, + compressed: UInt64(stats.compressor_page_count) * pageSize, + cached: (UInt64(stats.external_page_count) + purgeable) * pageSize, + swapUsed: swapUsed, + pressure: MemoryPressure(rawValue: level) ?? .normal) + } +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/MetricsHub.swift b/Packages/OpenStatsKit/Sources/Metrics/MetricsHub.swift new file mode 100644 index 0000000..1ff4515 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/MetricsHub.swift @@ -0,0 +1,115 @@ +import Foundation +import SMC + +/// 描述当前界面需要哪些指标。面板关闭时只采菜单栏用到的项目。 +public struct MetricsDemand: Sendable, Equatable { + public var interval: Duration = .seconds(2) + public var memory = false + public var network = false + public var gpu = false + public var disk = false + public var battery = false + public var processes = false + public var temperatures: Set = [] + public var fans = false + + public init() {} +} + +public actor MetricsHub { + private var cpu = CPUSampler() + private let memory = MemorySampler() + private var network = NetworkSampler() + private var processes = ProcessSampler() + private let sensors = SensorSampler() + + private var demand = MetricsDemand() + private var handler: (@MainActor @Sendable (MetricsSnapshot) -> Void)? + private var loop: Task? + private var paused = false + + private var lastDisk = Date.distantPast + private var lastBattery = Date.distantPast + private var lastInterface = Date.distantPast + + public init() {} + + public func start(handler: @escaping @MainActor @Sendable (MetricsSnapshot) -> Void) { + self.handler = handler + restart() + } + + public func update(_ newDemand: MetricsDemand) { + guard newDemand != demand else { return } + let needsImmediateRefresh = newDemand.interval < demand.interval + || (newDemand.processes && !demand.processes) + || (newDemand.disk && !demand.disk) + demand = newDemand + if needsImmediateRefresh { + lastDisk = .distantPast + lastBattery = .distantPast + lastInterface = .distantPast + } + restart() + } + + /// 锁屏、屏幕休眠或系统睡眠时暂停采样 + public func setPaused(_ value: Bool) { + guard value != paused else { return } + paused = value + restart() + } + + public func stop() { + loop?.cancel() + loop = nil + handler = nil + } + + private func restart() { + loop?.cancel() + guard !paused, handler != nil else { + loop = nil + return + } + loop = Task { await self.run() } + } + + private func run() async { + while !Task.isCancelled { + let snapshot = collect() + if let handler { await handler(snapshot) } + // 容差让系统合并定时器唤醒,降低功耗 + try? await Task.sleep(for: demand.interval, tolerance: demand.interval / 4) + } + } + + private func collect() -> MetricsSnapshot { + let now = Date() + var snapshot = MetricsSnapshot() + snapshot.cpu = cpu.sample() + + if demand.memory { snapshot.memory = memory.sample() } + if demand.network { + snapshot.network = network.sample() + if now.timeIntervalSince(lastInterface) > 15 { + snapshot.networkInterface = NetworkSampler.primaryInterface() + lastInterface = now + } + } + if demand.gpu { snapshot.gpu = GPUSampler.sample() } + if demand.disk, now.timeIntervalSince(lastDisk) > 30 { + snapshot.disk = DiskSampler.sample() + lastDisk = now + } + if demand.battery, now.timeIntervalSince(lastBattery) > 10 { + snapshot.battery = BatterySampler.sample() + lastBattery = now + } + if demand.processes { snapshot.processes = processes.sample() } + if !demand.temperatures.isEmpty || demand.fans { + snapshot.sensors = sensors.sample(groups: demand.temperatures, includeFans: demand.fans) + } + return snapshot + } +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/Models.swift b/Packages/OpenStatsKit/Sources/Metrics/Models.swift new file mode 100644 index 0000000..b906189 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/Models.swift @@ -0,0 +1,139 @@ +import Foundation +import SMC + +public struct CPUCluster: Sendable, Equatable, Identifiable { + public let id: Int // perflevel 序号,0 为最高性能档 + public let name: String // 超级核 / 性能核 / 能效核 + public let coreIndices: [Int] // 对应 host_processor_info 的核心序号 +} + +public struct CPUTopology: Sendable, Equatable { + public let brand: String + public let logicalCores: Int + public let clusters: [CPUCluster] +} + +public struct CPULoad: Sendable, Equatable { + public var total: Double + public var user: Double + public var system: Double + public var perCore: [Double] + public var loadAverage: [Double] +} + +public enum MemoryPressure: Int, Sendable { + case normal = 1, warning = 2, critical = 4 + + public var title: String { + switch self { + case .normal: "正常" + case .warning: "偏高" + case .critical: "严重" + } + } +} + +public struct MemoryUsage: Sendable, Equatable { + public var total: UInt64 + public var app: UInt64 + public var wired: UInt64 + public var compressed: UInt64 + public var cached: UInt64 + public var swapUsed: UInt64 + public var pressure: MemoryPressure + + public var used: UInt64 { app + wired + compressed } + public var usedFraction: Double { total == 0 ? 0 : min(1, Double(used) / Double(total)) } +} + +public struct NetworkInterfaceInfo: Sendable, Equatable { + public var bsdName: String + public var displayName: String + public var ipv4: String? +} + +public struct NetworkRate: Sendable, Equatable { + public var downloadBytesPerSecond: Double + public var uploadBytesPerSecond: Double + public var totalDownloaded: UInt64 + public var totalUploaded: UInt64 +} + +public struct DiskUsage: Sendable, Equatable { + public var volumeName: String + public var total: UInt64 + public var available: UInt64 + + public var used: UInt64 { total > available ? total - available : 0 } + public var usedFraction: Double { total == 0 ? 0 : Double(used) / Double(total) } +} + +public struct BatteryStatus: Sendable, Equatable { + public var level: Double // 0...1 + public var isCharging: Bool + public var isPluggedIn: Bool + public var isFullyCharged: Bool + public var minutesRemaining: Int? // 放电剩余或充满所需时间 + public var cycleCount: Int? + public var health: Double? // 0...1 + public var adapterWatts: Int? +} + +public struct GPUUsage: Sendable, Equatable { + public var name: String + public var utilization: Double // 0...1 + public var coreCount: Int? +} + +public struct ProcessUsage: Sendable, Equatable, Identifiable { + public var id: Int32 { pid } + public let pid: Int32 + public let name: String + public let executablePath: String? + public let appBundlePath: String? + public var cpu: Double // 以单核为 100%,与活动监视器一致 + public var memory: UInt64 // phys_footprint +} + +public struct TemperatureSummary: Sendable, Equatable, Identifiable { + public var id: TemperatureGroup { group } + public let group: TemperatureGroup + public var average: Double + public var maximum: Double + public var sensorCount: Int +} + +public struct SensorReadings: Sendable, Equatable { + public var temperatures: [TemperatureSummary] + public var fans: [FanState] + + public init(temperatures: [TemperatureSummary], fans: [FanState]) { + self.temperatures = temperatures + self.fans = fans + } + + public func temperature(_ group: TemperatureGroup) -> TemperatureSummary? { + temperatures.first { $0.group == group } + } +} + +public struct SystemInfo: Sendable, Equatable { + public var modelName: String + public var osVersion: String + public var bootDate: Date? +} + +public struct MetricsSnapshot: Sendable { + public var date = Date() + public var cpu: CPULoad? + public var memory: MemoryUsage? + public var network: NetworkRate? + public var networkInterface: NetworkInterfaceInfo? + public var disk: DiskUsage? + public var battery: BatteryStatus? + public var gpu: GPUUsage? + public var processes: [ProcessUsage]? + public var sensors: SensorReadings? + + public init() {} +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/NetworkSampler.swift b/Packages/OpenStatsKit/Sources/Metrics/NetworkSampler.swift new file mode 100644 index 0000000..7fba118 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/NetworkSampler.swift @@ -0,0 +1,71 @@ +import Darwin +import Foundation +import SystemConfiguration + +public struct NetworkSampler { + private var last: (download: UInt64, upload: UInt64, time: UInt64)? + + public init() {} + + /// `getifaddrs` 中的 `if_data.ifi_ibytes` 只有 32 位,超过 4 GiB 会回绕; + /// 这里用 NET_RT_IFLIST2 读取 `if_data64`。 + private static func counters() -> (download: UInt64, upload: UInt64)? { + var mib: [Int32] = [CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST2, 0] + var length = 0 + guard sysctl(&mib, u_int(mib.count), nil, &length, nil, 0) == 0 else { return nil } + var buffer = [UInt8](repeating: 0, count: length) + guard sysctl(&mib, u_int(mib.count), &buffer, &length, nil, 0) == 0 else { return nil } + + var download: UInt64 = 0 + var upload: UInt64 = 0 + buffer.withUnsafeBytes { raw in + var offset = 0 + while offset + MemoryLayout.size <= length { + let header = raw.loadUnaligned(fromByteOffset: offset, as: if_msghdr.self) + guard header.ifm_msglen > 0 else { break } + if Int32(header.ifm_type) == RTM_IFINFO2, + offset + MemoryLayout.size <= length { + let header2 = raw.loadUnaligned(fromByteOffset: offset, as: if_msghdr2.self) + if header2.ifm_flags & IFF_LOOPBACK == 0 { + download += header2.ifm_data.ifi_ibytes + upload += header2.ifm_data.ifi_obytes + } + } + offset += Int(header.ifm_msglen) + } + } + return (download, upload) + } + + public mutating func sample() -> NetworkRate? { + guard let now = Self.counters() else { return nil } + let time = clock_gettime_nsec_np(CLOCK_UPTIME_RAW) + defer { last = (now.download, now.upload, time) } + guard let last, time > last.time else { return nil } + let seconds = Double(time - last.time) / 1_000_000_000 + // 接口重置时计数器可能变小,此时本次速率记为 0 + let down = now.download >= last.download ? Double(now.download - last.download) / seconds : 0 + let up = now.upload >= last.upload ? Double(now.upload - last.upload) / seconds : 0 + return NetworkRate(downloadBytesPerSecond: down, uploadBytesPerSecond: up, + totalDownloaded: now.download, totalUploaded: now.upload) + } + + public static func primaryInterface() -> NetworkInterfaceInfo? { + guard let store = SCDynamicStoreCreate(nil, "OpenStats" as CFString, nil, nil), + let global = SCDynamicStoreCopyValue(store, "State:/Network/Global/IPv4" as CFString) as? [String: Any], + let bsdName = global["PrimaryInterface"] as? String else { return nil } + + let interfaces = SCNetworkInterfaceCopyAll() as? [SCNetworkInterface] ?? [] + let systemName = interfaces + .first { SCNetworkInterfaceGetBSDName($0) as String? == bsdName } + .flatMap { SCNetworkInterfaceGetLocalizedDisplayName($0) as String? } + // utun / ipsec / ppp 是 VPN 或代理隧道,系统不提供显示名 + let tunnelPrefixes = ["utun", "ipsec", "ppp"] + let displayName = systemName + ?? (tunnelPrefixes.contains { bsdName.hasPrefix($0) } ? "VPN 隧道" : bsdName) + + let state = SCDynamicStoreCopyValue(store, "State:/Network/Interface/\(bsdName)/IPv4" as CFString) as? [String: Any] + let address = (state?["Addresses"] as? [String])?.first + return NetworkInterfaceInfo(bsdName: bsdName, displayName: displayName, ipv4: address) + } +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/ProcessSampler.swift b/Packages/OpenStatsKit/Sources/Metrics/ProcessSampler.swift new file mode 100644 index 0000000..2d85050 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/ProcessSampler.swift @@ -0,0 +1,90 @@ +import Darwin +import Foundation + +public struct ProcessSampler { + private struct Identity: Hashable { + let pid: Int32 + let startTime: UInt64 + } + + private struct Meta { + let name: String + let path: String? + let bundle: String? + } + + private var previousCPU: [Identity: UInt64] = [:] + private var previousTime: UInt64 = 0 + private var metaCache: [Identity: Meta] = [:] + + public init() {} + + /// 返回按 CPU 排序的进程;无权限读取的进程(通常属于 root)会被跳过。 + public mutating func sample(limit: Int = 50) -> [ProcessUsage] { + let capacity = Int(proc_listallpids(nil, 0)) + 64 + guard capacity > 64 else { return [] } + var pids = [pid_t](repeating: 0, count: capacity) + let count = Int(proc_listallpids(&pids, Int32(capacity * MemoryLayout.stride))) + guard count > 0 else { return [] } + + // CPU 时间与墙钟时间都用 mach 绝对时间单位,比值无需换算时基 + let now = mach_absolute_time() + let elapsed = previousTime > 0 ? now - previousTime : 0 + + var cpuTimes: [Identity: UInt64] = [:] + var liveMeta: [Identity: Meta] = [:] + var results: [ProcessUsage] = [] + results.reserveCapacity(count) + + for pid in pids.prefix(count) where pid > 0 { + var info = rusage_info_v4() + let status = withUnsafeMutablePointer(to: &info) { + $0.withMemoryRebound(to: rusage_info_t?.self, capacity: 1) { + proc_pid_rusage(pid, RUSAGE_INFO_V4, $0) + } + } + guard status == 0 else { continue } + + let identity = Identity(pid: pid, startTime: info.ri_proc_start_abstime) + let cpuTime = info.ri_user_time + info.ri_system_time + cpuTimes[identity] = cpuTime + + let meta = metaCache[identity] ?? Self.meta(for: pid) + liveMeta[identity] = meta + + var cpu = 0.0 + if elapsed > 0, let before = previousCPU[identity], cpuTime >= before { + cpu = Double(cpuTime - before) / Double(elapsed) + } + results.append(ProcessUsage(pid: pid, name: meta.name, executablePath: meta.path, + appBundlePath: meta.bundle, cpu: cpu, memory: info.ri_phys_footprint)) + } + + previousCPU = cpuTimes + previousTime = now + metaCache = liveMeta + + results.sort { $0.cpu == $1.cpu ? $0.memory > $1.memory : $0.cpu > $1.cpu } + return Array(results.prefix(limit)) + } + + private static func meta(for pid: pid_t) -> Meta { + var pathBuffer = [CChar](repeating: 0, count: 4 * Int(MAXPATHLEN)) + let pathLength = proc_pidpath(pid, &pathBuffer, UInt32(pathBuffer.count)) + let path = pathLength > 0 ? String(nullTerminated: pathBuffer) : nil + + var name = path.map { URL(fileURLWithPath: $0).lastPathComponent } ?? "" + if name.isEmpty { + var nameBuffer = [CChar](repeating: 0, count: 256) + proc_name(pid, &nameBuffer, UInt32(nameBuffer.count)) + name = String(nullTerminated: nameBuffer) + } + + // 取最外层 .app,辅助进程也能显示主应用图标 + let bundle = path.flatMap { path -> String? in + guard let range = path.range(of: ".app/") else { return nil } + return String(path[.. = Set(TemperatureGroup.allCases), includeFans: Bool = true) -> SensorReadings? { + guard let smc else { return nil } + var summaries: [TemperatureSummary] = [] + for group in TemperatureGroup.allCases where groups.contains(group) { + let values = (catalog[group] ?? []).compactMap(smc.double).filter(TemperatureCatalog.plausibleRange.contains) + guard !values.isEmpty else { continue } + summaries.append(TemperatureSummary(group: group, + average: values.reduce(0, +) / Double(values.count), + maximum: values.max() ?? 0, + sensorCount: values.count)) + } + return SensorReadings(temperatures: summaries, fans: includeFans ? (fans?.read() ?? []) : []) + } +} diff --git a/Packages/OpenStatsKit/Sources/Metrics/SysctlHelpers.swift b/Packages/OpenStatsKit/Sources/Metrics/SysctlHelpers.swift new file mode 100644 index 0000000..84a31ee --- /dev/null +++ b/Packages/OpenStatsKit/Sources/Metrics/SysctlHelpers.swift @@ -0,0 +1,38 @@ +import Darwin +import Foundation +import IOKit + +enum Sysctl { + static func int(_ name: String) -> Int? { + var value: Int64 = 0 + var size = MemoryLayout.size + guard sysctlbyname(name, &value, &size, nil, 0) == 0 else { return nil } + // 32 位值只写入低 4 字节 + return size == MemoryLayout.size ? Int(Int32(truncatingIfNeeded: value)) : Int(value) + } + + static func string(_ name: String) -> String? { + var size = 0 + guard sysctlbyname(name, nil, &size, nil, 0) == 0, size > 0 else { return nil } + var buffer = [CChar](repeating: 0, count: size) + guard sysctlbyname(name, &buffer, &size, nil, 0) == 0 else { return nil } + return String(nullTerminated: buffer) + } +} + +enum IORegistry { + static func property(_ service: io_registry_entry_t, _ key: String) -> Any? { + IORegistryEntryCreateCFProperty(service, key as CFString, kCFAllocatorDefault, 0)?.takeRetainedValue() + } + + static func string(fromData value: Any?) -> String? { + guard let data = value as? Data else { return value as? String } + return String(decoding: data.prefix { $0 != 0 }, as: UTF8.self) + } +} + +extension String { + init(nullTerminated buffer: [CChar]) { + self = String(decoding: buffer.prefix { $0 != 0 }.map { UInt8(bitPattern: $0) }, as: UTF8.self) + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/AppController.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/AppController.swift new file mode 100644 index 0000000..21b24a8 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/AppController.swift @@ -0,0 +1,229 @@ +import AppKit +import Metrics +import SwiftUI + +@MainActor +public final class AppController: NSObject, NSApplicationDelegate { + private let model = AppModel() + private var statusItem: NSStatusItem! + private var panel: StatusPanel! + private var settingsWindow: NSWindow? + private var workspaceObservers: [NSObjectProtocol] = [] + + public override init() { + super.init() + } + + public func applicationDidFinishLaunching(_ notification: Notification) { + setUpStatusItem() + setUpPanel() + + model.openSettings = { [weak self] in self?.showSettings() } + model.quit = { NSApp.terminate(nil) } + model.helper.refreshStatus() + model.helper.onReconnect = { [weak self] in + Task { [weak self] in + await self?.model.fans.reapply() + await self?.model.keepAwake.reapply() + } + } + + observeWorkspace() + observeModel() + applyAppearance() + + // 开发调试:启动后展开并固定面板,便于测量面板打开时的资源占用 + if CommandLine.arguments.contains("--show-panel") { + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { [weak self] in + self?.togglePanel() + self?.panel.isPinned = true + } + } + + let model = self.model + Task { [weak self] in + await model.hub.update(model.demand) + await model.hub.start { [weak self] snapshot in + model.handle(snapshot) + self?.refreshStatusItem() + } + } + } + + public func applicationWillTerminate(_ notification: Notification) { + model.keepAwake.releaseForTermination() + if model.fans.mode != .automatic || model.keepAwake.lidClosedActive { + model.helper.restoreDefaultsSynchronously() + } + } + + // MARK: 菜单栏 + + private func setUpStatusItem() { + statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) + guard let button = statusItem.button else { return } + button.target = self + button.action = #selector(statusItemClicked(_:)) + button.sendAction(on: [.leftMouseUp, .rightMouseUp]) + button.imagePosition = .imageOnly + refreshStatusItem() + } + + private func refreshStatusItem() { + statusItem.button?.image = MenuBarRenderer.image(for: model) + } + + @objc private func statusItemClicked(_ sender: NSStatusBarButton) { + if NSApp.currentEvent?.type == .rightMouseUp { + showContextMenu() + } else { + togglePanel() + } + } + + private func togglePanel() { + guard let button = statusItem.button, let window = button.window else { return } + let frame = window.convertToScreen(button.convert(button.bounds, to: nil)) + panel.toggle(below: frame, on: window.screen) + } + + private func showContextMenu() { + panel.dismiss() + let menu = NSMenu() + menu.addItem(withTitle: "打开面板", action: #selector(openPanelFromMenu), keyEquivalent: "").target = self + menu.addItem(withTitle: "设置…", action: #selector(openSettingsFromMenu), keyEquivalent: ",").target = self + menu.addItem(.separator()) + menu.addItem(withTitle: "退出 OpenStats", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q") + statusItem.menu = menu + statusItem.button?.performClick(nil) + statusItem.menu = nil + } + + @objc private func openPanelFromMenu() { togglePanel() } + @objc private func openSettingsFromMenu() { showSettings() } + + // MARK: 面板 + + private func setUpPanel() { + let model = self.model + panel = StatusPanel(content: { PanelRootView().environment(model) }, + measuring: { PanelRootView().environment(model).environment(\.isSnapshot, true) }) + panel.onVisibilityChange = { [weak self] visible in + guard let self else { return } + self.model.isPanelVisible = visible + self.statusItem.button?.highlight(visible) + if visible { + self.model.helper.refreshStatus() + // 首次采样到进程、电池等数据后内容会变高,稍后重新计算一次 + DispatchQueue.main.asyncAfter(deadline: .now() + 1.2) { [weak self] in self?.panel.refreshHeight() } + } + } + } + + // MARK: 设置窗口 + + private func showSettings() { + panel.dismiss() + if settingsWindow == nil { + let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: DS.Size.settingsWidth, height: DS.Size.settingsHeight), + styleMask: [.titled, .closable, .miniaturizable], + backing: .buffered, + defer: false) + window.title = "OpenStats 设置" + window.isReleasedWhenClosed = false + window.contentView = NSHostingView(rootView: SettingsView().environment(model)) + window.center() + settingsWindow = window + } + NSApp.activate() + settingsWindow?.makeKeyAndOrderFront(nil) + } + + // MARK: 观察 + + /// 设置或面板状态变化时,更新采样范围并重绘菜单栏 + private func observeModel() { + withObservationTracking { + _ = model.demand + _ = model.settings.menuBarItems + _ = model.settings.gaugeStyles + _ = model.settings.colorizeHighLoad + _ = model.settings.useFahrenheit + _ = model.keepAwake.isActive + _ = model.settings.appearance + _ = model.settings.panelTab + } onChange: { [weak self] in + Task { @MainActor in + guard let self else { return } + await self.model.hub.update(self.model.demand) + self.applyAppearance() + self.panel.refreshHeight() + self.refreshStatusItem() + self.observeModel() + } + } + } + + private func applyAppearance() { + switch model.settings.appearance { + case .system: NSApp.appearance = nil + case .light: NSApp.appearance = NSAppearance(named: .aqua) + case .dark: NSApp.appearance = NSAppearance(named: .darkAqua) + } + } + + /// 屏幕休眠、系统睡眠、切换用户时暂停采样;唤醒后重新下发风扇设置 + private func observeWorkspace() { + let center = NSWorkspace.shared.notificationCenter + let pauses: [Notification.Name] = [NSWorkspace.screensDidSleepNotification, + NSWorkspace.willSleepNotification, + NSWorkspace.sessionDidResignActiveNotification] + let resumes: [Notification.Name] = [NSWorkspace.screensDidWakeNotification, + NSWorkspace.didWakeNotification, + NSWorkspace.sessionDidBecomeActiveNotification] + for name in pauses { + workspaceObservers.append(center.addObserver(forName: name, object: nil, queue: .main) { [weak self] _ in + MainActor.assumeIsolated { + guard let self else { return } + self.panel.dismiss() + Task { await self.model.hub.setPaused(true) } + } + }) + } + for name in resumes { + workspaceObservers.append(center.addObserver(forName: name, object: nil, queue: .main) { [weak self] _ in + MainActor.assumeIsolated { + guard let self else { return } + Task { + await self.model.hub.setPaused(false) + await self.model.fans.reapply() + } + } + }) + } + } +} + +public enum OpenStatsApplication { + @MainActor + public static func main() { + let app = NSApplication.shared + if let index = CommandLine.arguments.firstIndex(of: "--snapshot") { + let path = CommandLine.arguments.dropFirst(index + 1).first ?? "snapshots" + app.setActivationPolicy(.prohibited) + Task { + await SnapshotRenderer.run(outputDirectory: URL(fileURLWithPath: path)) + exit(0) + } + app.run() + return + } + + let controller = AppController() + app.delegate = controller + app.setActivationPolicy(.accessory) + withExtendedLifetime(controller) { + app.run() + } + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/MenuBarRenderer.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/MenuBarRenderer.swift new file mode 100644 index 0000000..ce40fe3 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/MenuBarRenderer.swift @@ -0,0 +1,292 @@ +import AppKit +import Metrics + +/// 菜单栏图标自绘:每次刷新只生成一张小图,避免在菜单栏里重建 SwiftUI 视图 +@MainActor +enum MenuBarRenderer { + /// 菜单栏只有 22pt 高,字号与基线对齐 Stats 的迷你样式:标签 7pt 细体、数值 12pt 常规、网速两行 9pt 细体 + private enum Metrics { + @MainActor static let labelFont = NSFont.systemFont(ofSize: 7, weight: .light) + @MainActor static let valueFont = NSFont.monospacedDigitSystemFont(ofSize: 12, weight: .regular) + @MainActor static let networkFont = NSFont.monospacedDigitSystemFont(ofSize: 9, weight: .light) + static let upperBaseline: CGFloat = 12 // 上行基线(距底部) + static let lowerBaseline: CGFloat = 1 // 下行基线 + static let symbolSize: CGFloat = 11 + static let itemGap = DS.Space.s3 + static let innerGap = DS.Space.s1 + static let barCount = 10 + static let barWidth: CGFloat = 2 + static let barGap: CGFloat = 1 + static let chartHeight: CGFloat = 16 + static let smallChartHeight: CGFloat = 9 + static let gaugeDiameter: CGFloat = 14 + static let ringWidth: CGFloat = 2.5 + static let networkDot: CGFloat = 6 + static let trackAlpha: CGFloat = 0.25 + static let highLoad = 0.85 + } + + private struct Segment { + let width: CGFloat + let draw: (NSRect) -> Void + } + + static func image(for model: AppModel) -> NSImage { + let settings = model.settings + let height = NSStatusBar.system.thickness + + var segments: [Segment] = [] + if model.keepAwake.isActive { + segments.append(symbolSegment("cup.and.saucer.fill")) + } + var usesColor = false + for item in settings.orderedMenuBarItems { + let (segment, colored) = self.segment(for: item, model: model) + segments.append(segment) + usesColor = usesColor || colored + } + if segments.isEmpty { + segments.append(symbolSegment("waveform.path.ecg")) + } + + let totalWidth = segments.reduce(0) { $0 + $1.width } + CGFloat(segments.count - 1) * Metrics.itemGap + let image = NSImage(size: NSSize(width: ceil(totalWidth), height: height), flipped: false) { rect in + var x: CGFloat = 0 + for segment in segments { + segment.draw(NSRect(x: x, y: 0, width: segment.width, height: rect.height)) + x += segment.width + Metrics.itemGap + } + return true + } + // 模板图自动适配浅色 / 深色菜单栏;含彩色元素时保留真实颜色,文字用 labelColor 跟随外观 + image.isTemplate = !usesColor + image.accessibilityDescription = accessibilityText(for: model) + return image + } + + /// 设置页预览用:按指定的浅色 / 深色菜单栏外观绘制 + static func preview(_ image: NSImage, dark: Bool) -> NSImage { + let appearance = NSAppearance(named: dark ? .darkAqua : .aqua) + return NSImage(size: image.size, flipped: false) { rect in + let draw = { + image.draw(in: rect) + if image.isTemplate { + (dark ? NSColor.white : NSColor.black).set() + rect.fill(using: .sourceAtop) + } + } + if let appearance { appearance.performAsCurrentDrawingAppearance(draw) } else { draw() } + return true + } + } + + // MARK: 各指标 + + private static func segment(for item: MenuBarItem, model: AppModel) -> (Segment, colored: Bool) { + let store = model.store + let settings = model.settings + switch item { + case .cpu, .gpu, .memory: + let value: Double? + let history: [Double] + switch item { + case .cpu: (value, history) = (store.cpu?.total, store.cpuTotal.elements) + case .gpu: (value, history) = (store.gpu?.utilization, store.gpuHistory.elements) + default: (value, history) = (store.memory?.usedFraction, store.memoryHistory.elements) + } + let alert = settings.colorizeHighLoad && (value ?? 0) >= Metrics.highLoad + return (gaugeSegment(label: item.menuBarLabel, value: value, history: history, + style: settings.gaugeStyle(for: item), alert: alert), alert) + case .network: + return (networkSegment(store.network), true) + case .temperature: + let text = store.sensors?.temperature(.cpu).map { reading -> String in + let celsius = reading.maximum + let degrees = settings.useFahrenheit ? celsius * 9 / 5 + 32 : celsius + return "\(Int(degrees.rounded()))°" + } ?? "—" + return (stackedSegment(label: item.menuBarLabel, value: text, sample: "100°"), false) + case .fan: + let text = store.fastestFan.map { "\(Int($0.current))" } ?? "—" + return (stackedSegment(label: item.menuBarLabel, value: text, sample: "8888"), false) + } + } + + private static func gaugeSegment(label: String, value: Double?, history: [Double], style: GaugeStyle, alert: Bool) -> Segment { + let text = value.map { Format.percent($0) } ?? "—" + let fraction = value ?? 0 + let stacked = stackedSegment(label: label, value: text, sample: "100%", alert: alert) + switch style { + case .value: + return stacked + case .bars: + return barsWithLabel(label: label, history: history, alert: alert) + case .barsAndValue: + return combine([barsSegment(history: history, height: Metrics.chartHeight, alert: alert), stacked]) + case .ring: + return combine([ringSegment(fraction: fraction, alert: alert), stacked]) + case .pie: + return combine([pieSegment(fraction: fraction, alert: alert), stacked]) + } + } + + // MARK: 基础片段 + + private static func foreground(_ alert: Bool) -> NSColor { + alert ? .systemRed : .labelColor + } + + /// 颜色必须保持动态(labelColor),在绘制时才按菜单栏外观解析; + /// 提前调用 withAlphaComponent 会按应用外观固定颜色,深色菜单栏上就会发黑 + private static var labelAttributes: [NSAttributedString.Key: Any] { + [.font: Metrics.labelFont, .foregroundColor: NSColor.labelColor] + } + + /// 上方小标签、下方数值,右对齐 + private static func stackedSegment(label: String, value: String, sample: String, alert: Bool = false) -> Segment { + let labelAttributes = labelAttributes + let valueAttributes: [NSAttributedString.Key: Any] = [.font: Metrics.valueFont, .foregroundColor: foreground(alert)] + let width = ceil([ + (label as NSString).size(withAttributes: labelAttributes).width, + (value as NSString).size(withAttributes: valueAttributes).width, + (sample as NSString).size(withAttributes: valueAttributes).width, + ].max() ?? 0) + + return Segment(width: width) { rect in + drawText(label, attributes: labelAttributes, rightEdge: rect.maxX, baseline: rect.minY + Metrics.upperBaseline) + drawText(value, attributes: valueAttributes, rightEdge: rect.maxX, baseline: rect.minY + Metrics.lowerBaseline) + } + } + + /// 以基线定位(与 Stats 相同的 draw(with:) 方式),右对齐 + private static func drawText(_ text: String, attributes: [NSAttributedString.Key: Any], + rightEdge: CGFloat, baseline: CGFloat) { + let string = NSAttributedString(string: text, attributes: attributes) + let width = string.size().width + string.draw(with: NSRect(x: rightEdge - width, y: baseline, width: width, height: 0)) + } + + private static func barsSegment(history: [Double], height: CGFloat, alert: Bool) -> Segment { + let recent = Array(history.suffix(Metrics.barCount)) + let padded = Array(repeating: 0, count: Metrics.barCount - recent.count) + recent + let width = CGFloat(Metrics.barCount) * Metrics.barWidth + CGFloat(Metrics.barCount - 1) * Metrics.barGap + return Segment(width: width) { rect in + let baseline = rect.midY - height / 2 + for (index, value) in padded.enumerated() { + let x = rect.minX + CGFloat(index) * (Metrics.barWidth + Metrics.barGap) + NSColor.labelColor.withAlphaComponent(Metrics.trackAlpha).setFill() + NSBezierPath(rect: NSRect(x: x, y: baseline, width: Metrics.barWidth, height: height)).fill() + foreground(alert && value >= Metrics.highLoad).setFill() + NSBezierPath(rect: NSRect(x: x, y: baseline, width: Metrics.barWidth, + height: height * min(1, max(0, value)))).fill() + } + } + } + + /// 柱状图模式:上方小标签,下方矮柱 + private static func barsWithLabel(label: String, history: [Double], alert: Bool) -> Segment { + let labelAttributes = labelAttributes + let bars = barsSegment(history: history, height: Metrics.smallChartHeight, alert: alert) + let width = max(bars.width, ceil((label as NSString).size(withAttributes: labelAttributes).width)) + return Segment(width: width) { rect in + drawText(label, attributes: labelAttributes, rightEdge: rect.maxX, baseline: rect.minY + Metrics.upperBaseline) + // 矮柱放在标签下方的区域内 + let area = NSRect(x: rect.maxX - bars.width, y: rect.minY, width: bars.width, + height: Metrics.upperBaseline - 1) + bars.draw(area) + } + } + + private static func ringSegment(fraction: Double, alert: Bool) -> Segment { + Segment(width: Metrics.gaugeDiameter) { rect in + let inset = Metrics.ringWidth / 2 + let circle = NSRect(x: rect.minX + inset, y: rect.midY - Metrics.gaugeDiameter / 2 + inset, + width: Metrics.gaugeDiameter - Metrics.ringWidth, + height: Metrics.gaugeDiameter - Metrics.ringWidth) + let track = NSBezierPath(ovalIn: circle) + track.lineWidth = Metrics.ringWidth + NSColor.labelColor.withAlphaComponent(Metrics.trackAlpha).setStroke() + track.stroke() + + let clamped = min(1, max(0, fraction)) + guard clamped > 0 else { return } + let arc = NSBezierPath() + arc.appendArc(withCenter: NSPoint(x: circle.midX, y: circle.midY), radius: circle.width / 2, + startAngle: 90, endAngle: 90 - 360 * clamped, clockwise: true) + arc.lineWidth = Metrics.ringWidth + arc.lineCapStyle = .round + foreground(alert).setStroke() + arc.stroke() + } + } + + private static func pieSegment(fraction: Double, alert: Bool) -> Segment { + Segment(width: Metrics.gaugeDiameter) { rect in + let circle = NSRect(x: rect.minX, y: rect.midY - Metrics.gaugeDiameter / 2, + width: Metrics.gaugeDiameter, height: Metrics.gaugeDiameter) + NSColor.labelColor.withAlphaComponent(Metrics.trackAlpha).setFill() + NSBezierPath(ovalIn: circle).fill() + + let clamped = min(1, max(0, fraction)) + guard clamped > 0 else { return } + let center = NSPoint(x: circle.midX, y: circle.midY) + let wedge = NSBezierPath() + wedge.move(to: center) + wedge.appendArc(withCenter: center, radius: circle.width / 2, + startAngle: 90, endAngle: 90 - 360 * clamped, clockwise: true) + wedge.close() + foreground(alert).setFill() + wedge.fill() + } + } + + private static func symbolSegment(_ name: String) -> Segment { + let configuration = NSImage.SymbolConfiguration(pointSize: Metrics.symbolSize, weight: .medium) + .applying(.init(paletteColors: [.labelColor])) + let symbol = NSImage(systemSymbolName: name, accessibilityDescription: nil)? + .withSymbolConfiguration(configuration) + let size = symbol?.size ?? NSSize(width: Metrics.symbolSize, height: Metrics.symbolSize) + return Segment(width: ceil(size.width)) { rect in + symbol?.draw(in: NSRect(x: rect.minX, y: rect.midY - size.height / 2, width: size.width, height: size.height)) + } + } + + /// 两行:上传(绿点)在上,下载(蓝点)在下,数值右对齐 + private static func networkSegment(_ rate: NetworkRate?) -> Segment { + let attributes: [NSAttributedString.Key: Any] = [.font: Metrics.networkFont, .foregroundColor: NSColor.labelColor] + let rows: [(String, NSColor)] = [ + (rate.map { Format.menuBarRate($0.uploadBytesPerSecond) } ?? "— KB/s", DS.NetworkPalette.upload), + (rate.map { Format.menuBarRate($0.downloadBytesPerSecond) } ?? "— KB/s", DS.NetworkPalette.download), + ] + let sampleWidth = ("999 KB/s" as NSString).size(withAttributes: attributes).width + let textWidth = ceil(rows.map { ($0.0 as NSString).size(withAttributes: attributes).width }.reduce(sampleWidth, max)) + let width = Metrics.networkDot + Metrics.innerGap + textWidth + + return Segment(width: width) { rect in + let capHeight = Metrics.networkFont.capHeight + for (index, row) in rows.enumerated() { + let baseline = rect.minY + (index == 0 ? Metrics.upperBaseline : Metrics.lowerBaseline + 1) + row.1.setFill() + NSBezierPath(ovalIn: NSRect(x: rect.minX, y: baseline + capHeight / 2 - Metrics.networkDot / 2, + width: Metrics.networkDot, height: Metrics.networkDot)).fill() + drawText(row.0, attributes: attributes, rightEdge: rect.maxX, baseline: baseline) + } + } + } + + private static func combine(_ parts: [Segment], gap: CGFloat = Metrics.innerGap) -> Segment { + let width = parts.reduce(0) { $0 + $1.width } + CGFloat(max(0, parts.count - 1)) * gap + return Segment(width: width) { rect in + var x = rect.minX + for part in parts { + part.draw(NSRect(x: x, y: rect.minY, width: part.width, height: rect.height)) + x += part.width + gap + } + } + } + + private static func accessibilityText(for model: AppModel) -> String { + let cpu = model.store.cpu.map { "CPU \(Format.percent($0.total))" } ?? "CPU" + return "OpenStats,\(cpu)" + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/StatusPanel.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/StatusPanel.swift new file mode 100644 index 0000000..f07ad29 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/StatusPanel.swift @@ -0,0 +1,143 @@ +import AppKit +import SwiftUI + +/// 菜单栏下方的玻璃浮动面板。点击面板外部、按 Esc 或切换应用时关闭。 +/// 高度按内容自动计算,屏幕放得下就不出现滚动。 +@MainActor +final class StatusPanel: NSPanel { + var onVisibilityChange: ((Bool) -> Void)? + /// 开发调试用:固定面板,不因点击外部或失去焦点而收起 + var isPinned = false + + private var globalMonitor: Any? + private var localMonitor: Any? + private var anchor: NSRect = .zero + private weak var anchorScreen: NSScreen? + + /// 面板隐藏时不保留 SwiftUI 视图,避免后台随数据刷新重绘 + private let makeContent: () -> NSView + /// 平铺布局(不含滚动容器)的视图,只用来测量内容的自然高度 + private let makeMeasuringContent: () -> NSView + + init(content: @escaping () -> Content, measuring: @escaping () -> Measuring) { + makeContent = { NSHostingView(rootView: content()) } + makeMeasuringContent = { NSHostingView(rootView: measuring()) } + super.init(contentRect: NSRect(x: 0, y: 0, width: DS.Size.panelWidth, height: DS.Size.panelMinHeight), + styleMask: [.borderless, .nonactivatingPanel], + backing: .buffered, + defer: true) + isFloatingPanel = true + level = .statusBar + collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary, .transient, .ignoresCycle] + isOpaque = false + backgroundColor = .clear + hasShadow = true + hidesOnDeactivate = false + isReleasedWhenClosed = false + animationBehavior = .utilityWindow + isMovable = false + } + + override var canBecomeKey: Bool { true } + + func toggle(below anchor: NSRect, on screen: NSScreen?) { + isVisible ? dismiss() : present(below: anchor, on: screen) + } + + func present(below anchor: NSRect, on screen: NSScreen?) { + self.anchor = anchor + anchorScreen = screen + + contentView = GlassBackdrop.make(containing: makeContent(), cornerRadius: DS.Radius.xl) + setFrame(targetFrame(), display: false) + + alphaValue = 0 + makeKeyAndOrderFront(nil) + NSAnimationContext.runAnimationGroup { context in + context.duration = 0.12 + animator().alphaValue = 1 + } + installMonitors() + onVisibilityChange?(true) + } + + /// 切换标签页或数据首次到达后重新计算高度,保持顶部对齐 + func refreshHeight() { + guard isVisible else { return } + let frame = targetFrame() + guard abs(frame.height - self.frame.height) > 1 else { return } + NSAnimationContext.runAnimationGroup { context in + context.duration = 0.18 + context.timingFunction = CAMediaTimingFunction(name: .easeOut) + animator().setFrame(frame, display: true) + } + } + + func dismiss() { + guard isVisible, !isPinned else { return } + removeMonitors() + NSAnimationContext.runAnimationGroup({ context in + context.duration = 0.1 + animator().alphaValue = 0 + }, completionHandler: { [weak self] in + MainActor.assumeIsolated { + self?.orderOut(nil) + self?.contentView = nil + self?.alphaValue = 1 + } + }) + onVisibilityChange?(false) + } + + override func resignKey() { + super.resignKey() + // 弹出菜单时面板也会失去 key,稍后确认没有其他 key 窗口再关闭 + DispatchQueue.main.async { [weak self] in + MainActor.assumeIsolated { + guard let self, self.isVisible, !self.isKeyWindow, self.attachedSheet == nil else { return } + if NSApp.keyWindow?.level == .popUpMenu { return } + self.dismiss() + } + } + } + + // MARK: 尺寸 + + private func targetFrame() -> NSRect { + let visible = (anchorScreen ?? NSScreen.main)?.visibleFrame ?? .zero + let margin = DS.Space.s2 + let top = min(anchor.minY - DS.Size.panelGap, visible.maxY) + let available = max(DS.Size.panelMinHeight, top - visible.minY - margin) + + let natural = makeMeasuringContent().fittingSize.height + let height = min(max(natural, DS.Size.panelMinHeight), available) + + var x = anchor.midX - DS.Size.panelWidth / 2 + x = min(max(x, visible.minX + margin), visible.maxX - DS.Size.panelWidth - margin) + return NSRect(x: x, y: top - height, width: DS.Size.panelWidth, height: height) + } + + // MARK: 事件 + + private func installMonitors() { + removeMonitors() + globalMonitor = NSEvent.addGlobalMonitorForEvents(matching: [.leftMouseDown, .rightMouseDown]) { [weak self] _ in + MainActor.assumeIsolated { self?.dismiss() } + } + localMonitor = NSEvent.addLocalMonitorForEvents(matching: [.keyDown]) { [weak self] event in + // Esc + if event.keyCode == 53, event.window === self { + MainActor.assumeIsolated { self?.dismiss() } + return nil + } + return event + } + } + + private func removeMonitors() { + if let globalMonitor { NSEvent.removeMonitor(globalMonitor) } + if let localMonitor { NSEvent.removeMonitor(localMonitor) } + globalMonitor = nil + localMonitor = nil + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Charts.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Charts.swift new file mode 100644 index 0000000..ee69edb --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Charts.swift @@ -0,0 +1,196 @@ +import Metrics +import SwiftUI + +// 面板每秒刷新,图表全部用 Canvas 直接绘制:比 Swift Charts 轻得多,也能被 ImageRenderer 截图。 +// 刷新时不加隐式动画,避免每秒触发一次持续重绘。 + +/// 历史柱形图:每个采样一根柱子,空位画基线 +struct BarHistoryChart: View { + let values: [Double] + var capacity: Int = 24 + var color: Color = DS.Palette.primary + var warnColor: Color = DS.Palette.warning + var warnThreshold: Double = 0.8 + var height: CGFloat = DS.Size.chartHeight + + var body: some View { + Canvas { context, size in + let gap = DS.Space.s1 / 2 + let barWidth = max(1, (size.width - gap * CGFloat(capacity - 1)) / CGFloat(capacity)) + let recent = values.suffix(capacity) + let offset = capacity - recent.count + let baseline = DS.Size.stroke * 2 + + for index in 0..= offset else { + context.fill(Path(CGRect(x: x, y: size.height - baseline, width: barWidth, height: baseline)), + with: .color(DS.Palette.track)) + continue + } + let value = min(1, max(0, recent[recent.startIndex + index - offset])) + let barHeight = max(baseline, size.height * value) + let rect = CGRect(x: x, y: size.height - barHeight, width: barWidth, height: barHeight) + let fill = value >= warnThreshold ? warnColor : color + context.fill(Path(roundedRect: rect, cornerRadius: min(DS.Radius.sm / 2, barWidth / 2)), + with: .color(value < 0.02 ? DS.Palette.neutral300 : fill)) + } + } + .frame(height: height) + .accessibilityHidden(true) + } +} + +/// 历史折线(可带实色半透明填充) +struct LineHistoryChart: View { + let values: [Double] + var capacity: Int = MetricsStore.historyCapacity + var maxValue: Double = 1 + var color: Color = DS.Palette.primary + var filled = true + var height: CGFloat = DS.Size.chartHeight + + var body: some View { + Canvas { context, size in + let line = LineHistoryChart.path(values: values, capacity: capacity, maxValue: maxValue, in: size) + guard let line else { return } + if filled { + var area = line + area.addLine(to: CGPoint(x: size.width, y: size.height)) + area.addLine(to: CGPoint(x: area.boundingRect.minX, y: size.height)) + area.closeSubpath() + context.fill(area, with: .color(color.opacity(0.14))) + } + context.stroke(line, with: .color(color), + style: StrokeStyle(lineWidth: DS.Size.chartLine, lineCap: .round, lineJoin: .round)) + } + .frame(height: height) + .accessibilityHidden(true) + } + + /// 右对齐:最新的点在最右侧 + static func path(values: [Double], capacity: Int, maxValue: Double, in size: CGSize) -> Path? { + let recent = Array(values.suffix(capacity)) + guard recent.count > 1 else { return nil } + let step = size.width / CGFloat(max(1, capacity - 1)) + let inset = DS.Size.chartLine + let usable = size.height - inset * 2 + let peak = max(maxValue, .leastNonzeroMagnitude) + var path = Path() + for (index, value) in recent.enumerated() { + let x = size.width - CGFloat(recent.count - 1 - index) * step + let y = inset + usable * (1 - CGFloat(min(1, max(0, value / peak)))) + index == 0 ? path.move(to: CGPoint(x: x, y: y)) : path.addLine(to: CGPoint(x: x, y: y)) + } + return path + } +} + +/// 上传 / 下载双折线,按两者峰值归一化 +struct DualLineChart: View { + let upload: [Double] + let download: [Double] + var capacity: Int = MetricsStore.historyCapacity + var height: CGFloat = DS.Size.chartHeight + + var body: some View { + Canvas { context, size in + let peak = max(upload.max() ?? 0, download.max() ?? 0, 64 * 1024) + let style = StrokeStyle(lineWidth: DS.Size.chartLine, lineCap: .round, lineJoin: .round) + let series: [([Double], Color)] = [(download, Color(nsColor: DS.NetworkPalette.download)), + (upload, Color(nsColor: DS.NetworkPalette.upload))] + for (values, color) in series { + guard let line = LineHistoryChart.path(values: values, capacity: capacity, maxValue: peak * 1.1, in: size) else { continue } + var area = line + area.addLine(to: CGPoint(x: size.width, y: size.height)) + area.addLine(to: CGPoint(x: area.boundingRect.minX, y: size.height)) + area.closeSubpath() + context.fill(area, with: .color(color.opacity(0.10))) + context.stroke(line, with: .color(color), style: style) + } + } + .frame(height: height) + .accessibilityHidden(true) + } +} + +/// 环形进度(饼图风格),中间可放图标或文字 +struct RingGauge: View { + let fraction: Double + var color: Color = DS.Palette.success + var lineWidth: CGFloat = DS.Space.s1 + DS.Space.s1 / 2 + var size: CGFloat = DS.Space.s12 + DS.Space.s4 + @ViewBuilder var center: Center + + var body: some View { + ZStack { + Circle().stroke(DS.Palette.track, lineWidth: lineWidth) + Circle() + .trim(from: 0, to: min(1, max(0, fraction))) + .stroke(color, style: StrokeStyle(lineWidth: lineWidth, lineCap: .round)) + .rotationEffect(.degrees(-90)) + center + } + .padding(lineWidth / 2) + .frame(width: size, height: size) + } +} + +/// 每个核心一根竖条,按性能档分组(高性能档在左) +struct CoreClusterBars: View { + let topology: CPUTopology + let perCore: [Double] + var barHeight: CGFloat = DS.Size.coreBarHeight + + private static let barGap = DS.Space.s1 / 2 + private static let groupGap = DS.Space.s3 + + private static func barWidth(for width: CGFloat, clusters: [CPUCluster], total: Int) -> CGFloat { + let gaps = CGFloat(total - clusters.count) * barGap + CGFloat(max(0, clusters.count - 1)) * groupGap + return max(1, (width - gaps) / CGFloat(total)) + } + + var body: some View { + let clusters = topology.clusters.sorted { ($0.coreIndices.first ?? 0) > ($1.coreIndices.first ?? 0) } + let total = max(1, clusters.reduce(0) { $0 + $1.coreIndices.count }) + + VStack(alignment: .leading, spacing: DS.Space.s1) { + Canvas { context, size in + var x: CGFloat = 0 + let barWidth = Self.barWidth(for: size.width, clusters: clusters, total: total) + for cluster in clusters { + for index in cluster.coreIndices { + let value = index < perCore.count ? min(1, max(0, perCore[index])) : 0 + let track = CGRect(x: x, y: 0, width: barWidth, height: size.height) + context.fill(Path(roundedRect: track, cornerRadius: DS.Radius.sm / 2), with: .color(DS.Palette.track)) + let fillHeight = size.height * value + let fill = CGRect(x: x, y: size.height - fillHeight, width: barWidth, height: fillHeight) + context.fill(Path(roundedRect: fill, cornerRadius: DS.Radius.sm / 2), + with: .color(value >= 0.8 ? DS.Palette.warning : DS.Palette.primary)) + x += barWidth + Self.barGap + } + x += Self.groupGap - Self.barGap + } + } + .frame(height: barHeight) + + // 标签宽度与上方柱组一致 + GeometryReader { proxy in + let barWidth = Self.barWidth(for: proxy.size.width, clusters: clusters, total: total) + HStack(spacing: Self.groupGap) { + ForEach(clusters) { cluster in + let count = CGFloat(cluster.coreIndices.count) + Text(verbatim: "\(cluster.name) · \(cluster.coreIndices.count)") + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + .lineLimit(1) + .frame(width: count * barWidth + (count - 1) * Self.barGap, alignment: .leading) + } + } + } + .frame(height: DS.TextSize.xs.rawValue * 1.5) + } + .accessibilityElement(children: .ignore) + .accessibilityLabel("各核心负载") + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Components.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Components.swift new file mode 100644 index 0000000..530d5c2 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Components.swift @@ -0,0 +1,654 @@ +import Metrics +import SwiftUI + +/// ImageRenderer 无法渲染 ScrollView 等 AppKit 承载的控件,截图模式下改用平铺布局。 +extension EnvironmentValues { + @Entry var isSnapshot = false +} + +// MARK: - 卡片 + +struct Card: View { + var padding: CGFloat = DS.Space.s4 + var spacing: CGFloat = DS.Space.s3 + @ViewBuilder var content: Content + + var body: some View { + VStack(alignment: .leading, spacing: spacing) { + content + } + .padding(padding) + // 在等高行里撑满高度,背景随之延伸 + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + .background(DS.Palette.surface, in: RoundedRectangle(cornerRadius: DS.Radius.md)) + .overlay(RoundedRectangle(cornerRadius: DS.Radius.md).strokeBorder(DS.Palette.border, lineWidth: DS.Size.stroke)) + } +} + +struct CardHeader: View { + let icon: String + let title: String + @ViewBuilder var trailing: Trailing + + var body: some View { + HStack(spacing: DS.Space.s2) { + Image(systemName: icon) + .font(.system(size: DS.TextSize.sm.rawValue, weight: .medium)) + .foregroundStyle(DS.Palette.textSecondary) + .frame(width: DS.Size.iconInline, height: DS.Size.iconInline) + Text(title) + .dsFont(.sm, weight: .semibold) + .foregroundStyle(DS.Palette.textPrimary) + Spacer(minLength: DS.Space.s2) + trailing + } + } +} + +extension CardHeader where Trailing == Text { + init(icon: String, title: String, detail: String) { + self.icon = icon + self.title = title + self.trailing = Text(detail).dsFont(.xs).foregroundStyle(DS.Palette.textTertiary) + } +} + +extension CardHeader where Trailing == EmptyView { + init(icon: String, title: String) { + self.icon = icon + self.title = title + self.trailing = EmptyView() + } +} + +struct HairlineDivider: View { + var body: some View { + Rectangle().fill(DS.Palette.border).frame(height: DS.Size.stroke) + } +} + +// MARK: - 数值 + +struct BigValue: View { + let value: String + var unit: String? + + var body: some View { + HStack(alignment: .firstTextBaseline, spacing: DS.Space.s1) { + Text(value) + .dsFont(.xxl, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + if let unit { + Text(unit).dsFont(.sm).foregroundStyle(DS.Palette.textSecondary) + } + } + .lineLimit(1) + } +} + +struct InlineStat: View { + let label: String + let value: String + var alignment: HorizontalAlignment = .leading + + var body: some View { + VStack(alignment: alignment, spacing: 0) { + Text(label).dsFont(.xs).foregroundStyle(DS.Palette.textTertiary) + Text(value) + .dsFont(.sm, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + .lineLimit(1) + } + } +} + +struct LegendItem: View { + let color: Color + let label: String + let value: String + + var body: some View { + HStack(spacing: DS.Space.s1) { + Circle().fill(color).frame(width: DS.Size.barHeight, height: DS.Size.barHeight) + Text(label).dsFont(.xs).foregroundStyle(DS.Palette.textSecondary) + Text(value).dsFont(.xs, weight: .semibold).monospacedDigit().foregroundStyle(DS.Palette.textPrimary) + } + .lineLimit(1) + } +} + +// MARK: - 进度条 + +struct ProgressTrack: View { + let fraction: Double + var color: Color = DS.Palette.primary + var height: CGFloat = DS.Size.barHeight + + var body: some View { + GeometryReader { proxy in + ZStack(alignment: .leading) { + RoundedRectangle(cornerRadius: DS.Radius.sm).fill(DS.Palette.track) + RoundedRectangle(cornerRadius: DS.Radius.sm) + .fill(color) + .frame(width: proxy.size.width * min(1, max(0, fraction))) + } + } + .frame(height: height) + } +} + +struct StackedBar: View { + struct Segment: Identifiable { + let id: String + let fraction: Double + let color: Color + } + + let segments: [Segment] + + var body: some View { + GeometryReader { proxy in + HStack(spacing: 0) { + ForEach(segments) { segment in + Rectangle() + .fill(segment.color) + .frame(width: proxy.size.width * min(1, max(0, segment.fraction))) + } + Spacer(minLength: 0) + } + .background(DS.Palette.track) + .clipShape(RoundedRectangle(cornerRadius: DS.Radius.sm)) + } + .frame(height: DS.Size.barHeight) + } +} + +// MARK: - 徽标 + +enum Tone { + case neutral, primary, success, warning, error + + var color: Color { + switch self { + case .neutral: DS.Palette.textSecondary + case .primary: DS.Palette.primary + case .success: DS.Palette.success + case .warning: DS.Palette.warning + case .error: DS.Palette.error + } + } + + static func forTemperature(_ celsius: Double) -> Tone { + celsius >= DS.Thermal.hot ? .error : celsius >= DS.Thermal.warm ? .warning : .primary + } +} + +struct StatusBadge: View { + let text: String + var tone: Tone = .neutral + + var body: some View { + HStack(spacing: DS.Space.s1) { + Circle().fill(tone.color).frame(width: DS.Space.s2 - DS.Space.s1 / 2, height: DS.Space.s2 - DS.Space.s1 / 2) + Text(text).dsFont(.xs, weight: .medium).foregroundStyle(tone.color) + } + .padding(.horizontal, DS.Space.s2) + .padding(.vertical, DS.Space.s1 / 2) + .background(tone.color.opacity(0.12), in: RoundedRectangle(cornerRadius: DS.Radius.sm)) + .lineLimit(1) + } +} + +// MARK: - 按钮 + +struct DSButtonStyle: ButtonStyle { + enum Kind { case primary, secondary, ghost } + var kind: Kind = .secondary + + func makeBody(configuration: Configuration) -> some View { + DSButtonBody(configuration: configuration, kind: kind) + } +} + +private struct DSButtonBody: View { + let configuration: ButtonStyle.Configuration + let kind: DSButtonStyle.Kind + @State private var hovering = false + @Environment(\.isEnabled) private var isEnabled + + var body: some View { + configuration.label + .dsFont(.sm, weight: .medium) + .foregroundStyle(foreground) + .padding(.horizontal, DS.Space.s3) + .frame(height: DS.Size.controlHeight) + .background(background, in: RoundedRectangle(cornerRadius: DS.Radius.md)) + .overlay { + if kind == .secondary { + RoundedRectangle(cornerRadius: DS.Radius.md).strokeBorder(DS.Palette.border, lineWidth: DS.Size.stroke) + } + } + .opacity(isEnabled ? 1 : 0.5) + .contentShape(Rectangle()) + .onHover { hovering = $0 } + .animation(DS.Motion.quick, value: hovering) + } + + private var active: Bool { hovering || configuration.isPressed } + + private var foreground: Color { + switch kind { + case .primary: DS.Palette.onPrimary + case .secondary: DS.Palette.textPrimary + case .ghost: DS.Palette.primary + } + } + + private var background: Color { + switch kind { + case .primary: active ? DS.Palette.primaryHover : DS.Palette.primary + case .secondary: active ? DS.Palette.surfaceHover : DS.Palette.surface + case .ghost: active ? DS.Palette.surfaceHover : .clear + } + } +} + +struct IconButton: View { + let systemName: String + let help: String + let action: () -> Void + @State private var hovering = false + + var body: some View { + Button(action: action) { + Image(systemName: systemName) + .font(.system(size: DS.TextSize.sm.rawValue, weight: .medium)) + .foregroundStyle(hovering ? DS.Palette.textPrimary : DS.Palette.textSecondary) + .frame(width: DS.Size.controlHeight, height: DS.Size.controlHeight) + .dsGlass(in: Circle(), interactive: true) + .contentShape(Circle()) + } + .buttonStyle(.plain) + .onHover { hovering = $0 } + .help(help) + .accessibilityLabel(help) + } +} + +// MARK: - 分段控件 + +struct SegmentedControl: View { + @Binding var selection: Value + let options: [(value: Value, title: String)] + + var body: some View { + HStack(spacing: 0) { + ForEach(options, id: \.value) { option in + let selected = option.value == selection + Button { + selection = option.value + } label: { + Text(option.title) + .dsFont(.sm, weight: selected ? .semibold : .regular) + .foregroundStyle(selected ? DS.Palette.textPrimary : DS.Palette.textSecondary) + .lineLimit(1) + .frame(maxWidth: .infinity) + .frame(height: DS.Size.segmentHeight) + .background { + if selected { + RoundedRectangle(cornerRadius: DS.Radius.md - DS.Space.s1) + .fill(DS.Palette.surface) + .dsShadow(DS.Shadow.level1) + } + } + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .accessibilityAddTraits(selected ? .isSelected : []) + } + } + .padding(DS.Space.s1) + .background(DS.Palette.track, in: RoundedRectangle(cornerRadius: DS.Radius.md)) + .animation(DS.Motion.quick, value: selection) + } +} + +// MARK: - 开关 + +struct DSToggle: View { + @Binding var isOn: Bool + var label: String = "" + + var body: some View { + Button { + isOn.toggle() + } label: { + ZStack(alignment: isOn ? .trailing : .leading) { + Capsule().fill(isOn ? DS.Palette.primary : DS.Palette.neutral300) + Circle() + .fill(DS.Palette.onPrimary) + .frame(width: DS.Size.switchKnob, height: DS.Size.switchKnob) + .dsShadow(DS.Shadow.level1) + .padding(DS.Space.s1) + } + .frame(width: DS.Size.switchWidth, height: DS.Size.switchHeight) + .contentShape(Capsule()) + } + .buttonStyle(.plain) + .animation(DS.Motion.quick, value: isOn) + .accessibilityLabel(label) + .accessibilityValue(isOn ? "开" : "关") + } +} + +// MARK: - 单选行 + +struct RadioRow: View { + let title: String + let subtitle: String + let isSelected: Bool + let action: () -> Void + + var body: some View { + Button(action: action) { + HStack(alignment: .top, spacing: DS.Space.s3) { + ZStack { + Circle() + .strokeBorder(isSelected ? DS.Palette.primary : DS.Palette.neutral300, lineWidth: DS.Size.chartLine) + if isSelected { + Circle().fill(DS.Palette.primary).frame(width: DS.Space.s2, height: DS.Space.s2) + } + } + .frame(width: DS.Size.iconInline, height: DS.Size.iconInline) + .padding(.top, DS.Space.s1 / 2) + + VStack(alignment: .leading, spacing: DS.Space.s1 / 2) { + Text(title).dsFont(.sm, weight: .medium).foregroundStyle(DS.Palette.textPrimary) + Text(subtitle).dsFont(.xs).foregroundStyle(DS.Palette.textSecondary) + .fixedSize(horizontal: false, vertical: true) + } + Spacer(minLength: 0) + } + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .accessibilityAddTraits(isSelected ? .isSelected : []) + } +} + +// MARK: - 设置行 + +struct SettingRow: View { + let title: String + var subtitle: String? + var icon: String? + @ViewBuilder var control: Control + + var body: some View { + HStack(spacing: DS.Space.s3) { + if let icon { + Image(systemName: icon) + .font(.system(size: DS.TextSize.base.rawValue)) + .foregroundStyle(DS.Palette.textSecondary) + .frame(width: DS.Size.iconStandalone, height: DS.Size.iconStandalone) + } + VStack(alignment: .leading, spacing: DS.Space.s1 / 2) { + Text(title).dsFont(.sm, weight: .medium).foregroundStyle(DS.Palette.textPrimary) + if let subtitle { + Text(subtitle).dsFont(.xs).foregroundStyle(DS.Palette.textSecondary) + .fixedSize(horizontal: false, vertical: true) + } + } + Spacer(minLength: DS.Space.s4) + control + } + } +} + +// MARK: - 提示条 + +struct InfoBanner: View { + let icon: String + let text: String + var tone: Tone = .primary + @ViewBuilder var action: Action + + var body: some View { + HStack(alignment: .center, spacing: DS.Space.s3) { + Image(systemName: icon) + .font(.system(size: DS.TextSize.sm.rawValue, weight: .semibold)) + .foregroundStyle(tone.color) + .frame(width: DS.Size.iconInline) + Text(text) + .dsFont(.xs) + .foregroundStyle(DS.Palette.textPrimary) + .fixedSize(horizontal: false, vertical: true) + Spacer(minLength: 0) + action + } + .padding(DS.Space.s3) + .background(tone.color.opacity(0.08), in: RoundedRectangle(cornerRadius: DS.Radius.md)) + } +} + +extension InfoBanner where Action == EmptyView { + init(icon: String, text: String, tone: Tone = .primary) { + self.init(icon: icon, text: text, tone: tone) { EmptyView() } + } +} + +// MARK: - 滑块(自绘,保证截图与界面风格一致) + +struct DSSlider: View { + @Binding var value: Double // 0...1 + var onEditingEnded: () -> Void = {} + + var body: some View { + GeometryReader { proxy in + let width = proxy.size.width + let knob = DS.Size.switchKnob + let x = (width - knob) * min(1, max(0, value)) + ZStack(alignment: .leading) { + RoundedRectangle(cornerRadius: DS.Radius.sm).fill(DS.Palette.track) + .frame(height: DS.Space.s1 + DS.Space.s1 / 2) + RoundedRectangle(cornerRadius: DS.Radius.sm).fill(DS.Palette.primary) + .frame(width: x + knob / 2, height: DS.Space.s1 + DS.Space.s1 / 2) + Circle() + .fill(DS.Palette.surface) + .overlay(Circle().strokeBorder(DS.Palette.primary, lineWidth: DS.Size.chartLine)) + .frame(width: knob, height: knob) + .dsShadow(DS.Shadow.level1) + .offset(x: x) + } + .frame(maxHeight: .infinity) + .contentShape(Rectangle()) + .gesture( + DragGesture(minimumDistance: 0) + .onChanged { gesture in + value = min(1, max(0, (gesture.location.x - knob / 2) / max(1, width - knob))) + } + .onEnded { _ in onEditingEnded() } + ) + } + .frame(height: DS.Size.segmentHeight) + .accessibilityElement() + .accessibilityValue(Format.percent(value)) + .accessibilityAdjustableAction { direction in + switch direction { + case .increment: value = min(1, value + 0.1) + case .decrement: value = max(0, value - 0.1) + @unknown default: break + } + onEditingEnded() + } + } +} + +// MARK: - 滚动容器 + +struct PageScroll: View { + @Environment(\.isSnapshot) private var isSnapshot + @ViewBuilder var content: Content + + var body: some View { + let stack = VStack(alignment: .leading, spacing: DS.Space.s3) { content } + .padding(DS.Space.s3) + if isSnapshot { + stack + } else { + ScrollView { stack }.scrollIndicators(.never) + } + } +} + +// MARK: - 徽章 / 标签 + +struct Chip: View { + let text: String + var icon: String? + var tone: Tone = .neutral + + var body: some View { + HStack(spacing: DS.Space.s1) { + if let icon { + Image(systemName: icon).font(.system(size: DS.TextSize.xs.rawValue, weight: .semibold)) + } + Text(verbatim: text).dsFont(.xs, weight: .medium).monospacedDigit() + } + .foregroundStyle(tone == .neutral ? DS.Palette.textSecondary : tone.color) + .padding(.horizontal, DS.Space.s2) + .padding(.vertical, DS.Space.s1 / 2) + .background(tone == .neutral ? DS.Palette.track : tone.color.opacity(0.12), + in: RoundedRectangle(cornerRadius: DS.Radius.sm)) + .lineLimit(1) + .fixedSize() + } +} + +/// 可点击的小标签,用于风扇模式等快捷切换 +struct ChipButton: View { + let title: String + let isSelected: Bool + let action: () -> Void + @State private var hovering = false + + var body: some View { + Button(action: action) { + Text(title) + .dsFont(.xs, weight: isSelected ? .semibold : .medium) + .foregroundStyle(isSelected ? DS.Palette.primary : DS.Palette.textSecondary) + .lineLimit(1) + .frame(maxWidth: .infinity) + .frame(height: DS.Size.segmentHeight) + .background(background, in: RoundedRectangle(cornerRadius: DS.Radius.sm)) + .overlay(RoundedRectangle(cornerRadius: DS.Radius.sm) + .strokeBorder(isSelected ? DS.Palette.primary.opacity(0.4) : DS.Palette.border, lineWidth: DS.Size.stroke)) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .onHover { hovering = $0 } + .accessibilityAddTraits(isSelected ? .isSelected : []) + } + + private var background: Color { + if isSelected { return DS.Palette.primary.opacity(0.12) } + return hovering ? DS.Palette.surfaceHover : .clear + } +} + +/// 自动换行排列(徽章行) +struct FlowLayout: Layout { + var spacing: CGFloat = DS.Space.s2 + + func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) -> CGSize { + let rows = arrange(subviews: subviews, maxWidth: proposal.width ?? .infinity) + let height = rows.last.map { $0.y + $0.height } ?? 0 + let width = rows.map(\.width).max() ?? 0 + return CGSize(width: proposal.width ?? width, height: height) + } + + func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) { + for row in arrange(subviews: subviews, maxWidth: bounds.width) { + var x = bounds.minX + for index in row.indices { + let size = subviews[index].sizeThatFits(.unspecified) + subviews[index].place(at: CGPoint(x: x, y: bounds.minY + row.y), proposal: ProposedViewSize(size)) + x += size.width + spacing + } + } + } + + private struct Row { + var indices: [Int] = [] + var y: CGFloat = 0 + var width: CGFloat = 0 + var height: CGFloat = 0 + } + + private func arrange(subviews: Subviews, maxWidth: CGFloat) -> [Row] { + var rows: [Row] = [] + var current = Row() + for (index, subview) in subviews.enumerated() { + let size = subview.sizeThatFits(.unspecified) + let proposedWidth = current.indices.isEmpty ? size.width : current.width + spacing + size.width + if proposedWidth > maxWidth, !current.indices.isEmpty { + rows.append(current) + current = Row(y: current.y + current.height + spacing) + } + current.width = current.indices.isEmpty ? size.width : current.width + spacing + size.width + current.height = max(current.height, size.height) + current.indices.append(index) + } + if !current.indices.isEmpty { rows.append(current) } + return rows + } +} + +// MARK: - 指标小卡片 + +struct MetricTile: View { + let icon: String + let title: String + var chip: String? + var chipTone: Tone = .neutral + let value: String + var unit: String? + @ViewBuilder var chart: Chart + @ViewBuilder var footer: Footer + + var body: some View { + Card(padding: DS.Space.s3, spacing: DS.Space.s2) { + HStack(spacing: DS.Space.s1) { + Image(systemName: icon) + .font(.system(size: DS.TextSize.xs.rawValue, weight: .semibold)) + .foregroundStyle(DS.Palette.textSecondary) + Text(title) + .dsFont(.xs, weight: .semibold) + .foregroundStyle(DS.Palette.textSecondary) + .lineLimit(1) + Spacer(minLength: DS.Space.s1) + if let chip { Chip(text: chip, tone: chipTone) } + } + HStack(alignment: .firstTextBaseline, spacing: DS.Space.s1 / 2) { + Text(verbatim: value) + .dsFont(.xl, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + if let unit { + Text(verbatim: unit).dsFont(.xs, weight: .medium).foregroundStyle(DS.Palette.textSecondary) + } + } + .lineLimit(1) + .minimumScaleFactor(0.8) + chart + .frame(height: DS.Size.tileChart) + footer + .font(.system(size: DS.TextSize.xs.rawValue)) + .foregroundStyle(DS.Palette.textSecondary) + .monospacedDigit() + .lineLimit(1) + } + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Glass.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Glass.swift new file mode 100644 index 0000000..4b92e5e --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Glass.swift @@ -0,0 +1,54 @@ +import AppKit +import SwiftUI + +// 液态玻璃:macOS 26 起使用系统 Liquid Glass,更早的系统退回毛玻璃材质。 +// 截图模式无法捕获窗口背后的模糊,统一改用实色。 + +extension View { + @ViewBuilder + func dsGlass(in shape: S, interactive: Bool = false, tint: Color? = nil) -> some View { + if #available(macOS 26.0, *) { + glassEffect(interactive ? Glass.regular.tint(tint).interactive() : Glass.regular.tint(tint), in: shape) + } else { + background(.ultraThinMaterial, in: shape) + } + } +} + +/// 面板窗口的玻璃底板,SwiftUI 内容放在其中 +@MainActor +enum GlassBackdrop { + static func make(containing content: NSView, cornerRadius: CGFloat) -> NSView { + if #available(macOS 26.0, *) { + let glass = NSGlassEffectView() + glass.cornerRadius = cornerRadius + glass.style = .regular + glass.contentView = content + return glass + } + let effect = NSVisualEffectView() + effect.material = .popover + effect.blendingMode = .behindWindow + effect.state = .active + effect.wantsLayer = true + effect.layer?.cornerRadius = cornerRadius + effect.layer?.masksToBounds = true + content.frame = effect.bounds + content.autoresizingMask = [.width, .height] + effect.addSubview(content) + return effect + } +} + +/// 设置窗口侧边栏的半透明背景 +struct SidebarMaterial: NSViewRepresentable { + func makeNSView(context: Context) -> NSVisualEffectView { + let view = NSVisualEffectView() + view.material = .sidebar + view.blendingMode = .behindWindow + view.state = .followsWindowActiveState + return view + } + + func updateNSView(_ nsView: NSVisualEffectView, context: Context) {} +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Tokens.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Tokens.swift new file mode 100644 index 0000000..3ffa84f --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Design/Tokens.swift @@ -0,0 +1,166 @@ +import AppKit +import SwiftUI + +/// 设计 token。界面里的颜色、字号、间距、圆角一律从这里取值。 +public enum DS {} + +// MARK: - 颜色 + +extension DS { + enum Palette { + // 品牌色(单个视图内不超过 3 种) + static let primary = Color.dynamic(light: 0x2563EB, dark: 0x3B82F6) + static let primaryHover = Color.dynamic(light: 0x1D4ED8, dark: 0x2563EB) // 加深约 10% + static let secondary = Color.dynamic(light: 0x0D9488, dark: 0x2DD4BF) + + // 语义色 + static let success = Color.dynamic(light: 0x16A34A, dark: 0x22C55E) + static let warning = Color.dynamic(light: 0xD97706, dark: 0xF59E0B) + static let error = Color.dynamic(light: 0xDC2626, dark: 0xF87171) + + // 文字 + static let textPrimary = Color.dynamic(light: 0x111827, dark: 0xF3F4F6) + static let textSecondary = Color.dynamic(light: 0x6B7280, dark: 0x9CA3AF) + static let textTertiary = Color.dynamic(light: 0x9CA3AF, dark: 0x6B7280) + static let onPrimary = Color.dynamic(light: 0xFFFFFF, dark: 0xFFFFFF) + + // 中性色(背景为实色,截图与不支持玻璃效果时使用) + static let background = Color.dynamic(light: 0xF8F9FA, dark: 0x111315) + // 卡片与控件使用半透明色,叠在液态玻璃上仍能透出背景 + static let surface = Color.dynamic(light: 0xFFFFFF, lightAlpha: 0.72, dark: 0x2A2D33, darkAlpha: 0.55) + static let surfaceHover = Color.dynamic(light: 0x000000, lightAlpha: 0.05, dark: 0xFFFFFF, darkAlpha: 0.07) + static let border = Color.dynamic(light: 0x000000, lightAlpha: 0.07, dark: 0xFFFFFF, darkAlpha: 0.09) + static let track = Color.dynamic(light: 0x000000, lightAlpha: 0.06, dark: 0xFFFFFF, darkAlpha: 0.10) + static let neutral300 = Color.dynamic(light: 0xD1D5DB, dark: 0x3F434A) + static let neutral400 = Color.dynamic(light: 0x9CA3AF, dark: 0x6B7280) + } +} + +extension DS { + /// 网速配色:上传绿、下载蓝,面板与菜单栏保持一致 + enum NetworkPalette { + static let upload = NSColor.dynamic(light: 0x16A34A, dark: 0x22C55E) + static let download = NSColor.dynamic(light: 0x2563EB, dark: 0x3B82F6) + } +} + +extension Color { + static func dynamic(light: UInt32, lightAlpha: CGFloat = 1, dark: UInt32, darkAlpha: CGFloat = 1) -> Color { + Color(nsColor: .dynamic(light: light, lightAlpha: lightAlpha, dark: dark, darkAlpha: darkAlpha)) + } +} + +extension NSColor { + static func dynamic(light: UInt32, lightAlpha: CGFloat = 1, dark: UInt32, darkAlpha: CGFloat = 1) -> NSColor { + NSColor(name: nil) { appearance in + let isDark = appearance.bestMatch(from: [.aqua, .darkAqua]) == .darkAqua + return NSColor(hex: isDark ? dark : light, alpha: isDark ? darkAlpha : lightAlpha) + } + } +} + +extension NSColor { + convenience init(hex: UInt32, alpha: CGFloat = 1) { + self.init(srgbRed: CGFloat((hex >> 16) & 0xFF) / 255, + green: CGFloat((hex >> 8) & 0xFF) / 255, + blue: CGFloat(hex & 0xFF) / 255, + alpha: alpha) + } +} + +// MARK: - 字号 / 间距 / 圆角 / 尺寸 + +extension DS { + enum TextSize: CGFloat { + case xs = 12, sm = 14, base = 16, lg = 20, xl = 24, xxl = 32 + } + + enum Space { + static let s1: CGFloat = 4 + static let s2: CGFloat = 8 + static let s3: CGFloat = 12 + static let s4: CGFloat = 16 + static let s6: CGFloat = 24 + static let s8: CGFloat = 32 + static let s12: CGFloat = 48 + static let s16: CGFloat = 64 + } + + /// 层级:控件 < 卡片 < 面板/窗口 + enum Radius { + static let sm: CGFloat = 4 + static let md: CGFloat = 8 + static let lg: CGFloat = 12 + static let xl: CGFloat = 16 // 玻璃面板 + } + + enum Size { + static let iconInline: CGFloat = 16 + static let iconStandalone: CGFloat = 20 + static let controlHeight: CGFloat = 32 + static let segmentHeight: CGFloat = 24 + static let switchWidth: CGFloat = 40 + static let switchHeight: CGFloat = 24 + static let switchKnob: CGFloat = 16 + static let barHeight: CGFloat = 8 + static let coreBarHeight: CGFloat = 32 + static let chartHeight: CGFloat = 48 + static let tileChart: CGFloat = 40 + static let stroke: CGFloat = 1 + static let chartLine: CGFloat = 1.5 + static let panelWidth: CGFloat = 640 + static let panelMinHeight: CGFloat = 320 + static let panelGap: CGFloat = 4 + static let tabsWidth: CGFloat = 280 + /// 三列卡片的单列宽度:(面板宽 - 两侧内边距 - 两个列间距) / 3 + static let tileWidth: CGFloat = (panelWidth - Space.s3 * 4) / 3 + static let settingsWidth: CGFloat = 720 + static let settingsHeight: CGFloat = 520 + static let settingsSidebar: CGFloat = 192 + static let valueColumn: CGFloat = 64 + static let labelColumn: CGFloat = 48 + } + + enum Shadow { + struct Level { + let color: Color + let radius: CGFloat + let y: CGFloat + } + + static let level1 = Level(color: .black.opacity(0.08), radius: 3, y: 1) + static let level2 = Level(color: .black.opacity(0.10), radius: 12, y: 4) + } + + enum Motion { + static let quick = Animation.easeOut(duration: 0.15) + } + + /// 温度阈值(°C),用于着色 + enum Thermal { + static let warm: Double = 80 + static let hot: Double = 95 + static let scaleMax: Double = 110 + } +} + +// MARK: - 修饰器 + +extension View { + func dsFont(_ size: DS.TextSize, weight: Font.Weight = .regular) -> some View { + font(.system(size: size.rawValue, weight: weight)) + } + +} + +extension Text { + func dsFont(_ size: DS.TextSize, weight: Font.Weight = .regular) -> Text { + font(.system(size: size.rawValue, weight: weight)) + } +} + +extension View { + func dsShadow(_ level: DS.Shadow.Level) -> some View { + shadow(color: level.color, radius: level.radius, x: 0, y: level.y) + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/KeepAwakePage.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/KeepAwakePage.swift new file mode 100644 index 0000000..d73c957 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/KeepAwakePage.swift @@ -0,0 +1,144 @@ +import Metrics +import SwiftUI + +struct KeepAwakePage: View { + @Environment(AppModel.self) private var model + + var body: some View { + PageScroll { + HeroCard() + HStack(alignment: .top, spacing: DS.Space.s3) { + VStack(spacing: DS.Space.s3) { + ModeCard() + DurationCard() + } + .frame(maxWidth: .infinity) + LidCard().frame(maxWidth: .infinity) + } + .fixedSize(horizontal: false, vertical: true) + } + } +} + +private struct HeroCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + let keepAwake = model.keepAwake + + Card { + HStack(spacing: DS.Space.s3) { + RoundedRectangle(cornerRadius: DS.Radius.md) + .fill(keepAwake.isActive ? DS.Palette.primary : DS.Palette.track) + .frame(width: DS.Space.s12 - DS.Space.s2, height: DS.Space.s12 - DS.Space.s2) + .overlay { + Image(systemName: keepAwake.isActive ? "cup.and.saucer.fill" : "cup.and.saucer") + .font(.system(size: DS.TextSize.lg.rawValue, weight: .medium)) + .foregroundStyle(keepAwake.isActive ? DS.Palette.onPrimary : DS.Palette.textSecondary) + } + VStack(alignment: .leading, spacing: DS.Space.s1 / 2) { + Text("防休眠") + .dsFont(.lg, weight: .semibold) + .foregroundStyle(DS.Palette.textPrimary) + StatusLine() + } + Spacer() + DSToggle(isOn: Binding(get: { keepAwake.isActive }, + set: { value in Task { await keepAwake.setActive(value) } }), + label: "防休眠") + } + + if let notice = keepAwake.notice { + InfoBanner(icon: keepAwake.noticeIsError ? "exclamationmark.triangle.fill" : "info.circle.fill", + text: notice, + tone: keepAwake.noticeIsError ? .error : .primary) + } + } + } +} + +private struct StatusLine: View { + @Environment(AppModel.self) private var model + + var body: some View { + let keepAwake = model.keepAwake + TimelineView(.periodic(from: .now, by: 30)) { context in + Text(text(now: context.date)) + .dsFont(.sm) + .foregroundStyle(keepAwake.isActive ? DS.Palette.primary : DS.Palette.textSecondary) + .monospacedDigit() + } + } + + private func text(now: Date) -> String { + let keepAwake = model.keepAwake + guard keepAwake.isActive else { return "未开启,Mac 按系统设置休眠" } + var parts = [keepAwake.mode.title] + if keepAwake.lidClosedActive { parts.append("合盖运行") } + if let end = keepAwake.endDate { + let minutes = max(1, Int(ceil(end.timeIntervalSince(now) / 60))) + parts.append("剩余 \(Format.duration(minutes: minutes))") + } else { + parts.append("不限时") + } + return parts.joined(separator: " · ") + } +} + +private struct ModeCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + Card { + Text("模式").dsFont(.sm, weight: .semibold).foregroundStyle(DS.Palette.textPrimary) + ForEach(Array(KeepAwakeController.Mode.allCases.enumerated()), id: \.element) { index, mode in + if index > 0 { HairlineDivider() } + RadioRow(title: mode.title, subtitle: mode.subtitle, isSelected: model.keepAwake.mode == mode) { + model.keepAwake.setMode(mode) + } + } + } + } +} + +private struct LidCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + let keepAwake = model.keepAwake + + Card { + SettingRow(title: "合盖后继续运行", + subtitle: "合上屏幕时 Mac 不进入睡眠,下载、渲染、远程连接不中断。") { + DSToggle(isOn: Binding(get: { keepAwake.lidClosedRequested }, + set: { value in Task { await keepAwake.setLidClosed(value) } }), + label: "合盖后继续运行") + .disabled(!model.helper.isReady) + } + + if !model.helper.isReady { + HelperRequiredBanner(text: "合盖运行需要修改系统睡眠设置,需安装辅助工具(管理员授权一次)。") + } + + InfoBanner(icon: "exclamationmark.triangle", + text: "合盖运行时散热变差,请勿放入包中。使用电池且电量低于 \(model.settings.lidModeBatteryFloor)% 时会自动关闭。", + tone: .warning) + } + } +} + +private struct DurationCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + Card { + Text("持续时间").dsFont(.sm, weight: .semibold).foregroundStyle(DS.Palette.textPrimary) + SegmentedControl(selection: Binding(get: { model.keepAwake.duration }, + set: { model.keepAwake.setDuration($0) }), + options: KeepAwakeController.Duration.allCases.map { ($0, $0.title) }) + Text("到时后自动恢复系统默认的睡眠行为。") + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + } + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/OverviewPage.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/OverviewPage.swift new file mode 100644 index 0000000..2e87fbf --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/OverviewPage.swift @@ -0,0 +1,556 @@ +import AppKit +import Metrics +import SMC +import SwiftUI + +struct OverviewPage: View { + @Environment(AppModel.self) private var model + + var body: some View { + PageScroll { + HealthHeader() + EqualHeightRow { + CPUTile().frame(maxWidth: .infinity) + GPUTile().frame(maxWidth: .infinity) + MemoryTile().frame(maxWidth: .infinity) + } + EqualHeightRow { + DiskTile().frame(maxWidth: .infinity) + NetworkTile().frame(maxWidth: .infinity) + FanTile().frame(maxWidth: .infinity) + } + EqualHeightRow { + CoreLoadCard().frame(maxWidth: .infinity) + if model.store.battery != nil { + BatteryCard().frame(width: DS.Size.tileWidth) + } + } + EqualHeightRow { + TopProcessesCard().frame(maxWidth: .infinity) + QuickActionsCard().frame(width: DS.Size.tileWidth) + } + } + } +} + +/// 一行等高卡片 +private struct EqualHeightRow: View { + @ViewBuilder var content: Content + + var body: some View { + HStack(alignment: .top, spacing: DS.Space.s3) { content } + .fixedSize(horizontal: false, vertical: true) + } +} + +// MARK: - 健康度与徽章 + +struct HealthReport { + let score: Int + let summary: String + let tone: Tone + + @MainActor + init(store: MetricsStore) { + var issues: [(penalty: Int, text: String)] = [] + if let cpu = store.cpu { + if cpu.total >= 0.9 { issues.append((20, "CPU 负载很高")) } else if cpu.total >= 0.75 { issues.append((10, "CPU 负载偏高")) } + } + switch store.memory?.pressure { + case .critical: issues.append((30, "内存压力严重")) + case .warning: issues.append((15, "内存压力偏高")) + default: break + } + if let hottest = store.sensors?.temperature(.cpu)?.maximum { + if hottest >= DS.Thermal.hot { issues.append((20, "CPU 温度过高")) } else if hottest >= 85 { issues.append((10, "CPU 温度偏高")) } + } + if let disk = store.disk { + if disk.usedFraction >= 0.95 { issues.append((15, "磁盘空间不足")) } else if disk.usedFraction >= 0.9 { issues.append((8, "磁盘空间偏紧")) } + } + if let health = store.battery?.health, health < 0.8 { issues.append((5, "电池健康度下降")) } + + score = max(0, 100 - issues.reduce(0) { $0 + $1.penalty }) + summary = issues.max { $0.penalty < $1.penalty }?.text ?? "各项指标正常" + tone = score >= 85 ? .success : score >= 60 ? .warning : .error + } +} + +private struct HealthHeader: View { + @Environment(AppModel.self) private var model + + var body: some View { + let store = model.store + let report = HealthReport(store: store) + + VStack(alignment: .leading, spacing: DS.Space.s3) { + HStack(alignment: .center, spacing: DS.Space.s3) { + Image(systemName: report.tone == .success ? "checkmark.seal.fill" : "exclamationmark.triangle.fill") + .font(.system(size: DS.TextSize.xl.rawValue, weight: .semibold)) + .foregroundStyle(report.tone.color) + Text(verbatim: "\(report.score)") + .dsFont(.xxl, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + Text(report.summary) + .dsFont(.base, weight: .medium) + .foregroundStyle(DS.Palette.textSecondary) + Spacer() + } + FlowLayout(spacing: DS.Space.s2) { + Chip(text: chipName(store.topology.brand), icon: "apple.logo") + Chip(text: Format.bytes(ProcessInfo.processInfo.physicalMemory).replacingOccurrences(of: ".0 ", with: " ")) + Chip(text: store.system.osVersion) + if let boot = store.system.bootDate { + Chip(text: "已运行 " + Format.uptime(since: boot)) + } + Chip(text: shortModel(store.system.modelName)) + } + } + .padding(.horizontal, DS.Space.s1) + } + + /// “Apple M5 Max” → “M5 Max”,前面配 Apple 标志 + private func chipName(_ brand: String) -> String { + brand.hasPrefix("Apple ") ? String(brand.dropFirst("Apple ".count)) : brand + } + + /// “MacBook Pro (16-inch, M5 Max)” → “MacBook Pro 16 英寸” + private func shortModel(_ name: String) -> String { + guard let open = name.firstIndex(of: "(") else { return name } + let base = name[.. String { + value < 0.3 ? "低负载" : value < 0.7 ? "中等负载" : "高负载" +} + +private func splitRate(_ text: String) -> (String, String) { + let parts = text.split(separator: " ", maxSplits: 1).map(String.init) + return (parts.first ?? text, parts.count > 1 ? parts[1] : "") +} + +private struct CPUTile: View { + @Environment(AppModel.self) private var model + + var body: some View { + let store = model.store + let total = store.cpu?.total ?? 0 + let temperature = store.sensors?.temperature(.cpu) + let load = store.cpu?.loadAverage.first.map { $0.formatted(.number.precision(.fractionLength(1))) } ?? "—" + + MetricTile(icon: "cpu", title: "CPU", + chip: temperature.map { Format.temperature($0.maximum, fahrenheit: model.settings.useFahrenheit) }, + chipTone: temperature.map { Tone.forTemperature($0.maximum) } ?? .neutral, + value: store.cpu == nil ? "—" : "\(Int((total * 100).rounded()))", unit: "%") { + BarHistoryChart(values: store.cpuTotal.elements, capacity: 20, height: DS.Size.tileChart) + } footer: { + Text(verbatim: "\(loadLevel(total)) · 负载 \(load)/\(store.topology.logicalCores)") + } + } +} + +private struct GPUTile: View { + @Environment(AppModel.self) private var model + + var body: some View { + let store = model.store + let utilization = store.gpu?.utilization ?? 0 + let temperature = store.sensors?.temperature(.gpu) + + MetricTile(icon: "display", title: "GPU", + chip: temperature.map { Format.temperature($0.maximum, fahrenheit: model.settings.useFahrenheit) }, + chipTone: temperature.map { Tone.forTemperature($0.maximum) } ?? .neutral, + value: store.gpu == nil ? "—" : "\(Int((utilization * 100).rounded()))", unit: "%") { + LineHistoryChart(values: store.gpuHistory.elements, capacity: 30, color: DS.Palette.secondary, height: DS.Size.tileChart) + } footer: { + Text(verbatim: [loadLevel(utilization), store.gpu?.coreCount.map { "\($0) 核" }].compactMap { $0 }.joined(separator: " · ")) + } + } +} + +private struct MemoryTile: View { + @Environment(AppModel.self) private var model + + var body: some View { + let memory = model.store.memory + + MetricTile(icon: "memorychip", title: "内存", + chip: memory.map { "压力 \($0.pressure.title)" }, + chipTone: memory.map { tone($0.pressure) } ?? .neutral, + value: memory.map { "\(Int(($0.usedFraction * 100).rounded()))" } ?? "—", unit: "%") { + LineHistoryChart(values: model.store.memoryHistory.elements, capacity: 30, height: DS.Size.tileChart) + } footer: { + Text(verbatim: memory.map { "\(Format.bytes($0.used)) / \(Format.bytes($0.total))" } ?? "—") + } + } + + private func tone(_ pressure: MemoryPressure) -> Tone { + switch pressure { + case .normal: .success + case .warning: .warning + case .critical: .error + } + } +} + +private struct DiskTile: View { + @Environment(AppModel.self) private var model + + var body: some View { + let disk = model.store.disk + + MetricTile(icon: "internaldrive", title: "磁盘", + chip: disk.map { Format.bytes($0.total, base: .decimal).replacingOccurrences(of: ".0 ", with: " ") }, + value: disk.map { "\(Int(($0.usedFraction * 100).rounded()))" } ?? "—", unit: "%") { + VStack { + Spacer() + ProgressTrack(fraction: disk?.usedFraction ?? 0, + color: (disk?.usedFraction ?? 0) > 0.9 ? DS.Palette.warning : DS.Palette.primary, + height: DS.Space.s3) + Spacer() + } + } footer: { + Text(verbatim: disk.map { "可用 \(Format.bytes($0.available, base: .decimal))" } ?? "—") + } + } +} + +private struct NetworkTile: View { + @Environment(AppModel.self) private var model + + var body: some View { + let store = model.store + let rate = store.network + let total = splitRate(Format.menuBarRate((rate?.downloadBytesPerSecond ?? 0) + (rate?.uploadBytesPerSecond ?? 0))) + + MetricTile(icon: "network", title: "网络", + chip: store.networkInterface.map { shortInterface($0) }, + value: rate == nil ? "—" : total.0, unit: rate == nil ? nil : total.1) { + DualLineChart(upload: store.uploadHistory.elements, download: store.downloadHistory.elements, + capacity: 30, height: DS.Size.tileChart) + } footer: { + HStack(spacing: DS.Space.s1) { + Image(systemName: "arrow.up").foregroundStyle(Color(nsColor: DS.NetworkPalette.upload)) + Text(verbatim: rate.map { Format.menuBarRate($0.uploadBytesPerSecond) } ?? "—") + Image(systemName: "arrow.down").foregroundStyle(Color(nsColor: DS.NetworkPalette.download)) + Text(verbatim: rate.map { Format.menuBarRate($0.downloadBytesPerSecond) } ?? "—") + } + .fontWeight(.medium) + } + } + + private func shortInterface(_ info: NetworkInterfaceInfo) -> String { + info.displayName == "VPN 隧道" ? "VPN" : info.displayName + } +} + +private struct FanTile: View { + @Environment(AppModel.self) private var model + + var body: some View { + let fans = model.store.sensors?.fans ?? [] + let fastest = model.store.fastestFan + let isManual = fans.contains(where: \.isManual) + // 以最高转速为 100%,比“最低到最高”的区间比例更直观 + let average = fans.isEmpty ? 0 : fans.map { $0.maximum > 0 ? $0.current / $0.maximum : 0 }.reduce(0, +) / Double(fans.count) + + Card(padding: DS.Space.s3, spacing: DS.Space.s2) { + HStack(spacing: DS.Space.s1) { + Image(systemName: "fan").font(.system(size: DS.TextSize.xs.rawValue, weight: .semibold)) + Text("风扇").dsFont(.xs, weight: .semibold) + Spacer(minLength: DS.Space.s1) + if !fans.isEmpty { Chip(text: "转速 \(Format.percent(average))") } + } + .foregroundStyle(DS.Palette.textSecondary) + + HStack(alignment: .firstTextBaseline, spacing: DS.Space.s1 / 2) { + Text(verbatim: fastest.map { Int($0.current).formatted() } ?? "—") + .dsFont(.xl, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + Text(verbatim: "RPM").dsFont(.xs, weight: .medium).foregroundStyle(DS.Palette.textSecondary) + } + + Text(fanStatus(fans: fans, isManual: isManual)) + .dsFont(.xs) + .foregroundStyle(DS.Palette.textSecondary) + .frame(height: DS.Size.tileChart / 2, alignment: .center) + + HStack(spacing: DS.Space.s1) { + ForEach([FanController.Mode.automatic, .cooling, .maximum]) { mode in + ChipButton(title: mode.title, isSelected: model.fans.mode == mode) { + model.requestFanMode(mode) + } + } + } + .disabled(fans.isEmpty) + } + } +} + +extension FanTile { + /// 固件只记录“手动 / 自动”,无法区分是谁设置的:OpenStats 未下发时即为其他程序(如 Stats、Mole) + fileprivate func fanStatus(fans: [FanState], isManual: Bool) -> String { + if fans.isEmpty { return "未检测到风扇" } + guard isManual else { return "由 macOS 调节" } + return model.fans.mode == .automatic ? "其他程序手动控制" : "OpenStats 控制中" + } +} + +// MARK: - 核心负载 + +private struct CoreLoadCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + let cpu = model.store.cpu + Card(padding: DS.Space.s3, spacing: DS.Space.s2) { + HStack(spacing: DS.Space.s1) { + Image(systemName: "square.grid.3x3.fill").font(.system(size: DS.TextSize.xs.rawValue, weight: .semibold)) + Text("核心负载").dsFont(.xs, weight: .semibold) + Spacer() + LegendItem(color: DS.Palette.primary, label: "用户", value: cpu.map { Format.percent($0.user) } ?? "—") + LegendItem(color: DS.Palette.secondary, label: "系统", value: cpu.map { Format.percent($0.system) } ?? "—") + } + .foregroundStyle(DS.Palette.textSecondary) + CoreClusterBars(topology: model.store.topology, perCore: cpu?.perCore ?? [], barHeight: DS.Space.s12 + DS.Space.s4) + } + } +} + +// MARK: - 电池 + +private struct BatteryCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + if let battery = model.store.battery { + let tone: Tone = battery.level < 0.2 ? .error : battery.isCharging ? .primary : .success + Card(padding: DS.Space.s3, spacing: DS.Space.s2) { + HStack(spacing: DS.Space.s1) { + Image(systemName: battery.isCharging ? "battery.100.bolt" : "battery.75") + .font(.system(size: DS.TextSize.xs.rawValue, weight: .semibold)) + Text("电池").dsFont(.xs, weight: .semibold) + Spacer(minLength: DS.Space.s1) + if let health = battery.health { + Chip(text: "健康 \(Format.percent(health))", tone: health < 0.8 ? .warning : .neutral) + } + } + .foregroundStyle(DS.Palette.textSecondary) + + HStack(alignment: .center, spacing: DS.Space.s2) { + VStack(alignment: .leading, spacing: DS.Space.s1 / 2) { + Text(verbatim: Format.percent(battery.level)) + .dsFont(.xl, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + Text(stateText(battery)) + .dsFont(.xs, weight: .medium) + .foregroundStyle(DS.Palette.textSecondary) + if let watts = battery.adapterWatts, battery.isPluggedIn { + Label { Text(verbatim: "\(watts)W") } icon: { Image(systemName: "bolt.fill") } + .dsFont(.xs, weight: .medium) + .foregroundStyle(DS.Palette.warning) + } + } + Spacer(minLength: 0) + RingGauge(fraction: battery.level, color: tone.color, size: DS.Space.s12 + DS.Space.s2) { + Image(systemName: "laptopcomputer") + .font(.system(size: DS.TextSize.sm.rawValue, weight: .medium)) + .foregroundStyle(DS.Palette.textSecondary) + } + } + + Text(verbatim: detailText(battery)) + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + .lineLimit(1) + } + } + } + + private func stateText(_ battery: BatteryStatus) -> String { + if battery.isCharging { return "充电中" } + if battery.isPluggedIn { return battery.isFullyCharged ? "已充满" : "电源供电" } + return "电池供电" + } + + private func detailText(_ battery: BatteryStatus) -> String { + var parts: [String] = [] + if let minutes = battery.minutesRemaining { + parts.append(battery.isCharging ? "\(Format.duration(minutes: minutes))后充满" : "剩余 \(Format.duration(minutes: minutes))") + } + if let cycles = battery.cycleCount { parts.append("循环 \(cycles) 次") } + return parts.joined(separator: " · ") + } +} + +// MARK: - 高占用进程 + +private struct TopProcessesCard: View { + @Environment(AppModel.self) private var model + @Environment(\.isSnapshot) private var isSnapshot + + var body: some View { + let processes = Array(model.store.processes.prefix(5)) + + Card(padding: DS.Space.s3, spacing: DS.Space.s2) { + HStack(spacing: DS.Space.s1) { + Image(systemName: "chart.bar.fill").font(.system(size: DS.TextSize.xs.rawValue, weight: .semibold)) + Text("高占用进程").dsFont(.xs, weight: .semibold) + Spacer() + Text("CPU").dsFont(.xs, weight: .medium).frame(width: DS.Size.valueColumn, alignment: .trailing) + Text("内存").dsFont(.xs, weight: .medium).frame(width: DS.Size.valueColumn, alignment: .trailing) + Color.clear.frame(width: DS.Size.iconInline) + } + .foregroundStyle(DS.Palette.textSecondary) + + if processes.isEmpty { + PlaceholderLine() + } + ForEach(processes) { process in + HStack(spacing: DS.Space.s2) { + AppIconCache.shared.image(for: process) + .resizable() + .frame(width: DS.Size.iconInline, height: DS.Size.iconInline) + Text(process.displayName) + .dsFont(.sm, weight: .medium) + .foregroundStyle(DS.Palette.textPrimary) + .lineLimit(1) + Spacer(minLength: DS.Space.s2) + Text(verbatim: cpuText(process.cpu)) + .dsFont(.sm, weight: .medium) + .foregroundStyle(cpuTone(process.cpu).color) + .frame(width: DS.Size.valueColumn, alignment: .trailing) + Text(verbatim: Format.bytes(process.memory)) + .dsFont(.sm) + .foregroundStyle(DS.Palette.textSecondary) + .frame(width: DS.Size.valueColumn, alignment: .trailing) + moreButton(process) + } + .monospacedDigit() + } + } + } + + @ViewBuilder + private func moreButton(_ process: ProcessUsage) -> some View { + let icon = Image(systemName: "ellipsis") + .font(.system(size: DS.TextSize.xs.rawValue, weight: .bold)) + .foregroundStyle(DS.Palette.textTertiary) + .frame(width: DS.Size.iconInline) + if isSnapshot { + icon + } else { + Menu { + if let path = process.appBundlePath ?? process.executablePath { + Button("在访达中显示") { + NSWorkspace.shared.activateFileViewerSelecting([URL(fileURLWithPath: path)]) + } + } + Button("拷贝 PID \(String(process.pid))") { + NSPasteboard.general.clearContents() + NSPasteboard.general.setString(String(process.pid), forType: .string) + } + Divider() + Button("查看全部进程") { model.settings.panelTab = .processes } + } label: { + icon + } + .menuStyle(.borderlessButton) + .menuIndicator(.hidden) + .frame(width: DS.Size.iconInline) + } + } + + private func cpuText(_ value: Double) -> String { + "\((value * 100).formatted(.number.precision(.fractionLength(1))))%" + } + + private func cpuTone(_ value: Double) -> Tone { + value >= 0.8 ? .error : value >= 0.5 ? .warning : .neutral + } +} + +// MARK: - 快捷开关 + +private struct QuickActionsCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + let keepAwake = model.keepAwake + Card(padding: DS.Space.s3, spacing: DS.Space.s2) { + HStack(spacing: DS.Space.s1) { + Image(systemName: "switch.2").font(.system(size: DS.TextSize.xs.rawValue, weight: .semibold)) + Text("快捷开关").dsFont(.xs, weight: .semibold) + } + .foregroundStyle(DS.Palette.textSecondary) + + QuickAction(icon: "cup.and.saucer", activeIcon: "cup.and.saucer.fill", title: "防休眠", + detail: keepAwake.isActive ? "已开启" : "关闭", isActive: keepAwake.isActive) { + Task { await keepAwake.setActive(!keepAwake.isActive) } + } + QuickAction(icon: "laptopcomputer", activeIcon: "laptopcomputer", title: "合盖运行", + detail: keepAwake.lidClosedActive ? "已开启" : "关闭", isActive: keepAwake.lidClosedActive) { + model.requestLidMode(!keepAwake.lidClosedRequested) + } + QuickAction(icon: "fan", activeIcon: "fan.fill", title: "散热模式", + detail: model.fans.mode.title, isActive: model.fans.mode != .automatic) { + model.settings.panelTab = .thermal + } + } + } +} + +private struct QuickAction: View { + let icon: String + let activeIcon: String + let title: String + let detail: String + let isActive: Bool + let action: () -> Void + @State private var hovering = false + + var body: some View { + Button(action: action) { + HStack(spacing: DS.Space.s2) { + Image(systemName: isActive ? activeIcon : icon) + .font(.system(size: DS.TextSize.sm.rawValue, weight: .medium)) + .frame(width: DS.Size.iconStandalone) + Text(title).dsFont(.sm, weight: .medium).lineLimit(1) + Spacer(minLength: DS.Space.s1) + Text(detail).dsFont(.xs).foregroundStyle(isActive ? DS.Palette.primary : DS.Palette.textTertiary) + } + .foregroundStyle(isActive ? DS.Palette.primary : DS.Palette.textPrimary) + .padding(.horizontal, DS.Space.s2) + .frame(maxWidth: .infinity) + .frame(height: DS.Size.controlHeight) + .background(background, in: RoundedRectangle(cornerRadius: DS.Radius.md)) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .onHover { hovering = $0 } + .accessibilityAddTraits(isActive ? .isSelected : []) + } + + private var background: Color { + if isActive { return DS.Palette.primary.opacity(0.12) } + return hovering ? DS.Palette.surfaceHover : DS.Palette.track + } +} + +struct PlaceholderLine: View { + var body: some View { + RoundedRectangle(cornerRadius: DS.Radius.sm) + .fill(DS.Palette.track) + .frame(height: DS.Size.barHeight) + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/PanelRootView.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/PanelRootView.swift new file mode 100644 index 0000000..0dcb9f5 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/PanelRootView.swift @@ -0,0 +1,112 @@ +import Metrics +import SwiftUI + +public struct PanelRootView: View { + @Environment(AppModel.self) private var model + @Environment(\.isSnapshot) private var isSnapshot + + public init() {} + + public var body: some View { + VStack(spacing: 0) { + PanelHeader() + .padding(DS.Space.s3) + + HairlineDivider() + + Group { + switch model.settings.panelTab { + case .overview: OverviewPage() + case .processes: ProcessesPage() + case .thermal: ThermalPage() + case .keepAwake: KeepAwakePage() + } + } + .frame(maxWidth: .infinity, maxHeight: isSnapshot ? nil : .infinity, alignment: .top) + } + .frame(width: DS.Size.panelWidth) + .frame(maxHeight: isSnapshot ? nil : .infinity, alignment: .top) + .fixedSize(horizontal: false, vertical: isSnapshot) + .background { + // 实际面板由窗口的液态玻璃底板提供背景;平铺(测量 / 截图)模式使用实色 + if isSnapshot { + RoundedRectangle(cornerRadius: DS.Radius.xl).fill(DS.Palette.background) + } + } + .overlay { + if isSnapshot { + RoundedRectangle(cornerRadius: DS.Radius.xl).strokeBorder(DS.Palette.border, lineWidth: DS.Size.stroke) + } + } + } +} + +private struct PanelHeader: View { + @Environment(AppModel.self) private var model + + var body: some View { + @Bindable var settings = model.settings + + HStack(spacing: DS.Space.s3) { + AppGlyph() + VStack(alignment: .leading, spacing: 0) { + Text("OpenStats") + .dsFont(.base, weight: .semibold) + .foregroundStyle(DS.Palette.textPrimary) + Text("状态栏监控") + .dsFont(.xs) + .foregroundStyle(DS.Palette.textSecondary) + } + .fixedSize() + + Spacer(minLength: DS.Space.s3) + + SegmentedControl(selection: $settings.panelTab, + options: PanelTab.allCases.map { ($0, $0.title) }) + .frame(width: DS.Size.tabsWidth) + + Spacer(minLength: DS.Space.s3) + + if model.keepAwake.isActive { + Image(systemName: "cup.and.saucer.fill") + .font(.system(size: DS.TextSize.sm.rawValue, weight: .semibold)) + .foregroundStyle(DS.Palette.primary) + .help("防休眠已开启") + } + IconButton(systemName: "gearshape", help: "设置") { model.openSettings() } + IconButton(systemName: "power", help: "退出 OpenStats") { model.quit() } + } + } +} + +struct AppGlyph: View { + var size: CGFloat = DS.Size.controlHeight + + var body: some View { + RoundedRectangle(cornerRadius: DS.Radius.md) + .fill(DS.Palette.primary) + .frame(width: size, height: size) + .overlay { + PulseMark() + .stroke(DS.Palette.onPrimary, + style: StrokeStyle(lineWidth: size / DS.Space.s12 * DS.Space.s1, lineCap: .round, lineJoin: .round)) + .padding(size * 0.22) + } + .accessibilityHidden(true) + } +} + +/// 应用标志折线,与 scripts/make-icon.swift 中的点位一致 +struct PulseMark: Shape { + static let points: [CGPoint] = [ + CGPoint(x: 0.00, y: 0.56), CGPoint(x: 0.26, y: 0.56), CGPoint(x: 0.36, y: 0.30), + CGPoint(x: 0.50, y: 0.80), CGPoint(x: 0.62, y: 0.40), CGPoint(x: 0.70, y: 0.56), + CGPoint(x: 1.00, y: 0.56), + ] + + func path(in rect: CGRect) -> Path { + Path { path in + path.addLines(Self.points.map { CGPoint(x: rect.minX + $0.x * rect.width, y: rect.minY + $0.y * rect.height) }) + } + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ProcessesPage.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ProcessesPage.swift new file mode 100644 index 0000000..1a6eee7 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ProcessesPage.swift @@ -0,0 +1,174 @@ +import AppKit +import Metrics +import SwiftUI + +struct ProcessesPage: View { + enum Sort: String, CaseIterable { + case cpu, memory + + var title: String { self == .cpu ? "按 CPU" : "按内存" } + } + + @Environment(AppModel.self) private var model + @State private var sort: Sort = .cpu + private let visibleCount = 15 + + var body: some View { + let processes = sorted(model.store.processes) + + PageScroll { + HStack { + SegmentedControl(selection: $sort, options: Sort.allCases.map { ($0, $0.title) }) + .frame(width: DS.Size.tileWidth) + Spacer() + Text(verbatim: "占用最高的 \(visibleCount) 个") + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + } + + Card(padding: 0, spacing: 0) { + HStack(spacing: DS.Space.s3) { + Text("进程") + Spacer() + Text("CPU").frame(width: DS.Size.valueColumn, alignment: .trailing) + Text("内存").frame(width: DS.Size.valueColumn, alignment: .trailing) + } + .dsFont(.xs, weight: .medium) + .foregroundStyle(DS.Palette.textTertiary) + .padding(.horizontal, DS.Space.s4) + .padding(.vertical, DS.Space.s2) + + if processes.isEmpty { + HairlineDivider() + Text("正在读取进程…") + .dsFont(.sm) + .foregroundStyle(DS.Palette.textSecondary) + .frame(maxWidth: .infinity) + .padding(DS.Space.s6) + } else { + ForEach(processes.prefix(visibleCount)) { process in + HairlineDivider() + ProcessRow(process: process, emphasis: sort) + } + } + } + + Text("仅列出当前用户有权限读取的进程,CPU 以单核满载为 100%。") + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + } + } + + private func sorted(_ processes: [ProcessUsage]) -> [ProcessUsage] { + switch sort { + case .cpu: processes + case .memory: processes.sorted { $0.memory > $1.memory } + } + } +} + +private struct ProcessRow: View { + let process: ProcessUsage + let emphasis: ProcessesPage.Sort + @State private var hovering = false + @Environment(\.isSnapshot) private var isSnapshot + + var body: some View { + HStack(spacing: DS.Space.s3) { + AppIconCache.shared.image(for: process) + .resizable() + .frame(width: DS.Size.iconStandalone, height: DS.Size.iconStandalone) + VStack(alignment: .leading, spacing: 0) { + Text(title) + .dsFont(.sm) + .foregroundStyle(DS.Palette.textPrimary) + .lineLimit(1) + Text(subtitle) + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + .lineLimit(1) + } + Spacer(minLength: DS.Space.s2) + Text(cpuText) + .dsFont(.sm, weight: emphasis == .cpu ? .semibold : .regular) + .foregroundStyle(emphasis == .cpu ? DS.Palette.textPrimary : DS.Palette.textSecondary) + .frame(width: DS.Size.valueColumn, alignment: .trailing) + Text(Format.bytes(process.memory)) + .dsFont(.sm, weight: emphasis == .memory ? .semibold : .regular) + .foregroundStyle(emphasis == .memory ? DS.Palette.textPrimary : DS.Palette.textSecondary) + .frame(width: DS.Size.valueColumn, alignment: .trailing) + } + .monospacedDigit() + .padding(.horizontal, DS.Space.s4) + .padding(.vertical, DS.Space.s2) + .background(hovering ? DS.Palette.surfaceHover : .clear) + .onHover { hovering = $0 } + .contextMenu(isSnapshot ? nil : ContextMenu { + if let path = process.appBundlePath ?? process.executablePath { + Button("在访达中显示") { + NSWorkspace.shared.activateFileViewerSelecting([URL(fileURLWithPath: path)]) + } + } + Button("拷贝 PID") { + NSPasteboard.general.clearContents() + NSPasteboard.general.setString(String(process.pid), forType: .string) + } + }) + } + + private var title: String { process.displayName } + + private var subtitle: String { + let pid = "PID \(process.pid)" + guard let role = process.helperRole else { return pid } + return "\(role) · \(pid)" + } + + private var cpuText: String { + let percent = process.cpu * 100 + return percent < 0.05 ? "0%" : "\(percent.formatted(.number.precision(.fractionLength(1))))%" + } +} + +/// 进程图标缓存:只保留 40px 小位图,避免每次刷新解码系统图标的全部分辨率 +@MainActor +final class AppIconCache { + static let shared = AppIconCache() + private static let pixelSize: CGFloat = DS.Size.iconStandalone * 2 + private static let limit = 128 + private var cache: [String: CGImage] = [:] + + func image(for process: ProcessUsage) -> Image { + let key = process.appBundlePath ?? "unix-executable" + if let cached = cache[key] { return Image(decorative: cached, scale: 2) } + + let icon = process.appBundlePath.map { NSWorkspace.shared.icon(forFile: $0) } + ?? NSWorkspace.shared.icon(for: .unixExecutable) + var rect = NSRect(x: 0, y: 0, width: Self.pixelSize, height: Self.pixelSize) + guard let cgImage = icon.cgImage(forProposedRect: &rect, context: nil, hints: nil) else { + return Image(systemName: "app") + } + if cache.count >= Self.limit { cache.removeAll() } + cache[key] = cgImage + return Image(decorative: cgImage, scale: 2) + } +} + +extension ProcessUsage { + private var appName: String? { + appBundlePath.map { URL(fileURLWithPath: $0).deletingPathExtension().lastPathComponent } + } + + /// 应用的辅助进程显示为“主应用名” + var displayName: String { + guard let appName, name.hasPrefix(appName), name != appName else { return name } + return appName + } + + /// 辅助进程的角色,例如 “Helper (Renderer)” + var helperRole: String? { + guard let appName, name.hasPrefix(appName), name != appName else { return nil } + let role = name.dropFirst(appName.count).trimmingCharacters(in: .whitespaces) + return role.isEmpty ? nil : role + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ThermalPage.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ThermalPage.swift new file mode 100644 index 0000000..272a5dc --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Panel/ThermalPage.swift @@ -0,0 +1,217 @@ +import Metrics +import SMC +import SwiftUI + +struct ThermalPage: View { + @Environment(AppModel.self) private var model + + var body: some View { + PageScroll { + HStack(alignment: .top, spacing: DS.Space.s3) { + TemperatureCard().frame(maxWidth: .infinity) + FanCard().frame(maxWidth: .infinity) + } + .fixedSize(horizontal: false, vertical: true) + } + } +} + +private struct TemperatureCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + let summaries = model.store.sensors?.temperatures ?? [] + let sensorCount = summaries.reduce(0) { $0 + $1.sensorCount } + + Card { + CardHeader(icon: "thermometer.medium", title: "温度", + detail: summaries.isEmpty ? "读取中" : "\(sensorCount) 个传感器") + if summaries.isEmpty { + PlaceholderLine() + } else { + ForEach(summaries) { summary in + TemperatureRow(summary: summary, fahrenheit: model.settings.useFahrenheit) + } + } + } + } +} + +private struct TemperatureRow: View { + let summary: TemperatureSummary + let fahrenheit: Bool + + var body: some View { + let tone = Tone.forTemperature(summary.maximum) + VStack(alignment: .leading, spacing: DS.Space.s1) { + HStack(spacing: DS.Space.s3) { + Text(summary.group.title) + .dsFont(.sm, weight: .medium) + .foregroundStyle(DS.Palette.textPrimary) + .frame(width: DS.Size.labelColumn, alignment: .leading) + ProgressTrack(fraction: summary.maximum / DS.Thermal.scaleMax, color: tone.color) + Text(Format.temperature(summary.maximum, fahrenheit: fahrenheit)) + .dsFont(.sm, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + .frame(width: DS.Size.valueColumn, alignment: .trailing) + } + if summary.sensorCount > 1 { + Text("平均 \(Format.temperature(summary.average, fahrenheit: fahrenheit)) · 最高 \(Format.temperature(summary.maximum, fahrenheit: fahrenheit))") + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + .padding(.leading, DS.Size.labelColumn + DS.Space.s3) + } + } + } +} + +private struct FanCard: View { + @Environment(AppModel.self) private var model + + var body: some View { + let fans = model.store.sensors?.fans ?? [] + let controller = model.fans + + Card { + CardHeader(icon: "fan", title: "风扇") { + if !fans.isEmpty { + StatusBadge(text: fans.contains(where: \.isManual) + ? (controller.mode == .automatic ? "其他程序控制" : "OpenStats 控制") + : "系统自动", + tone: fans.contains(where: \.isManual) ? .primary : .neutral) + } + } + + if fans.isEmpty { + Text(model.store.sensors == nil ? "正在读取风扇…" : "此设备没有可调节的风扇") + .dsFont(.sm) + .foregroundStyle(DS.Palette.textSecondary) + } else { + ForEach(fans) { fan in + FanRow(fan: fan, name: name(for: fan, count: fans.count)) + } + + HairlineDivider() + + Text("调速模式") + .dsFont(.sm, weight: .semibold) + .foregroundStyle(DS.Palette.textPrimary) + + SegmentedControl(selection: modeBinding, options: FanController.Mode.allCases.map { ($0, $0.title) }) + .disabled(!model.helper.isReady || controller.isApplying) + + if controller.mode == .custom { + CustomLevelControl(fans: fans) + } + + if !model.helper.isReady { + HelperRequiredBanner(text: "调节风扇需要安装辅助工具,仅需管理员授权一次。") + } + + if let notice = controller.notice { + InfoBanner(icon: controller.noticeIsError ? "exclamationmark.triangle.fill" : "checkmark.circle.fill", + text: notice, + tone: controller.noticeIsError ? .error : .success) + } + + Text(verbatim: "自定义模式下 CPU 达到 \(model.settings.fanSafetyTemperature)°C 会自动交还系统控制;退出应用时风扇恢复自动。") + .dsFont(.xs) + .foregroundStyle(DS.Palette.textTertiary) + .fixedSize(horizontal: false, vertical: true) + } + } + } + + private var modeBinding: Binding { + Binding(get: { model.fans.mode }, + set: { mode in Task { await model.fans.select(mode) } }) + } + + private func name(for fan: FanState, count: Int) -> String { + guard count == 2 else { return "风扇 \(fan.id + 1)" } + return fan.id == 0 ? "左侧风扇" : "右侧风扇" + } +} + +private struct FanRow: View { + let fan: FanState + let name: String + + var body: some View { + VStack(alignment: .leading, spacing: DS.Space.s1) { + HStack { + Text(name).dsFont(.sm, weight: .medium).foregroundStyle(DS.Palette.textPrimary) + Spacer() + Text(Format.rpm(fan.current)) + .dsFont(.sm, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + } + ProgressTrack(fraction: fan.fraction, color: DS.Palette.secondary) + Text(verbatim: "最低 \(Int(fan.minimum)) · 最高 \(Int(fan.maximum)) · 目标 \(Int(fan.target)) RPM") + .dsFont(.xs) + .monospacedDigit() + .foregroundStyle(DS.Palette.textTertiary) + } + } +} + +private struct CustomLevelControl: View { + @Environment(AppModel.self) private var model + let fans: [FanState] + + var body: some View { + @Bindable var controller = model.fans + let reference = fans.first + let rpm = reference.map { model.fans.targetRPM(for: $0) } ?? 0 + + VStack(alignment: .leading, spacing: DS.Space.s2) { + HStack { + Text("目标转速").dsFont(.xs).foregroundStyle(DS.Palette.textSecondary) + Spacer() + Text("\(Format.percent(controller.customLevel)) · 约 \(Format.rpm(rpm))") + .dsFont(.xs, weight: .semibold) + .monospacedDigit() + .foregroundStyle(DS.Palette.textPrimary) + } + DSSlider(value: $controller.customLevel) { + Task { await model.fans.commitCustomLevel() } + } + HStack { + Text("安静").dsFont(.xs).foregroundStyle(DS.Palette.textTertiary) + Spacer() + Text("最强").dsFont(.xs).foregroundStyle(DS.Palette.textTertiary) + } + } + } +} + +struct HelperRequiredBanner: View { + @Environment(AppModel.self) private var model + let text: String + + var body: some View { + InfoBanner(icon: "lock.shield", text: bannerText, tone: .warning) { + switch model.helper.status { + case .notInstalled: + Button("安装") { model.helper.install() } + .buttonStyle(DSButtonStyle(kind: .primary)) + .disabled(model.helper.isWorking) + case .requiresApproval: + Button("去批准") { model.helper.openLoginItemsSettings() } + .buttonStyle(DSButtonStyle(kind: .primary)) + case .enabled, .unavailable: + EmptyView() + } + } + } + + private var bannerText: String { + switch model.helper.status { + case .requiresApproval: "请在“系统设置 › 通用 › 登录项”中允许 OpenStats 的后台项目。" + case .unavailable(let reason): reason + default: text + } + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Settings/SettingsView.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Settings/SettingsView.swift new file mode 100644 index 0000000..f60f254 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Settings/SettingsView.swift @@ -0,0 +1,421 @@ +import AppKit +import HelperShared +import SwiftUI + +enum SettingsSection: String, CaseIterable, Identifiable { + case general, menuBar, thermal, helper, about + + var id: String { rawValue } + + var title: String { + switch self { + case .general: "通用" + case .menuBar: "菜单栏" + case .thermal: "散热与防休眠" + case .helper: "辅助工具" + case .about: "关于" + } + } + + var symbol: String { + switch self { + case .general: "gearshape" + case .menuBar: "menubar.rectangle" + case .thermal: "fan" + case .helper: "lock.shield" + case .about: "info.circle" + } + } +} + +public struct SettingsView: View { + @Environment(AppModel.self) private var model + @Environment(\.isSnapshot) private var isSnapshot + @State private var section: SettingsSection + + public init() { + _section = State(initialValue: .general) + } + + init(section: SettingsSection) { + _section = State(initialValue: section) + } + + public var body: some View { + HStack(spacing: 0) { + VStack(alignment: .leading, spacing: DS.Space.s1) { + ForEach(SettingsSection.allCases) { item in + SidebarItem(section: item, isSelected: item == section) { section = item } + } + Spacer() + } + .padding(DS.Space.s3) + .frame(width: DS.Size.settingsSidebar) + .frame(maxHeight: .infinity) + .background { + if isSnapshot { DS.Palette.background } else { SidebarMaterial() } + } + + Rectangle().fill(DS.Palette.border).frame(width: DS.Size.stroke) + + SettingsPage(title: section.title) { + switch section { + case .general: GeneralSettings() + case .menuBar: MenuBarSettings() + case .thermal: ThermalSettings() + case .helper: HelperSettings() + case .about: AboutSettings() + } + } + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) + .background(Color(nsColor: .windowBackgroundColor)) + } + .frame(width: DS.Size.settingsWidth, height: isSnapshot ? nil : DS.Size.settingsHeight) + .fixedSize(horizontal: false, vertical: isSnapshot) + .onAppear { + model.refreshLaunchAtLogin() + model.helper.refreshStatus() + } + } +} + +private struct SidebarItem: View { + let section: SettingsSection + let isSelected: Bool + let action: () -> Void + @State private var hovering = false + + var body: some View { + Button(action: action) { + HStack(spacing: DS.Space.s2) { + Image(systemName: section.symbol) + .font(.system(size: DS.TextSize.sm.rawValue, weight: .medium)) + .frame(width: DS.Size.iconStandalone) + Text(section.title).dsFont(.sm, weight: isSelected ? .semibold : .regular) + Spacer() + } + .foregroundStyle(isSelected ? DS.Palette.primary : DS.Palette.textPrimary) + .padding(.horizontal, DS.Space.s2) + .frame(height: DS.Size.controlHeight) + .background(background, in: RoundedRectangle(cornerRadius: DS.Radius.md)) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .onHover { hovering = $0 } + } + + private var background: Color { + if isSelected { return DS.Palette.primary.opacity(0.1) } + return hovering ? DS.Palette.surfaceHover : .clear + } +} + +private struct SettingsPage: View { + let title: String + @ViewBuilder var content: Content + @Environment(\.isSnapshot) private var isSnapshot + + var body: some View { + let stack = VStack(alignment: .leading, spacing: DS.Space.s4) { + Text(title).dsFont(.xl, weight: .semibold).foregroundStyle(DS.Palette.textPrimary) + content + } + .padding(DS.Space.s6) + .frame(maxWidth: .infinity, alignment: .leading) + + if isSnapshot { + stack + } else { + ScrollView { stack } + } + } +} + +private struct SettingsGroup: View { + var caption: String? + @ViewBuilder var content: Content + + var body: some View { + VStack(alignment: .leading, spacing: DS.Space.s2) { + if let caption { + Text(caption).dsFont(.xs, weight: .medium).foregroundStyle(DS.Palette.textSecondary) + } + VStack(alignment: .leading, spacing: 0) { + content + } + .background(DS.Palette.surface, in: RoundedRectangle(cornerRadius: DS.Radius.md)) + .overlay(RoundedRectangle(cornerRadius: DS.Radius.md).strokeBorder(DS.Palette.border, lineWidth: DS.Size.stroke)) + } + } +} + +/// 分组内的一行,自带内边距与分隔线 +private struct GroupRow: View { + var showsDivider = true + @ViewBuilder var content: Content + + var body: some View { + VStack(spacing: 0) { + if showsDivider { HairlineDivider() } + content + .padding(.horizontal, DS.Space.s4) + .padding(.vertical, DS.Space.s3) + } + } +} + +// MARK: - 通用 + +private struct GeneralSettings: View { + @Environment(AppModel.self) private var model + + var body: some View { + @Bindable var settings = model.settings + + SettingsGroup { + GroupRow(showsDivider: false) { + SettingRow(title: "外观", subtitle: "面板与设置窗口的配色;菜单栏始终跟随系统") { + SegmentedControl(selection: $settings.appearance, + options: AppearanceMode.allCases.map { ($0, $0.title) }) + .frame(width: DS.Size.settingsSidebar + DS.Space.s12) + } + } + GroupRow { + SettingRow(title: "登录时启动", subtitle: model.launchAtLoginError ?? "开机后自动在菜单栏显示 OpenStats") { + DSToggle(isOn: Binding(get: { model.launchAtLoginEnabled }, + set: { model.setLaunchAtLogin($0) }), + label: "登录时启动") + } + } + GroupRow { + SettingRow(title: "刷新频率", subtitle: "面板收起时菜单栏的采样间隔;展开面板时固定为 1 秒") { + SegmentedControl(selection: $settings.refreshSeconds, + options: AppSettings.refreshOptions.map { ($0, "\($0) 秒") }) + .frame(width: DS.Size.settingsSidebar + DS.Space.s12) + } + } + GroupRow { + SettingRow(title: "温度单位") { + SegmentedControl(selection: $settings.useFahrenheit, options: [(false, "°C"), (true, "°F")]) + .frame(width: DS.Size.settingsSidebar / 2 + DS.Space.s6) + } + } + } + } +} + +// MARK: - 菜单栏 + +private struct MenuBarSettings: View { + @Environment(AppModel.self) private var model + + var body: some View { + @Bindable var settings = model.settings + + MenuBarPreview() + + SettingsGroup(caption: "显示项目") { + ForEach(Array(MenuBarItem.allCases.enumerated()), id: \.element) { index, item in + GroupRow(showsDivider: index > 0) { + VStack(alignment: .leading, spacing: DS.Space.s3) { + SettingRow(title: item.title, subtitle: item.subtitle, icon: item.symbol) { + DSToggle(isOn: Binding(get: { settings.isEnabled(item) }, + set: { settings.setEnabled(item, $0) }), + label: item.title) + } + if item.supportsGaugeStyle, settings.isEnabled(item) { + SegmentedControl(selection: Binding(get: { settings.gaugeStyle(for: item) }, + set: { settings.setGaugeStyle($0, for: item) }), + options: GaugeStyle.allCases.map { ($0, $0.title) }) + .padding(.leading, DS.Size.iconStandalone + DS.Space.s3) + } + } + } + } + } + + SettingsGroup(caption: "样式") { + GroupRow(showsDivider: false) { + SettingRow(title: "高负载时着色", subtitle: "CPU 超过 85% 时数值显示为红色,其余时间跟随菜单栏颜色") { + DSToggle(isOn: $settings.colorizeHighLoad, label: "高负载时着色") + } + } + } + } +} + +private struct MenuBarPreview: View { + @Environment(AppModel.self) private var model + + var body: some View { + let image = MenuBarRenderer.image(for: model) + VStack(spacing: DS.Space.s2) { + preview(image: image, dark: false) + preview(image: image, dark: true) + } + } + + private func preview(image: NSImage, dark: Bool) -> some View { + let tinted = MenuBarRenderer.preview(image, dark: dark) + return HStack { + Spacer() + Image(nsImage: tinted) + Spacer() + } + .frame(height: DS.Size.controlHeight) + .background(dark ? Color(nsColor: NSColor(hex: 0x1F2937)) : Color(nsColor: NSColor(hex: 0xE5E7EB)), + in: RoundedRectangle(cornerRadius: DS.Radius.md)) + .accessibilityLabel(dark ? "深色菜单栏预览" : "浅色菜单栏预览") + } +} + +// MARK: - 散热与防休眠 + +private struct ThermalSettings: View { + @Environment(AppModel.self) private var model + + var body: some View { + @Bindable var settings = model.settings + + SettingsGroup(caption: "风扇") { + GroupRow(showsDivider: false) { + SettingRow(title: "安全温度", subtitle: "自定义转速时,CPU 达到该温度自动恢复系统控制") { + SegmentedControl(selection: $settings.fanSafetyTemperature, + options: AppSettings.fanSafetyOptions.map { ($0, "\($0)°C") }) + .frame(width: DS.Size.settingsSidebar + DS.Space.s12) + } + } + } + + SettingsGroup(caption: "合盖运行") { + GroupRow(showsDivider: false) { + SettingRow(title: "电量下限", subtitle: "使用电池且电量低于该值时,自动关闭合盖运行") { + SegmentedControl(selection: $settings.lidModeBatteryFloor, + options: AppSettings.batteryFloorOptions.map { ($0, "\($0)%") }) + .frame(width: DS.Size.settingsSidebar + DS.Space.s12) + } + } + } + } +} + +// MARK: - 辅助工具 + +private struct HelperSettings: View { + @Environment(AppModel.self) private var model + + var body: some View { + let helper = model.helper + + SettingsGroup { + GroupRow(showsDivider: false) { + SettingRow(title: "OpenStats 辅助工具", subtitle: "以系统权限运行的后台服务,只接受本应用的请求", icon: "lock.shield") { + StatusBadge(text: helper.status.title, tone: tone(helper.status)) + } + } + GroupRow { + VStack(alignment: .leading, spacing: DS.Space.s2) { + Text("它只做三件事").dsFont(.sm, weight: .medium).foregroundStyle(DS.Palette.textPrimary) + CapabilityLine(text: "设置风扇目标转速,或恢复系统自动控制") + CapabilityLine(text: "开启 / 关闭“合盖不睡眠”(等同 pmset disablesleep)") + CapabilityLine(text: "应用退出或断开连接时,自动恢复以上两项设置") + } + } + GroupRow { + HStack(spacing: DS.Space.s2) { + switch helper.status { + case .notInstalled: + Button("安装辅助工具") { helper.install() } + .buttonStyle(DSButtonStyle(kind: .primary)) + case .requiresApproval: + Button("打开登录项设置") { helper.openLoginItemsSettings() } + .buttonStyle(DSButtonStyle(kind: .primary)) + Button("卸载") { Task { await helper.uninstall() } } + .buttonStyle(DSButtonStyle(kind: .secondary)) + case .enabled: + Button("卸载辅助工具") { Task { await helper.uninstall() } } + .buttonStyle(DSButtonStyle(kind: .secondary)) + case .unavailable: + EmptyView() + } + Button("刷新状态") { helper.refreshStatus() } + .buttonStyle(DSButtonStyle(kind: .ghost)) + Spacer() + } + .disabled(helper.isWorking) + } + } + + if case .unavailable(let reason) = helper.status { + InfoBanner(icon: "exclamationmark.triangle.fill", text: reason, tone: .error) + } + if let error = helper.lastError { + InfoBanner(icon: "exclamationmark.triangle.fill", text: error, tone: .error) + } + if HelperConstants.teamIdentifier.isEmpty { + InfoBanner(icon: "info.circle", text: "当前为开发构建:辅助工具只校验应用标识。正式发布前需使用 Developer ID 签名并填写 Team ID。", tone: .neutral) + } + } + + private func tone(_ status: HelperClient.Status) -> Tone { + switch status { + case .enabled: .success + case .requiresApproval: .warning + case .notInstalled: .neutral + case .unavailable: .error + } + } +} + +private struct CapabilityLine: View { + let text: String + + var body: some View { + HStack(alignment: .firstTextBaseline, spacing: DS.Space.s2) { + Image(systemName: "checkmark") + .font(.system(size: DS.TextSize.xs.rawValue, weight: .bold)) + .foregroundStyle(DS.Palette.success) + Text(text).dsFont(.sm).foregroundStyle(DS.Palette.textSecondary) + } + } +} + +// MARK: - 关于 + +private struct AboutSettings: View { + var body: some View { + let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "开发版" + let build = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as? String + + SettingsGroup { + GroupRow(showsDivider: false) { + HStack(spacing: DS.Space.s4) { + AppGlyph(size: DS.Space.s12) + VStack(alignment: .leading, spacing: DS.Space.s1) { + Text("OpenStats").dsFont(.lg, weight: .semibold).foregroundStyle(DS.Palette.textPrimary) + Text(verbatim: "版本 \(version)\(build.map { "(\($0))" } ?? "")") + .dsFont(.sm) + .foregroundStyle(DS.Palette.textSecondary) + } + Spacer() + } + } + GroupRow { + Text("轻量的 macOS 菜单栏系统监控:CPU、GPU、内存、网络、温度、风扇与防休眠。") + .dsFont(.sm) + .foregroundStyle(DS.Palette.textSecondary) + } + } + + SettingsGroup(caption: "致谢") { + GroupRow(showsDivider: false) { + SettingRow(title: "exelban/stats", subtitle: "SMC 通信与 Apple Silicon 风扇解锁流程移植自该项目 · MIT License") { + Button("查看") { + if let url = URL(string: "https://github.com/exelban/stats") { NSWorkspace.shared.open(url) } + } + .buttonStyle(DSButtonStyle(kind: .secondary)) + } + } + } + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/Snapshot/SnapshotRenderer.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/Snapshot/SnapshotRenderer.swift new file mode 100644 index 0000000..1f1dc7f --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/Snapshot/SnapshotRenderer.swift @@ -0,0 +1,101 @@ +import AppKit +import Metrics +import SMC +import SwiftUI + +/// `OpenStats --snapshot <目录>`:用本机实时数据渲染各页面 PNG,用于设计走查 +@MainActor +enum SnapshotRenderer { + static func run(outputDirectory: URL) async { + try? FileManager.default.createDirectory(at: outputDirectory, withIntermediateDirectories: true) + + let defaults = UserDefaults(suiteName: "OpenStats.snapshot") ?? .standard + let settings = AppSettings(defaults: defaults) + settings.menuBarItems = [.cpu, .gpu, .memory, .network, .temperature] + settings.setGaugeStyle(.ring, for: .gpu) + settings.setGaugeStyle(.pie, for: .memory) + let model = AppModel(settings: settings) + model.isPanelVisible = true + + // 采集约 12 秒的真实数据,让历史曲线有内容 + var demand = MetricsDemand() + demand.interval = .milliseconds(250) + demand.memory = true + demand.network = true + demand.gpu = true + demand.disk = true + demand.battery = true + demand.processes = true + demand.temperatures = Set(TemperatureGroup.allCases) + demand.fans = true + await model.hub.update(demand) + await model.hub.start { snapshot in model.handle(snapshot) } + try? await Task.sleep(for: .seconds(12)) + await model.hub.stop() + + for (appearanceName, suffix) in [(NSAppearance.Name.aqua, "light"), (.darkAqua, "dark")] { + guard let appearance = NSAppearance(named: appearanceName) else { continue } + NSApp.appearance = appearance + for tab in PanelTab.allCases { + settings.panelTab = tab + write(PanelRootView(), model: model, appearance: appearance, + to: outputDirectory.appendingPathComponent("panel-\(tab.rawValue)-\(suffix).png")) + } + for section in SettingsSection.allCases { + write(SettingsView(section: section), model: model, appearance: appearance, + to: outputDirectory.appendingPathComponent("settings-\(section.rawValue)-\(suffix).png")) + } + } + + let menuBar = MenuBarRenderer.image(for: model) + for dark in [false, true] { + let preview = MenuBarRenderer.preview(menuBar, dark: dark) + // 垫上菜单栏底色,便于查看 + let padded = NSImage(size: NSSize(width: preview.size.width + DS.Space.s4, height: preview.size.height), flipped: false) { rect in + NSColor(hex: dark ? 0x1F2937 : 0xE5E7EB).setFill() + rect.fill() + preview.draw(in: NSRect(x: DS.Space.s2, y: 0, width: preview.size.width, height: preview.size.height)) + return true + } + writePNG(padded, scale: 2, to: outputDirectory.appendingPathComponent("menubar-\(dark ? "dark" : "light").png")) + } + print("截图已输出到 \(outputDirectory.path)") + } + + /// 用真实的 NSHostingView 放进离屏窗口截图,渲染路径与 App 内一致 + private static func write(_ view: V, model: AppModel, appearance: NSAppearance, to url: URL) { + let hosting = NSHostingView(rootView: view + .environment(model) + .environment(\.isSnapshot, true)) + hosting.appearance = appearance + let size = hosting.fittingSize + hosting.frame = CGRect(origin: .zero, size: size) + + let window = NSWindow(contentRect: CGRect(origin: CGPoint(x: -10_000, y: -10_000), size: size), + styleMask: .borderless, backing: .buffered, defer: false) + window.appearance = appearance + window.isReleasedWhenClosed = false + window.contentView = hosting + window.orderFrontRegardless() + hosting.layoutSubtreeIfNeeded() + RunLoop.main.run(until: Date().addingTimeInterval(0.3)) + + defer { window.orderOut(nil) } + guard let rep = hosting.bitmapImageRepForCachingDisplay(in: hosting.bounds) else { return } + hosting.cacheDisplay(in: hosting.bounds, to: rep) + try? rep.representation(using: .png, properties: [:])?.write(to: url) + } + + private static func writePNG(_ image: NSImage, scale: CGFloat, to url: URL) { + let size = NSSize(width: image.size.width * scale, height: image.size.height * scale) + guard let bitmap = NSBitmapImageRep(bitmapDataPlanes: nil, pixelsWide: Int(size.width), pixelsHigh: Int(size.height), + bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, + colorSpaceName: .deviceRGB, bytesPerRow: 0, bitsPerPixel: 0) else { return } + bitmap.size = image.size + NSGraphicsContext.saveGraphicsState() + NSGraphicsContext.current = NSGraphicsContext(bitmapImageRep: bitmap) + image.draw(in: NSRect(origin: .zero, size: image.size)) + NSGraphicsContext.restoreGraphicsState() + try? bitmap.representation(using: .png, properties: [:])?.write(to: url) + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppModel.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppModel.swift new file mode 100644 index 0000000..59a4a43 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppModel.swift @@ -0,0 +1,103 @@ +import Foundation +import Metrics +import Observation +import ServiceManagement +import SMC + +/// 应用状态总入口,注入到所有 SwiftUI 视图 +@MainActor +@Observable +public final class AppModel { + public let settings: AppSettings + public let store: MetricsStore + public let helper: HelperClient + public let fans: FanController + public let keepAwake: KeepAwakeController + @ObservationIgnored public let hub = MetricsHub() + + public var isPanelVisible = false + public private(set) var launchAtLoginEnabled = SMAppService.mainApp.status == .enabled + public private(set) var launchAtLoginError: String? + + @ObservationIgnored var openSettings: () -> Void = {} + @ObservationIgnored var quit: () -> Void = {} + + public init(settings: AppSettings = AppSettings()) { + let store = MetricsStore() + let helper = HelperClient() + self.settings = settings + self.store = store + self.helper = helper + fans = FanController(helper: helper, store: store, settings: settings) + keepAwake = KeepAwakeController(helper: helper, settings: settings) + } + + /// 根据当前可见内容决定采集范围 + var demand: MetricsDemand { + var demand = MetricsDemand() + let tab = settings.panelTab + let panel = isPanelVisible + let menu = settings.menuBarItems + + demand.interval = panel ? .seconds(1) : .seconds(settings.refreshSeconds) + demand.memory = true + demand.network = true + demand.gpu = (panel && tab == .overview) || menu.contains(.gpu) + demand.disk = panel && tab == .overview + demand.battery = (panel && (tab == .overview || tab == .keepAwake)) || keepAwake.lidClosedActive + demand.processes = panel && (tab == .processes || tab == .overview) + + var groups = Set() + if panel && tab == .overview { groups.formUnion([.cpu, .gpu]) } + if panel && tab == .thermal { groups.formUnion(TemperatureGroup.allCases) } + if menu.contains(.temperature) || fans.mode != .automatic { groups.insert(.cpu) } + demand.temperatures = groups + demand.fans = (panel && (tab == .thermal || tab == .overview)) || menu.contains(.fan) || fans.mode != .automatic + return demand + } + + func refreshLaunchAtLogin() { + launchAtLoginEnabled = SMAppService.mainApp.status == .enabled + } + + func setLaunchAtLogin(_ enabled: Bool) { + launchAtLoginError = nil + do { + if enabled { + try SMAppService.mainApp.register() + } else { + try SMAppService.mainApp.unregister() + } + } catch { + launchAtLoginError = error.localizedDescription + } + refreshLaunchAtLogin() + } + + /// 概览页快捷切换风扇:未安装辅助工具时跳到散热页引导安装 + func requestFanMode(_ mode: FanController.Mode) { + guard helper.isReady else { + settings.panelTab = .thermal + return + } + Task { await fans.select(mode) } + } + + /// 概览页快捷开关合盖运行:同时开启防休眠 + func requestLidMode(_ enabled: Bool) { + guard helper.isReady else { + settings.panelTab = .keepAwake + return + } + Task { + await keepAwake.setLidClosed(enabled) + if enabled, !keepAwake.isActive { await keepAwake.start() } + } + } + + func handle(_ snapshot: MetricsSnapshot) { + store.apply(snapshot) + fans.evaluateSafety() + keepAwake.evaluateBattery(store.battery) + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppSettings.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppSettings.swift new file mode 100644 index 0000000..3bdef70 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/AppSettings.swift @@ -0,0 +1,198 @@ +import Foundation +import Observation + +public enum MenuBarItem: String, CaseIterable, Identifiable, Sendable { + case cpu, memory, network, gpu, temperature, fan + + public var id: String { rawValue } + + var title: String { + switch self { + case .cpu: "CPU" + case .memory: "内存" + case .network: "网速" + case .gpu: "GPU" + case .temperature: "CPU 温度" + case .fan: "风扇转速" + } + } + + var subtitle: String { + switch self { + case .cpu: "总占用,可附带迷你负载图" + case .memory: "已用内存占比" + case .network: "两行显示:绿点上传、蓝点下载" + case .gpu: "GPU 占用" + case .temperature: "CPU 核心最高温度" + case .fan: "转速最高的风扇" + } + } + + /// 菜单栏上方的小标签 + var menuBarLabel: String { + switch self { + case .cpu: "CPU" + case .memory: "RAM" + case .network: "NET" + case .gpu: "GPU" + case .temperature: "TEMP" + case .fan: "FAN" + } + } + + /// 百分比类指标可选择图形样式 + var supportsGaugeStyle: Bool { self == .cpu || self == .gpu || self == .memory } + + var symbol: String { + switch self { + case .cpu: "cpu" + case .memory: "memorychip" + case .network: "arrow.up.arrow.down" + case .gpu: "square.3.layers.3d" + case .temperature: "thermometer.medium" + case .fan: "fan" + } + } +} + +public enum GaugeStyle: String, CaseIterable, Identifiable, Sendable { + case value, bars, ring, pie, barsAndValue + + public var id: String { rawValue } + + var title: String { + switch self { + case .value: "数字" + case .bars: "柱状图" + case .ring: "圆环" + case .pie: "饼图" + case .barsAndValue: "柱状+数字" + } + } +} + +public enum AppearanceMode: String, CaseIterable, Identifiable, Sendable { + case system, light, dark + + public var id: String { rawValue } + + var title: String { + switch self { + case .system: "跟随系统" + case .light: "浅色" + case .dark: "深色" + } + } +} + +public enum PanelTab: String, CaseIterable, Identifiable, Sendable { + case overview, processes, thermal, keepAwake + + public var id: String { rawValue } + + var title: String { + switch self { + case .overview: "概览" + case .processes: "进程" + case .thermal: "散热" + case .keepAwake: "防休眠" + } + } +} + +/// UserDefaults 持久化的偏好设置 +@MainActor +@Observable +public final class AppSettings { + @ObservationIgnored private let defaults: UserDefaults + + public var menuBarItems: Set { + didSet { defaults.set(menuBarItems.map(\.rawValue).sorted(), forKey: Keys.menuBarItems) } + } + /// CPU / GPU / 内存各自的菜单栏样式 + public var gaugeStyles: [MenuBarItem: GaugeStyle] { + didSet { + defaults.set(Dictionary(uniqueKeysWithValues: gaugeStyles.map { ($0.key.rawValue, $0.value.rawValue) }), + forKey: Keys.gaugeStyles) + } + } + public var refreshSeconds: Int { + didSet { defaults.set(refreshSeconds, forKey: Keys.refreshSeconds) } + } + public var colorizeHighLoad: Bool { + didSet { defaults.set(colorizeHighLoad, forKey: Keys.colorizeHighLoad) } + } + public var useFahrenheit: Bool { + didSet { defaults.set(useFahrenheit, forKey: Keys.useFahrenheit) } + } + /// 电量低于该值时自动关闭“合盖运行” + public var lidModeBatteryFloor: Int { + didSet { defaults.set(lidModeBatteryFloor, forKey: Keys.lidModeBatteryFloor) } + } + /// 自定义风扇模式下 CPU 达到该温度时恢复系统控制 + public var fanSafetyTemperature: Int { + didSet { defaults.set(fanSafetyTemperature, forKey: Keys.fanSafetyTemperature) } + } + public var panelTab: PanelTab { + didSet { defaults.set(panelTab.rawValue, forKey: Keys.panelTab) } + } + public var appearance: AppearanceMode { + didSet { defaults.set(appearance.rawValue, forKey: Keys.appearance) } + } + + public static let refreshOptions = [1, 2, 3, 5] + public static let batteryFloorOptions = [10, 20, 30, 40] + public static let fanSafetyOptions = [85, 90, 95, 100] + + public init(defaults: UserDefaults = .standard) { + self.defaults = defaults + let items = defaults.stringArray(forKey: Keys.menuBarItems)?.compactMap(MenuBarItem.init(rawValue:)) + menuBarItems = Set(items ?? [.cpu]) + let storedStyles = defaults.dictionary(forKey: Keys.gaugeStyles) as? [String: String] ?? [:] + gaugeStyles = Dictionary(uniqueKeysWithValues: storedStyles.compactMap { key, value in + guard let item = MenuBarItem(rawValue: key), let style = GaugeStyle(rawValue: value) else { return nil } + return (item, style) + }) + refreshSeconds = Self.refreshOptions.contains(defaults.integer(forKey: Keys.refreshSeconds)) + ? defaults.integer(forKey: Keys.refreshSeconds) : 2 + colorizeHighLoad = defaults.bool(forKey: Keys.colorizeHighLoad) + useFahrenheit = defaults.bool(forKey: Keys.useFahrenheit) + lidModeBatteryFloor = Self.batteryFloorOptions.contains(defaults.integer(forKey: Keys.lidModeBatteryFloor)) + ? defaults.integer(forKey: Keys.lidModeBatteryFloor) : 20 + fanSafetyTemperature = Self.fanSafetyOptions.contains(defaults.integer(forKey: Keys.fanSafetyTemperature)) + ? defaults.integer(forKey: Keys.fanSafetyTemperature) : 95 + panelTab = defaults.string(forKey: Keys.panelTab).flatMap(PanelTab.init(rawValue:)) ?? .overview + appearance = defaults.string(forKey: Keys.appearance).flatMap(AppearanceMode.init(rawValue:)) ?? .system + } + + /// 按固定顺序返回已启用的菜单栏项目 + var orderedMenuBarItems: [MenuBarItem] { + MenuBarItem.allCases.filter(menuBarItems.contains) + } + + func isEnabled(_ item: MenuBarItem) -> Bool { menuBarItems.contains(item) } + + func gaugeStyle(for item: MenuBarItem) -> GaugeStyle { + gaugeStyles[item] ?? (item == .cpu ? .barsAndValue : .value) + } + + func setGaugeStyle(_ style: GaugeStyle, for item: MenuBarItem) { + gaugeStyles[item] = style + } + + func setEnabled(_ item: MenuBarItem, _ enabled: Bool) { + if enabled { menuBarItems.insert(item) } else { menuBarItems.remove(item) } + } + + private enum Keys { + static let menuBarItems = "menuBarItems" + static let gaugeStyles = "gaugeStyles" + static let refreshSeconds = "refreshSeconds" + static let colorizeHighLoad = "colorizeHighLoad" + static let useFahrenheit = "useFahrenheit" + static let lidModeBatteryFloor = "lidModeBatteryFloor" + static let fanSafetyTemperature = "fanSafetyTemperature" + static let panelTab = "panelTab" + static let appearance = "appearance" + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/State/FanController.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/FanController.swift new file mode 100644 index 0000000..3818611 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/FanController.swift @@ -0,0 +1,117 @@ +import Foundation +import Metrics +import Observation +import SMC + +@MainActor +@Observable +public final class FanController { + public enum Mode: String, CaseIterable, Identifiable { + case automatic, cooling, maximum, custom + + public var id: String { rawValue } + + var title: String { + switch self { + case .automatic: "自动" + case .cooling: "降温" + case .maximum: "强冷" + case .custom: "自定义" + } + } + + /// “降温”档位于最低与最高转速之间的 60% + static let coolingLevel = 0.6 + } + + public private(set) var mode: Mode = .automatic + /// 自定义档位:0 为最低转速,1 为最高转速 + public var customLevel: Double = 0.5 + public private(set) var isApplying = false + public private(set) var notice: String? + public private(set) var noticeIsError = false + + @ObservationIgnored private let helper: HelperClient + @ObservationIgnored private let store: MetricsStore + @ObservationIgnored private let settings: AppSettings + + init(helper: HelperClient, store: MetricsStore, settings: AppSettings) { + self.helper = helper + self.store = store + self.settings = settings + } + + var hasFans: Bool { !(store.sensors?.fans.isEmpty ?? true) } + + func select(_ newMode: Mode) async { + guard newMode != mode || newMode == .custom else { return } + let previous = mode + mode = newMode + if let error = await apply() { + mode = previous + show(error, isError: true) + } else { + clearNotice() + } + } + + func commitCustomLevel() async { + guard mode == .custom else { return } + if let error = await apply() { show(error, isError: true) } + } + + /// 连接恢复或唤醒后重新下发 + func reapply() async { + guard mode != .automatic else { return } + if let error = await apply() { show(error, isError: true) } + } + + /// 每次收到新指标时检查温度,自定义档位过低且 CPU 过热时交还系统控制 + func evaluateSafety() { + guard mode == .custom, customLevel < 1, + let hottest = store.sensors?.temperature(.cpu)?.maximum, + hottest >= Double(settings.fanSafetyTemperature) else { return } + Task { + mode = .automatic + _ = await apply() + show("CPU 温度达到 \(Format.temperature(hottest, fahrenheit: settings.useFahrenheit)),已恢复系统自动控制", isError: false) + } + } + + func targetRPM(for fan: FanState) -> Double { + switch mode { + case .automatic: fan.target + case .cooling: fan.minimum + (fan.maximum - fan.minimum) * Mode.coolingLevel + case .maximum: fan.maximum + case .custom: fan.minimum + (fan.maximum - fan.minimum) * customLevel + } + } + + private func apply() async -> String? { + let fans = store.sensors?.fans ?? [] + guard !fans.isEmpty else { return "未检测到可调节的风扇" } + isApplying = true + defer { isApplying = false } + + if mode == .automatic { + return await helper.resetAllFans() + } + for fan in fans { + if let error = await helper.setFanTarget(fan: fan.id, rpm: targetRPM(for: fan)) { + _ = await helper.resetAllFans() + return error + } + } + return nil + } + + private func show(_ message: String, isError: Bool) { + notice = message + noticeIsError = isError + } + + private func clearNotice() { + notice = nil + noticeIsError = false + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/State/HelperClient.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/HelperClient.swift new file mode 100644 index 0000000..d119baa --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/HelperClient.swift @@ -0,0 +1,173 @@ +import Foundation +import HelperShared +import Observation +import ServiceManagement + +/// 与 root 辅助工具的连接。安装通过 SMAppService.daemon,用户需在“登录项”中批准一次。 +@MainActor +@Observable +public final class HelperClient { + public enum Status: Equatable { + case notInstalled + case requiresApproval + case enabled + case unavailable(String) + + var title: String { + switch self { + case .notInstalled: "未安装" + case .requiresApproval: "等待批准" + case .enabled: "已启用" + case .unavailable: "不可用" + } + } + } + + public private(set) var status: Status = .notInstalled + public private(set) var isWorking = false + public private(set) var lastError: String? + + /// 连接中断后重新连上时回调,用于重新下发风扇 / 防休眠状态 + @ObservationIgnored var onReconnect: (() -> Void)? + + @ObservationIgnored private var connection: NSXPCConnection? + @ObservationIgnored private let service = SMAppService.daemon(plistName: HelperConstants.launchdPlistName) + + public init() {} + + public var isReady: Bool { status == .enabled } + + public func refreshStatus() { + switch service.status { + case .enabled: status = .enabled + case .requiresApproval: status = .requiresApproval + case .notRegistered: status = .notInstalled + case .notFound: + // 首次注册前系统同样返回 notFound,需结合包内文件判断 + let plist = Bundle.main.bundleURL + .appendingPathComponent("Contents/Library/LaunchDaemons/\(HelperConstants.launchdPlistName)") + status = FileManager.default.fileExists(atPath: plist.path) + ? .notInstalled + : .unavailable("应用包内未找到辅助工具,请使用完整构建的 OpenStats.app") + @unknown default: status = .unavailable("未知状态") + } + } + + public func install() { + isWorking = true + defer { isWorking = false } + lastError = nil + do { + try service.register() + } catch { + lastError = "安装失败:\(error.localizedDescription)" + } + refreshStatus() + if status == .requiresApproval { + SMAppService.openSystemSettingsLoginItems() + } + } + + public func uninstall() async { + isWorking = true + defer { isWorking = false } + lastError = nil + connection?.invalidate() + connection = nil + do { + try await service.unregister() + } catch { + lastError = "卸载失败:\(error.localizedDescription)" + } + refreshStatus() + } + + public func openLoginItemsSettings() { + SMAppService.openSystemSettingsLoginItems() + } + + // MARK: 远程调用 + + func setFanTarget(fan: Int, rpm: Double) async -> String? { + await call { proxy, reply in proxy.setFanTarget(fan: fan, rpm: rpm, reply: reply) } + } + + func setFanAutomatic(fan: Int) async -> String? { + await call { proxy, reply in proxy.setFanAutomatic(fan: fan, reply: reply) } + } + + func resetAllFans() async -> String? { + await call { proxy, reply in proxy.resetAllFans(reply: reply) } + } + + func setSleepDisabled(_ disabled: Bool) async -> String? { + await call { proxy, reply in proxy.setSleepDisabled(disabled, reply: reply) } + } + + /// 退出应用时使用:同步恢复风扇与睡眠设置,每步最多等待 1 秒 + func restoreDefaultsSynchronously() { + guard isReady else { return } + let connection = ensureConnection() + let steps: [(OpenStatsHelperProtocol, @escaping @Sendable (String?) -> Void) -> Void] = [ + { proxy, reply in proxy.resetAllFans(reply: reply) }, + { proxy, reply in proxy.setSleepDisabled(false, reply: reply) }, + ] + for step in steps { + let semaphore = DispatchSemaphore(value: 0) + guard let proxy = connection.remoteObjectProxyWithErrorHandler({ _ in semaphore.signal() }) + as? OpenStatsHelperProtocol else { return } + step(proxy) { _ in semaphore.signal() } + _ = semaphore.wait(timeout: .now() + 1) + } + } + + private func call(_ body: (OpenStatsHelperProtocol, @escaping @Sendable (String?) -> Void) -> Void) async -> String? { + refreshStatus() + guard isReady else { return "辅助工具未启用" } + let connection = ensureConnection() + return await withCheckedContinuation { (continuation: CheckedContinuation) in + let once = ResumeOnce(continuation) + let proxy = connection.remoteObjectProxyWithErrorHandler { error in + once.resume("无法连接辅助工具:\(error.localizedDescription)") + } as? OpenStatsHelperProtocol + guard let proxy else { + once.resume("无法连接辅助工具") + return + } + body(proxy) { once.resume($0) } + } + } + + private func ensureConnection() -> NSXPCConnection { + if let connection { return connection } + let connection = NSXPCConnection(machServiceName: HelperConstants.machServiceName, options: .privileged) + connection.remoteObjectInterface = NSXPCInterface(with: OpenStatsHelperProtocol.self) + connection.interruptionHandler = { [weak self] in + Task { @MainActor in self?.onReconnect?() } + } + connection.invalidationHandler = { [weak self] in + Task { @MainActor in self?.connection = nil } + } + connection.resume() + self.connection = connection + return connection + } +} + +/// XPC 的错误回调和正常回调可能都会触发,保证 continuation 只恢复一次 +private final class ResumeOnce: @unchecked Sendable { + private let lock = NSLock() + private var continuation: CheckedContinuation? + + init(_ continuation: CheckedContinuation) { + self.continuation = continuation + } + + func resume(_ value: String?) { + lock.lock() + let pending = continuation + continuation = nil + lock.unlock() + pending?.resume(returning: value) + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/State/KeepAwakeController.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/KeepAwakeController.swift new file mode 100644 index 0000000..10522d0 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/KeepAwakeController.swift @@ -0,0 +1,189 @@ +import Foundation +import IOKit.pwr_mgt +import Metrics +import Observation + +@MainActor +@Observable +public final class KeepAwakeController { + public enum Mode: String, CaseIterable, Identifiable { + case display, system + + public var id: String { rawValue } + + var title: String { + switch self { + case .display: "屏幕保持常亮" + case .system: "仅系统不休眠" + } + } + + var subtitle: String { + switch self { + case .display: "屏幕和系统都不会因闲置而关闭或休眠" + case .system: "屏幕可按设置关闭,下载、编译等后台任务继续运行" + } + } + + /// IOPMLib 中的 CFSTR 宏无法直接导入 Swift,这里使用其字符串值 + var assertionType: String { + switch self { + case .display: "PreventUserIdleDisplaySleep" + case .system: "PreventUserIdleSystemSleep" + } + } + } + + public enum Duration: Int, CaseIterable, Identifiable { + case minutes15 = 15, hour1 = 60, hours2 = 120, hours5 = 300, unlimited = 0 + + public var id: Int { rawValue } + + var title: String { + switch self { + case .minutes15: "15 分钟" + case .hour1: "1 小时" + case .hours2: "2 小时" + case .hours5: "5 小时" + case .unlimited: "不限" + } + } + } + + public private(set) var isActive = false + public private(set) var mode: Mode = .display + public private(set) var duration: Duration = .unlimited + public private(set) var endDate: Date? + /// 用户是否希望合盖后继续运行 + public private(set) var lidClosedRequested = false + /// 辅助工具是否已实际关闭系统睡眠 + public private(set) var lidClosedActive = false + public private(set) var notice: String? + public private(set) var noticeIsError = false + + @ObservationIgnored private var assertionID: IOPMAssertionID = 0 + @ObservationIgnored private var expiryTask: Task? + @ObservationIgnored private let helper: HelperClient + @ObservationIgnored private let settings: AppSettings + + init(helper: HelperClient, settings: AppSettings) { + self.helper = helper + self.settings = settings + } + + func setActive(_ active: Bool) async { + active ? await start() : await stop(reason: nil) + } + + func setMode(_ newMode: Mode) { + mode = newMode + if isActive { takeAssertion() } + } + + func setDuration(_ newDuration: Duration) { + duration = newDuration + if isActive { scheduleExpiry() } + } + + func setLidClosed(_ requested: Bool) async { + lidClosedRequested = requested + guard isActive else { return } + await applyLidMode() + } + + func start() async { + isActive = true + notice = nil + takeAssertion() + scheduleExpiry() + if lidClosedRequested { await applyLidMode() } + } + + func stop(reason: String?) async { + isActive = false + endDate = nil + expiryTask?.cancel() + releaseAssertion() + if lidClosedActive { + if let error = await helper.setSleepDisabled(false) { + show("恢复系统睡眠失败:\(error)", isError: true) + return + } + lidClosedActive = false + } + if let reason { show(reason, isError: false) } + } + + /// 连接恢复后重新下发合盖设置 + func reapply() async { + guard isActive, lidClosedRequested else { return } + await applyLidMode() + } + + /// 电池电量保护:使用电池供电且电量低于下限时关闭合盖运行 + func evaluateBattery(_ battery: BatteryStatus?) { + guard lidClosedActive, let battery, !battery.isPluggedIn, + battery.level * 100 < Double(settings.lidModeBatteryFloor) else { return } + Task { + lidClosedRequested = false + await applyLidMode() + show("电量低于 \(settings.lidModeBatteryFloor)%,已关闭合盖运行", isError: false) + } + } + + /// 退出应用时释放电源断言(合盖设置由 HelperClient 同步恢复) + func releaseForTermination() { + releaseAssertion() + } + + private func applyLidMode() async { + let wanted = isActive && lidClosedRequested + guard wanted != lidClosedActive else { return } + if let error = await helper.setSleepDisabled(wanted) { + lidClosedRequested = lidClosedActive + show(error, isError: true) + return + } + lidClosedActive = wanted + } + + private func takeAssertion() { + releaseAssertion() + var id: IOPMAssertionID = 0 + let result = IOPMAssertionCreateWithName(mode.assertionType as CFString, + IOPMAssertionLevel(kIOPMAssertionLevelOn), + "OpenStats 防休眠" as CFString, + &id) + if result == kIOReturnSuccess { + assertionID = id + } else { + show("无法创建电源断言(\(result))", isError: true) + } + } + + private func releaseAssertion() { + guard assertionID != 0 else { return } + IOPMAssertionRelease(assertionID) + assertionID = 0 + } + + private func scheduleExpiry() { + expiryTask?.cancel() + guard duration != .unlimited else { + endDate = nil + return + } + let end = Date().addingTimeInterval(TimeInterval(duration.rawValue * 60)) + endDate = end + expiryTask = Task { [weak self] in + try? await Task.sleep(for: .seconds(end.timeIntervalSinceNow)) + guard !Task.isCancelled else { return } + await self?.stop(reason: "已到设定时间,防休眠已关闭") + } + } + + private func show(_ message: String, isError: Bool) { + notice = message + noticeIsError = isError + } +} diff --git a/Packages/OpenStatsKit/Sources/OpenStatsUI/State/MetricsStore.swift b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/MetricsStore.swift new file mode 100644 index 0000000..57f5a9e --- /dev/null +++ b/Packages/OpenStatsKit/Sources/OpenStatsUI/State/MetricsStore.swift @@ -0,0 +1,80 @@ +import Foundation +import Metrics +import Observation +import SMC + +/// 主线程上的最新指标与短历史,只保留界面需要的数据 +@MainActor +@Observable +public final class MetricsStore { + public static let historyCapacity = 60 + + public let topology = CPUSampler.topology() + public private(set) var system = SystemInfoReader.read() + + public private(set) var cpu: CPULoad? + public private(set) var cpuUser = History(capacity: historyCapacity) + public private(set) var cpuSystem = History(capacity: historyCapacity) + public private(set) var cpuTotal = History(capacity: historyCapacity) + + public private(set) var memory: MemoryUsage? + public private(set) var memoryHistory = History(capacity: historyCapacity) + public private(set) var network: NetworkRate? + public private(set) var downloadHistory = History(capacity: historyCapacity) + public private(set) var uploadHistory = History(capacity: historyCapacity) + public private(set) var networkInterface: NetworkInterfaceInfo? + + public private(set) var gpu: GPUUsage? + public private(set) var gpuHistory = History(capacity: historyCapacity) + public private(set) var disk: DiskUsage? + public private(set) var battery: BatteryStatus? + public private(set) var processes: [ProcessUsage] = [] + public private(set) var sensors: SensorReadings? + public private(set) var lastUpdate: Date? + + public init() {} + + public func apply(_ snapshot: MetricsSnapshot) { + lastUpdate = snapshot.date + if let cpu = snapshot.cpu { + self.cpu = cpu + cpuUser.append(cpu.user) + cpuSystem.append(cpu.system) + cpuTotal.append(cpu.total) + } + if let memory = snapshot.memory { + self.memory = memory + memoryHistory.append(memory.usedFraction) + } + if let network = snapshot.network { + self.network = network + downloadHistory.append(network.downloadBytesPerSecond) + uploadHistory.append(network.uploadBytesPerSecond) + } + if let interface = snapshot.networkInterface { networkInterface = interface } + if let gpu = snapshot.gpu { + self.gpu = gpu + gpuHistory.append(gpu.utilization) + } + if let disk = snapshot.disk { self.disk = disk } + if let battery = snapshot.battery { self.battery = battery } + if let processes = snapshot.processes { self.processes = processes } + if let sensors = snapshot.sensors { mergeSensors(sensors) } + } + + /// 不同页面采集的温度分组不同,按组合并,避免切页时数据闪烁 + private func mergeSensors(_ new: SensorReadings) { + guard let old = sensors else { + sensors = new + return + } + var byGroup = Dictionary(uniqueKeysWithValues: old.temperatures.map { ($0.group, $0) }) + for summary in new.temperatures { byGroup[summary.group] = summary } + let ordered = TemperatureGroup.allCases.compactMap { byGroup[$0] } + sensors = SensorReadings(temperatures: ordered, fans: new.fans.isEmpty ? old.fans : new.fans) + } + + var fastestFan: FanState? { + sensors?.fans.max { $0.current < $1.current } + } +} diff --git a/Packages/OpenStatsKit/Sources/SMC/FanControl.swift b/Packages/OpenStatsKit/Sources/SMC/FanControl.swift new file mode 100644 index 0000000..b70b391 --- /dev/null +++ b/Packages/OpenStatsKit/Sources/SMC/FanControl.swift @@ -0,0 +1,142 @@ +// +// FanControl.swift +// OpenStats +// +// 风扇读写。Apple Silicon 解锁流程参考 exelban/stats (MIT): +// Copyright © 2021 Serhiy Mytrovtsiy. All rights reserved. +// + +import Foundation + +public struct FanState: Sendable, Equatable, Identifiable { + public let id: Int + public var current: Double + public var minimum: Double + public var maximum: Double + public var target: Double + public var isManual: Bool + + public init(id: Int, current: Double, minimum: Double, maximum: Double, target: Double, isManual: Bool) { + self.id = id + self.current = current + self.minimum = minimum + self.maximum = maximum + self.target = target + self.isManual = isManual + } + + /// 当前转速在 min...max 区间的占比 + public var fraction: Double { + guard maximum > minimum else { return 0 } + return min(1, max(0, (current - minimum) / (maximum - minimum))) + } +} + +public final class FanControl { + private let smc: SMCConnection + private var lowercaseModeKey: Bool? + + public init(smc: SMCConnection) { + self.smc = smc + } + + public var fanCount: Int { + Int(smc.double(SMCKey("FNum")) ?? 0) + } + + public func read() -> [FanState] { + (0.. SMCKey { + if lowercaseModeKey == nil { + lowercaseModeKey = smc.exists(SMCKey("F0md")) + } + return SMCKey(lowercaseModeKey == true ? "F\(id)md" : "F\(id)Md") + } + + #if arch(arm64) + private func unlockManualMode(fan id: Int) throws { + // M5 及以后:直接写模式键即可 + if (try? smc.write(modeKey(id), value: 1)) != nil { return } + + // M1–M4:先写 Ftst=1,等待 thermalmonitord 让出控制权 + let ftst = SMCKey("Ftst") + guard smc.exists(ftst) else { throw SMCError.firmwareRejected(modeKey(id), 0) } + if smc.double(ftst) != 1 { + try writeWithRetry(ftst, value: 1, attempts: 100) + Thread.sleep(forTimeInterval: 3) + } + try writeWithRetry(modeKey(id), value: 1, attempts: 300, delay: 0.1) + } + + private func writeWithRetry(_ key: SMCKey, value: Double, attempts: Int = 10, delay: TimeInterval = 0.05) throws { + var lastError: Error? + for attempt in 0..> $0) } + return String(decoding: bytes, as: UTF8.self) + } +} + +public struct SMCKeyInfo: Sendable, Equatable { + public let size: UInt32 + public let type: String +} + +public enum SMCError: Error, Sendable, CustomStringConvertible { + case serviceNotFound + case openFailed(kern_return_t) + case callFailed(SMCKey, kern_return_t) + case firmwareRejected(SMCKey, UInt8) + case unsupportedType(SMCKey, String) + + public var description: String { + switch self { + case .serviceNotFound: "未找到 AppleSMC 服务" + case .openFailed(let kr): "打开 SMC 失败 (\(Self.message(kr)))" + case .callFailed(let key, let kr): "SMC [\(key)] 调用失败 (\(Self.message(kr)))" + case .firmwareRejected(let key, let code): "SMC [\(key)] 被固件拒绝 (0x\(String(code, radix: 16)))" + case .unsupportedType(let key, let type): "SMC [\(key)] 不支持的数据类型 \(type)" + } + } + + private static func message(_ kr: kern_return_t) -> String { + String(cString: mach_error_string(kr)) + } +} + +/// 与内核 `SMCParamStruct` 等长(80 字节),字段顺序不可调整。 +struct SMCParam { + typealias Bytes = (UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, + UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, + UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, + UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8, UInt8) + + struct Version { var major: UInt8 = 0, minor: UInt8 = 0, build: UInt8 = 0, reserved: UInt8 = 0, release: UInt16 = 0 } + struct PLimit { var version: UInt16 = 0, length: UInt16 = 0, cpu: UInt32 = 0, gpu: UInt32 = 0, mem: UInt32 = 0 } + struct KeyInfo { var dataSize: UInt32 = 0, dataType: UInt32 = 0, dataAttributes: UInt8 = 0 } + + var key: UInt32 = 0 + var vers = Version() + var pLimit = PLimit() + var keyInfo = KeyInfo() + var padding: UInt16 = 0 + var result: UInt8 = 0 + var status: UInt8 = 0 + var data8: UInt8 = 0 + var data32: UInt32 = 0 + var bytes: Bytes = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +} + +private enum SMCSelector: UInt8 { + case kernelIndex = 2 + case readBytes = 5 + case writeBytes = 6 + case readIndex = 8 + case readKeyInfo = 9 +} + +/// 非线程安全:请在单一 actor / 串行队列内使用。 +public final class SMCConnection { + private var connection: io_connect_t = 0 + private var infoCache: [SMCKey: SMCKeyInfo] = [:] + + public init() throws { + let service = IOServiceGetMatchingService(kIOMainPortDefault, IOServiceMatching("AppleSMC")) + guard service != 0 else { throw SMCError.serviceNotFound } + defer { IOObjectRelease(service) } + let kr = IOServiceOpen(service, mach_task_self_, 0, &connection) + guard kr == KERN_SUCCESS else { throw SMCError.openFailed(kr) } + } + + deinit { + IOServiceClose(connection) + } + + // MARK: 读取 + + public func info(_ key: SMCKey) throws -> SMCKeyInfo { + if let cached = infoCache[key] { return cached } + var input = SMCParam() + input.key = key.code + input.data8 = SMCSelector.readKeyInfo.rawValue + let output = try call(key, &input) + let info = SMCKeyInfo(size: output.keyInfo.dataSize, type: SMCKey(code: output.keyInfo.dataType).description) + infoCache[key] = info + return info + } + + public func bytes(_ key: SMCKey) throws -> (SMCKeyInfo, [UInt8]) { + let info = try info(key) + var input = SMCParam() + input.key = key.code + input.keyInfo.dataSize = info.size + input.data8 = SMCSelector.readBytes.rawValue + var output = try call(key, &input) + let count = min(Int(info.size), 32) + let bytes = withUnsafeBytes(of: &output.bytes) { Array($0.prefix(count)) } + return (info, bytes) + } + + /// 读取数值型键,失败或类型不支持时返回 nil。 + public func double(_ key: SMCKey) -> Double? { + guard let (info, bytes) = try? bytes(key) else { return nil } + return SMCDecoder.decode(type: info.type, bytes: bytes) + } + + public func keyCount() -> Int { + Int(double(SMCKey("#KEY")) ?? 0) + } + + public func key(at index: Int) -> SMCKey? { + var input = SMCParam() + input.data8 = SMCSelector.readIndex.rawValue + input.data32 = UInt32(index) + guard let output = try? call(SMCKey(code: 0), &input) else { return nil } + return SMCKey(code: output.key) + } + + public func allKeys() -> [SMCKey] { + (0.. Bool { + guard let info = try? info(key) else { return false } + return info.size > 0 + } + + private func call(_ key: SMCKey, _ input: inout SMCParam) throws -> SMCParam { + var output = SMCParam() + var outputSize = MemoryLayout.stride + let kr = IOConnectCallStructMethod(connection, UInt32(SMCSelector.kernelIndex.rawValue), + &input, MemoryLayout.stride, &output, &outputSize) + guard kr == KERN_SUCCESS else { throw SMCError.callFailed(key, kr) } + // result 0x84 表示键不存在 + if output.result == 0x84 { throw SMCError.callFailed(key, kIOReturnNotFound) } + return output + } +} + +public enum SMCDecoder { + public static func decode(type: String, bytes: [UInt8]) -> Double? { + func be16() -> Double? { bytes.count >= 2 ? Double(UInt16(bytes[0]) << 8 | UInt16(bytes[1])) : nil } + func signed16() -> Double? { bytes.count >= 2 ? Double(Int16(bitPattern: UInt16(bytes[0]) << 8 | UInt16(bytes[1]))) : nil } + + switch type { + case "flt ": + guard bytes.count >= 4 else { return nil } + return Double(bytes.withUnsafeBytes { $0.loadUnaligned(as: Float32.self) }) + case "ui8 ", "flag": + return bytes.first.map(Double.init) + case "ui16": + return be16() + case "ui32": + guard bytes.count >= 4 else { return nil } + return Double(bytes.prefix(4).reduce(UInt32(0)) { $0 << 8 | UInt32($1) }) + case "fpe2": + return be16().map { $0 / 4 } + case "sp78": + return signed16().map { $0 / 256 } + case "sp87": + return signed16().map { $0 / 128 } + case "sp96": + return signed16().map { $0 / 64 } + case "spb4": + return signed16().map { $0 / 16 } + case "spf0": + return signed16() + default: + return nil + } + } + + public static func encode(type: String, value: Double) -> [UInt8]? { + switch type { + case "flt ": + return withUnsafeBytes(of: Float32(value)) { Array($0) } + case "ui8 ", "flag": + return [UInt8(clamping: Int(value))] + case "fpe2": + let raw = UInt16(clamping: Int(value * 4)) + return [UInt8(raw >> 8), UInt8(raw & 0xff)] + default: + return nil + } + } +} diff --git a/Packages/OpenStatsKit/Sources/SMC/TemperatureCatalog.swift b/Packages/OpenStatsKit/Sources/SMC/TemperatureCatalog.swift new file mode 100644 index 0000000..5c0c1bb --- /dev/null +++ b/Packages/OpenStatsKit/Sources/SMC/TemperatureCatalog.swift @@ -0,0 +1,58 @@ +import Foundation + +public enum TemperatureGroup: String, Sendable, CaseIterable, Codable { + case cpu, gpu, memory, battery, palmRest + + public var title: String { + switch self { + case .cpu: "CPU" + case .gpu: "GPU" + case .memory: "内存" + case .battery: "电池" + case .palmRest: "掌托" + } + } +} + +/// 不按芯片型号硬编码键名:启动时枚举一次 SMC,按前缀归类温度键。 +public enum TemperatureCatalog { + public static let plausibleRange: ClosedRange = 5...130 + + public static func group(for key: String) -> TemperatureGroup? { + guard key.utf8.count == 4, key.hasPrefix("T") else { return nil } + switch key { + case "Ts0P", "Ts1P": return .palmRest + default: break + } + switch String(key.prefix(2)) { + case "Tp", "Te": return .cpu // Apple Silicon CPU 核心 + case "Tg": return .gpu // Apple Silicon GPU + case "Tm": return .memory + case "TB": return .battery + case "TC": return key.hasSuffix("P") || key.hasSuffix("D") ? .cpu : nil // Intel + case "TG": return key.hasSuffix("P") || key.hasSuffix("D") ? .gpu : nil // Intel + default: return nil + } + } + + /// 每组最多读取的传感器数量。M5 Max 仅 GPU 就有 84 个键,全部每秒读取没有必要 + public static let maxKeysPerGroup = 12 + + /// 返回每组可用的键(首次读数合理的才保留),数量过多时均匀抽样 + public static func discover(using smc: SMCConnection) -> [TemperatureGroup: [SMCKey]] { + var result: [TemperatureGroup: [SMCKey]] = [:] + for key in smc.allKeys() { + guard let group = group(for: key.description), + let value = smc.double(key), + plausibleRange.contains(value) else { continue } + result[group, default: []].append(key) + } + return result.mapValues(sample) + } + + static func sample(_ keys: [SMCKey]) -> [SMCKey] { + guard keys.count > maxKeysPerGroup else { return keys } + let step = Double(keys.count) / Double(maxKeysPerGroup) + return (0...stride == 80) + } + + @Test func temperatureGrouping() { + #expect(TemperatureCatalog.group(for: "Tp0C") == .cpu) + #expect(TemperatureCatalog.group(for: "Te05") == .cpu) + #expect(TemperatureCatalog.group(for: "Tg1U") == .gpu) + #expect(TemperatureCatalog.group(for: "TB0T") == .battery) + #expect(TemperatureCatalog.group(for: "Ts0P") == .palmRest) + #expect(TemperatureCatalog.group(for: "TC0P") == .cpu) + #expect(TemperatureCatalog.group(for: "F0Ac") == nil) + #expect(TemperatureCatalog.group(for: "TaLP") == nil) + } +} + +@Suite("格式化") +struct FormatTests { + @Test func bytes() { + #expect(Format.bytes(UInt64(512)) == "512 B") + #expect(Format.bytes(UInt64(68_719_476_736)) == "64.0 GB") + #expect(Format.bytes(UInt64(1_000_000_000_000), base: .decimal) == "1.0 TB") + #expect(Format.bytes(UInt64(412_000_000_000), base: .decimal) == "412 GB") + } + + @Test func compactRate() { + #expect(Format.compactRate(0) == "0B") + #expect(Format.compactRate(692_486) == "676K") + #expect(Format.compactRate(3.5 * 1024 * 1024) == "3.5M") + #expect(Format.compactRate(42 * 1024 * 1024) == "42M") + } + + @Test func menuBarRate() { + #expect(Format.menuBarRate(0) == "0 B/s") + #expect(Format.menuBarRate(512) == "512 B/s") + #expect(Format.menuBarRate(12 * 1024) == "12 KB/s") + #expect(Format.menuBarRate(154 * 1024) == "154 KB/s") + #expect(Format.menuBarRate(1000 * 1024) == "1.0 MB/s") + #expect(Format.menuBarRate(1.2 * 1024 * 1024) == "1.2 MB/s") + #expect(Format.menuBarRate(12 * 1024 * 1024) == "12 MB/s") + #expect(Format.menuBarRate(1.1 * 1024 * 1024 * 1024) == "1.1 GB/s") + } + + @Test func percentAndDuration() { + #expect(Format.percent(0.257) == "26%") + #expect(Format.percent(1.4) == "100%") + #expect(Format.duration(minutes: 45) == "45 分钟") + #expect(Format.duration(minutes: 120) == "2 小时") + #expect(Format.duration(minutes: 90) == "1 小时 30 分钟") + #expect(Format.temperature(68.4) == "68°C") + #expect(Format.temperature(100, fahrenheit: true) == "212°F") + } + + @Test func historyDropsOldest() { + var history = History(capacity: 3) + (1...5).forEach { history.append($0) } + #expect(history.elements == [3, 4, 5]) + } +} + +@Suite("本机采样", .serialized) +struct LiveSamplerTests { + @Test func cpuNeedsTwoSamples() async throws { + var sampler = CPUSampler() + #expect(sampler.sample() == nil) + try await Task.sleep(for: .milliseconds(200)) + let sample = sampler.sample() + let load = try #require(sample) + #expect((0...1).contains(load.total)) + #expect(load.perCore.count == CPUSampler.topology().logicalCores) + } + + @Test func topologyCoversAllCores() { + let topology = CPUSampler.topology() + let indices = topology.clusters.flatMap(\.coreIndices).sorted() + #expect(indices == Array(0..= 0) + #expect(rate.uploadBytesPerSecond >= 0) + } + + @Test func processesIncludeCurrentProcess() { + var sampler = ProcessSampler() + let processes = sampler.sample(limit: .max) + #expect(processes.contains { $0.pid == getpid() }) + } + + @Test func diskHasCapacity() throws { + let disk = try #require(DiskSampler.sample()) + #expect(disk.total > 0) + #expect(disk.available <= disk.total) + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..981dd54 --- /dev/null +++ b/README.md @@ -0,0 +1,156 @@ +

+ OpenStats 图标 +

+ +

OpenStats

+ +

+ 轻量、原生的 macOS 菜单栏系统监控
+ CPU · GPU · 内存 · 网络 · 磁盘 · 电池 · 温度 · 风扇调速 · 防休眠
+
getopenstats.com +

+ +

+ macOS 14+ + Swift 6 + Apple Silicon + 开发中 +

+ +

+ 概览(深色) + 概览(浅色) +

+ +--- + +## 为什么做 OpenStats + +市面上的菜单栏监控要么功能单一,要么常驻耗电。OpenStats 的目标很简单: + +- **一眼看全**:点开菜单栏就是一整屏仪表盘,不用翻页、不用下拉。 +- **足够省电**:面板收起时只采集菜单栏用到的指标,M5 Max 实测 **约 0.3% CPU、16 MB 内存**。 +- **原生体验**:Swift 6 + AppKit + SwiftUI,macOS 26 起使用系统液态玻璃,跟随浅色 / 深色外观。 + +## 功能 + +### 菜单栏 + +

菜单栏

+ +| 指标 | 显示方式 | +|---|---| +| CPU / GPU / 内存 | 数字、柱状图、圆环、饼图、柱状图 + 数字,逐项可选 | +| 网速 | 两行显示:绿点上传、蓝点下载,完整单位(KB/s、MB/s、GB/s) | +| CPU 温度 / 风扇转速 | 迷你数值 | +| 防休眠 | 开启时显示咖啡杯图标 | + +高负载时可选数值变红提醒;数值等宽右对齐,刷新时菜单栏不抖动。 + +### 面板 + +- **概览仪表盘**:健康评分、芯片 / 内存 / 系统 / 运行时长徽章,CPU 柱状历史、GPU 折线、内存面积图、磁盘、网络双线、风扇、各核心负载(超级核 / 性能核 / 能效核分组)、电池环形图、高占用进程、快捷开关。 +- **进程**:按 CPU 或内存排序,辅助进程归并显示为所属应用。 +- **散热**:CPU / GPU / 内存 / 电池 / 掌托温度;风扇实时转速与调速。 +- **防休眠**:屏幕常亮、仅系统不休眠、**合盖后继续运行**,支持定时与低电量自动关闭。 + +

+ 散热 + 防休眠 +

+ +### 风扇调速 + +| 模式 | 行为 | +|---|---| +| 自动 | 交还 macOS 温控 | +| 降温 | 固定在最低到最高转速的 60% | +| 强冷 | 最高转速 | +| 自定义 | 滑块自由设定 | + +安全机制:自定义模式下 CPU 达到设定温度(默认 95°C)自动交还系统控制;应用退出、崩溃或断开连接时风扇自动恢复。 + +### 设置 + +

设置

+ +外观(跟随系统 / 浅色 / 深色)、登录时启动、刷新频率、温度单位、菜单栏显示项与样式、风扇安全温度、合盖模式电量下限。 + +## 技术实现 + +| 数据 | 来源 | +|---|---| +| CPU | `host_processor_info`,按 `hw.perflevelN` 区分核心类型 | +| 内存 | `host_statistics64`,口径与活动监视器一致;`kern.memorystatus_vm_pressure_level` | +| 网络 | `sysctl(NET_RT_IFLIST2)` 读取 64 位计数器(避免 `getifaddrs` 32 位回绕) | +| GPU | `IOAccelerator` 的 `PerformanceStatistics` | +| 温度 / 风扇 | AppleSMC;启动时枚举全部 SMC 键按前缀归类,**不硬编码芯片型号** | +| 进程 | `proc_pid_rusage`,CPU 时间与墙钟时间同用 mach 时间单位 | +| 电池 | `IOPowerSources` + `AppleSmartBattery` | + +采集按界面需要分级:面板收起时只采菜单栏用到的指标;锁屏、屏幕休眠、系统睡眠时暂停。图表全部用 Canvas 自绘,面板关闭后立即销毁视图。 + +## 辅助工具与安全 + +风扇调速和“合盖后继续运行”需要系统权限,由 `SMAppService.daemon` 注册的辅助工具完成,首次使用时在“系统设置 › 通用 › 登录项”中批准一次。 + +- 只暴露固定的几个操作:设置风扇目标转速、恢复自动、切换 `pmset disablesleep`,**不提供任意命令执行**。 +- 通过 XPC 通信,并校验调用方代码签名。 +- 客户端断开时自动恢复风扇与睡眠设置;异常退出后下次开机也会恢复。 + +## 安装 + +尚未发布正式版本。发布后将提供经过 Developer ID 签名与 Apple 公证的 DMG。 + +## 从源码构建 + +需要 Xcode 16 及以上,以及 [XcodeGen](https://github.com/yonaskolb/XcodeGen): + +```bash +brew install xcodegen +make run # 生成工程、编译并启动(Debug) +make run CONFIG=Release # Release 构建 +make test # 单元测试 +make snapshot # 用本机实时数据渲染各页面截图到 build/snapshots +make open # 生成并用 Xcode 打开工程 +``` + +开发调试参数: + +- `--snapshot <目录>`:输出面板、设置页、菜单栏的浅色 / 深色截图 +- `--show-panel`:启动后展开并固定面板,用于测量面板打开时的资源占用 + +## 项目结构 + +``` +App/ 应用入口与图标 +Helper/ root 辅助工具及其 launchd 配置 +Packages/OpenStatsKit/ + Sources/SMC SMC 读写、风扇控制、温度传感器归类 + Sources/Metrics 指标采集与分级调度(MetricsHub) + Sources/HelperShared XPC 协议 + Sources/OpenStatsUI 设计 token、面板、设置窗口、菜单栏绘制 + Tests/MetricsTests 单元测试 +project.yml XcodeGen 工程描述 +scripts/make-icon.swift 生成应用图标 +docs/PLAN.md 技术方案与调研记录 +``` + +## 路线图 + +- [x] 菜单栏多指标与多种显示样式 +- [x] 概览仪表盘、进程、散热、防休眠 +- [x] 液态玻璃面板与浅色 / 深色主题 +- [x] 风扇调速与合盖运行(辅助工具) +- [ ] Developer ID 签名、公证与 DMG 发布 +- [ ] Sparkle 自动更新 +- [ ] 功耗、磁盘读写等更多指标 +- [ ] 桌面小组件 + +## 致谢 + +SMC 通信与 Apple Silicon 风扇控制流程移植自 [exelban/stats](https://github.com/exelban/stats)(MIT License),详见 [ThirdPartyNotices.md](ThirdPartyNotices.md)。 + +## 许可证 + +待定。 diff --git a/ThirdPartyNotices.md b/ThirdPartyNotices.md new file mode 100644 index 0000000..8a92838 --- /dev/null +++ b/ThirdPartyNotices.md @@ -0,0 +1,31 @@ +# 第三方声明 + +OpenStats 的以下部分移植自 [exelban/stats](https://github.com/exelban/stats): + +- `Packages/OpenStatsKit/Sources/SMC/SMCConnection.swift`:SMC 参数结构体布局与读写流程 +- `Packages/OpenStatsKit/Sources/SMC/FanControl.swift`:Apple Silicon 风扇手动模式解锁流程 +- 菜单栏迷你样式的字号与基线参数 + +``` +MIT License + +Copyright (c) 2019 Serhiy Mytrovtsiy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` diff --git a/docs/PLAN.md b/docs/PLAN.md new file mode 100644 index 0000000..5132912 --- /dev/null +++ b/docs/PLAN.md @@ -0,0 +1,404 @@ +# OpenStats 方案:macOS 菜单栏监控 + 系统清理 + +> 调研日期:2026-09-13 | 开发机:macOS 27.0 / Xcode 27 / Swift 6.4 / Apple Silicon + +## ⚠️ 范围调整(2026-09-13,已实现) + +以下原始方案中的**清理功能已取消**,第 5 节及相关里程碑仅作存档。当前实现的范围: + +| 模块 | 状态 | +|---|---| +| 菜单栏:CPU / GPU / 内存(数字、柱状图、圆环、饼图、柱状+数字五种样式)、网速两行、温度、风扇 | ✅ | +| 面板:概览仪表盘(健康评分、三列指标卡、核心负载、电池、高占用进程、快捷开关)、进程、散热、防休眠 | ✅ | +| 液态玻璃面板(macOS 26+),浅色 / 深色 / 跟随系统 | ✅ | +| 风扇调速(自动 / 降温 / 强冷 / 自定义),CPU 过热自动交还系统 | ✅ 需安装辅助工具 | +| 防休眠:屏幕常亮、仅系统不休眠、合盖后继续运行(电量保护、定时) | ✅ 合盖模式需辅助工具 | +| 温度传感器:启动时枚举 SMC 键按前缀归类,不硬编码芯片型号 | ✅ | +| Developer ID 签名、公证、Sparkle 自动更新 | ⏳ 下一阶段 | + +工程结构与运行方式见根目录 [README.md](../README.md)。 + +--- + +## 0. 结论 + +| 决策 | 选择 | 理由 | +|---|---|---| +| 语言 / UI | Swift 6 + AppKit(`NSStatusItem`)+ SwiftUI(面板、设置页) | 菜单栏图标自绘需要 AppKit,面板用 SwiftUI 开发效率高 | +| 最低系统 | macOS 14 Sonoma | 可用 `@Observable`、`SMAppService`、`Task.sleep(for:tolerance:)` | +| 监控层 | 参考并部分移植 **exelban/stats**(MIT) | 许可证允许,保留版权声明即可 | +| 清理层 | 参考 **tw93/Mole** 的**规则与安全模型**,用 Swift **自己重写** | Mole 是 **GPL-3.0**,不能直接复制代码进非 GPL 项目(详见 §1) | +| 沙盒 | **不沙盒**,不上 Mac App Store | 清理要访问 `~/Library` 各处,温度传感器要走 IOKit/SMC,沙盒内做不到 | +| 分发 | Developer ID 签名 + 公证(notarize)+ Sparkle 2 自动更新 + Homebrew Cask | Stats 与 Mole 都是这条路 | +| 工程组织 | Xcode App 工程 + 本地 Swift Package(多 target) | 采集、清理、UI 分离,便于单测 | + +--- + +## 1. 参考项目核查(有几处需要纠正) + +| 项目 | 核查结果 | 能怎么用 | +|---|---|---| +| [exelban/stats](https://github.com/exelban/stats) | MIT,Swift,约 4.2 万 Star,2026-09 仍在更新 | ✅ 可移植代码,需在 `LICENSE`/致谢页保留 `Copyright © Serhiy Mytrovtsiy`。注意作者声明“开源但不接受贡献” | +| [tw93/Mole](https://github.com/tw93/Mole) | **GPL-3.0**(不是 MIT),Shell + Go,约 6.7 万 Star;另有 `TRADEMARK.md` 商标声明;它的 GUI 版“Mole for Mac”是闭源商业产品 | ⚠️ 不能把它的脚本/Go 代码搬进 MIT 或闭源项目;可以参考思路、清理目录清单、安全设计(这些是事实和设计,不是代码表达)。不能用 “Mole” 名称 | +| mhaeuser/Battery-Toolkit | BSD-3-Clause,Swift | ✅ 参考特权辅助进程(Privileged Helper)+ XPC 的规范写法 | +| Sam-Spencer/bar-charts | **GitHub 上不存在**(API 返回 404) | ❌ 忽略。图表直接用系统自带 Swift Charts 即可 | +| 补充:vladkens/macmon | MIT,Rust | ✅ Apple Silicon 下无需 sudo 读功耗 / GPU 的 `IOReport` 用法参考 | + +**关于 Mole 的两条路** + +- **A(推荐):项目用 MIT,清理模块自己用 Swift 实现。** 只把 Mole 当“需求说明书”:看它清哪些目录、有哪些保护规则、踩过哪些坑(`SECURITY_AUDIT.md` 很有价值),然后自己写。 +- B:项目整体采用 GPL-3.0,就可以直接移植 Mole 的逻辑,甚至打包调用 `mo` CLI。代价是整个 App 必须开源为 GPL,以后无法闭源或商业授权;而且调用 Shell 脚本在 GUI 里做进度、取消、错误处理都很别扭。 + +--- + +## 2. 功能范围 + +### MVP(第 1 阶段) +- 菜单栏:CPU 百分比 + 迷你折线(可选显示内存、网速) +- 弹出面板:CPU 总量 / 用户态 / 内核态、每核心(区分 P 核 / E 核)、Top 5 进程;内存(App / 联动 / 压缩 / 内存压力);实时网速 +- 清理(仅用户态,无需管理员密码):扫描 → 分类预览 → 勾选 → **移到废纸篓** → 记录日志 +- 设置:刷新频率、菜单栏显示项、开机自启(`SMAppService.mainApp`) + +### V1(第 2 阶段) +- GPU 使用率、温度、功耗、风扇转速、电池健康度、磁盘读写与剩余空间 +- 清理扩展:开发者缓存(Xcode / npm / pnpm / Homebrew…)、项目构建产物(`node_modules`、`target`)、安装包(`.dmg/.pkg`)、大文件查找 +- 应用卸载(连带清理偏好设置、缓存、LaunchAgent) +- 白名单、历史记录、通知(CPU 持续过高、磁盘将满) + +### V2(第 3 阶段) +- 需要 root 的操作:刷新 DNS、系统日志清理、Time Machine 本地快照 → 通过 `SMAppService.daemon` 安装特权辅助进程 + XPC +- 磁盘占用可视化(类似 `mo analyze`,树图) +- 桌面小组件(WidgetKit) + +--- + +## 3. 总体架构 + +``` +┌──────────────────────────── OpenStats.app(主进程,非沙盒)────────────────────────────┐ +│ │ +│ UI 层(@MainActor) │ +│ ├─ StatusItemController NSStatusItem,自绘 NSImage(数字 + 迷你图),不用 SwiftUI 重建 │ +│ ├─ PopoverPanel NSPanel/NSPopover 承载 SwiftUI:监控页 / 清理页 / 设置入口 │ +│ └─ SettingsWindow SwiftUI Settings │ +│ ▲ @Observable 状态(只存“最新值 + 环形缓冲历史”) │ +│ │ │ +│ 调度层(actor MetricsHub) │ +│ ├─ 分级:menuBar 档(2s,只跑 CPU 总量/网速) popover 档(1s,全量 + 进程列表) │ +│ ├─ 暂停:锁屏 / 屏幕休眠 / 系统睡眠时停止;低电量模式下降频 │ +│ └─ Samplers:CPU / Memory / Network / GPU / Sensors / Battery / Disk / Process │ +│ │ +│ 清理层(actor CleanEngine) │ +│ ├─ RuleCatalog 清理规则(数据化,Swift 静态表或 JSON) │ +│ ├─ Scanner 并发扫描计算大小(只读,可取消) │ +│ ├─ SafetyGuard 路径校验 / 保护名单 / 符号链接 / 运行中应用检测 / 白名单 │ +│ ├─ Executor trashItem(默认)或 removeItem(用户显式选择) │ +│ └─ OperationLog ~/Library/Logs/OpenStats/operations.jsonl │ +│ │ +└──────────────────────────────────────┬────────────────────────────────────────────────┘ + │ XPC(NSXPCConnection,V2 才需要) + ┌────────────▼─────────────┐ + │ PrivilegedHelper(root) │ SMAppService.daemon 注册 + │ 只接受白名单内的固定操作 │ 校验调用方签名(Team ID) + └──────────────────────────┘ +``` + +### 工程目录 + +``` +openstats/ +├─ OpenStats.xcodeproj +├─ App/ # App target:AppDelegate、StatusItem、窗口管理 +├─ Packages/OpenStatsKit/ # 本地 Swift Package +│ ├─ Sources/ +│ │ ├─ Metrics/ # 各 Sampler + MetricsHub(纯逻辑,可单测) +│ │ ├─ SMCBridge/ # C/ObjC 桥接:SMC、IOHIDEventSystemClient、IOReport +│ │ ├─ Cleaner/ # RuleCatalog、Scanner、SafetyGuard、Executor +│ │ ├─ DesignSystem/ # 颜色 / 字号 / 间距 token +│ │ └─ Features/ # SwiftUI 页面:MonitorView、CleanView、SettingsView +│ └─ Tests/ +├─ Helper/ # V2:特权辅助进程 +├─ ThirdPartyNotices.md # Stats 的 MIT 版权声明 +└─ docs/ +``` + +--- + +## 4. 监控层:每个指标从哪里读 + +| 指标 | API | 要点 / 坑 | +|---|---|---| +| CPU 总量 & 每核 | `host_processor_info(PROCESSOR_CPU_LOAD_INFO)`,两次采样取差值 | 返回的数组是内核分配的,**每次必须 `vm_deallocate`**,否则持续泄漏;计数器用 `&-` 防回绕 | +| P 核 / E 核划分 | `sysctl hw.perflevel0.logicalcpu`(P)/ `hw.perflevel1.logicalcpu`(E) | 核心编号顺序:Apple Silicon 上 E 核通常在前,按 perflevel 数量切分 | +| 内存 | `host_statistics64(HOST_VM_INFO64)` | 与活动监视器同口径:App = `internal - purgeable`,已用 = App + wired + compressed;页大小用 `host_page_size()`(Apple Silicon 为 16K) | +| 内存压力 | `sysctl kern.memorystatus_vm_pressure_level`(1/2/4) | 需要事件时可叠加 `DispatchSource.makeMemoryPressureSource` | +| 网速 | `sysctl(NET_RT_IFLIST2)` → `if_msghdr2.ifm_data`(`if_data64`) | ⚠️ 纠正原文:`getifaddrs` 里的 `if_data.ifi_ibytes` 是 **32 位**,流量超过 4 GiB 会回绕,应改用 64 位计数器 | +| 进程列表 | `proc_listallpids` + `proc_pid_rusage(RUSAGE_INFO_V4)` / `proc_pidinfo(PROC_PIDTASKINFO)` | 只在面板展开时跑;CPU% 同样靠两次 `ri_user_time + ri_system_time` 差值 | +| GPU 使用率 | `IOServiceMatching("IOAccelerator")` → `PerformanceStatistics["Device Utilization %"]` | Stats 的 `Modules/GPU/reader.swift` 可直接参考 | +| 温度(Apple Silicon) | `IOHIDEventSystemClient` 私有 API(`kIOHIDEventTypeTemperature`)+ SMC 键 | 私有 API,需 ObjC/C 桥接头;参考 Stats `Modules/Sensors/reader.m` | +| 功耗 / GPU 频率 | `IOReport`(`libIOReport.dylib`,“Energy Model”、“GPU Stats” 通道) | 无需 sudo;参考 macmon | +| 风扇 | SMC 键 `FNum`、`F0Ac` | 读取无需 root;**写入(调速)需要 root helper**,建议不做或放到最后 | +| 电池 | `IOPSCopyPowerSourcesInfo` + `IOServiceMatching("AppleSmartBattery")` | 循环次数、设计容量、当前最大容量 | +| 磁盘空间 | `URLResourceValues.volumeAvailableCapacityForImportantUsage` | 比 `statfs` 更接近 Finder 显示(含可清除空间) | +| 磁盘读写 | `IOBlockStorageDriver` 的 `Statistics` 字典 | 两次采样取差值 | + +### 功耗预算(硬指标) + +| 场景 | 目标 | +|---|---| +| 面板关闭,只显示 CPU | 平均 CPU < 0.3%,常驻内存 < 40 MB | +| 面板展开,全量 | 平均 CPU < 2% | +| 锁屏 / 屏幕休眠 | 采样完全停止 | + +实现手段: +1. **分级采样**:面板关闭时只跑 CPU 总量和网速;进程列表、温度、GPU 仅面板展开时启用(温度传感器是 Stats 里最耗电的模块)。 +2. **定时器合并**:`Task.sleep(for:tolerance:)` 给 0.5s 容差,让系统合并唤醒。 +3. **菜单栏自绘**:每次刷新只重画一张小 `NSImage` 赋给 `statusItem.button.image`,不在菜单栏里挂 SwiftUI 视图(后者每秒重建开销大)。 +4. **历史数据用固定大小环形缓冲**(例如 60 个点),不做持久化数据库。 +5. 监听 `NSWorkspace.screensDidSleepNotification` / `willSleepNotification` / `com.apple.screenIsLocked` 暂停;`ProcessInfo.isLowPowerModeEnabled` 时降到 5s。 +6. 用 Instruments 的 **Energy Log / Time Profiler** 与活动监视器“能耗影响”列做回归测试。 + +--- + +## 5. 清理层设计(参考 Mole,Swift 重写) + +### 5.1 流程 + +``` +扫描(只读、并发、可取消)→ 分类展示大小 → 用户勾选 → 二次确认 → SafetyGuard 逐项再校验 + → 移到废纸篓(默认)/ 永久删除(需用户显式开启)→ 写操作日志 → 显示释放空间 +``` + +所有删除只走 **一个出口函数**(对应 Mole 的 `safe_remove`),便于审计和测试。 + +### 5.2 规则数据化 + +```swift +struct CleanRule: Identifiable, Sendable { + enum Risk: Sendable { case safe, review } // safe 默认勾选,review 默认不勾选 + enum Requirement: Sendable { case none, fullDiskAccess, admin } + + let id: String // "user.caches" + let category: Category // .system / .browser / .developer / .apps / .downloads + let title: LocalizedStringResource + let paths: [PathPattern] // ~/Library/Caches/*、~/Downloads/*.crdownload + let minAge: Duration? // 如 7 天内修改过的跳过 + let skipIfAppRunning: [String] // bundle id,运行中则跳过 + let risk: Risk + let requirement: Requirement + let postAction: PostAction? // 例如调用 `xcrun simctl delete unavailable` +} +``` + +### 5.3 首批规则(参考 Mole 实际清理的目录整理) + +| 分类 | 目录 / 操作 | 风险 | 备注 | +|---|---|---|---| +| 系统 | `~/Library/Caches/*` | safe | **所属应用正在运行则跳过**(Mole 踩过坑:删除正在使用的 SQLite 缓存会让进程写满磁盘) | +| 系统 | `~/Library/Logs/*`、`~/Library/Application Support/CrashReporter` | safe | | +| 系统 | `~/.Trash` | review | 调用 Finder 清空更稳妥 | +| 浏览器 | Chrome / Edge / Brave / Arc / Firefox 的 **Cache、Code Cache、GPUCache** 子目录 | safe | ❌ 绝不碰 Cookies、History、Login Data;浏览器运行中跳过 | +| 浏览器 | Chromium 系旧版本目录(`…/Versions/<旧版本>`) | safe | | +| 下载 | `~/Downloads/*.crdownload`、`*.part`、`*.download` | safe | 用 `lsof` 或文件修改时间确认未在下载 | +| 下载 | `~/Downloads/*.dmg / *.pkg / *.xip` | review | 列出让用户选 | +| 邮件 | `~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads` | safe | 需要完全磁盘访问权限 | +| 开发 | `~/Library/Developer/Xcode/DerivedData` | safe | | +| 开发 | `~/Library/Developer/Xcode/Archives`、iOS DeviceSupport | review | | +| 开发 | 模拟器:`xcrun simctl delete unavailable` | safe | 调用命令而不是直接删目录 | +| 开发 | npm `~/.npm/_cacache`、pnpm `~/Library/pnpm/store`、yarn、pip `~/Library/Caches/pip`、Go `go clean -modcache`、Homebrew `brew cleanup` | safe | 优先调用各工具自带清理命令 | +| 开发 | Maven `~/.m2/repository`、Gradle `~/.gradle/caches`、NuGet、conda pkgs | review | 删除后需重新下载 | +| 项目产物 | 用户指定目录下的 `node_modules`、`target`、`build`、`dist`、`.next` | review | 7 天内修改过的标记为“最近使用”;避免父子目录重复删除 | +| 云盘 | Dropbox / Google Drive / OneDrive 缓存 | review | 客户端运行中跳过 | +| 备份 | `~/Library/Application Support/MobileSync/Backup` | review | **只提示,不默认勾选** | + +### 5.4 SafetyGuard 规则(照搬 Mole 的安全边界思路) + +1. 拒绝:空路径、相对路径、含 `..` 路径段、含控制字符的路径。 +2. 保护前缀永不删除:`/`、`/System`、`/bin`、`/sbin`、`/usr`、`/etc`、`/var`、`/private`、`/Library/Extensions`;仅放行 `/private/tmp`、`/private/var/folders` 等少数子路径。 +3. **符号链接**:解析后的真实路径也要过一遍拒绝规则,而且解析结果只能“更严格”不能“放行”;父目录是符号链接也要检查。 +4. 保护类别:钥匙串、密码管理器、VPN/代理工具(Clash、Tailscale、WireGuard…)、AI 工具数据(Claude、ChatGPT、Cursor、Ollama)、浏览器 Cookie/历史、iCloud `Mobile Documents`、`~/Library/Messages`、Apple 自带 Group Containers、用户自己的 `~/Library/LaunchAgents/*.plist`。 +5. 执行前再次校验(扫描和删除之间可能过了几分钟,应用可能已启动)。 +6. 判断不了就**跳过**,不扩大删除范围。 + +### 5.5 权限 + +- **完全磁盘访问(FDA)**:尝试读取受 TCC 保护的文件(如 `~/Library/Safari/Bookmarks.plist`)判断是否已授权;未授权时引导打开 `x-apple.systempreferences:com.apple.preference.security?Privacy_AllFiles`。没有 FDA 时对应规则显示为“需要授权”,不报错。 +- **管理员权限**(V2):`SMAppService.daemon(plistName:)` 注册 helper,XPC 协议只暴露固定的枚举操作(如 `.flushDNS`、`.cleanSystemLogs`),**绝不暴露“删除任意路径”接口**;helper 端校验调用方代码签名。 + +--- + +## 6. 技术选型清单 + +| 用途 | 选择 | 备注 | +|---|---|---| +| 菜单栏 | `NSStatusItem` + 自绘 `NSImage` | 不用 `MenuBarExtra`:label 不能自由绘图、点击行为难控制 | +| 弹出面板 | `NSPanel`(非激活、点击外部关闭)+ `NSHostingView` | 比 `NSPopover` 动画和定位更可控;想省事可先用 `NSPopover` | +| 状态管理 | Observation(`@Observable`) | | +| 并发 | Swift 6 严格并发,采样和清理放 `actor` | UI 更新 `@MainActor` | +| 图表 | Swift Charts | 面板内的历史曲线;菜单栏迷你图用 Core Graphics 自绘 | +| 设置存储 | `UserDefaults` + `@AppStorage` | | +| 开机自启 | `SMAppService.mainApp.register()` | 不需要单独的 LaunchAtLogin helper | +| 自动更新 | Sparkle 2 | 通过 SPM 引入 | +| 快捷键 | sindresorhus/KeyboardShortcuts(MIT) | 可选 | +| 图标 | SF Symbols(唯一图标集) | 16pt 行内 / 20pt 独立 | +| 日志 | `os.Logger` + 清理操作 JSONL 文件 | | +| 测试 | Swift Testing;清理用临时目录做沙箱测试 | SafetyGuard 必须覆盖符号链接、`..`、保护路径等用例 | +| CI | GitHub Actions `macos-latest`:构建、测试、签名、公证、生成 DMG | 用 `xcrun notarytool` | + +### 界面设计 token(与你的全局设计规范一致) + +- 颜色:`primary` / `secondary` / `neutral` 灰阶 / `success` / `warning` / `error`,定义在 Asset Catalog 并提供深色变体;CPU 负载颜色:< 60% 中性色,60–85% `warning`,> 85% `error` +- 字号:12 / 14 / 16 / 20 / 24 / 32;间距:4 / 8 / 12 / 16 / 24 / 32 +- 圆角:统一 token(如 `radius.sm = 6`、`radius.md = 10`、`radius.lg = 14`)区分卡片 / 面板 +- 卡片只用边框或阴影之一;不用渐变、不用毛玻璃(系统面板自带材质除外) + +--- + +## 7. 关键代码骨架 + +完整可运行版本见 [prototype/Samplers.swift](prototype/Samplers.swift)(本机实测输出:`CPU total 25.7% … cores=18`、`MEM used 43775MB / 65536MB … pressure=1`、`NET rx 692486 B/s`,进程常驻内存约 6.6 MB)。 + +### 7.1 应用入口与菜单栏 + +```swift +import AppKit +import SwiftUI + +@main +struct OpenStatsApp: App { + @NSApplicationDelegateAdaptor(AppDelegate.self) var delegate + var body: some Scene { Settings { SettingsView() } } +} + +@MainActor +final class AppDelegate: NSObject, NSApplicationDelegate { + private let store = MetricsStore() // @Observable,UI 读取 + private let hub = MetricsHub() + private var statusItem: NSStatusItem! + private var panel: StatusPanel! + + func applicationDidFinishLaunching(_ note: Notification) { + NSApp.setActivationPolicy(.accessory) // 不显示 Dock 图标(也可在 Info.plist 设 LSUIElement) + statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) + statusItem.button?.target = self + statusItem.button?.action = #selector(togglePanel) + + panel = StatusPanel(rootView: MonitorView().environment(store)) + panel.onVisibilityChange = { [hub] visible in + Task { await hub.setTier(visible ? .popover : .menuBar) } + } + + Task { + await hub.start { [weak self] cpu, mem, net in + guard let self else { return } + store.apply(cpu: cpu, memory: mem, network: net) + statusItem.button?.image = MenuBarRenderer.image(cpu: store.cpuHistory, network: net) + } + } + } + + @objc private func togglePanel() { + guard let button = statusItem.button else { return } + panel.toggle(relativeTo: button) + } +} +``` + +### 7.2 CPU 采样(节选) + +```swift +struct CPUSampler: Sampler { + private var prevTicks: [[UInt32]] = [] + + mutating func sample() -> CPULoad? { + var cpuCount: natural_t = 0 + var info: processor_info_array_t? + var infoCount: mach_msg_type_number_t = 0 + guard host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, + &cpuCount, &info, &infoCount) == KERN_SUCCESS, + let info else { return nil } + defer { // 内核分配的内存必须归还 + vm_deallocate(mach_task_self_, vm_address_t(bitPattern: info), + vm_size_t(Int(infoCount) * MemoryLayout.stride)) + } + // …读取每核 user/system/nice/idle,与上一次做差值… + } +} +``` + +### 7.3 调度器(分级采样) + +```swift +actor MetricsHub { + private var cpu = CPUSampler() + private var mem = MemorySampler() + private var net = NetworkSampler() + private var tier: SampleTier = .menuBar + private var loop: Task? + + func setTier(_ t: SampleTier) { tier = t } + + func start(onUpdate: @escaping @MainActor @Sendable (CPULoad?, MemoryUsage?, NetRate?) -> Void) { + loop?.cancel() + loop = Task { + while !Task.isCancelled { + let c = cpu.sample(), n = net.sample() + let m = tier == .popover ? mem.sample() : nil // 面板关闭时不读细节 + await onUpdate(c, m, n) + try? await Task.sleep(for: tier == .popover ? .seconds(1) : .seconds(2), + tolerance: .milliseconds(500)) + } + } + } +} +``` + +### 7.4 清理执行出口 + +```swift +actor CleanEngine { + func execute(_ items: [CleanItem], mode: DeleteMode) async -> CleanReport { + var report = CleanReport() + for item in items { + do { + try SafetyGuard.validate(item.url) // 执行前再校验一次 + if try await RunningAppProbe.isInUse(item) { report.skipped(item, .inUse); continue } + switch mode { + case .trash: try FileManager.default.trashItem(at: item.url, resultingItemURL: nil) + case .delete: try FileManager.default.removeItem(at: item.url) + } + report.cleaned(item) + } catch { + report.failed(item, error) + } + OperationLog.append(item, result: report.last) + } + return report + } +} +``` + +--- + +## 8. 里程碑 + +| 周 | 交付 | +|---|---| +| 第 1 周 | 工程搭建(App + 本地 Package)、`NSStatusItem` 自绘 CPU、`MetricsHub` 分级调度、锁屏暂停 | +| 第 2 周 | 弹出面板:CPU 每核(P/E)、内存、网速、Top 进程;Swift Charts 历史曲线;设置页、开机自启 | +| 第 3 周 | 清理引擎:`SafetyGuard` + 单测、规则表(系统 / 浏览器 / 下载 / Xcode)、扫描与预览 UI、废纸篓执行、操作日志 | +| 第 4 周 | FDA 权限引导、白名单、Energy Log 功耗回归、签名 + 公证 + Sparkle + DMG 打包,发布 0.1 | +| 第 5–6 周 | V1:GPU / 温度 / 功耗(IOHID + IOReport 桥接)、电池、磁盘、开发者缓存与项目产物清理、应用卸载 | +| 之后 | V2:特权 helper(DNS、系统日志)、磁盘占用可视化、小组件 | + +--- + +## 9. 风险 + +| 风险 | 应对 | +|---|---| +| 误删用户数据 | 默认只移到废纸篓;review 类默认不勾选;单一删除出口 + 单测;操作日志可追溯 | +| 私有 API(IOHID 温度、IOReport)随系统更新失效 | 封装在 `SMCBridge` 内,读取失败时隐藏对应模块而不是崩溃;每个 macOS beta 回归 | +| 自身耗电过高 | §4 功耗预算作为发布门槛,CI 外手动跑 Energy Log | +| 许可证 | Stats 代码保留 MIT 声明并写入 `ThirdPartyNotices.md`;Mole 只参考不复制 | +| 公证被拒 | 开启 Hardened Runtime;私有框架用 `dlopen` 动态加载;不申请不必要的 entitlement | diff --git a/docs/images/keepawake-light.png b/docs/images/keepawake-light.png new file mode 100644 index 0000000000000000000000000000000000000000..82d24742c0376c0b6c9115448e00d09755d658b1 GIT binary patch literal 229641 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 F{K3Q=paI+1 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
ow@3j-Iwk@5Yzo-ODol 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≶ji=ng*~3oxqcJ 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 PFh6MtdGR7qJ>UNWo;Q)i literal 0 HcmV?d00001 diff --git a/docs/images/menubar-dark.png b/docs/images/menubar-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..180f27af50e59210e6c44e9ff25e1330daadee2f GIT binary patch literal 11431 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%0DGn+W|V};HW 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

;hI<`_14QNLW2%Kl;eVX9Rg^ENPb*#l~IEWy+p& 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 z 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 z z{ze|}!3N%_pgCOxSm#Wt+J zu%Hd9R428SV;;F%05il+t)dOVFI@}}0ybehq0X7G&SdQht-Ftg4PeoLua4m=%AB*+ z<=sUX?{L+lliQ`@rc^0SQ@Ckz3dn@{L>m^-|c=#eHYR13qCE$ z&s?9tI-k#aO#ZGQS%||Rr(BK;2lmCn_HP0e1BrhA!%%3Yrx;-OFbY()6yE_s~ zRqId-dc*=Ucz8)x*@ZdWtKvRz*F>1Xm}_2>ZFebPr%J=9QOMSU6Z~TAkfTnMMVo}k z)?-)*>%^)P-V*NI#K0Z*b7WU9Y|mXPAoccw5U1{aus03*S~w5CCYng8!$b14+- zJ%?-Dy^%0^T#4zAx0w3zb0?Anw?o7(Eb~XTR+|lh?yBYrS&WPv1TuXNANJqL?T!Z$ z^PgQV=UIR6x4g8_xuJU~AjwR3&NrdbKr}Uq=B@JdliS0}unUkDk@MoU^JH~p2 zv%Uh8hnH1JKN{?8|7>Udo7r7a4BHFVlf(l7#O0$3@qiNgvSV#8AP)S8^{-$_g= zR7zcg9a``_WhS(ddOdNGM6vAg3?yJD6LE25 z8u3DfqO*9Rq&N5qZy{GQ+pg=d=jG?Y^*hs=n!qOlI9sjuM{;$WpWm~p*5S1c4WKGM zN&G!zc;WGNVm;=ByS>=6bKJL<$M5${&&rC|-y-Y_$nziT(WhKoIqAK}nuH)6JPGwk z5vUg&(VUwY?CvPImRp%v)Glk8S`dp{8k~t^G$Yret>+ z*E6j+IbYH=;iL2Rwr~%*p(E{<_Td+ArVa$X+O2WO zkYbbt=8z+X+zEIZBRzW@WmNkLdM%3z=F68-xv!7+I{EpIwJepqZf=t+rcg#vr-Onw!AcsZ_ zShi+l8_Ai4fV%2eE82$2f20iy9_dE&PoLjAH#yhh*k-&$53Sqi`Hd%LMm+~&qHp#wo zR(Jwp_q|m3pjC$)QL3};%=}Be;V#%OMteSC}rhXyKFFp#VrrQ z)9LQbz9y#wy%IBX<8zzM1(oAu?|_0*1d!5Fzqu>OUtL)U9kyt;*}7UmPHnlZrYJ1j zg-Bz!pUlJdTZixLh+enurTpUoKTGm*Yf6||m2beYxZF$e4}02!>TdKCm0rP56=dQ+ zX+sgCS%X2p31a*uQWF-~_K7l-<8%|7`RB}I!<7pt7HzJD0GZNJVWu3#IqAV8f`u|R zAA&MWSgR|eVOoMz-x{lUo_UBGN9meO4}=>bJdYl?(04Op>rYh1MO7BYIL7pFQ?9}J zVI9&+!OXZ2o<`jLa1dUl=r^)vUC8AMDG&@*l)WjgmJRul<|5hQ*Tm$mFW5Kxo`cF7 ztrIe}iI)bW2lkCO>7G*qphX{!RKRPhZAgijluYgF>uM*@k>_OHyIA!n0oX|N5LaD& z<6F^#O_P2Pr)?R#AxoWt(ozd?ap`=QW4B0c*JpHc4h6mUG*oO--wQ%QtJxSF9tFk4 zCZ0bq%n_WVbf$B0kdn(kY{)q;9!>alQHob_wR|T5wVbi2$XXyDAkS@Lpmq)vL@j~-Fa?9Zbi&swgwvZ@{5)th6O9T{N zTaT<~!PJn1)Qc-x#M9r5CEB!9xs1S>G@SBVMdDH`bG%?zsZDcvdnB+frS9AGr+H-9 zv0u)GGK(`t19mvM8?tx#L+9)y!@*4)C_vmo%v)Is<{FpbJ0%MFdJ%hNK7dgYccnFz z-S;9wjdR~K(MRE9N>6($Vu6qxWSQu>WY0uC~MqTPiA+E zKl41&V38wB`L$o9JFJ>auQatBflaunLJ>-W>Vj<%*Kr+&m?75Qc z?dKP;3)CYq^@o#E)B+(uGm}Jh?{1#&;wAcOFW*;ybp{X815E}#5*}oB=N{=0o+L8Z z3dCJ3)nbj0D}a{$!7Y=V!~oVNc?bg2Yr#E4_(IE>AR>YMQDixKh-yeG0faC*WvRXQ@$ zMu4)0P%~~3XeqH#(cWk4^qn2$2S*V-*D+}wq~=5Xs_iSjPwh>NKx*GGlpeb*29c85 zAe!`&J-%PphUsST!r4~i^CD^RQ?Q`fc0phJAm^=MKP0o7%G~!mDBDjB!m72*-vz%N zV1;sA=zb28;IdV4i8|{4V5s9-)UsGnd~7y#Z^!N=SpfA#ZGLtDHGyNMtz_6q>3I6N zG`O;!4krAExuuF@T!XbXm%=p>27I|X{OC2B*`fyrk&zMN*$a5`U?7INgWT|Zok7^l zBgl^k>Gj>7i^89T9VjW6bN5ALwGt_X~C=Yy294rNru)1yqC zp33XYD`4C$$*2U&W9Gs)x9Wz}gYc&jj|Ag(S{_#_v{??3`k%_R1vF1KLvF7&H|+;TrK8G@c=kL=cj^;>3#*f!riDGd5 z;JxlAM;_J9U`@V%O=2LMEO(>(Y0B#+rVFS)6z{0^_p3{t6VJrS_m$_yJ`P=FH-~hr zP9DiLPG`ZRd7&{6e2U@_x5tiR2o??>bVO(UykW4|Y>1S`rXab&V?CUBR@~;}vDW%@ zeL(GY<(>Gpb=Q_63|p&{dv|p!|uE`=o)jX6hK<#x!Gu4GABq^AjHf3<( zBs3QM62ac4_tL%+JD{EhwD!klXIl_@FBZI9l6Ig9S5@9PkfSk3+f#A62EO9*w|MSO zweq0J7jyOdWHPN>FP1Lv%_~T44cxSsA6@~_|8YveHTS*_%V&}XG69cpa(9{LVMchM zI?VgbJ>!wH7nV7L!WUz?drs<1?jLYL0cEiw4xG=(U6Y+e#u`{m$4zOeBRkaZvU41W znGV-?XPQ#_x%VlaOG{1tzVBQeGjUog`Y#Q4tCX{MV1|ezcL{~Axu>%Sj#JY6_YD~m z#@{;RkzOIjFrdIvov5ojdo1&1@<0qay!iR3o1R2GZx3|rssOzg&p!^1#QVP({%j^w zD}8(>PaqRg)qF@yj=U1keV5`IJU%kuj=}>Fn>NR~)hj8+PCUE0nCuB9$hq?4uiSL@ z*gfvb5%osx<(>d&U#WCPkeyL2(Y?p5ITD;U835SHVi>%*VMJcqjwZXteXE9*3{H$2 zl~9o4>pa2jO0|s|O4Q_>GV5NS+#6t^{j6$MTA?zLRndO^R$Ov=xX0Xl^t`D<;uTSh zh=GdD&0EoNPrqV61}+ZIYG%jHb-I3|nsSO`mwT#fg%k0N4WwRoLEjbslT25I5DdxJ zc#xVZje^^o-K8$We&oZXoEC7#mWl~uT4Yz%sPy4swHK`1My4odQZF)-V7H&HI8x^^ z=M&p+b|S6BM>Y@pY9MrGo`$F~zMU^PZ#3O>?U9O9Vm zx1poTN|OV>MB+M_gYKJ6&fZYs)?#$?>^&ZHSWS+8;*x3}m(XbTqZzKKsK}^B>u4>!mZ(ZcBo))sY6=1gxDJ~>uhL@M`F(A6m8;dEH14%tKO;q zRmPO9#~sp&dmk5;7pqQ^Z;0n<3C-L@vJAJUSS7kO&N)2DH7JJv--Nqo67PVE!mh=eKdxzuW6Bf|LlKf28j2RyTJgJF0_fvdvW?t0}6UC3Yg*x}Tp>}`i zYT@q`pED6ZRLhPx(}ZO+Y)5kik<~!g(f1%DSuqbN5wDiY<|pkq9BF9lbPE!37f7>} zKyim0w>o@TF)S-P;JlNZF&FN*knnyf-nrOd+gyui-RxydlTmMbpIG(fylfuEe9Ea` zLZB@@bS{)qa+XkRcHI6%ZuY*gu83KIM@C=Kai(+1VWn;$>|zcA#ti%s!)$wwm%zT3 z`Mk~RIk8FX8G3!KBP?(Rd)GTvf@V*lsdyC^5oj?qjzzbNZCz zk4U02W4X)J7i)li6sc5ab2ED~lOrf{rGMh>!$qvJwk^SkLD$bc{Gem?++)ObK3`GT zD|>NsSzj*4nt>f#psTG(Bo4Vt&(+ntphzhbIs&%vQVf@y?-yA|ix8TzwB_Nkz~sY8 zIlanM7|U8$ekVg=uwT2!^AwKeVk+?6O?>fx#XC&-4po+i}EKts1MYwsyqi4^YRWCDISTf zNg2(4`Y&t8S>tdvbyXi)Z>jx{8aXws>B}+ZY1hq1uQzPvSja$d;jU2_ZSqP~#tttiyo zo>r|*39)gK*%*=;CLyv8i=%;-pWHK816n$s9eWZ4M#J3RIK)97FSk}8P-O|>2G@oA zL=oaDOUk?RDhR0_6=%%MQpws`8+@j+f5}nSF?z#Dz@7v>oXECBip`@e3dj9eA&d*z z#+UsjBy$@o#Wr|cMpERvfokogom86?=G>GB&SQ+YMDSh`507v|wZF=BAQsac%keV` z*TuB{^beilebbH2B5iQRT{r8KPhPzc&p#q!pfms^_zl-v3EFTc7?h@Il1itB+{@7S z&bK=5o0ATkK$Bpv(Q3N9n^xKR1&M9>-6cUd;-lY$6qrBf#Wc=dd4-3>n|SmAZ(XsY zQp3jmG8NO8XRg}w{e!*!34W-Tk4eu@K%47-WNzQadQNp=2)e>bBEmv7`AclH1$qkm z(o(KtN^@Y!lk|eoTqR>w&KXuZP*i|V7;O>Kgy~9gNbc-ydN737v)em8^Xnyk!CJzg z1+&M3$c?Eh0~h<6RMUD7Vo}7+FD3TI48sLDg~Bh+7o^6hn}s(^kG!lB?Kcr>Xy#84 zSD1^H>!>!q8weZiza^B_UM(YI2C$A;=+_d+Z&Y0$(~L&i0g&S)K#)ZiT^DB6a`Yv* zT4-X3=GjkpbF=c)>V1mcc2rp1ox}0G5obYpdwjab@t8PBY)r}!ac8O5*oByx5mgtj zf|PxOm|3QNcT)!Sa7kIwSs-2z!Fhh3shsl)M<9BIi$)UJd5wz)z+}=-mC`Ps--)Q$ zOLT^L$-~AwtVFr{;9d7Jd}L@y^qQcWXuowp_vP0C!i9NMGqitD2*hAgK+Qu=a;E<; zy#wz&A}O3aeB}NwoEXjQIQG5$1mv;!WPQ7h8k~~WnfOA8IivBYuM5IeIeF?^1d>r+ zS)eBCdrC$p>1m8Eqpr+XpF~1Xw0LDWpEU;8L9q1@7rVDpqlLo;b4m}f#KmW8X@xXO z(?@&_57SpT3ag8~2S;NYIUDNo{G_-u@&VAfq`8{x=6e4{G`4XU++-(wpv-jb9lL4? zhvTM6LI5KZGsf0ClzVr8i-(*>voX=;&Q-|dc5fd}am5t{BIK^VfzbN~fpVUT%`I4} z4T+U^*s;xC>B@2KAydLdL4n|DTjga>K7bz}egc_ybU^!GK$P_dsNURgW1ZaOAS?Yl z>0oJei6n)S?8eI?04mV{d&Hv_%(Y4gaya?!n$YEdM}C( zRzO%V0koYvrJ3I$tF+W|-9P9w#a?*}KCe`{h0s66Hdm}%!-`8z`YJl(c-#~ZiX)57 z>+saZoVSo-5%Qn3-S8ZG8{CXqVoeJn?TX8yAgqc5ynDfjAcJaq_PrBRp>!otFols5FG=Nc_eObTX|$Bcev)7_3cx)*}^xSl?9#3m(` zxppV*TqUS*dp_Cox8TED);JO25nnr3+hi6d&a*0ohE6}js+Gncvwu+;2$6MjPr&H{ z&j0N0mrz_!n>Y*a8#T}>c=}v*esu8)??lKcwK!O?u;8u90OTguNVxw0-FyiG)rc7Q z8MaL~zc)%^+75r(ymVOxK?#yne{$p_a*8zB-B98FIHouZExWyUam?sQ9Z49G>b$S2 z45B1V(Fp|My3egA66iY6G6D2T!RqLLwt}==sEz`fz$O~cVs@`NPUPU=y&`V!fLC5= zS|#Wb=Tt`g*^+L|F%_Jbvgs6&>3e%y3#)u-T-`*z93*6Lq$lDzCp5nIM^>-3r|Sfu zacZig&CHEB9Le^#t$w}Gal9PhHf zEzjb3%r9_DqR;*0OYn{0O_=9F5aj>asSR+;B#)xlT<+F;*5jmc`j;Y}tx5psqh2qr zT2BZ>O~H^>DMkBRs=;)79`lbva{KdfitRT};=^2PiFsKDIZ-?Cb1P0H{3~`nyIRt& z%|z8SEMiq(&lsb@T_iKIO!bZzXILz$l5Bq*-kFW&=M%F#Z$=IdMNAb)7xz~+gIJ@c z6aY!RWROUvcSOY&l;(weASSplq*JT2!bh9;CsUJKBtVAI-Z^D|ek{iY@x>E=I*zdW zGuJ}4h20%8g((kYC>ub5pe=>}s8My!u7pxHIR|hMq-rz5gz@!X27B%`=vMs5`rnRZ z5U6j2vejD+)3eq;^iy06pM^TI0f5Kxj4&J72|a<1$GrsNQ8z0yv@}NBbfFAcV<`ED z$Fw(|Axde9bhF4-w2M>-a>A>7cF3-1u>IeN;L*{A;9iCzfF>Jl==EHEv9D2+VAGIN zx*k^gth}P)X35$@J5*}oN0w#6O=WFivlS1+q!LB|8$xVsV($Kj!?j=8UfYuhexO9S zaw$Y?SRd4fCcbst+oTO$l(+7)Z$Zj}`Ltec)R6OJJn;-B?ep(v@mHQch(iaeerXMJOfdtars1L-3ig^-l>GxUHMG=Dxy%~H1c0q;t3&Rj10box zA{9=tTB;wRoIYZ1;gSEQ3LSnlK}RW=Dvn6nt2glo7QDR{GR7l-jBI$X*a#T~xHUfC zprXIW+&{>%-`|1JF!3=0aGgIPMGfqV=di0x71UVApQ>go$d@&3V=;ytJMde#7t$lyUVeTE4-VpC4oTDK%V zDi>Jr&wGkK9w*OI7>`YK1phmiXo#X2)^4&6D~fdyJ5AC;(Uv7NS=%*`MMdYhOtDrf zd_2yee0f*`!Uk^_pr!RWh`L}E-8=Oa4RjB^0C|2 zw1K8vc3b$!Ic>KEWBADLAvBCXtX7(%^i;nwnqPAU2L&l#5eRQi-t9O7Y564fv^Pr0 zMa4|?@^yw)@N)844}>3iY|>|o*w+JKye>l}^9IPa=TNm>n_MI^xKTaOJ4J zdg=^v@78PMYV77m^**DGG`CZs-Dj*=EnxHB9Rw%(TO0=I}Ft}JPqFCD6< zDx#wfW65Gy1#=4b->ANMCX&QkxcO#hPnm3H<6O-PL7EcX(&$555?;kQhu@11|7&NP}6eX%B9@yPpC#oN*Cm{pJ8GdKjvCmIKc&L+tuV; zsj0RFWP&^9a*Fbrl0KkfXP>+rbkrE7*NL<=We53vgLO4DGE$JYAqS|3sR zg9c6$FlUnkF8d`S6ACh%L#cn+eysUC@mAA$U`w$xIgf_(=A*agCGKp;J1CHcKDeB} z__zNs{beXDod=xhRmEfFgC^GfR*!g`j!epOL|gLf2xA&pR20r;d8~oTT>xh{cVFC*_-;cIK$I*133r@lbPY$^z9m@M z%e>;IBW1i6;6K!VUd=Gwo$NG0S7kPY?@7g>AdKU7%FHx9r*O8XaCkwN1oX|{7UwiC zE|$AeDP?d;%*-fF4<>ulaXtsUTr&_g4jmzaa9?c_V4*uR2Z2=LdGccGX+NI@yyWVO zz)jiDtz~CRurM++NHfM_a7ayVsIIo*-R{f%Q)|nTz~$o7 zqI#a6AOLTMZbgM9)t3CjD=MMe*a~MT{ov2;14OZK`)a+`ggP$Wq|7arTTrbBL6)~* z>N2j^uEC+w+0w=wGbnenXy@#B49$go9g8U{XRIYFT7O6p-g2 z>xnDIpydU`y^L(sfZZ~KVZUOc>zplRcr^%+i?%yUs^rZ zST~CZCnga|znU9+iGl18$=pFU>F`>X!-qVES1=a|@B#m(*aWe^J7W9Ype1*cF-W$m zLkuirIGHPf333j$$YdPcP5b^4{3?l*fI#3AEF;Ln!@KX_{xSD|**$2UQ-S%~)mxFC zB&xQ(<0hI1m=db{;k=Ovd8rS@4n+c4ju1fnLRK@n8d?m{Otd&y!hH*Lsa^1d%+~LK znx0XvG1BSCm-PX}Z5Cg|nvLMYx`0+}?AklpC<;)j*=qAo;(w7oe{g{R|96is;GcUo zajRhe|B-po5@n_=UiVq4CuU>DS|04=W-Mh=g2BDA8M3@`(=7$*cl_6VdxCjMQaa3_ zaZdPu>DJlqbF-Y393LVg3h(j@oM=tZ_d{GVOpXoD*<5npqv^O!FgO0bU}3E?)lu;4 zQ}%zH6aTeayp8h|9E>CEqK@?E2K|E>($m`2ty<4%p^+BIlKO+j68pbUPVOO>5jevC z9bHIxhvCP*Th$%J$|Tvk860&?Ef050LVO#I~wdinBRY1 zr;m7MPLn(r4>`51?3`Bsq%bbMG6w*;aShuyu~HdvXjxHVsf7gvyGP$M-ZmF=#&HX+ zXg9&s{C$DBv1D&;3J>Hz;bZ^IhZi5wxT1YvpxgI_4ch@T3AE|D^`Gs~{de<7HZx8| zwihdD>gr4vUl8~O)yv$SbDS!n`WJS+@n2DDLMJ}9S3;(zOU^FkJ{@{%6rLdCEI76Q zoET-H=c6q?reS}YW}{QvMGOobz}4vPA724c2G%1jAr$N4eqmF7WUrc==Bx!2Xh3h# zrKT@HYU{e0nrsduHaen%SknXGPnn46=n(jMJv!fJY55A;Fz;*Lm4eYBe{cHG&3APk z<;FIr&ApN87{R$CgXIYc1ehNUVaj_n?uY<-7Fy*L9ol$e>14Cmhh(*eYX!3}W`_sX zq2Rw)2-Ih=ff#v{ML44U+)O$`@f>>sFp&bJ+BMnq2& zj{zv-@k^P>T~EH4aSvf|itfaA$~tqUPKEvY+!M_!Fklp1OB9m`N&>Ww%--wmn~;;7 zG3?j{qLYcd!|q*k>OpL-kSZ!{LqSdya(y0X3iQv13R=V*D$4p+Q!znpDJ3QK5glDj zPEPKX&a12xne-LAI;Y#7&_u~7`Oe0F167)OVm(G8jUvT-=zrm!g8*`$`!Wqj9!z4{ zCrR7oN{GGEqk_(GG*DB$ao06xd2V>2Ca%_SD#7hj`41w1wk|MLj$B7mQxIV5XiK+R zz7>0fp`b-RkKYz1Cuje8gTA+y6q_9Xvmv8NKtTaKjoV&c31DVXa2AelTIg@6tCLk* zK!=in#qS3qOJ597ty|+d^9~o1l?t~aMp=Gdn3u1~QB2;#+u_-zhZbh0rdgAdi0#rq z2BS{K^$GpJbOSihiAzj9etIop+1D|pH%}yfMN+Ndd*H9AuTKVY0EO<`XUE`a(vWFo z#hEq6CCe$C@fA(m#L1lY&1Np=G9H-#tvB{VT8OyDBNWP8^To{T+*Vs+5J@SiUpGq@ zb>DydcuUS*)&}RYR1?QzXJou1dkxiIEh38)K}JTVtO8`88a`_ujO+x>`KU;mfOu&m z?H=06jsyY0y(8#%!mxr}!CC5f7}H&NT~G_#tIvp^%TiS`#UNbm?d?DQflYrL(J>nE zW3+<`1dD>YbS4M|Y%}fRqCUDkwWOiRpZ^J%mqqW=ClW{k$Ro0WfP5dw>r0blI&ha3jlu90i+P@qnc_}z{($q#@xet@ zg#?1yc+O6|UWQhkI{V~OJznI#Mp>#I*Dr4o-)LK(Fwei$R|xGwgMtv{N1PPJgOBFL z^_c9(bUv9uLtXA{y8%@CgzA?S*LGM6*pAYUb2-Ec?p-d~j#iI{504#BzBr^iz0322 z+C9O)U$~q;`0)-2ng{-Z2EIW@#~8|RVrwX2#8=y?7kql{49cGCyA_9atT%zDix=wh zw~7-36g^7JU-~ywoh7!KR%*%Fbp=ya67A9 zAFWu5cV~Ad09GKsJ^ai(RNk0R6$)m3kq=w#G<8q;a4=()Nb*M4FF0;?1Jj#hC^aIo0pvpzm+>kg!A9=l zI0}_0jlOUOI+S=y?Z`U(hTlqy2n6ej&v}~C@%_Qn-z5g)J_eP-C!L6Q0`jH7?AmkrxtuKAwOaEvv9}-EC$!9;mlvwP_Nd=H@G1}P z>lWrn|ClLP(pdGlfj!!xe?ZW{iQh(6VtdEtyeTUyPO&8XRjYgdBwphr(m!kitR3PT z4DTIe0|Ui3cTbq)C(f13ci-8~KHqn_SS{i^X`f$28v9y!LWD-|O`gpV%7H=iPS~+Q zu}mQbW(sN}o|p%tCOG}_bmX~_}W-Yj5U43|MGLQ=( z-q(L4&f9-?VVq|+v){xGWwZzANEBHdsDu}h^E};Egl!zHcRek{*Krt+CE|Z$%TvF? zIG-PL*JpOSxI!()8d*?Bs38R+^4b>k#%!i>P>Bl^su|dp2sx{#C%1; z=DO=C7*~PIa=CA=&FZCGwp5HM_onXKSg2A=LUWVQN}(K*lH|&0lTgObk*y3*N zZIc5tL#yC^o#Mh{gnhIf-N4ZY&5{BNY7JeHQ>|i4js$N67oPi5D*c5I3G*Qdh|}I~ z&2n$`aKKaqm%!ZCR!EVtTh`;?RDo>DAIGCHhBHNj((AwL|(`7P44 zKmB+y*tsq{b_UL$jujj#7|a%j?jiT9U_;ERhdp3r?moiD26(Gm!AlRI;Qozq9wHxb zB8%2slYSB5vI%R(7#-VWxShA-YU7lORhV-Q_`$TtSfU53el&}N!+!V3+4$Ag@3*+u zAARdI-k?g5T1EH*AS?86sF5L|`rvkb=5pM~&kbW(Lsu?ldv|5UP&Q>Dhv{p-Sx86! zn4fZFbW`mrJj{LLkE;S7U{(F&q34iYvzDKX$!s>-;S+n3K&e{Wq*dj$Y`RZJeZ(iO zja4P(8Xkq;%7dhcp63;5Mh|}HG+b0#^&QPZ)W>3xyTnP*CEWx)Tl)hg)mv+rxjiS% ziPcVF(18Z9kZ@SzXflwDeA9+}Yd@)W#xi2wq6gEGf|hOOm0J=d5@~)tX}SUJ^8K(` zNbH+@xmD0qf4Evk_suf#JtoQAgDXa19WDftnaGDvj0d-nhI1zN5tayRi=@IU9CmN2 z+zKS0<$qBVv9qAIT*bzIRAYVNP^-6#B4@$e{`S088&Q`LvAIboCi}gl0dR*u+Ms81 zoeg-9dV}I@9xb+YZa*KJ zh|feF_(p7JDl^2vAz`Nio}rLPtOqvk+{KYcw;Nd#lpy6-^(#g3UKJp-g*!Fw8h(|P z**Lf<3#D?MNIcMB9CX%4w0!h;k^{>xj^0Tb$XLp+q0GuP-KgAWw*&O#B(?XOF`=#V zLWxhBUAmtTW9YKp2yKzzbdZp_Z*;$%wCM3qsycF2yTJ<;z6zDRA_3$cqsi-V4Ts`m z0&wn{6w9_^ToX~B^Q*V{^MPmeLd*lHO>lc&W^+18Q#sPO zIX`y6j$Ev=UpcX@u@TjhBY8m6Tw(ah=e4zbm^5Y37fz*?+-|$vMocXi{|VIMG(5!^ z+$zV+8RW``3{j&Y{fD2KadD}3-7x1PqykUJpn3^-EhGhmDp&o@3|Eq zCwKO)^#ZTsXd)WlpQ!&b)bYvcOPs=xt#Y&Gyt_7Y2~lPpMyN++UFym=VR0Do2pf&0mIpN)Ggdi@L^KIt z6mH?pE0rpWvD+UL*O@hG&PHH!=MK+pZo_wv36xh>AwvI=U2lgi#B|^@7?Qj2q&<>AA{h?avIQ46U?LtvC3bl}aza_;MyQ z_Q2^dc}1vJsT*FZT0g(z{)O<>F1v}Xw@k7JjzfHL3RKeH-`XKM6e6Bx9OR9Rv5Qv! zcq7@8ev_;CbPpGm-uB>}+JiiT6)1=ig5rKsweldPz3<$xN*fVg1N~NhMH2EWY+dQ>1o#VZZ{MaiaL-DW}(fzMYA;#_mllObhM&m z*~{?2&iNXkf4w<9@QeQX`b@q>y3}q)jJ35C7kj<+#AuNIC}wI(YmCo9CsV>58;t0? z&A%-&k_C)N9yF1KFt5P@kUm`j{i#B!fmq2T%!f#!QC@nvJ0T&jh|pqmb?(i{7$Nj( zK%fZommAK|Ay6@w)9aSCNDf+&hCCX%eEZ%NnBxPcS)^f2bNKCfhbt`-;SlKJcr^A$ zcWiMU^RrD7jtfotDRPYq^i5hn8Z0b}r8DRUjyBAfY?`4ss6e6=d&Mibp9tybj@{G#VxhpKwC^px-+%UwmQadNh)GofoC~+&t7_Gech-{`c=)~y*a)oe5ngbGA z#vJXl6?3L_FV-Iv zei@6~`~|lv&s8iD6^v$Uuct4?V0|HE!9gL*eSOT(IbEjN6uj)dvy$(@mPL1TeY8Z8 z!cvjIu#cFk5foaCx0QV`w55P)Gb5;27ayJMsuoRs*Dlj!#^@;?6=i79N~~Ox5JgM4 zcWphxp$SkG^Yr;6^m`PLG<>eiI7&!y50o-A~6O zhCOp+*7y`b*zvxmz231EDpkP{RU2N_q)YE0{3}wfVM#sl!qj*c%fQ1)`%k5zD`pyd zH|E4Dgc#1(y`9iZS&MMZ(~u?FJgiN>l`SDvQ*11iEicK*(TJ^=JP&qh`fulV(r{wu3r(O5~lg1jAeao}vqkG--3DpvFjE~4<`M4jJELh)A<)ojX47R$o$vK@i6VC^DJ$PZX@Y~!gkWD~LI1GF@u_1@x{xDde(ABQ-~Z4TSwzxpX}TwNp~JnobR-KA)ui!d#<}up)XBW9~3^)-M{^SL4L74dac5=bR_y*r9*XH zib=az^RClB45Q_MeZ}MG2l&IyAjQi=!F1UgZ!(j4)&Mnz#IMGD;=4D4wPsV&{+i;n zLG2c4ya{A;G-z*h!{VLOJ|o!JZLNV9tJjRQ$u|t?=TlOGOew^G7bocWrP3iaSS;*j zJ@(L@s;SeyxYV^Ce*QQV$Am6nm`2%_2>*>!q*h^(8?Mm^(60pf`}z3R3$X|!G%zr- zSgB-(LZ&g3A7wP7MET=Eb?sAsga=-o`CQcZknOurpNmc(p6Iu*n8rmaADL?{=fup4 z4(JW4jOL`Ispt8GE8ojUGx)Rw1o%N}r2U?u%wELZ%p^0Bh)>4lR#QLh&qwAmjGJZy zMc1@EwD*nJM42(mwT9luRPizNbu%@EH6QUi7f~F$EB!cHYamHMc|3VH_r9k+7f@?F z9syGIjukEyou3w)1qqn{AA4^Z6xY@?i~@n632wpN-GT%O0fM``I|K+89D)Q7?hNi8 z+}$C#y9Rd~cfVV=>i)ZRtEQ&r$DXyjd-ZDXUQ0jq$rk7QlQ}}-=U9gu zCBl!dN5R$Xc#nlKMT>G4T@f4um1J}}eKk5IHRu#I=dx0XF_zdyE6xJ37e9ttm=*?Z zf3We8X|g9tN}gKZCgfs$FP}wH?4~5=;o&iZ(F6DlNA6ziZ=*vH%3rYUni_;6LoR@v z2!d=DP*TP8TBj2(Z>^jq%$3LmyvYPo?2+{0QnT+1s#PikLI-5Lpi}<#Phn+TdOuOB zaOc8+3t)d~XMb$&^)43fE!|ETN#iDvYsx2egyh40zC{?0#K)uXt>i@U#f>$PmP#$w zYEcR&5?JRat?BfgA4q%Gcu?5WIOw76OjfU!$ZuUasf?|y=D2a+v+NY#bhRf*XmO_6-(#cW2bp1aYV=8Kux^zWSKl@G~(?BA0WV z9r%o2g=)CPtb_ua;a&$eyv6jkdEfucL(L_@uDP<;TT;UxA$GE(vgY&Ad}mj1N6Qkw zf#4jERusVIg68Dj@TI~@7g=^%Y~Sb=MLkbCiTdxVi(u@OzT;#WOLne~fmyu{R8lu%#Ho%vur)E>sh;m?|ui==ySG z4QFbn6|F32(L2pS!c%@U_`pR$p}xK`uUEUs@#v}E@Yx4{2AUX-3M$@+F7cb#L0nrr zjjF60HKb*2qi$4LO4J|~R|B57WHV#z{`L2}cb=9t?Pq1>Fff^fAmBFx1ivXj5DIt> zb)AS`ZWOK~%hi3oT`;b>K4SYxk19!Bd%8U!CSvRsDt8cSIX<~$g`V0iwn&v1GuE#E z^yoL7TV*OcDC*cvi{QJukACd+c0qBjT)$-K!A7*kxGws6KPAX~3Ra||?3`CjI}}#0 ze^_3p@w3oRMItYgFaS}M9U-Vi7ht4pqJV8U5}|!o0pwuSvInfuuiEk|`HkG|tuphj zb&)94BEF&i2j_2;Ef$4#PXl7gKSR%zjR7A~JxO$Xwc7IBgygscx_IVc#@>C2?#NI? z*^;rE{YW=KV-mCG44KMty-WV~>^uS*Hwm>9=bOgM*M!^rx;q0S1e!*BT)Ny`TjtH| z?u2L1L9zeR9oWzkF;FN~H!dg0qM3BPA1T7rUxK3$Y;eBe0i9!7EC_TWSr8^iBC$}u3Zdpw1l4XAR{9)3PYY*u6g57pdcEW4s$+v zC%fc)rkR4}&uuLGSttJ5l~|Jah@tWYnHpF$%v$8xF$1m+mss@;Xm`0DjyIl_=8`<$ zW}s-WH+Ckuf1M6QrsJ42Q$%h9-veyP9~2R*?<-kiIBeXYe7s}E*kEFi7tl)2qcyxo>cLAtJ&TVBcZZDEe9r$t<$6dLGb+5uq_Q;l=GAw9lgn|Dp_dTDATQ2OC7g5_Vxu z*zkr@m;aucRs1t=`clYciM~=aURhqG@PNB;5y@c+woy>$5m;JExw@KBs;}(8v}OFc z-zUvoH>pylqOG8$@1Ov#OrbPP>Fs;AGX3ixi&pN(>M*IaWuuogb{ybM@hB+IfeA%AJUI_54!{lxbgXA{rpuB1?W421NqAh=yAHHFSb0Yd<}J4|1k zcV&DUIray*cmKCn4uowdJ>-XzI9}zV8AIaqg~>`ueIC|RJ)v)wH!V-adf{{&MR7hg zMJ-bW9;r@tXPhZjCvn`Hj3o<1PJ96Jn(>Gfm0%&vFGgt=*-q0c+M_G)V(7Q>?+*sLY+`$yu0!IDsQ% z&eQ2NXKN);hu(bu^hh&PYHV8_=#=VP+&HI>#4~9B+dBOS`ixTN&MuFJtR2-CY`nQ{ zGa6c$<0sgzW85hkwgh_-3(?hFg`!f7#%%L51WmrC57}nkU{)I6d?p zS6}Fp^X}>+Js8pLMT~c2YjbP4Y}O=xYrYqu#BkWE|Fg#U{lP$ZUYZ_bfRFlb;VS5Z zu2yN*Vl`fT8VSs_#=bdqZOat#P7lm<6ma4E$03A~^hRj&-5SpNCz^6Y?I4 zxNY=>0PH_c<|GQbn76p-@c#XVzhC~3c^2~-N(mzFf_G@2>^Dl!=juN{)Kkz1f{-{W zg^=g#f9PUQDu?p$K?t8LZ-3MC_v1d9;vnL?Am6v5W7&gM&lW9UZG08n1%HE*gLrA5 zLH|3d@ef%4@dE_`ibNG6Hzz0Y{52wCGbbB{_bd?7d{(SxaI>E6SLhks!9~h$NNz)N zgdx_^e~5<+RU=#O@qv1Dp0JaUEvDCC;m@Mof!>GMRsyI4Y{>Oc%rR7>HUI48U+&O9 zevvnHB^8Q2j2;gIL{;mHMagGdEGNc0^|12c12xO6;jCf6nVMDdZ<_+-f>Q3`dr0=) zb@~eDDj|apYk~4Nmel;vR;_yAZ*pm_yO`d;K106VdS&z*7C9~WI^M=mPtur~?;|bL zF)nkzZ!^b`ggOWe-m=~hf5t@c8>w8RhkPHVx4F|#yy)g{TqFgztL~`uRs0`rRo12lrD#Njt-AkneSa$ z{wDMdO8GO4?_Ib5i_nD7R_S`+Ai1>a|9aEEK!jPnM1s-7)qn^%w!ao+P;yLyOaEd~etv$G%czU=A6^wgD}QLu34J8#+pDJqSVVPJ z?b~mQhaB=snBuJFEc1ECL29VfyDj;G7~b&k@KJGbj9UY-S(thicW=*(o_U-230^N3 z5rD=&WL^LxrkshEdYtd|^XoCJpIPndVQubNPzah6%i(y)`%ptfM@KLDHSJ2olGD={ zvoFf(ko{%?Z*0i>$1Eam!P~&c4A55(d75Q3(jNHIC@Ye%ovx+k_xmpLSt?5`lE7&GdDZes;O?J##6w2J|d4 zW(l~x>bHU#{|G9-%Y;&VKK}i`qNyl2D3k}{80dgZTP}s3`F-|z5`dxv1>}(ZnlsV= z^@?wvR}2HURXxispK&QrIrw?SbxK`XiKu8Q*}7P7Wdj2o^m2BuJJ-YKGwutquDN=> zO#Ac`86-eW4}hn(>8kY`JbZv+2!Xs262Bd@NO2JLg$U}D<)r(|JmAXI*daE=H4O=g zV6Db4A_HQv@vO!J61Qht6r`jbYQ7i&93SDBVx@mGLII_>OsPS4u!6YZqkmu^UhRq^ zRruiL{tRL&A~^GXD-7QsA;}GFHHp~Ji)VQU*wcc~FT{x!>d^RMl^Pxk#9eMT1~x|dX6NKeRMNt+Fn7{vFLi#h|MlzFwtsXd&!0>Q=o5UKJArSGtG>3^ z%vk%HvZ(GFPyLIEIZsrtvV7@_awgW=pr_y4I*Y0&(8VHO0seXR^_k50KI`MyQ^o2N z9)P^B%vQ9e}HJp%Ny=rJBg$VNwpcxVmPsw*ubmKf^CL zMhS4g*$Pn_!Ef$=2_=%jM9YdGxbuohvos}ULeXBo8mx#V1sOvfyk=s(uc~Q~zXJ1=LTM!>@3zMCvno zcz!=F2W-9%d+!IBOV^FxyxNBCvp$8b4x^V{CP`CljYGfgSWqtG-TOyjQ(r>QV#nS^ zKtTS6H{+SF^KV=~{oeZu=wfc|Z_R=_IKPj>?+y90E&qJSm^^FC?Z#0{s^8o9%yR$v zp+1GqhoC>LO~C&6Kfe8+fkAVLO>Ou!Wm3OTe=n(%O zAQ3dD6a-=jE#M}n{|4YMczn=g0V4s;E5z03Ki>XNngcioi9q}{=l1A){{N&RCHNp| zAtdh^wqgFUTK*x$pCA7}LH@r@5J4mPhMUT*0da1R*csIiiIr%$sElj+YiI$gb&{&M zX%!gaOcHq`4*%nn{Uz3Xm>s_U_`zN!HDmncOH%ePItmVHh3M$b`OAHKZC&v@+VBn* zdAlY{KGSEREdp}667esEpjXTdRSN(1eOF=(jSv;J%`_mm6@s_|?mvz}j388Lg`i8F z-}ubLNPRH-RZq%^opY*~3fCMG6^5mzf@{tFrEX6TL%Ed)XOVM+Nm zLuyvm@uq=Yv>upP!@`d_yEygv5^adsBj2j=>1j9LQqs~o`vNfu;Lx?BQ`>mRXHY{7 z#xl@xSkA;%8V}-jFpsrO$m*;n~r@&FRuo0Pdhfr7y6!`=;Eu$xNyC zt2$3=1bZnAghH#|8aNs9%6vRCgIO!NaK1uzLDZvAc(8xqvu7mtsTQpktpwpoA`3Pe4>u&@4 zZ<>AtDWTM5Z=i&VF*CN`WP|(-GkqyXHhvpKV`Oq_zYQX54L3cpA%O^pZz9J!C!zm^ zjRY}ds4z3355SnHp^69+z#jk0!t$TO#tedD7Ui8eIbjy6(e1gXn_G3fQ>MI$2932{o5@4 zmnz%*2oZ;kldhNIdn%C+5JL{#1pLepa`$i;pLH<+cc?z}HHSK{`oBW>f4v6=%E{fJ zmo9^k>c4z3BB&bOa=>RAr^7zgp=^)4kVmNkenP_9MJO4MwjTq$*06vrb*0|3gEY@`XmA9t|`OE7oLIk`% z)(*#@iyuG!$4mJi9qr={{~HWwEf#E;LjVwmG3cT{_yJ<&4;oA?02(LdfFnU&=KGhw z`Oi*93Zg)dvklCjN}wqFFgG+LMWe*8(4ej zgp^)2nBnw(5Mncg`EAC$f<~xhLa2u-XJ2Ig%d-F1{{MprhVrx99pF$?l)vnjhW#Jx z7NY?*z1I=0`X0XH|CM(w2Z10+`PBD_^@-^}){hiiL!}Nnl@P+uI)OXu`@<`)6exF| znGhJ>uKsOz|II%CLcE>=C2=9R_+P1$e?KhZFKG1PYYd&P&Oi(e8S3}%XoQ56`uh4J zTNf^bA_))%r#U$}k`@xdfPxsjw45QQ;HZX6w>!xbh0!}1QuF&y;qga`fPzrGqskO= zB+!&e3WHKmWwYu4)kIASRaU7`qorP;R*oC1xU!d(K^^kPYD^vy1~fEAi1u2ou<&zWNAXoz#uJyFF+ej{UM8xYk+f6wT7?`l^X1IyALa`>fIrA&I+}K+&iFH|?ut@6dGORw z45|c8t{&^uI$J%&1zxr1)*5XgL)i4!&w?V){>-h-ZySU=6FK{@#&xc_tY+na-a#tN zix&U=W(jHOQ|ex>zcxb-1O7*lEroW&74s+|RX7n{a9*DS0t+PHic)YXy=s}s)4@`% zwOD}`wCfswmLK_z z{$$FVg0zQXZn5%-)KTQMi;^ZuA-I6n8mazyNg7&1&Y2H$=; zD?Y~^C%5xj6Fz_4N>+*9%7^{X%eqENoGqd~N($}xWLw<*szh`unavyKLacoIJshO$2cVm+ty({;Ae{LWr|iH+sYFOao$+)6k|_*G$$= zj83zg_(Q{`QD<%#tJgBrTubM57nKZL8kT_ji4c55XylI=CD(^xu8@mt!Zh9hBm$c6 z#-yQ@Wl~1CRiPhx#8dHyfr$*QCTW*%*v&Sbp{k`9UW?wsimYu9<4HxYt)b4hn$iO6^(JGU+vIq*~H>RZF#+_vA-zbHyT##;Yw=tIW3slq*f7cU!SXHXH!w7<7Zy z_7(nl!v)1}ins1#6i~~Q~KqsAaYJLA2G`D9&z$9_c@y|YZ! zSS+n59v5{)Fs?0gP>}o#Hk~S?Zq#5N+OQ_y=g}k<<-Pq*hp?pT>_%D%=i_-2@YPXG zcl~pX84%Rkh92nd62IKeqG+%|rcta2uTR<>q}m*>h_!dR#;8w=tQBWquM>%-`xejm zC9<#(OZk*RvnY01S@~zl)odUa3yX4&aZ2Mpcp>psz@@;Y9anV@2DY1V$Ra%j2jJocn=UO7DbSiVqHAfg#^ zgT?AJgj2s2r@6@`%a@TM&nFyve;3~x`3;?Fo_4%QRo3+;BXCp5qeQ!Qxp}GnY*yBj z9=QMt#eTI-$Q8Wg?AXE7uTHMIAN!_D;vvH$N3?euO*t#cd}A-s!QP~kllyGRK%DOY z*M$71Uz=mCP4kyItibixSebwTXJg4_sdqbCROc>>u2QxC^dQoy-SC;~&~~XwoY9o8 z_5qkIx!099s67Q<{X}rL6zz4oOt0(tm|?ZDT>u(X=(7~o(jvPZBa3jczI?zMFv^1} z*J*Az>!%{J5i0gNwoIks}cW%4wH}Mu)v^_n_lACmbu;StgW(K-f0=& znZ@Pu^tBrnfvltIyqwm2Q^bmLM2n&Zu}uySk8RYS=}OoQ)IjFa)MgF8IKFdCd{HKO z2cgv%X9*Fcei9R7lz1_fch)K9S$H{dsXuY~>39rhH)V_?qWL;W$`IVo5uLYiHUce&v8*t2)YV*3TK7yss z;kHgUiJlTnw}7-cTFsYL8FLpyFLdmA_Ow%`1|jYCqSHPhd$Z~HbB{;ZQKc&O?QrYp zt#_?n1$efF+2mA`mHZK_iAJj+eS5#2C>cq~*s_)zHDI#KwoQ#Tc;t;~Lm9nx6SEi$ z@%xg=33!>l0Zhpy>)9Q;>i`IqQeEW77ctszQ&L{v-mj!N(>(#@FJvrtx1#Q)o*v+V zo5rIkS^fuhN%YbCU*@%Ewx>}PthdRwl`(5C(M~A66V`%qT<(q2Zqw7xvF3f#{iK_N_Q)%oJM&-v2`gld2D(+6J`XJa1_ z$VF*unfSbWzpCR6jU%A+$2F+1iuR$&`6qatZqh;L`8`}P62z?nmM~w=aAE1>5!#Mh zlQWL;Yw@^{5YdrMSG>3;>Y@^e4qxq8sx4AjaK`6^Y$wwesWQdKl`JHEC8>Euk6gH4 zJWPJDn6~s~u5xR$BK?6<5|zB74e_kq&9?9Au$0LqnsPY1>gCJ8RhJ;lUCAbG-{wK2 zpRhmQ>}j~k$6DglNvVXii+P|0UXl_q#p|}H z%XYW@IBCk8%L2B%?6?N%)Nx2aYd<^HAQzyXp2_CKi=3xMvj!WY8>l&R{#c*TQ|WcI z;i>>-;s)Y7(yCi^%OXekf!oD!G+`?T>h_2eCarQ__S9_ne6;D{<%GAf{${Yt?bs1p zd~7FQBm}F!md)g&2*GZfMwv>9hKZMzRq>+z`S980X8*QFJfrsF<>S>o;@K^>ZeMa) zD^bu<^!G2t|Ay z#In{*iG3?R*_W>fO$Lr8cCt2lBl7b^& zBYwH!J0nXuIsC#NkH5foiIQUlW1rE>7t>5ZgN3hi*y;I9M-w+{_XaTO7Qw4;rdpZ@ zS+8a*4DI)47qYb*YtCvKJ_|PpnjhpqGy(bn_h)PCTzX_AvFy_?+^P{TzzTs3tq=vu z<$|r2e~rnJVI@}2<7&D1zw#)Tk-dW@H9PFjQm`w z<3XOXNLOWIB0w@$VW>LA@HzGY?6i{)5lW9vqyMXAltYVZfXC^eG|i4BDm(5e@HOF2 zyHYPn7b!k@gfu}SDN%{ zcDs)E5e`U}8MX1F*aV9G4mGQ~4m=f=88yUZ#1$-sXHLtl9~zX^c}$Ho2{S9e_wc?N z0w;cA4~JMr9yQ}KTBXu;+cOvKNr0LG>^nI=__i}9s;%_%0XZzk@Y1_L2Z!(Kx;a={ z+{SK>X;wMAyL@yI8EOu+Pk^7ufjTRCIN{cayd?_>W67sxrS7_M$+a0fqf=#Tyj2*> zs?6}?6H*_rvx^9AH&}_Ikb`kdY@@nGDkYod)&&tcc_V|%&$5eE{-!Fv45OqIduW2qKDSPELOKZ?y)&%)>1ppG&>%o zQo7>q9WPdhw4`0Q)(i+xgPBi*P20I0S~vom&AS*BB!wG@6Z|X zJ>m~Px~YS{9xQm3YtY0-1D!ns7v{QP-YxuERR?N_TI&@?ru&B{`(i&R>11|CFDFi$ zMI*}4nPPQIdLC3;Hh%u)tkn5x%R$@pn=rS9bFU{ita$rtnbJr>epErqD&>7biGI($Gt@3%f0GsTY(ul+s?w!cUT<~CFn!);u$KEzG z+wMyLHxXRd6$;Xsg@qhL1tj#{1<}0+=6BjEL50)|n$_QFlYSOjCE7=Uczl5I3J5K9 zK5*+h(?v6KnOVyH1^WCW=>l|s!##3^3s2I%H(5}`61s1>xE|6&%a&(KyNg1rTAHb- zXAYUJNxY-0Fc3oxLmVSVz~dzEoMcf5fyBm^egm>n+DZ(|@biEx#*bagMc{f>S81c@ zpAcJDXEIJ*`YjOZQ*BZlk$~qU7QETFaHH*7MX5Papw@TECzK>X>TbM4?7JCE(`Y2G^bji#yujc^Aq$%aOS79|al{mz<=Qxwb>F8jN9zoFhZ6l?9 z_2_~!y=qwbpFR%33>0RTr^!PuHJ_prTu0auX{k1Nbizsa8ukcbjSzMtn}m7gkQ3h6tF(M@)MkEFk90C8mAhqWM9R>2w%9ORGM#S7#_}4YszNb z3(w-HMZXta`O;`7#`oo-JWkWLX3Z5%qP3znf@_%^e04Zwx)5ffTmF=SP zq1~^2v3ToXLXh@0o?Y0^G3;EmUSZqw;C?^-=>Rw`sa&$Tvd%PoOJScVMxph7dPB2Z z?s3RX$8y+7<0{*$vwdsgh;VaznCCd>UMe^WmJ8j?Q<|2VPh~UE|56*ml8#9owf3+n zt5P5~g~c;JShHr~6X%%=H{C)~!AE0Kc!dcLa;NueBa!`&7JB<9c8 z;)7{r1HIz)HG6j~E24qBu|+Iz%FSk6mB@HO%d&Y{$K$2NcquF4)@rcVdq;A%skVVV zO+JL(%>M+u8ul0n%b4XD74C#&zS$8{G4_P}K-?FY7%olbb+o0c^Je;hh?_qOWLTnxH z3`H7CVoQWzm28%}9gTK?(i=9K9`_`Bs00RO1n@vwTFn-Tb0Og~2qqSXPF9wsy$54e zWpmHHT#4^2lPci4u)BL+4>8t@Tpu;FYkp!nUwd4UWSZ|ZQkO|R%VEve`*Aosmm`Vn zBgqVX8s4OxqW_Ca#5AdQ*)x6)wwnf;v8^s31vqDO6)!_=&68kwF^t4X-qvagy#Gd8K z+j9W@$FSnLK?TkfZRY`sD2*-wE5efU&%cMGQI4wx!GI9OzILZt5ajwC> zP&t!v45j^e#}9|RpE(e~=Sl1q-N7QujZ4R4M9_5QcX-U7>MC*(b8V_j7^XVh^LsZT z?djEE3{q#mP$KojlnD%??O?Bz0nxD|&d(iosgC;1%eHOIhNyM2OZlneRi<9GXUGyx z)KD2W_?%WT?sxsX{FvbnU}Uxd0r%0JVMl)-hnoINv~8%x;`)94PH+#YB0Y~l!ug%T zV}`rpVG{`A1J$-9$fqZwiETTi%>J>4W2`|1WaU@mo~5zH@zVj1%QF*u1mc5- z5gvc(sp+`FMCcZIO^Nc>;=OBCg+;buUMb}jp-JA(@bKbmu3X*6yNDV!Al`wo-j0HW z6-j9~Jd7rQA?Hr26RCJ&2)Qo~JsUu-^_D3RnJDrU{b)w$WAKoCH_e9q+i!n*l7g`z zjljbtn>9z+=^kcx+&gxs<-BLxER<_gZpST0i^kJU z9@1{Cvz4T=g+#c%LfWGX=CB0rpHbGOn$0a}EE^sPPW`y;jZ_gBf&U$RW~#!5OS#+91j5A{<`+5NWSn>3%nrrEE;h3}JwS3?E-vTQ6YY~*2z zr|!~ARX~HfC5G<<8+|H>uX$&g=*9{bPu}Y$jB5ucVovpi45A>plj{jAvI{j&Mw4IE zZEfpQ^H2)+;1YDxyU3dt2(94+^MhH)0`%4#FF~=XxYtC9zFwC_y7R+liw<7sQr?PZ z5fCwBh8&(;>#Xljkixp$C~XoP0!WbqkrZKEL@ot85PgS!0d?7oOh-GeZ&N`<2KWJ8 zuW$mjWtyyde7HHri`5-&r_g2VH{vqg8{W9fNxbw4w#W$;$Lu>wUAS=m6{;R#xyPE| zb2-=I;YJP=o~QOzTrXYvcepjly;P81vNSAI;@D8GYClCL3^rwVdH@M=)jL8s)e>L} zQ~eZ*^;xcz9JLG#h=x-Eigr!QAdgnQ3htBHkQmI)iV6$29C>m%|KB za4AxzQ!)JM6j_q|4l|jVxKbxvZeTc_OY-VyuE0ZyVj~!tjON0$8T>lxMFQ~ztIDeH ztGO2ItTrgZ=^DV^7~SOX9)CI^naR#%AX=#mYa7O?bQ(tBcDwqq)D6@Tf2)M}k(#n` zw^%eAKjDcn(jukq?ABha*MqHIm|{QC$5PnDldt=q0&! zty2!Y5*J#+qVS3FkE1#ukaEIXbg)FZ+`02u$!|q!Vt^jDpiph$SnCL?y5~;)l^-P? zpxrg@t-vNup#716UX8RRHgd{%J&vfiDo2K?oQQq%*dHu629{cRp_%H2T z>Xx$1X-FAdjsdTf<(HTHgA2CJG}jNSut^w0Ta-MOS61~;kKj=IG9VW18;?m2E&j1C z-$ra{tJJO(r@fr`zS-oV8w3&tUs)_o>y`{_nDe!HRJ!~!sPEg znz1EP8r*^G+r^CXOpKp83kQw(*;_6Zo%nV3{?BFcFSKaaC1+yES z`a?BZgTq;6sjOJm-h?WZMBQ?m&2TFE>{z{cQM2=O#g(=A=y{}dT{^SkF8O!@Uip>n zn9X-JE4#SBRN(eQ8se;21FSrB(v!$xStHJ>pbk6f2m2~Y=bc-jviR2u)_cz*K7zLT zm#aqsb!aF)gzvsI_Odg7@&?z}cH0QPf|1K_p_HsMTx=Glfy#mig(-zzrNI!KI3i7V zzX%UZX6TU=c&e@fQ#(uF2|sjfi&G^sr604Tc$|!h3|gM5#qP znvhFTlho2ptZNqjc*9Fsi|qmRuAxY?_)VtZ>%v&VY=dsI>Z{N7;G?lo$xw|KSNj58 z2M&)#+Kr`OD(ge-%bV@cyX>W>)Ji8(yBGIa-ekT0CVCIQ4slmWj>JixXx*w=s{@>_ zXsYl+1?ws#oS5@-@enNQMVp@qn@M>HO?0Z-Y2I?8J%uC+MbnH-?IU*&*D4TBdy~Uy zzI%i46Rz>)Zh!v0Li~9=%~%0K91|bd?T`_E1#$N zSg=a=0U-^OAAI1TUaQ~CZauF=x#&^LYon=!&-zj}^67qu!XXKpV|roK^Re#!lF5tH zCd;L!E^`_7d}kQj2qr+Jv&!o>#BKdtS(>rZZN>(d$0+F8Blu)1Rv868YMhy@kjV1g zL>a2sE3EDV`E)K4V&;8jb=uox+M2B(J2F{ahqes{nm9iihOv2MX}mBPzY3Cp=7kAv za+6_L>vylzbf61M5nxT7leQq%vYeDIiVYE=SV5|(!gsmnZ2njbB_%_Vg zLunLJB1{jaUo^${ZIrGjhd2W#ZD0O(vM^reD>C&VMcGH86a>M=GL34>erv;C2}}a& z4YqRUWByxk2vZ^2MWj^S4qE(!hw6HdYM2snhnr3 zhKBDG5T+f+w!?u%)`3s5%!LG>5{=&e15T2g8jWS{m_h7iE22evl|{K#sI%Cv zwV4j)me9{L4_mQNW<;&M!GWm8H2$6AjdZQq%fscKV9ek#pha{pcgS?C#m6*}>6o>S z)J8dn%pkuzzmiYei;Si_U9ftOBPWp-RIDcX`*0rC7ask{Wsq$|^^tgy+p! zVS`MM7OUN_$a1JSuX29gIO#_Scdi`|flkg1oeqQ28cM8s5O}6Udu@5S@mSCKjN!V6 zSQXUP$sri8_YTg%B2)C0YB*HPLhiIjf{Xot#U+vzkfqlD3QZ*!r8@&p2NxAEixZsS ztya}D6+d_P?XJ<64@vHa@F(PA5Wxjex{&~xbBIkf*0&6I^Ekmfa2A+h^ys zJ#Kk1j9u)wa8<7Wp)uigpASt3q|Umi1&AKUHgYHYlLr^xl%f8bIn7zgtwQf*@2kc{ z3OLE~C4#9-AdZ8CmSUk3{8J%E-2xrOlpYyGD{b!xnU5E$CK&O$hu(Tyt%2B;bUCb9(+5o6GF(UCzdoosg7u*Gx7dYF zrzyiVP%YNVU{p=B;Wx>P@KPO3iQavgh=s!+e6#emp&gEoO{1{mRT`WM=<{2Ty_kN| z;8Bdl`tL67yd&iNZhf!s?~0yIe-SS0bar)FhO(&LN~ikbg#V)a@QTu1|M2TjC(xWY zOU<3;bw%TFQ*+3ZfI_oo;aaCl^`Uiqr)W_kiV~y3FHctBLF)0U1Mw&q82-r!MC4kP zesTY_>a0=&+Qh=_N3ne0-{izU(s8gIWjUgY)%SWmvS~^^-p8A6`SxJkcQX+Jd5hJS za8oE`F^rmXF{6I9 z1q&UFt_Ds~9Gq-Ih~ne43;k|&!14oei_*Z5r<*&?-llgJYJ~`{SPk|yq0M@%?8Nb$ zpktXBedmGELR{FO%caGTx4mW)EWUi4&luuq)SYK&{gV@O-{M-C-#f6AJ zwphTZ2b2|ZrPm(Jd}AqsDAp+naO0wf9>W%_Rn(4+{0ZyL9hytL<9J}3Q{6zg(BcwH z`!AEY8)%}#ir$yRO<*^xNxIU9v%%^3*V5NSiuvOW;q)Ak zp)fANTcq)D7+-q!ay7q$X&mYxNw{ue-_M=vw!7uu34`Ac(M#R!DdGYnn%sC}49}bB zFOoPdZRWdL^`v|=hQ&TjAiiqV`3$DdYCVT=BSh_f;^iYi>58qv5afT(iYKM!Ku%A zVOA{fa_0Tn48t~rHa5JPEe*(^hW3w^uRILUoo2tliI0m?DW>{bevK8*)Q~2p)M1}S zFPY3i5$8Rb13S$dncBUw*AWvnOTg(P^w6=&3w~#0^)+YgWh!(46iS9B@l0t$M|%R- z?Tzh?G}o;)gL2u9_Art)rZ@F$jsrH(1zjWLV}|MFf^3Y4(X3*}XFSiI*s2HVBwov? zJ%sjj)U?m&h}lXGg!^Z9E~!&du9TP?5$!27p{9vD9$)$x>rgaumQopeJ{?vhTaqRK z4ZwYaPsc?346uIOM91ZVBMsHckU^@%zN1^cL`@XJQ@lliUzCM-3PTJ&e83%E)E19@ zReB0nv*FgLP-0taj`ltM{y?<{hinOTnVOFts(W%h2+RBB2bM=zRm~znd!3i-H|lik zSY_fy*V2j^wOwL=Yk;X{$ET+jkDmzm{Xb80v$Ac7cwq$oayy>`#FmWb z8M#V_EHr<(QHX=6MEGTs#epz{qjbnAjN8!bB66J<2Zq?BmM(vkfAa?!iVJAR$6jVX zxV;eR^FW`xAv9Cpk@mtCFy(`d4MGlLJ`wxC&zSu0Y$5vFMz`QeGmeo5Z|vPE;$6ALg0tSB5wC3Z)^#r-ybL)R9?7b#*v_)vUjFY{0N`iIfSYXN{=Y3-mYUyCJkm^931I@Z@Va2OZEq8bW3j;LN(o*nsz2~|7>$sp@ zThx`;Jm1K~Uf&g_l`Wv?uDp@SAo5dAV>(q@uUE^|QdS0O*ae(cE|h;&Kz-o9gL1)q z4{xh|GgGX?$Q6c@rPAWK1&jQkRJ_F$lb$D=&g`gXwN)5xWq>eW0~D=iEkkpJR!pf2 z6sPXUCrwKNP5H=sMVEdG@~t2fUr}%-odw5E=r9D^#nzinC>t7-p`kCySse%{Dt>V9 zk;FNXozjp6OvGM4MGm|<)SV2Blg68F!1T@!040{&J0#_IN}#Z{!%iCEQ0~59&ke== zoN_Ybi~tp=v9*x4)Oexh)3~}G;>+|#DjD1S01+<_#rzO^D0zcVs%BsNhhnWgXFP(S z+6{-*Vi)Izb7Jm*23%C$TbP2$RGW?w53N7FMnI=&Db+!I6)%-IkTr*P9MAV_@ChES zbQU676>vEY14bgu?u|4a#X^UrZ(Djr=MEcpbOlyUR^b(g3{(&sp3mR;SATV!Aqkt9 z&i*#2j3Un06w8Ea(LdF!X|fV=W5eBT27a*hDzb5|9x^V`Y!zDedJ?{-5LF#fA|&x7 z*pw1gKrQaXWS0}?bJu!3tU(FY9Np(X&aP%)oU2 zekG97KkFAuyxw8*@=$5HIg^YqX>`2&ti4dDpVjMm%mpMBPd~z)O-_vB(7lQ2^q$u6 zPIEMZ;@`hPYGVyS5VS26+4so3W7>D+HViUe!kdkAUU8KU-#u@^q^3-}d0^W<1V(o~ zxB4G2RvmEZ1zpUjI#pV1p@~aNet%2g=l<@O1H+!ed%oL?mC7QMt2JJ0Ofs4MUVOSr z!SCdsK34Uw*M7OJ^xsS5?C=PWXMf!NQJ|Z6>K+)bJvCn3Dt~4@*Cey#Hj`-I{8`g& zDe!bRWezBcYgSzyx1^eJI$AU+u1_u^LGIa*DNsiz^y_;SNlrCoJsr%E&|Y7v!ZqWI zf^(;47Z6asaDbM9SNwt70A5U_{(@mP5S~>R>H#KZclr)%g{}w!dIE^YTD&ik=}|;o zei4X#7%h^7f;p~JvSGN-$-GY&$HbaABJVXc+vsR85Gx4H`<>kKY$p8;MJtWgz*8)c zhBTO6vL8Gw)MnagDGB2Bd;6tGm4R&m1%zdHo1$9-Jsf^@OLc6C)NHuDc97;qG{jnk zoPI4U;5h>w_n9lL6M+@B!{QZ|6V036Zq1fde)Z>Be0Ldqru==H9Hr0-))5U`oDoQM zeV&bK0{6>kWyldKPG(JQf-r!@xy$J9MPh}Tf1eQ~m@9|y5=|EQh}wgVN42X!h5oRQVYY^fl2X>z#0WVM@LWXs%Ea-2EPL|9O|AWw#C1a%W?k^I`#E(L zqR-t^eran$My&xu%Snszpo{tsmx><>GeUH*ukp)^AQ@^~!Tw5xM08UNrZwNSyQ`9& z;Py6E?ym5R)`K$mwK@;ZbE}#y_Kv1Bsy>n?E|5h$O10dt8>R;vt9_*(+rjDj!te5_ zRSXK5FIl-1KkM6vD+|yaR_-kucNc#eXtXM?TKa25KVwhzxt8;BfN{5ZwQmQpQs}zP z@$$P$r=>6FgwsBKXO=+YYEh;6ITo065Dj5tC(Uh|U=ODML!?p{LNQ{5ML_SD%RPyz zTxpoCj3Aq-@ypN<$Q71qq->zmQ)VBerR)D_^45z>Pfs64fNI2J_Q=}Na_|e&Oqsg5 z)_w`9|K;Nu;GWAtq2w&|_2pChA3q zJR%M1+>3p>1-32urWFs-ldkYMy9>i1-gm;v`hsY}IdT0~K45H@u|gMZ3MX88?8eVw zeq%7oZG^z>ySq+F(Rf(T8QF}QR!? zW&LiH5r0imEejY{y-SK9lcmEi=hAs&4Xdvk{Q;Bx^}C4RR8MQ<0Cl{E6mi?)&gk>+ z4;yH}oA*iejxPU7KDk0ID3k7eYKm1{u838Bcu8c{#!pGkCC$(2{=#>!n!J9trk&4Prmj{v8tB!UwspLzkvGg3*s`xg9V2sV zgO0Y1R7+9Di3(rKf^UHKuHlkl7|pBZmb(?h^38&$Et1)8*h)pZ1~$8+!;hW@oQNc(|&>VC_am!4UOfo z-|036nQwo0ME8w(U(7%x^ft^3>+!`A+jFsyU7!1X5Le>^;w32}xcFkC98k6z19|6i~8yi;UviyZCt#Oa?9*hXvD#ou$^K8X#4xiIvmaJyq8 z0g|jZ|(1QT^f9aqL!)V4Xxo7Zzu3e)N+Wdj)Br@b17xtjjvD#eNaTt1E@FbQ1)?We^y<`mQslOyqQ0*r!@VJ2`oQjX zpn4?Ie5ExScpGqh*}x2H#Qa_>Nxt{W_vWk0J-i1)J&&UysLEL%R_(C71S3i`(QC!` z7s5jK`B@yF*%tG?v9W$d=v}Nxwk9VCSy7A*kO^Q6q78fy%rrGRTso?H>Z8q`7Tc{5 zpZe_|Pf!)To{Qye)`V~L9>CsT1jR;xZ)zpqHCi5OC%mUtEPTx)mfLVVqN>%|Aa;Op z%*ZWJ|FxL7!XB2HNDUDiZZ};HJbw2snpeii_wbj!DbKOi*hf~8hw;-6#L&1@Fmtq| zuoFZ|`AW?|rnFB%%3_`g|04=yMbl__^Xk_(pB6Qme33+kTcKsw!(;C<_Ttek!l&*} z%~dCwMP_hN<1fiE7xqH(bJ+*EnLbh_RX|J_XR5ks;#W``-!0LsuF9MQ&*9c}oIlG>?m-01!H z(JHgpQ1)Jh=-pJZDh304Lk}RfoCG4!qxrxaN$*E<$p@^@3a8)SwjCVLu&Kxi0HgtC zaa5_4gqMBUNTxdfocD=#vqJuzE;kLq{H|{BEBkq@x7--4}K67D)s>Iolr* zxmS9mN`3`Pl~Il-12B6vwMT7z7%e75U>0pS6#bq*RtREh91hXbV6t zzSg(D%&k4{*aa?3%l9VM#aP{?zF+;g1J72Zz-?wo4cpvF?~S8%}U?Lym((>;3)OtOVy-Ev)i1K#xDC z4{CLhT;v8_YvmpJ=H5Umd>vLDiE8!|t<$*mL2=fJx4#rm(QZ0T5 z8zxk&SS$>Ta&G&Ta&sf`IyEHG4pTs3&f~-j9*vqy-M_RMeT1Afw3$|35Tls30?IwU zZY?r{i?TtAu2YI;w<*?#5DXRDUq8xIr@QK-1tN435l$Mk&y?1p=FJ-xw|%4cd3Ndr zx17hGqj;)qF;y;8R(B)LS!_5FCqKn2#5x-`Gnbmd_X4l6iC;9ITQwjfREGqL z`uzyQ%K*EjIwF64b=vk=x>PpiTIF##q)a87KF&IHJ&&T^E>3lQdt1fq^i^H}#jw() zfcMb8BPW+e6D=h`@Y+7s_2wlL;<{0=wUT#SP$6hLgn1trkrE@S*>DPLV~E=1Gfh`_ zf9Ad{ansXuxjVF)1*9$d@mPL1^3b(oghEp%gh6ZFfx86#(&>6YK79YMb9+_# zMN91_p|zx^&_~C%8^NJ_{XVaPdSXT~Q?VfS_$kaT9TJC+g=;Y0#6=;I7f5z!Cp5-W z?R7eu^Hb{1K7BC~A3h}a1K_*UCuw>S>-UJHZj0XFhz&44_N&E?#uv?AdxK!NHV=a% zJ)L()vVp-cYuu}bg|-ZW$*}aORCfQU z-ujP2j^gxiSPX^lsN59NlG^ekI(L0{?=g&|J?g?kOaT)#vYmdQYD^rHI=ddbaI~>F z^y38&88xb14~Oi8j`z=f5m6*8kLI#$gYAvtU9yi(XSTU75aaJ({M(dcR5J*i5Yoi`S$rADBNCAU)y zC8F-h&Ld(&M^g_QM0Qv0Vu^EEVo9vjuUI@*RwEmDWgZbx!c?wb$MGzo zjJUz3tM{eAS!;$lXZYbveJikx#QIr8M8u9R-ZVA{rW>UBZ=1zLNM~H5xssrovNicA z(<-;8LXv!(y3Vnnw%z>(%EP;*M0&oR;|8X8=dkL!gRMAZGvb!Qo4%(Bbj`kh zSm1Joa)wg$zC3S-`gVfYL(BUtjs ze?|(kG%~N{P=ES@ra;^H?0j5(BHc;)XH4r1^X(T%lYcwvFo0 zBM+@kp-baC$MT{>qnouFPC3f8kZgK8i1iYFCfA(64W&_H_LrM$V4w5e{)Mktum)}H zt07%Kk#PcYd-g;iW@4tm8#i_IM?7Qg7}Ak8=U^=CEA02%p`qJ9?@}o^$B`}s#5zc- zUX5i6Gyl5w8ds3`aOh{hnml6(vkp_DA_@pPcOKE>DiVx7wC~TzlIWR1P#4Bje|HfG zu7mraOZoBFWDi>P?fs^Azi;GGN5hhD*n~T);h9lAsLJt>#^*Rm!-@wU-*v^+h)e{7 zR4B)ZmtPd+n|_s2-I4Gwp@z>saLb@7-MCKg-O=L{WUbSib5dpY0&2kX3I0)c>WV9>v-j;h}#JITJTF(u(Abb0h-{{r((k6+d zZ?j139X8#A2xRSLlgBWhUfx)sH%4d8o`Lg|Y7Cihsls=z*wSXtlQ`1*C_(T;su?p< zCgK^S29|Vq%@Co(Sn2vl zD6K=^s$V?SMqGyD#02vY_vfZMc$vGleb5i%v77GJ<;Z1QT0c%e`y}# zok_sWlOj4X)vtX*3~VPx(^U6**yixt(bV8kkdzc>x3i37kgI_uZFw&q-DE+6lJF6p z57-N=6eKbM&e$YPR-4L(HjdJ6)E2oZdV-(%EfK(cbzWZD;6laS<_3_h|HCj}*SpE@ z;^sA{{p-)HP!$^sBX?h^w$07mJ8hHEIOKGEIHBa=kPto?Ouu+5#A?U}5=#Q|u~naJ z7`|&o7XK2hWp@{YKrwDUJ@8$(yX{w5^1F44eqAB6Y2BKa=XbDtQ;Nj~XN^bMDE&uk zU&0K&KrUIYdlnTHod*~Tqwq@Sb!Rjb?Bgnj@ zeot@pJT4B=^~h#N3@-Kb>3XBacT9am1k&~57Wj16qWQ~PXeM*MHQ}$M;5Bl%!sqv9 zFP^G#=sb(;SGN;ky-~LP58VP_wn>Ww8nngynd8JS@^FI!Wm31$qfF$CSHJ3@u?Gr^ z558ry#*2q5uTs$2NwB||lBd8?U;-$7N?2J@F~1~Zdf&CjiIFEFNN{e2QeTm3EPan| zb~#=2)6z?V3fFwqCYEnbGfIlT63mX(=JYyQ@;d>K4l9T*`^7q=-PH_ns)|zN%^h?n z^Ri=0`0uw|*Rm_YXww9&J8tVTl+Q;-pSFw;r7J8Qiw-jG<)y zh4Nb1RgNhNT7N|)6p6aoeMB56J>}hfI0PlW<0q=XfGmfZh$}BKl3r#89?4&})UYMT zr&2K2CDH>Jy&bA_dxMh|%r@ggNkk66`dr*r==H9OZ}nPUPGUL;QO)d0;z=+p0C~w{NKf=h(wL#TW}Z#nO9-LoP~c)hX2OyW+Q4 z2}E_z<@BE*?nQ)4R1J=1sn1nA-maSWb?f^tHUJsEBB!&yQB4z4u60gx#;>}u%Jw#H z-A|@jrN^xy-;Jz;&Y?$ed-x=_EO~dYXN`HHymRGY#@;YHo+g?UV;pVJxb4^=XBsGi zBf}-=A`1kkzk9e|HCte4mmpFd@z(YaimW{k6Cm{<=gp$Qt)M5$B6Uh#-?GOiv%BNQ zw|8{BQL!g2dHvKAE6a{lV+u9YD+swIh{B)zvt#22tTl}E3AU&AL`RagTn7@V2b3KF zK)TOEao@d36d)P|sNVVb0J4ZwJ|+Yf%uXnu=}XzgEmM-VDeS%tMhqoWie{~->iGui z23*2-jbaq$C5nM8z#Hq%H_A~l8#yYB6;GvHIbFPDta_t|mp)%n?S$z^zsFVEoYSv- zOXoqCKHcH*DPp>?amw;NZT^(9OC2L&NLR#Nlnr4osluYt5q9{poe3(>avda^L=hro zo1WHWMFgx{O5OHQ8Qnd&z)H$;@r5OSDz3<)ju;V=)&k8c^!ecG*Ac!M>dn{lq4}At zW4POj(d0mC(KTdzp5~Kmd}GNfQL$OrE-V?DoJCRYGX|~zJq4KYtUR2yo{W^acYy`# zhVb|vMjM1~4!41i(JF$Eubs~r$6V00t1T~m7Z{`_-qzo20u!|SPtq6>gz!fLqNyk@ z;h4v+j8@It7D1Vw^;~#qpbOw_XLDN^q+S%C>e*dW2UUX4*EdkU-VeF{^BnC7>JGFe zGH^w@tGP}8=*&runb^TzB`4DUWy0HTCn{ko!ycqUkRMQlu{iwczH_1mR;c;rxtEZJ z?W_t^9Jz&QYJNA1HA#z(vhKp3dh>el-GKDkaLrf0k3Zi}ua+B#V7WCIO zne|e%3u#jn-ChjM)}yI894}zB>|bB^73Pq?HcCOX%Hn9(3%AxNQc99?h{-u7NB7CXVUp48QN(!jt4Rx~ z2@qJxRl}YkclnyndUv$k?D=WV`%wV3>@VB>KRsJuFTE zzLz{waDX*TG>2fge>P<<&ge*Y4rjeHlQNG^`80Hz`%Opc&B_}q{BzO8DOGfL0_85RyuI;l+xW@apX8ll8R#I~Zh2$QNM;Q?5Vq{tj#|+7Zko5` zC+{*bS9|UJnPDBc5^4oLVy@l1mGLdo>DExMw@z!V)J@^v4I;e?lu9fC|$z{!L0T$C7PJ z(T;JI69p4L3SX#A(bP*M48kupbXz>%((k7LE@|>szaaMJa?Os$6s` zBWZ+NeMR?I&6-(z2y3GM{P5pR*2R8et%+f7ZYDRCDGrG4PLm^AYyKCu6Bsf1mnaV{$~)_iNFkqbgAdN}X-7 zo(Vo%WF`ikADX3_Pizun={hEIK6CtcyJ^_lW)eY&X<1pM6o4Czv;irkkHPM~!nSq9 zlQvxJ=kQ6?Jn(Iw3|V+xYE95@JMEv|bk&-y8VAGeDLz~L9}9;Apvng!zLGUDk+??( ziIXoNup#m-gs6%9ubut_^SWVu;5+z!%KrMFv;BUE=?H5poUcr{{m+iQ|HfRg*RbZ{ zQB?k#|J8i=-;++zz`?Wqf3c9gOHYieUqcTr+caV3LH7^L77dFZ?@NB!(F+S_PEJlDC^`;5T6|?m zR=lXJtW;e<-zn}i&54R~pFDhde&`nVktuJC8DEi&ps@DJoikM_Z>)!#xKf0SkT9oh z#n?66o-3uwnP}tbU6Fv%5fJBWMU*GKk>_Dx1eKkwt@kc)I?}VR%sFF&c*9zz_(6^8 z^=8|;wSiCt#p*-+!>4SwP9@eX+tgGdmv*vpp0X={v>hstJlH&q{$y-zWkuwi$rHgN z;UP7<^CNU@$_938gJvYp4}90;HUk=!{ijCL${};4IiuC zOU@T236SBfG0x7YQ?fwPo(IkstD@TH{4|N@!dblmqW?uyCqfZR>5%F+$M+irU+6!Mn`?p4#g*=fo5_K@?IhHw4Y)-~9=Qv7 z5%cg!b)S(P!6fJ5<%LXcrWOr!j|BOgkOkso;s2cKQQIJi5M^zh)--%%!hRmtlnNK=*C^A-b#jeRS)zT4v@}L^p{0vHwOOl@5iHI0qYY;u4p^WLaI#Q zJ4Gxs+qPblgAL}VyZbIMO6>TTSFthc7;|>)PZDEfSNXOd^A9!{p9U5Qj?!SAqO&%# zm-;$c>w*DdMT1$LlWt0ZqMrj)bRuC;9S24A7wy%6BwVf^##Tx;AvPOt`J<_wQd4#_l{Yn9$ql9FYiJPAkd-NTc|-xkEjXITX2rMKbt@kOhnV~ zMw@baans|PEt-9?t7&3>&atwQT`B4xTYT(RTM3*)`m@t}uoT4_luT5u<>ov=w4ivz zTPmvZJj|9mpu>6j&|X@jXTnB!0o`kDN)ts zi5vN7FjeF;p|ttgyphg^iuVmZAw^5m)Yabpoc&L%{op_TKgxiu?ffeK@T*Cfe`e{v z?6aGAX#1cvW7BE|>k9rb$aHMm`+*(`#T!2Le(2ABww0&#-H%} zLdG4q5(~Z#z5f?C5u^W&UB7OmLj=X1ay8p3YZLO4Ohn8i%6O8#=-EM7)wu8bAF0~W zxjEYNe}yRwZlAo|bDOVxQW%WXUa?taonQgh8gf;)#hGa2GxL7gMZDhw0%fWzsuJG- zRrYmhNNhXo5ZSmjiYb^&VC1LY9Ce$RJ#@0W^3#p#qh{kH&I_unS0ZoP~gXK7g z6!k71^q+j*F0ewYt{;IMj>h#=dd|xqE{g3fE;4{T2OWTkG(CZF z20&1cf)mjx)D6r3ODNBAg)us<74i2N2*24nEW8~h@OdzW;9rF7Pktv>jS~cyawHse z^WUQDZ}|ldrGN__C5V3c(MIV1zWE=1`Tw6O0u&lZqmlnamH)buG&Y zoICNHVqC0%^RS;TM53N)K7t8b{}uDJ-}m$%H(u(86+G2-1{O`4*$SJ<{%eDe*e#ALd6dO!02P5(By#b@b!R8WV0Ga&$46u$#m!%`IJyb?l#*<#K|6@G^cTRKsVvPn9O@XF(+g#8x17`HZYjz26G23@WQ>hSsD(=suI~TP>uIcsb z4y3E~%f-h~dD*o+tgWmjS%EGXnSP`E;vnUUmK%LL2fKpoWgp&hg9a8uaO)k7N`@H5 z(>lCucLA@O17v#uL=JZk=)5^Y=#E;sm|`s1_{qSLlomEtmY2`;)=G5O+LM&%_QCn_d?7!r0_hi3c}n&V*UEoFUEQ)YI| zu@z|C+q~-0Kkg2BCmb7A1a>wC2a%-3j8$0;BQ2MOdQw2lLyoI$k5^%$LUK^wZM-{* z!T$an!IMT|a$#Kwd3n^wzJ_*^_j{IVC$IuD&nDyH0HlEX7tfU2ZShB*2K)z8;`ZfL zet0>(YKUJPbo>;p1ZNKyGmOIjZ;1TYfP5Y0thoKKqWSAdtA zMP*@OsOQm=`0;Tjmyi0(kqrI>cQbcGHb!RV!c+fU^!v(e2-n=Z_FCQ9RtRJ}@cMGJ zt@UB=$1A6tl@;UtId}@B3r%|y!QG>p!W)51mDR1FV?kH}HhH!y;qjFf74WiGyEAsZ zct@<*`A_w&z8MD!aT4U3Axo^)qVnkub{3P@p#^7KI+utr! zRnw(Lmn%{5DlOt%xR&|Trr;_?)&cSGYl$;oNCfSkD$q9(2??o1uShjrrM+?2skFTO zy6Dcy(0Aa?)oik3k zrLpf2`y{NDO)_0 z3~zD;q6 zL6x}dF}n=wrDbv+dwKHYz#Cw>?NJMaKIMQeP_j>lWF`hUd-G4!*`?=a4Os|Up-=4r z3H<}MWuj+_o0-+>P`3cit(~p$Sl|`aDz)uHSFA`L?}|4kISDFxoZeS?v{Svb>W%DE zybb_ejVaA{F#sW~dlmxy-#7U8IIb1}{WYJMXzL}*2H3u$Nx(*M*~x4C>TQI{fg^nce*PU&Q>FB62TKoQh{3 zlIuO<;vgtYDCt+)-zM5fQnBr!nY7_HzoNU^FLJR;^V_8qIO`_0TMDP|Y%72f$jJ_# ze+o6!^zdO_;<1?-pN1BhETn(B>oYU!weZ=f2~D1XDd~FUJa5mik2*kkc z?&1hre2N>7lY^WXBgg5g%FNgJvbs4w_ss3Ogay7;q&rzW?Uz?p!rRINpcW#;L_w<9 zVF}!*+A4B^?V0^VZPUDbXVMt=b5sLTgpQD70Y3EqgD9|bT*q1~sTX~mHxiewJySr* zw7)shOH4|_TpYT}`P2no>%lx9MM-|tI_*`H6yJ(w)L zis!&-#Y72;SowHH_8(6AC*6|3{Jwa6HBLrWL>ubeYdTP_(r4x{{IK?6|F^Md$!iBRHV^hh58Q zMeXv!3~`)iUqhR;Wwi&QPpg!%pxVCsQP9u$I3a|P9id12nu7j@cspFx)8n}%8IMyE zkmtNjtK2VkLw+VM(%VJj{Up)4puw^7f)+$XtXK2>5+&l{LCx87;sp+tAJ>;u`pr=Q zU*eXLK>y^Zv4K&imfJeDw=wEb@=5|H$OK1g^3&?ziZf0k=%hpZArg5ek)31g}9_~i2hHxU8mWK{2@K}m8)Ha6o< z)Ss0bIoJSf>pxzg|Jyo7jRqgE<2{%L!Q{^fGm(KOSc3xorhyLOv$JyQt2J6 zg4(*ESHe+_m~g=ewBMbU1vX}FM!b9vHr4Or=8>cNzZjX?bZ5Vr8@UV|S6xjjSWJ9RQi%~DewQ1K#7~t zuEf-3J>}5cbND@YvlD1R=!S^;7G@?y*rRSl`3r4wGJlip^ZrwIs}tjNp%(sFQc$43XHAznijLF?Ew;S znyz)^|F+MINnrM8Jt+?s|DZc*OZ!X^-*n_qm2(pd@E=HX4Or@KhqIRY&~(J4F!b>1 z`o`(GC!y_c{(zYX2Th4f$RxSawbs!Yzgov`mI{h~OGEImp~oA$<##pFM~yW;yE;6q zByc#)8IaJj=;3jFb-StR4W@-jsl2NYkJC2m%{#3!o5h>sETa|>AAHP>;7kx1OtU&L z7EwSp;g_SHfhcmBce-||E)?%f5;L?rwA@0t?weYMCt0LAG^5auL`V51Dgd`=f1My4 zfCEtUVZIa-D&#~|O{>1s%_!Ww;$^<_;X(6_<~{Y-AnYs{bXks#{oqv%O>CDWuP90H-^oXDE9$fcJdiQ(N!P zjb|8;6<*XudL`4P4RvCm<(i!O8@VG#o`t7F)%~^h?(ii9m_+P|*XH)Bk@@DPBNcDO z|D6NdluM*SSAVLZ9t_2r?s3ZD|C9)V6KPFZ^a=!!it-QxMQq(|3-G3#e_07^zLip} zyF&uPXyCLwxnTF6=uLe?gHF{{Ye4SUz`zYqrl-cqiBNUo@d*Pc2kT0jci8Srf`^M# zq0u|#18w!?UiN}Mc2mI#d;Zd51k7M=nTxjX5==W2=_f1G&L9b$wp{LQM6%|U4k|FP zuzZ#3{&DZSKp}%F0){XMsOjv|m+ZP%a zPY*p5su(q z^a1O#Ti_$l$SQ3#jc2DwVy#wwkF4aImN)_!*7S?8VPb#ucQ@#d5#GlcAN@`Dq%p%!Oblq=C0sr#^FX{=X$Ut0nd@ z_o4})aWQZc;TZT%b)ySq5`fRu@Yp`W<gx#Rl-#H;Nr#joUneG)jWSg1+bp*Tf zJwwZ2x12>8Et4$1()cgKDS99U3)64#d_N9fSpVCEQ2aHBSel9ZzF+}8#2kj~s8Stf zRbNK%{e>%rzm1z27t>f-S%nHnkz{5D_HF1jWK%u&WcjftA+UKh^=$Mu8WSqukD!8& zDvJ&EN7HL^eFLjfGz&u&RD~Sxcl*UuPd`Xl7NFfLi7+Hx9+IGKNL>^m-t6xf7Q%Z0 zFlD&nSok+V{!8pvqa4RF!(D6qg5AT7?xkWK)(+Pn+E?RL7`;hO1ErsNk+|4rFG7>` zbjXf>p<>{fWoqL%I6n(bL)3ftm(B;8QS7c?Jgqtj_J~ zQ~Oc=CvI99k3h=oZpWQ^&W{s>oYpr3Fe7q8YuJRyKh?}|%3#xQ-h+?;eKIoR@WA(T&7$A z)*c5gJb<0*{Z_wPngI9NPz{WmE-dITG`U&NwJD{GFk7s2g*}_)iu~gXTutXohV~{E zSyA~e9#)~j#Ke$~AxuWqT;!`$V?vTDSZZ_T+5Xk>H%IfEeVHF)ne=PJR|0oQRC!ux zF@NjHnvLJQHA&q%V)LDmR><-hn1WR|_B%cu)v6&Py}M~DyA02NL0blMJz?eZ0JSk%mvbdeomd~m&w$dKehM9p1V?1~O`Vth9VFlk7dP)jr(|%x--e#oI1;kF5^wr`g&>gly~QHT=CgD;hFm~^Pk>l(Cxd+R z8nU;^9S9%?5#S+a9S+2LdElhDJ2IbZIu*_|wNlyUKQdT$-tn`^`TBgiJ^BLLbGH)R zXRNE;-#x_3OqNSEzq)j!qzJD3%?tm!NC7^Vf!JQ>u>tFHgQ++bIm2mqq_bx*p*#m0 z01LWD+aDlk_m=KAzj!v342*GgbK4r23@jFqD7=)Ps1Pj97sozr+%(YC*52_7$wylC z0gv_2Swp#p+$l>d{fV7bRaM8uV465{pyfr3|7RC5BLzFh!j6idDu4fp^8D zUGlImnV=$%9u*|y6Nt6{R{D)P>xnqVsE)F>gUkWpbu!V|k1pG(qxqWsw6aR{{@*}6 z)%g+m*`$ZrLaje;im+6oWwY?xH8w)ohCst0D!FhHc=o-@gKE2;>!wVn`=j+tu5oJ} zf2Zo~4yBZroa%P!CUj)sCADddTVZg71V_cV|B?EqRmqvl^gUGUqV)=R2}(y<`49jl zDr=eGm6s7~quGy%)z#G!q`S|UzKo;`^4gH1CssKb?b-UAe-kY3qQ&uf+5M-usF__! zf@`*)A1ktxzO`Jxcs#x8e138%<78|cMAyHMc!vntvCcdmXbwy@kxZ}wL9P@ylESY& z@bs65WD|T_1w#1%)tCB#!*V4qChxPU^Y26>zEp+U;QU4CVJ7g7VicQ~`}qQ_3$(V^ z2Um;>$1->1IaUBw;cK0Pqod~sWtKi8Jr^IQ*AWXbV( z1QN}aCG!d4gOg+1^f<|a9BOo;`%J;e|19df%t&{{)pg}6wc;C?%@T2e;REo6b+gwg zIv*r-i1ku&Xk;L_W>jd3HQGyL@lsEW7<*bV$J-b+RpBGrW|vPZbiY-KWqZmXjFFQ* z7F7nDF*JHpWW7zEM-q3<;!v#?`9EOsC$-oRGyPSnb(LgaQ8f5@EppF|JZkl6?D2~= zOEROWoda7kng1R|weGi0^t(csfFvs0jb6D9zRX@FA-Ch<;hBVroCOK_bv*f@%H%2H{Ek-azh6MN~QG1)QLI>5hb0q}`GfXU7jyJCKzCbH^? z+*ckaXxptWm!5no=@+!>8Geq>Xdn{uP~@YS@L8Y3Q-=-k{^*6;zh#2Iyd?!f@L4my zi^mNb28aC{A^t`!re|5O(o^>jicl0!I&$VLkD<(_`_eL-lMMa~iyylL?YM^z*T@A! zINDIZI^3mhUL)2bc<9a3!~RF`YCbnvfE*eD%b75fW2Nsqtv~jcyp=Aq+O7tVf6udV zZw<}ticAR$-m3Q~kr4b6tj0lv&|z_)T#NW$J1e&~p4;XAQTL&uuFg`)Sm^So=IYQ7 zm|q+P6HQ#)f1BQpombcAuiM(sd(*GhVL$;6Tik2V-P39R!E5vN!_S{V@u3+mt1AIl z!&75O!pIQ^)Ncbl-`Lg;{v4@yw1KH-7u?4%Y1Y%2ozn``-RL|xrchx@jtQ4!2;cuV zN&a6D%fnaY~bN0tGt&s;Xg)TJtKaLG)#nTnO_ER51dBsGob5%{z z_i6XInIDHG5mJ6HdP#OkXTS_*U|p3-tnusiTvJO+ev^@Lz^rZ} zXjw%zmMkBZ2|5L%?ivCRFw6#wuQnxL(lH7Xctlee7e)y}U2u8- z>TjTE8XhE)|DhTL{1|mt6LJE2C4kw*+@Kg$WVa}>+)PH%*AYQD6ICiE_K2V|{R^vo zrXsqv5=KGQ%a4x^C<8mcd=xtw7LtBhRku(a5L-QA|CvE9et0-ekAWzlq_%Q83R@%S z*OK7b%fJ7o6hJ@&9*?OhcJld7uQJ4(mRp}B^)vo+lR!!R{ObM~Djsa2KgrLR4`TXl zsY;es(vG&vLG&x1gI*@+(JP)Xp43>dp#%+#N7_954|^zJ3m!(z)=66H{a~?k8>!JK zJMR8xfWljZ=hnEN$;uL$)h5m;WRk)*O1O+*^OXH0LR2VIvkXKDDm}vIL;R17L5|4+ zZ+?>azNVKco4tX@$|INZ&#Ag8;yCs6-l8fRiGBb|efQ%hMB&sj<4;IZp4V3QWV$qa z*`YfrWAq;`0E;!F&Ed9?X&J78B;=5j+yHxrQi;nPr!UI0geAQW zpzU9%jp@e|x<4!)>Wlbu4l3;aZv({avCf}HjY!&>=VIXCt?XD-F`B6h1ModN*+)^} z*?K$FNdB`AL1GrD-HdyE-^<4lRB9)P-RObq!WR8md`Bf!e0#O^>JLTD;l7?dc>>da z`q9ZzY_9b=qBZKX4ErkPkf8m8gGHQU0L(<2`jx=Ix$Q7L995OW&lB__}>sZID`t*Lepe4YEg^giCry1?Xs*YrHOdDW>iFs5s5+{$HB6CS)v5{QVQ>}55@jUje4$}p}O7^H7tj&l@}%3%=A)6%vk zve|Yh@?|c*kpiyws9Hw)?}t(X^FON+XaEVyO7HH6pL1+0Qz%05Mcc3Ra6b^{EM=3lKpLeMn8;k6}M6xYdAD(x!y?$_(EoAY@9ZsBQAc`IcK!$&-g8lIK6~V@V z2rq~>yVZfgQy(5VdfxTLsnOVxV8d}s6mQuM{;0iW^{$vGRP#KJ?w(32xjS{q`N;6w z_C;Qepwu&11ifK=q0O%C%-M5g5?gL?NpZXiPPOJ`IOUgsgFpx>5(h^IHS2jcbVrx5GG#TJ}J&6#a$1d=UmNV6Mmu9CpHN#YwB_k#l4=Oc!wQX0W$1W$5U%n}gpv0SfP6jGX?9acgHNm&oazne^T3x*M zk#8Ww{UzZ+>h-ohgZC=&oa}=y;Mrty)L#CdDT_0Mv@0Fl6_^(C)pAv`R2%owOVwz5+ER4v z*8tcIC@}w@rHk(Ia(#%64y8azV)ob=#X@iNsKB9 zr)gfGJ zP&YTvOdNCInOeGwEI9VC7kS~sf*uq^jMA9tG-=aChFHwG*KgZL*I{!-Qln+Ih7JxuZOorB4_1JA4DI|mSD*6WhHsG8A22t>k_@AcI_=+(gFDyTSW zYLqX1lphROXt90PdcGh!uC8sF|7EC+uCVp)e#jX9{rxciRnseU+YHJk+P}W>q}&uHHMy=i~(tf-X#$-^O0}wpBxl`vVEhp4FgCDLDq6V$(&D@n_(@XN(+VBfEO2+ z5hk#1M+Qbf03hcz=FO%`$HXqVx$*7K1a`sb;x^usK-&Cg*anC%H`^55VS4VKFbeb^ zUKaH%F&%5#<%dHFHj|tqfyV2 zJz{qq^K>~fG!>g2c%k;=>63xY>`CU;%pvrGbcY*G7_b&b)}r{(y(dXUc%yp%r$?L>p9oe|JN{baui&=r15CpWriy6 z?QP&VtiT;*ujOf$c;`q%hwYTL!Uh@0aiuX!#PBie^j#Wl-euN96WabUugP`H*5%N9 z*Dw$UYx^3uowIX(^sAXkNsOnjy3~fXTbhIT`SA06V>8UJ3Xca%&&}-4yloAf*%bC) z`-gx?{f3>$a$-fUzd8JcBoVb5b&Vpoma~Oqzb*1&>hq2TcZaWxt z{F7+>>mFQ;wPtxcsq`^l-(A3Q`e6M-Uo<0VNVHv|^dpF@{c`j$@cKNw)orXV1 zi(+NY*RM3sxtYN~BUwP9k*e{dV>tP!tAU4Fwhu=&$&t2wgEITx8GDDvFuEBW?DY%t zI}alsTvxiM=mJt&_odm)kx$}Rni*nTZGG(%=KqJfe~hlQTiSrp7@dxtbZpzUZKq>f z9VZ>zwr$%+$41Atc~$L|zzlDzRYdb~#({|H; zaKNBvR!I(h&MkEF$E%72Gcy)sAhbyZ+fivwPKaBZgOp=@08e+0?^gp9eOFg9jhEno z#HPgqv9F;7c z+CtwEB8P_iK0Y0bR{M>=ATpJ4%`Wma;+1v=7DPYq5&!LfB!!rM_Jzg+)#7Oa!XRA_ zZRr6yY|Nc*&(FyLIwI%u$IPyqeK~>~xj$b4RB%?2WtT%I%1C}=W1<_@wIJeNzhTxr zkh3OEX5HCW3Jxkq`hq@UM3&_YUiQLh&^W7SCqrdXxF4RqTu>1~zT>|ME%O5>z7%C2 zOp=GB0Xmm9g+6HG*HqbKNa*4D7kdnH?_xb$y zT>(ajK{T_lDCoj9o`Y=-DH?*%kPvDIC9DxuGVD|*vocG|IwTjvZ_=bO2(#t8zq<=j zL%$DmesXVX4~^DwSV5gt-hiR)h=9Z6g`{YN`zm}YP8y1)VbD>yx^6R-t&^wEVCZkt6T2J^)8uWw)&FoW7YX4 zvYV5x!Zo{vRY@^V_Ibi={b0gx$7DTW&dw-F$ua*gzJFMY4P_$HTYEbYJxeoog2MfM zRB?a8Rve^lAziRRSSMggXH;fvf=mXzed&~;^WIqj>F z6A{g69j+W^06aNu&g`tB?P^;io+MEuuE$;Pcd-MRG;S3zjMmt$*Y|As`vI)W=g+s- z@CM6aR`cxQr>=(+K0t=(V<$7J!(}q~ZZ8`z79_w;t`FeNWB5<2RL#@ck(MNhhU{*;8H%5SP<&W}CA@l6l(b1MbFVLrN-w%lR zF$De=o<9a9UmhO4r5z6@@R|l@ZzPZ1=0=ZO`c2?=^=)*sQa-pe##+^+ahk&J!FZA= z^86O(=Ox>{46J+o`v_n9&{f4>X_J+}80cpTlYKDfe0X}Usw_Yvx4cFfFy^^``IT|Fyqp}y9g*J?mUcWP*9d94)tL&nRpnt zU@n^R50olwh~bVBr7G!*e(ew56B30;tHZ$B{s$S}XEe-sfYU=0>nUgDDIKWc-&&r(T( z@A&?MyQ&7uW_zWPVQ=4{qRXFP-r5gl%QTFlkIJ?suuS%g!?*qBQhR#B>JHpW)x+e1 zx#NNTUYhubQucD$0_sz+!0>uf~ zKhOgp_MrA_YC=0XKQ5Z6u%bvA+8doC{!N{s>87lwD?soEx~^!YVTJzmaGRi>O{V2Z zM5EzVfpR`p1SENg{=ok%>P^@3LcN>sFB2>Co13DbprC>&bF&Gnr3ofjD9@T&njO!u zqM$T9_g~Gkr{A4+AubuFhr;Q&g+N)kR?b<+kWPWqq)7quu-k3B1vopiA|QxRlOy5> z1bBnRNc;HtC&5ls@rq|*sKi6bRcZ=iCg@T}XOq4OP#7%m9e^+~aFHCK@s-%&k;DVi zZbh5ITK{mwib+7>x?HX{#f8NgqzogYlO*00EV_D^nXX$`SxIyOy;?T!te62K2em}O z@V{Wnv(PMWU_%443?Uyb3tMl|6?Ap|peC+KP;uG3>v)e= ze^P%mHZV&Z-Z{C>=w-R7M}TBVz`~LpWjIb31EQy4E!=2bZu^}SS3GR|98r*Wn)mto z=JYy1JE8L|(dxo9)W(L}Xsv!;NK6TX{|6EqzYzM*h>-@V5Z}3?>70yj#yi<_zYC%s zR5@MV$gk%$qXBftEMT;+*~L2e{Or1L`R6;USCdEapapTBoE!w& zLE7L*Uo@YlOebMn^)S{T%1+zvaKT8|=@NY9`5_1HS>|9*(!x*w?OH>z4vjMxF6*tf zQ0jNDO=c@!Urp%wPA_RF-+Gi*wVIX~fFein)#lUuF6@g$?!@yPOlT?v%SE~o6M!;Y z%r}GoFVeu5UlO^5%Rb==Rl;L;!RHsixgC$>z7xq-TU%Qfb$_07n6J`_AwOV5%R9B} zWa(UTLB6@|Tn87JcXY)DzrJ`Jr*`ww?w_7nJRT(5+M#Si`uKDwtS>A`$Oa2#fxqJC zNP1@oD2dGx?4f)mt0DIO z2jKk+IQc;#nyEYbzeL?p(oU+!h|bw6pa~1xlR&!xuH8W~#Y4xX9i6=%@&D$#{|^a* z$lwoQ2LDcbQ3|j=I1Cx-7;*>!=eFlRjELgUPg4%mf55eX0k#_5X4!e|8iKN6kVAePvxjTr8O(DvDEw$GyB9-aY2oUg(ZuXnu{r6e@w_W!=fo6Y! zIO>^u72PiepyyFGX$c9$m_a@pE+&jf21k?ZGr%uc@xVC$|Mv?f)3HkScZ(FB%VsRi zZbb@@&M;D5{y;q#0UWOw$l>hx{1cT^m2bJVJF*>a9brasO~lWCj`a- z^|PuE%4*|?R^3qLPn(%c!xlRK6O!q(gUGhWyS#g2b5u_Ku7mZ6`1yU}`2vK|2qSnh zIRvs*X1!?!;%%FiNh`EgKa&!$U=??)^Z#)v0=~(kFPC)t@+y8=QH>lU=MZRs-_VG7 zRC!qlDtAWEYEOXDg`sKfg zzL*;@n@??0no`VfsCO@{mSeX-KnU_wenXM4PIrSsh7Qw!Gg|M%oozvz&0O*kUE08& zMeW_X&1wfIXE3bIr~5`|l5SBX*9ei{`A?V=QwBzxk|?^Al}5|5_1kGKeT@L9=%mrt zg$%+EAVnrMY>FMDE&JBkkChoj*(EO%C?#d~Ips)mIQiN$UPiFWJ~*TGQv3?73Hdw(b#)_-|3; zt|&BV`d=B6po#m(qnz7$Ua)X4`qh~(Ss3!ls}o;9W$3V9G}mSh^ITn4I*c)#g!Rlm9gkVoj?7)zjgjWf(pm;JDtX=D7u-Ev@ALMine|cz&R<`w8-~ry6Kj)WF+&ZIM;}}q46ygLHk{9HA;{<1qi0U15hLcIrYTL_Wuu!u0|dy~P{f?I zLrZFM<2hV>e8kJJhf9wEHHTCm;NxqnyLm#BLjGH4Wxa@=T|bILV`Fizqvw*PzfANW za~sSUVjC0Yk>LQy9~KaU?URQsA4%>o8l<5<&EItfnpdZV%%@GQ34D$CNP|(OUmyIu zzGp8ti--D5M64)mZ*MU?r<;)(g6ZeoW4wX?6WxJ>b-8{goy6wDxa)UZ<>IntMqnRb zaAe=P3xo~oRg9L{!58{qZQcYW?K=T)u&cZMrQ zM45CqwY4GScnU`zI}ikmGSs*zmj{uD+raN#!R9lYe5P!dYXDEHYAvz@FR37Y5r^E*{(2d zXiEucgac9nh~l}J=;a4%>>V}bOruarkfFM+?P!i#VYRVwf!VQaz_Nz zWqd%TPz%yO04+a0H1q_LlB&;k{YPeTsMsK<8<(8$!FWgUMC>MdXbv9kt9V8BA>t>u zIb7|*mXzR#A#jX!6~a2ZuUL&j*cLmPlC&xA8)dr`80-&kq0btS?P9UByl>6qazZBg zNfv_%decXOy2$oT)APE~eBq>6f?s^G;oxK_9`=U0pa#-_V6>WCsASsgDUYRv=3a^R zAz>WfD0OsYsf$+9D(C5hdq3KE>zdR@W@qVy#j#gB&h{EOMt|IxEQDgKB^MDHCMgKh z$r3p#aHfV$BHv8IrKZyvyZ^qHenuqn z#6{~L2V+)@N1$Sm)_lDDb0WfP`iqOFNPf(HAw7s^d*5e=_TgywwlMPEIJ2E_1Jy{2 zHpawO7oz6o5~U!DKk7;zx2m1u$5EF>_0*^ZtJf%2xvSmnP-Hh<=j^cx! z!Y!NCB7FR*l0m)fI^YV#n)C4*)#u6r!{Rf~*+k}H-i_ig!eT=?=bYueCKsa3)_aE8 z=~msgJFjQeG+VlCRQCyKHkl%E7s~~3d9*A&=05Ix2F)(>O1uxTj^`o39&;&Ad$*x#l>TuI5@VhNMhJk zXs0N3*X}>F^})9Bx!+X4fzjGnH(IkSs?%iwRTCwB#cmwEy}S<}&TJg#DS3Dm@Il@| z&@L$d(#ikLS^V3RLW}r{)M2827-+V@s&@{f*#(8zUk4G$tB+zsOCviLfG*`9^>+IN7W^lb^JW^UC>sFw#V zo10Y%${%-aX)kB$V z*TqA|ab{by?3|cyjBa)fFqul-Ou{olvR^T^pt{up+_!4uwiax4q^#DgN--RDvuX-nhLE+ zwBmEPNllp8=G?L9aNPCDobXQMylg6R818X}l)w%DR}b^ANFgquXZmB4Cb9%(F@r-zl)x8O zbmg9BYEJL-)K+Ky7v@H3Wk=R#rO$Z*wyYdk)EDgxo+syd0{U? zKB&4L`r^;pbfUnzgp1;P4(L#Pmg5j&K&v7pJ2Ya!H$P4WxS&d6fnW^NFLdP!$0UQ^zDlCD(|O zW4ISc@;8Lj^V&%?0~|4M6Q(2PyF0dcm_TT}^fI-h3kY^!u+Pf?rcR7Kyg zWs_EB4hyCSP`*bq2%!P3*sv1`mBlwVe{)7KfT4$0Cq&fGt@wTpP0808M@d^jsC0ak z1Qp_%UI~lFc|F8X_IlJ3GK6evi&PJg>V&S?DqN=>PWS)E6B+RHH-0*(oTlg%w;=zH z_sR3D`f|m@PzBr#1H$zkk$hx6j%+*d61v*D@fQp>b(e&~%E3r`)=aS2pmnBL{Z-73Cyz=9c{i>W-QxXiCn~!EeKfOC zt-ZkgFO+>bIEr+aGYUKaW^x7DnbCdxZGWu7T^%r%tfru9%{qD++ww}`*h3>q_IP$) z)YcrWaGONBqHsn@LVq`}9J{sCUcRTz{%ZlA4ljsYOmRdfOzwxQ)H4d&8Cl8Ut~$)G7bwsZ9D%+8G9~ zm)TTs%DQz4SFr8&cD7^ABBRl~LSw6j%6 z_=w&7b)e1D)(W0R@y2O;uIQ_*^?@@OM;wEeqv>}2_n#QYZh;6uUXyG$bj6RW>kYR7 zKM$V4KDV8=5Cb~kLH&e@djzq%XTxVp-zp?2)fJ`91O22x2kNbxRIwYa&5GIG=o9(-;{{D&Fwbat|XRUgKqsHG-cb!b2J>co=;0*iV1+ZsAjUXjWK9al8w zUrz45gLNoT*0gPWk}U3G32vN^ENxP^x`uZeCpV}*Z>E;YRJmG496H|Omay$UN0=h) z`BwL%7kQe`S_!&~M73;)r(y19K0hLibPOq^J~Co1qYKZ(v#7e!NV?kCKlo7!>~Bux zyF7F8~Z@OkEjpM7-81?XhWM&O;*&gC8er>R@T z1dQ-$Cks{E)Xsj8l10+}n%jq&?ckHXO;|Twf`j(f5&`?}9axuU(5VJ=*3@!bl`I&Z zM!lm`t1oV5#Ngl+<4b7yu=WPV{}2iq(8G_f0aa7e^l9r+s5UjAO{t+M*~)Y~qHOZ8 z8D48a4C(X9 zpYcGNR7jPDgA3lRy4nwztFRCj*8UMUWOvASBb&r$)R8@-V5wZHA?~qN=fL$FqI>zl zM6x(%$Qzw@BmDREsyEW-GtcZTwsxS*_HiyKvW!{n^s{*jRnfVx7A#q4q>N z=(RRmN7DnTwFbwSO#MYX+Eh@k-=zD*1FJdAv`EPlQGWV!!|#Gf5af5_afgIhnRPTxXfB~F4bo8Fr-kl66gK6IFz{xk@HYANcLAHvNIo=m7yP!Ii9m_=;*8QqC=TIMJxn;#zDvIF1sWY$?zV1HA#J&_$o@PqVH@s&+dFj}; za>jQfu$iQOF7=qdP0BX?UZONg&OZ#qH|)>%v%bE5?_$_G`_lCJ=wMOkQc>U>eN>s9 z&Bps#b%LlDtBLm_o!ENG);olh+DDirAIKxRTaJg3VPsWFF7s8lpkuWh^etKpL{80m z`Hi1{A(AUQ|Lo*;G)4i!$v-q1O>-estU}GVc!+OW{S>wIoy@X4uwoMJgkw{tlgxcUI%N3+DE5mNn<6%gQju(O zRt%uLg=imV;X0HhzTj3f5aFdBXoS}JCYW*iem;I6_Tjx( z#=OCU<+k33uU%(*vkD((+4JCY*cu76iOzQK)P*Yhs|#LBkZ23u+`x-i->V`vu=tcw+AXJwHtt2@`5`Pa#8iRZ`UPXEcD zVwq66YSEd?+SlSC%fr@z24$&n)v~oWv7H&cUg~^(#>A;th}178F^fIn_QN&>IFHq9 z=E(W81Ip<{whHe}#RHm%y?hbL(w|8CaxdJ+Oyh%)p7HvaT)^RC_-zpGqnowSSk0fQ zZP>i9L2+LXJj>LtWC*lraNjx#BhQbFaAghwT3*|C&Y45_`2GXF^R-3>^G^{Gk)8UQngT!! zeZIr*@sGfBNEUxpuZf!!dJgZFNOVLxhdi%fB<=@a;5&_UD3~3`m z^q&O$-%Mu#C15@OulN_g$PB4&VI)fmS`suhu}T^nDe`2fX(@<0H~AxB$wu}aL>sI+ zW#x<$kw^BOW-n(v!-5C#cq1bdMI9X=78Yg67h2Eu-bD#&5ygIfz=My>S=bI~%m15L zia{2a1g^1o6E3Sr$l@$Q<95VI65e?^ z-TQ6%`zn?&5OsA$(g0uboCrXCnQ$YQLLcblp82@`o3+A=r~iv@f99#jSx;7`@?aOn zT#5UR(Q314@a69o+tUH@p|CQGv8gHKj>-A8H6a}wYvRyE(59AGNJxJCZy?lXdQPKX z95~PJW*}{qvRiyQ58&kP4&PK3;)$=L0|z$Rc}emKB8$RJ6#z{raX4$1vkcZ*pH(1$EF6yV76w(k{ z>lm5LwarOZ2F(7IYnNLHsZ5hl3hkbFynpnV>)+U>2p*?W;w0a5c{6vAosY6%D5VA}<4IPnl1WxlO@>?#uVi%3hx_pz9m&aioyl)o;d6$= zGD+!H<8?+FNDC5@C?1!@%Rop#3L%@PpKljCa3<*O;ou=68Xr*&%c-rd7ZaYrT&@?b z#r!j7D87|64iEE)#oQu^P>u(*%%^_Tni*r>X!_>{iC*4eDz)UItw*%s;pf$!j>*B6 zm^KmROExZ3=r;3{lQMC6V-XP()G7(2V?k>dab6xxO~@A9u;1>zlPhiuGWu^FFaiMH5yIcRWqGJSQfpD<#1USesgLo zb@Ep(k&aowQq=5jsAZb$AR`g$31O)FIcv#SM{533#oW)`;QjUJ=58ZBdpIv zK)Ax~jhZXBP&&<^N`?VX@CYs1uHz?8~}Oco;2Kv+e+7fRpnNE%-d#g4*0(+pACWv^&G!26AgN zGg-HC5~DF57d``Lt{;Gk^!G;e3C52JwearL`a|>eZkHdnudF<3(f4^u0_f`uHTDe1{sb}J^e0gU;xuZZ*91eO(;x{!cR$*; zIYdFD)~1xeB15?-peV&O;i{O!eH$sx;8YivkveULMgC&j`4LwNx#TJ>Sx|a|O#n)Z zmW4{*rcaZRk&!1yJk12LICgtLw|J-&xdPvPDupg<8PV(R<+31AzjnSnfAtm`a0ro5 z63!fSGOL+zO~NC4)I? z@QgGq27YVjY~Pz7B`TWg8!V5&*7VoJyVy|54WpBju36q>l_q&-vR91K2oUVeCMF@d z$G#E_H8Dgb9U$Wj6S5l5=3Qg{d0KZ}_2r9+R3a%lbOH61>-z7_paLp+EB-2N-pj(b z{-)VDgVB+ZIF4Ji(Sgu-5)B$6v0G1j*#xb0palEcvb)Rqt;WQgI;6;Qj_H=;A+oPi zaf_5!GmB1{-)g$wk5bI?-aR}fnRaGlib1niHEM(Nl)Mzu=(toFQXm1?q zJ3nqlS?K>%2Vo+(_W^(XJJesz!y@-f6%8;WvQu)KE%g zUrt%5nT8!{$sOhKy7(Gt>8Y7Ey!y+0yfG%0qnDgGK5p(CxPAdQn_cQ4R{DK{?DkW= ziOYBTq|`|n8O1V5O&@>L3RHD_MPM`Yt8{?L{jZNOp&)PwhDW?R&AFY@+$@ic!5s51 zUPci?3+5+YkV~Q=w7sX;_t`2;^WP950z3)+&}9g|ikE;^CJ&>iCyN#|Yx<&~uhl9oBJDeV#>U3wjZ-X!`$-8I7AJICU82H#^78;ap6xeqf&@QR0w^jWD1#>g zm#j4;#B1n!GC2mn3wXTs{KFNRnG=@|rxne5xk{6j#zO11yk2mjB&c0V{po3VgqVWKUeL-3`8GYnn4N&VvE|kGWzucD+3eykFL>Zw0#50{ zB={?Y`yBICP;){izZ6=M*PV8<{Zy4YbzTuAQAbhy$2J1~e1Q@U06|c-TimF+oE>NZ z?nlLl%SfvNy>`pr=K8S{WB9%_yIK&&DTmX7gs#_>^K+Q97?XUb0-uNs#m#Q!{OHIo zE-Z(ecPd|fz@cd<-yeit2lCTS?I*uLN^uHyzt zB<`YL|6#DrBS%B}d+ad1qd=F&3GQOenED&!9Pepdj~z0$<~L&nuRk zO*w_wfnE8V;}WznrmC0LrDu&^9PVRRO$rUSk0gNB$wNead${!2HXPDKI1Qn($cABA z@Ipo=|EWLQlN8;22+{JW^da&iOGlw|E35q5lWp9ll)8zKg^ltqD{CVC95BDAGK`TNn2HME!Ag9d zcYaVPxOOh5up2r$ovUB(xq!c_hvI|s1-+sb)KPdqtfL~4YUBS_ zTr3w8na)StzU3pO!4|a2eHz#K}49jFW&Gq)6ATi%Q>pYjUC4PH5w4 zlN<6?z027VFIgx!#DS^?I5;*$DqGpu{w#^@pzkC`STFAm@RV}0j{1YT05`pOW3~}~ z2qwD}(|1ij5IATFG&&s$R8(V!$`)~&Pt8ci-1>SYhufQl%$4|&g1Qc6*=%;|xf|0| z=@c_iOmRq}nxL>n>Mqqd7KTxMFxqj|oVQa|l9Ny($i3A@s-Z+g$)&(>RSScF6$|iG zV#`JAS+_vjWt}G(5F%N8B{FDymW3?Sz*jK+>&M=y=J`CUsT$%kzrwYTPOgn$`K4{? z*4-+|OzRr`{#JYqge+54`eWbGa9Tdq{@wT1@731_UHL}$Co+r#Vd^N`vZtly8y|T6j$&r#_3EmG${b`awx4^QIIboF8B|u3d~; zI+|pqmbSq|&0G#{)g|?n(pij?>L0yf^b{+*n;!eK9Puj-2Nll_*L@oKKtDa~T%yE) z)%V4KTljas43+j(%R*LRrfT>vtFtj%((ZiFXw`})LSCAqZ4ideO819om?ip@_~?Jq zhN{4H3`(h`DpjfO7f+&`c)U@0+C&gTIWA z+q5cN-pu_Hvpf8N$@X0xs>oEDIVojXmcVZY-|k@ox^#ZaAg3j@1|)!Ea#T& zuy(t<$W+GnxZK>jJ@0?q@K_mq0~FuTP+W9vqZMHUFL8I#p!LsfvWc5mA&Nzxf5y4;>aEYn1g$;uuqq0Mx?YU9AY${ocptbj&+Jm5rR|MJf*5$OvDs3 z$k_;^V5*g?#K)<)kDBT*1WNSOKUJ$%0DD)%%WePW+y0D@?4dl`(%*vfG9(03=(o6N z;`kx&-|ha5bkr(;9pXNTll?vtpw1QAah32Q+!?s?iP zvfNxz^$=vsQXkcJu_xe7^}G`Dbq|?2RAF(zYBY^rBI;xS)Y~#f+|A~xbx*)Lt=q0O zmAF^7CV|)8Z93<{)cBtlx+M`xI0~d@sSbXH!CKz4CC{bFHRaVDa!UPJ;g!cVNyeie zk?5D&c3Zp6yDC{OIFhltK+~@{%fU1e_AM(x2nBL<7#O+HF%|6jbLUp(#icT?t8Yr) z&pRvL*Prr`WBpWEpXDk#?-dQDsQSNK1YGdmv>4f0w)n7VyEv6il`?hAQHpzwrLi1~@tD2aka4aa&wXDz~ELE63 z)XSYpCS7$~9Yb`?vH$T!NGH3L0Qq22&#FvKO>KlA^K0*I%zu#hFEJnpu&X=Fi0us` z3XX*VA)8-&z6rUAJs37sUF8iWt}3DK6i?y6d<{vh=zs9$*G&EZa-e+TT(%3HC`v#N zQ=U}U)5d-epI6pk*)S6j+zNepOq|`&=-~YzPUqxG>Uc%37@}*4y{L9v#x2%-l6Ae< z0I-!n+qnV)`E>#pyg28lFPs|c7pQ1itg1X0H=5^8Y@05{_0X6u(;1v6>Qgk@4SfR( zLf`|O!YgLb+N6LXh5JMXAJ2}LlZyMHiD_7$i;7JdTg3FMU|3id;CQwQB=MAhTrCXy z`i)SmP2s3#f=o4;`+N6Py!bp3## zhJyB&s-JnrLr;1cTrUWjri4_ zL43l(X-i0mD^T+18BIguy;g9s>h+ma>_Pm}Yr6MfnrOQv@Z+HHHHN)9bD_?hMNSKR z`OH-UwVv?n@$m&*o2{p3o{{Xx zY|1HCwDvHmv-3jRC#?CbYgMm!@7)Ti3sc7=0O9ScL9^TM7|j`Fx|s${kRdt&O$nro3OSZHmOcOi>3}U|@RIWLhWWCSMGNWy$O_FxyTH}4`jZD8tc=vD# zlhD~S;{^- zryDn7&%AFq(UO%TH?^i(213;_U-9953d4OTc4zF2qw-s;ovunum z5@vXh_ECp+#_bTC>0k^@g|teeS%QYd^@P1-S_$<2{HdX=Y~9th>JOFEQ-T=s6+Fk} zFmSsUzEIm!5NOV^aiTv$l|J+&RPi(&t(wwqNeE)wO2y{)cieI&(JsXz+7|f>5_7U< z&u2~N-Ek%r&UqCC8?O-Tq#|g(sBgh`Bz=T%;;cLRTKE^RSVzdW4(SZYxhnrU-CH~HZ+d^&~k^^!^-IloAFqZ@>Ww-!Gly58@tO$yzCqN}iIKPlTy6*oRHD_gWlUC&9CJc-q6%*MB zqEZOJX(^01KZ^>Oq6XM0td*mAQmIxkWm1|<{%Y-6?^GQZL`-SzUvLeY+S3>$otTu% z=B7OAAvm`_uhZmWCFWbHIi@}D*!+6Li800ytO(bFKBeS!_5h_t}122i7{*lS< z^2-kAgrNlwIs(kk|Jae3fS_wDcb1V`wF3I3j$N(Z<8{orF#wii*`<#3^@=PceK#sM zbW2Xx#x{;1vl3oq2=MB?WO%UPQ9;7N^^O-uQ{};@#s6k@)-Avo$)ppUv71w%>medT zy??)zdP6xZB(kX_s@nLGU=s^zTQD3)e&FSts(Mx6qei7m z$%-M207P)GOK~=$TXbrc-NwZv)s^?&wUZ_-+qCeosHDcU8U`{lwSEfYlxs|bd@Vn+ zK$Q;yjh&CqOY?|*(&;Wv2<^?JixV7hO7{n3x-<@87%by=?H0y}+?bu*M|-=XbjZD#8OCU)ung1(Y7iTv=J0 zt>}zqa&i@My^8ecTJ$;yv$A(=6gfE39~K7}B3{N~QCCBkGQ<|Ryd8SAm#~Ivufqf; zlf~3;!pY!mA*PK7$c9jS2O&xnc z`FU$S85m&x)6t&nH!fm;cS%HPL=znD^qF?i;?CQmzvL^y_Izxq8i)SLPg zeI#+KPrNOppZbwRPk|tw6QP$Q;pR!gN~$|G581@6RcJ#+!O0L?buC0N**Wb?>YNzN zAL{cN%=bOX>r=Tr(2<-GHyit*4G!mx|LU3yus0XBOwF->lh5RS!ZIN(-n*HkO*jcY z@^QU5Y;vg1BAu%4K;XOJo^Q}Yh)*qr>XB3sSoJNZ?a8K78N2G2M71mOgG`%3>?AYn zyTRY~@fH~tIo-{ohqOM}RTpG9risOvsb0v)mUa^Z@AJhTIL7!Y`Vsa9YC-+?NbFRm zGUL$eKoDMkj`zN|8}A-)MUFe$Y&yxjxk$td(2CSzR^xDPe|AFbUr}oT3jc>G6$}yo zMdskIgAH|pARMesis$8$9)}nLmv$-8+IC;Z{YWt_$)lBF()wORDNt!?V35yJuTn8^ zWEC5AwXj2nrS}dNMm++{V(R0#7EWpt*sj<)RKxEd_0$5^T3~W#hn!WFsoiN($nEZw z9gQjbaoFZJ)%A9E2%zdC(_H8GaTZY~X~2dmpBwrw72(SfJQ9-m95W(;=8yurkBaT zMt{NWV$|(U=ah;O@iVh*lu%n7#2kkDks z75pD`9uV8pq6Q=w`|vTvMl4VXwBf(}b%YYt!h}N45^n-ZAf}>^5_IFd|J?QR;+(TS zDJS;RJwoE`p;?!~W~eQ>y{taMQJ|=_sY%r|-2-^6Q|JWu3{KZalnG0(&27rEX{l+d%=u@sMdv-{FvcXf5ww{IxJHa7zJNS@JJqmM=ZaBve#u} z`wDe`Kas}`%5JU6E;A8>gl-nugp~2%5w>j#@;)BGO@)xrU!eN72&LRZvsfzSaGl_W zK$h*ca=gpp7|U=@0*P`I|`9~-&I~_1@YR&DtUtu4qlVMr}wjK zDcKe2XnD$861diayMH`uG>k#zW%KX(j`-JBtP6rol{X`R1;K_VSF($i#_+C#BvLY^o1&U~Rnt0u*!ZJ6Y$z_nwxz zJi)pk?zCq8P&F;_Z%EkKmPjV}q+DOggQU<(8~}apv>zD)T6A3|1MCI;Mad5pl^CVD z1>K~jN5*DTrle%f+{j6$GkLs~iUYtxMky$YUX=AHU}e=}9PsJ&~m`(C}e zd&#w=i)68;-e~hB8s72+$X=;IeR$Ve@Ix_dzn|o^Lhr;_kJ&1MG~I6@CM@n-j6;eU zUH<%@`4w4%LZOPmyv7O~=pHka_Q6U6Nj~cGDlvrxIbkU$S5x@1j2xMSu4~mz`Yzm$Pk&illR!NNwNC`d42x?Ciey`m-JF8y6wBF7}>dR`hG@ z>BWOHAe3F)NIbiJ?Yy2aEh}j~@BhTIwW6RY)vFXvVf7O#Ji!LZV^=u+rhKvWhvxr~96jMtwWcL%AOV1I%BGGbnJcrl>2yeEQ?-howDZUFQADtEB zi98;GMA<^m&aRk{z!|XYT{-mA`NE(ElLL8;E>gw!kI)>zflPj_l{QqsFH~z5s#Y*G zOJI>^bRr;P_NdF!bBtMF&(8nQrEcKd;$wQG0E&(DzjZ3<#w=_V!nA% z(+@#vlMfX?SZfpVm=zTYl_=(x7D&|HDG}U44=gyDnD{2mrnSpo5q`odyjNiw|5_rR z6s0pCl9`zqRJr!0ts>vE0A)WieTvIw5-bt~0;UbuE}6@%tr=;gTK(!a!A?~idyDbq zn$yFzsI_%n#XD|~7-^8U+0yS>Ju`z4&(0+VG*|*m?0*4|{{|pwHK6ekyOM4K`*#%O zHI5uG19ppHtw;&``{VEdEa3d^6)`q7irFMqNma2Ra=KF?gqzfQ$HZha&?lA~i1 z`Vt2(m26M`2GT)=>?!2UEq)q>RUx^+m~#GAPp zRjTFNq*_>UWdSFn=2snLp7KQVCE?R$8Vo3WJ70B)xJ5nLEw4g4F(D|F>5 zu|H=-$gg!&?7&ziRNu9HMpm)^>64Xj7VgKmS}Kr8MxBEWkw`P9Ep|avgLGl-4-Ne( z6(6J3AdI~fO;AGp@3s`^Z%wvVzt{-Av)>u5<$d?0t-U69L=XTpV|v7rGZ^&K&Gq$)j;|hjo62qI0q{VVU7d=0 z_`9D1E&`zYjmRtq+Mn{x#|tFN+u$wcaFAM(;BJ|x&gd|m57 zx!@hC5mjWVmQ3JE1{k7*N+5{TZr-1oS@tF`Y$yL&JniSvZJ zxG;u@qm~`NxNK0l1$so>jt7qd7+#WD={l@Dfa@9OPfjd`Vaww(YhN|>NG9bq;0wgU zN+d^^2>9NdM(^oP-C4kiZGO6i70egBecZ;<2I?0i}8ob3?p#Q;b} zF6t^2oyB1BZSa@a-C}YI1@kaKo;Fl{0`ejhijC+4BMM^gqT!}|$?S+V8tp4|W|Z6? z629lZ9U{kD==Rdn(i2EUDkAmj(wZ&ru%0ue<4 zBKX0<7o)=;x6G-RtpTK$_r0$0%FSbZ)LG6zSazR6;%P#Hu@JALOk|LF3WtEq7(D>R zUG*$39KAB6Gs0Q{6f|(oUp~vR7yR#e|J+eJ!60f{h$isX2l)<@Gj+3AwaynZ&9c-V z1yW1EhPyiV3@wmriWk4-N1dJ`HCr9sGC4+KlSuuri83=Z7CmGQYqZY{SKVLOD))1ryF`+Di8t#DIBZ(wqDDf zQ>F-pP904D{`NcjqwOvGAj*L|xpy^^>Iva?jup~i=8CW#!-eq4FRXtGrI#Xrg5(9$ zvHKHq$AAYvWxT}6YB*1@jqh)8Ggw$$EG{m6SbIrALgMo7N2!piYT(WJ0jIT?f8SMo zth>7`BxRi|@7l3Ct%6g}t5?;lBm=_xN4Jn{!*3*9!ScS5MdmL~d(=8Xlxt521_TGw z=`l?(uWyHQf-=Am>Mu8O9{sotc7UQpW;Ux8vNvBMDZ;A$g>kO{Y}KmiDOdj&k;GsJ zyTvXCyQq=b)ipKE1r{qa$ll@&P0x!XQ4Swz)?RIyRMO5i%#60GMPqcdn7k{)A=|5t z7A+ABmoI~|BS+CzVGz={5x8YXRkNXe0Y?T}-B%Z^8ce|yRroVH21V-i%?TDQo>W#( z&v7(tD1oy($wOXVo~7io*`G;BEoo5V3Bb(@&O57Lcn_GTdkI-dz6JzL5Fzi3&d!=5 ziMI@V&&!jRn#l|k6&s>0&fS<2YnazNV3J5kq9~)Idr74FSYw|;2;gP|h)@oiQOO6;sywhQiS<(R|4M)8 zdIef@J2|1izNLfgI1LAPVdpJ{pC>al3BcV02(AVGi8orswdqavv=hp)&x*=dJdFly zH!N{ElIqO25a} zx<@E|@ID}IbK3l*2x4!4p#mc4_waFLy`$SN^5nTgUx##9i4V3oImOJ1ph#y)lF*OfOHzd_wAX*tUe?) zus`<-4>;0qLIMCns;VmE&#KW;2LnI-i_-`&pzK^_YtbJsF^zFtUb*zASG7Om&6PRT#GX#B0Ix)CX?13 zD#%uo@hwbCT^$?Hj4a&82V4a-B-JC3L-yy6{Lk|Gvw)S>wA6sFMLOf;21QwlGszTZuEw z5Gf1VvgA&@nMAR$`n)@$9Y zFFG0FB!g?us9DQ2A+3tri2pl~`uh6p@&>g!wt6BiE{)N#F(YV}%SW8kpucZ3VfK`|B*EUHru>gW9ygzHr{jNS>jEf29g!}IeTZ;9C0 z*|RINm60Nmh^eVHkdTpyNl3c-TY|eN=l#_f;s0<&XfwcRr$t3X!sUW*&~b3g=G`fZ zV?|U|=loOrnm=2KuZP0?1PyuC5iwxh5N|&Sk2gRBI+uP_Rt_jZM7C{5HkaJTF zndm*IO`H9jnI~VpW+9=k_V;+^rj{BK292Avy?xaRHoHpH$c=)cq6i;fvhFt|S|+9e z+fnFQX;LDhph=^Xnm^Z(2c+wH%gQjf&A3B;4$;YI9oGJ-hcP_ByJR#OjnO2mV8Rm?MHUrtmdFa|CsNl&ZGf z%dIF-tz(-|Iab{?|FO{XL`>X z>J)ByO>>Ek_TcZD+ z9lzguNs|DUF4+@`bkd*$>;mZfXD1koph49>&80 z%o#(n?%&GezmF1(2N;*>`ohuipOWlvJc1$x=G-n4`!9k0-{-WDA*X>^Mp=NsOa0Sw z|1YsTVE;edEdFo?YoE>7xd?cX&Lh92#??3m1P8=ye=`hdBc07G2s(T~+rczFEBu2g zw8hZ;@fAma^|Zu!yD&CJwQ#$$zZ+8=VsB(-68Zk&`>`e6y-!W$2*lCPO(CPw11Ah~!AZlM`rPTJdur zYd2`s0%#}$`Og#BQpDea1u<=5b3jXCseH?e8JC6T1w|LdN+25{8v&#Xs?E;Mb%T=w zkLWO47Ww&zFz9Kn9`{7wE=x@mCX3d$Ix>pN%B<^wxcwmk0U{BR3H74dJr3B;6bf>#Ew8eFt;t`1d03#d8oaC^yYOf~v^avVMT{T;3OSG?^d|plwDwRz_L_{^jkrke_?xL#cV>nd><*p=e<)o`F$BZmXItgj=As{MqZ<)M-a2`f z3tIb#7)4En{3xF9i#SUOH&YcoJIWkr90mU&=6Jvmg@0Np_&b=G-d4TB(B1rm0twyE z8Kquj5?bGHGZ3Xg^bNPLaBzrwF8ksvxC)_<4s01U_TpzcNNKV8Qo) zIRcXZvm=1&NoRGkd4C}AFmIHYpYZ@QG~Y zN&pS1`0o+45WtlJg_|reg}t9iXEG0v}NL4WWOkHh_*_ejP&n>pEkU zZvM~uT|dbHa)oFketHqrZE$N$f9#{b_Ed`!F#<4AMuYmU-Nr4a{|2j{|D%OU?6=Fw zJN^|wVH$|;Y3OqGzkFIi1Q2ym5LyL|5cUxM((Ch-UdLC+z%Lq< zq2^QnaeV%(#eW{#Z_oAsIqTt1;KCrJo_vxLMd2LVb~S65VU6FeXo+HHGkafEteLVk39oY9BS8vWOvEEC2**U+L&d4NilH8xHl zA|YlKGBYuW^u1*>aH~O=k&)3miP)fLHTXI{IUlBebc8XAr^^+shhD+CMX=euO6tOgmwuz=%_sB{$hI#W=TbvP`tOmm9V`F24ot=v7$;_IOCR1Pi#(fun zR#YM}C2B=Fp-Q#Z8yQg=^~Qk>O%_Ym)%>yBipr(YdVPu_GS=lN>P?hW zC9&Xzb%rO_@$`CM8JU^;7CDa~3z-ujDz^G#bGo`br@ZJ^6YQ`DD%MVcJ}#59Yzeu2 zI=~hQB7C+tEi1}NBqOBUHlgD=oJ5;vE14!v_qIH!vxy(s%iP&tY4bTd=K#6WLIbz} z23GDeCAl*h;#i}*;46WIm#U?K;+GH7u$2Ny>~VXZ$d#Qz5xbFGt$Af^@M9G9w5OY! zYO1eyy*8CQ6X(-sMOKB)fkc`;X2&QuQpq{WQ5K;Ho2|MhTd+MvDU3m{UKz>qTRy%AqmLFx~5ot|Ci}$2_@c}LRm0b z$h@~Tn1YK2vD|PIsM~H936;NOJbctQ^QUS!gQA}G$hnSsRNMo2z;hXi`W|4lOLWWK`p6iw7 zfH}t2GS+;#^8i~st4TUVM#nzz1q=o*9pnP^zj0Ws9 ze>wRj*Hy=X25`6 zU<9LFvRU$bAbj$J?s-Qt(SS zgp1+}LgogdQAMiZWVKelj)<$mNFDY?#Ha}-<2B0jX&h|vaR{I*d|X`^>R0`TPQ+Es{^I3OPwr= zBl!wC!R{neW?vlL;8QYV3>_BjN=`hTufwGVI zi5C;Aai2X!U`h& zKTf1VM#H^v2^O@F^6GGbSTQiLAKyH4kVu8q=GN!?PEeX^`NbD4{JQO9vb705W zW^L+IPYJA%tZe3+>E=1I!W8FQ6Yr0#1@b4~ZMx?kW^3c&c8oA1#_u$ajJh+y#N-GA z-lWngiHQZCT-L^~!F{I*!G4da_09ie2=>;+Cmagpp--VOB2x(7S^2zef;HQr&_;w0 z2QJo%f4Vpx?pa{I1FJ3sLx|BcnKX~WWH1PHA*qrdC=4uC8+~mNYP-jWLI1I3-Y_}9 ztK6jYu-0HGIUM{z+)vDTT;kPZFKY>&6anIvv>BZqo=BcsV5XizSny2e0r)UDM zPP~U7nsH_y(;hCfw;FrbDs}G0o^Gc!=H@BqUtxIR>7Rp1UyL1i7 z?LVAtVwX6+LnyBFckvomjguC94 zAMeVwR*;YrR!N6krFOB~&<$#qT5CT|L%D7gJcVXuUq}evzJG%ryKL$#zVP78Xr9XL zWj7R>`j8UvWxvFgrK+>zxye^KMOV%13|1e!kU7qq(Jj|60*Sg)Y8(8CKUwZ7dd6leZ|{JkWS|LV&z18D z(9Cgc?{4pXTG|cHV%R5;>SZ-tPn<;LbU><2M~=BzjT;xHKhn(E(swGF8?GW(<97@V zxu5bGAiK}uxvfX)Kg`d_Vs+c3%Ic#dv_Vh#uzaRzI)<%R*13&l>+?dReVoZd^N%z1 zHl4Ng%LEZ0RXX>-Fw&bUKClm8dKQ2PNM5Q6pily%T@tGIA5==U%DQ~}BBrV@j!^Co zX*+^xny)Dgq&hGg)D8CB*5p`F!6?=0?d921I6+1E=7My5t<_BI&{YcBWnrzJ+;8`< zHUgzQ)YrT^dM+K77<*e1&2T`g&4$f9idC5BxUPQrAO4hJakRD+PguKq8|x>8)`#;( zc9|wod1El+8;9mzs+c60+*vDpy%fE7%3$82xg=E|?zJdN)lyYx)nlksjV_bF6*r|y z6R$cnpGj50GD1uuI#THe2VEhwc(DHCgxjnU9!7+$hqWp-?NZtOZN7TA6$%A zR@TRC9+61oj2W#$m>g|Nj|$UjHycTgW*SkLI)OD6AM|y@TrYIm~9NW=UDR4 zCe(Y*v!uSn<>ma$k0CG(4fpeYkL@(!Bo?Nlrn9;{R-4T?$UW#3J@cxHiYBXcMH&^Y zQRqf7Wr66h1J(`>sS6Ll{f6K)0|+LdU+rq_d5hJWbej%Rg}5&B+~fTrty|0PPJacS z0JG8YxIL5wePnSlCq{V*72LL3rbvNsOCIxjrkjfff^GUsp>(YJRm;fa!6eApw>>nX zHMWAu(@6;o-ep;NIt)s|SQiiKP);x?W^0kiuQ$D?@+J^pxqXCKvy?sEh}BX317oj4 zSNt5_Ru@i)r+s|n)nZ!54(U{n?W=wbde6?AWbH%uLAzcn#^uYG7onimIqO)CaD4tx ze*Fy}RcfPE;=o&*=Qb!5uqhfG6)DY#K=>C5Iu(P2&|aHX!)?5NJA#*z+vLqp=+AJ7 zrZf#l^f~C7@uN-78vwCAYA1A51U44}+pamVHS6ED-onERH>-HLJ|{ zRjTm`YV~;jmQrveFQOsmuJrq~7Bx_b5LjlL-S!qp_$CK%Veb_4zO+#^-wjAGe<33F z(j8gV!wQ>4#(VcMS!-@@?-oo>ap_xx`jM0P;)%DXxJDQu7I?KB)!Vb24U;6IP#}Qw zttZc9E_4k2wFh;FKdPa`?UM7Eyy}9hR4Uz^NixMRTL)lBNBW0N1&We}du*DG)P)e! z;F7$n7RBaENd2+-8(7Hf4)&6CUW7NZ7_tGWA9|%7e4A{*WkBlY+M0jZ?O8A+ns3*SKvxR8?TTsIC_>k{YCUl+Y*`MoQNBq9 zr~Wo-5lrrfp2yoBo{CFrb%$o`2S^PV%F z<(+D=$=jUNr}4G&x$$wL?hxFFzQ!&PLzDCnA+0FSla+8jNFo(fugSNF8!trUzLN^B z@Lar<)yV1{&x{&NP=_mPx zfcpGfB|bg92IanuBGjZ@;^3<6Z>S)$1x$Wj*=qt%d*mfjP3Xg6b+ZC2a8q3VbWLlc zvHV`z6gdc~9{hd+`Zh<6n<-LUPVwq{WD~xySA{QuV@R5cHqIlm zDaQ4Cqi7Ldxox?AfZiJ1;wRQn@|CPp*0QPkE4zzOEQW@Vv}t@jtL=xSaE> zG@wZBPIc^!!ju0(d`R`P*veN_%hDp7kFyu*;40k(@4Vo?eTDAMcFONC7Vlwsj?nf! zA9w#pH7`H+?<;d>@|FJEBTt1|F()Z5+@=bjxY2araw7S9Bp`TUIynK(xj>hgMe}!fAmy8Q)N2?lT2{YpF${h zY~g+o@WThc(eZ@EJ&0lLCCbw;3`88H*j9m@{Pq^VegL=#VdX_r;s=c(1z0qSjVVa3 zn4-R;6JD*u1};7N!ux!=^ah)H@}rmUu6FOD?fN(zF0+!@oa7crbaXAkIv9?_;?vV* z3-R4CiRq!oCnkGJ+)s3F)^oXY)6FA-3e4~YG|9ke-#wnCa;_1L!Rq0Si;Vfad5^2_ zmf7c~zVxHSa8!VZ6S$SKniMi`Py#Poe@d>E+e1lbQYj0+4y2}n5 zj|l3Gn-IasIXTq{mv&?bgZybA*Z0V?X!CqJtiiyc(mh%@EKLfN4+f`h1e=L z*SQ}=l+~llAQ)tT{9xuylajSY4i1V|Cxt`kuunT3X?WeSi}AG_`tU<5xVhMsF}}5j z_cVIge1p+x$5!)x$=4ZQ%+-fGdkD&E2!G9Wv>Itu2z>ELc)ZyoYBXKY*I5AMn>~va zI!6=XF^z#fGE#PG;BmsNaWEZS;Fww_#C4|5J3L>o8}q`c1$7LX zx+PF<=enzE33JLbxB2{Tkg_rF&AL<~IqcKU(UW2r7Ui$p4vZ3T8JW8_->BHwF9-B7 zd7ZCc79pI=TSDgW1H#ZnquxDp3WC53l!W2r5HTNL<78H2N>kjt>3+0ipg3;b^$hL^ zfrQL|Qt6W;dhd~hkEff)-2$wj5ymc^vc)}Ojq8rL>z!tEwrJ^`-eAK`M4sq7r4V0o zoCN%r#T!87M%0TtuCPl2qM$NS<2M!g<)eGUc>B&$y`o|pvz2d!;)CP9D1^PqvhWC< zGn0|Y&=*O48_i3i9R|MMr}>bxz9}htwMw2hb-irv^#Se#@`Rm-WEuCtO$!gIjRgfA zoqeK$bc@9oY*26tENb_06?T^V1nb2D7S^;G;3h$4gCwmdpnNE_`HA1ozw#P(@k(R` z&KNchGV;0b;c^8pMTpkQf^l?QBD-CWkXp7^)`?fc*(J7&g8e{2QBaULsbGqtmkC6x zp4l7DDSZP(9CtDp9s|EmN-PeS-+29WZjM8X zj4bb^i`oWtKj4qw7XHHLfV2es(z@s_0`S)AyIBh*V`Y;!HTA7Xdbj78t5vV-^Lx2{ zXwvy#d)?vPe?xArJ-%msM@BXrXDWi_(SLS$GN?NDvSE57pU8bXGnDP3uDo1@r`PKk_!E;1q6Y4wT72NdvBnBU+w9+zn;S8WMm3NqK zzI0Im$Hz;)U=pJfq8RFk5{eaUFJp-F<~vVokOO>&66_{dlkE)oO%Gw}d2bFILb`3` zZF#)pC&Wu^`9~%urq|!G`v`+tz$>`~ScpP#)D6-79GpAyOpm40zEoA`PCho`#eusS zHKN&no?%u}H#rBTAx#wTP;cg21H+wkbSizk%X~UTmn;-_NDe?I{gL{3qgl&*p(+@2 z*bdpq8D~D%AaGcB=PrwWvH?4EHI#9mUEVqw4Wdw-rBzW^|yOU*Qs}Vs-?p zUZ@f{oD`9vD9MXPRD&xqVu{dvSS3B3-fA*jz2dwc?gm#7DYopjM?d3~T3{(+76Y== zbq%&yHh}hKbTGIEd`I5F0>1JcxQWeL;fkmYiV(7F&hneRHE%)ov>OsjrV7XMJ|7#O zGzt@O&DO3R5GY5lEXBgrGbp1jHkAwMC}@u^_@^AlacZ-*D&9%g zP%^8Y;+>npHcQ`>D)bbpX}^C>#y^+KC2#PO`>7xmrtq-Jv{5xu6vCsnTWqbVv0nUm z9>9nL5V_`>+OrMLA=)mcT4%*IrghRzn-m~5KD=z4v#px%-QcY$Z<&A0g!h==cYd5V z`q7)9TjOA|xumFZ6U=dOKDD7Pe@vy)phnAXNX*Q6r$V~O|fSHtJ5dn=VzLB(?R@Qji^@e(!yOk`^8JZcHpU!S- zSQ&KiLj`I9;Of-7!{NBPDCxIpFu`}Y*Zx)~l?Ik-Pn<~;amEVN>XeK}Z}4Pjpd02~ zcgLi_ZKqr>qGN5n%Uc?N-ucIa^+y#0Juy@cVj*3Guq1mfYcK2efcu6}JSmjzuN z0c`l;4zrZ5hBNQT{TMKm;IM&n)WjM^0(NLK9xcxzr4ylQLC~@FxtyJfQR`Xkt_pikPfU=8eRMyvdL7V)I)K z36;H~CBa-2EU&={B7mCY>!{b}s6+Rf#^o_Qr=7XYn<$^&e7VEQZGKSHbd#nExFg9) z68)7C4f>n{3X&F1J=oumlvRi)e12nr;`w3%)_^s_wd11h=Ix}91?ksQ?%T*_+FVO< z_Uoml^M-$2(IIH%l)@mp-2~4;PC4Z&?d*VRA52yyA& z(Y!iX?mNKk?Vm;E4MH#>Htaj7mY~$0LM+Ie?(Uq9Ir;6tx*~hFy%Z^+z5dY9ba&_> ztkt<871ptq?#FHPHBF6mxBC?L1#3q$R#4508A1*Gm)#gdcQCgKWC4Za^o9)rbgN6k zx8a(!?W~7~@b%Ay+Tt9d#PD-glE)`)39V|U=JYfZ9&beu4 z!c9=5M=!oI??9{wLSSv0OlhS)EL2Hvd|G4|%*%Rjkz*Xi_NqPEc2E7PXMg4_$O~*< zU91=t(!{t&@6cmxZpn%7aFk`oanNlwGBi=i?SRc{m7-MKb*pG|{m=WQZ(X{~pA+D{0Zpml3(sJ_${jHmk z!cSx&hUEf5+_aa@_b0jQGk9)OYF8iwrE$+;x&~nNw!i3@7U54OAMFncGHp1hW(RL# z5~lb^tJD+*h0WW~DUgP|eqDR@`RYDl36d?j!a#CQtn&p41>Jm+D?~3hl=eLVb{T4o z+$Ve7(Zw7Z0%H*58&Jq6FZqUh->$86^=X?h z)v_v?)$Ie7q;I!q=0_^EL-|fZB6Y}()cf(Rpe;{TXpGz!v)#B)8C_9l9m@y1yHTx5 zJ?x}|Up^6d#<>IFEh5pABY@~_47WZO2VL^eG+tBOxNaWh6>O+>sr)d%dgxlu=DwMc za{mUi`$#OyI5Iz``RFEl9GLo~M6GcgqByxG6fob6YL00Eu26j1(erwvp+v1Vt9bjd zXgG`?h$wLpYTouT2UF~dN^oGjhQOy+o!g=yxlE^&nyT^Yv4?~0fHzr9MAtm7nryGU z35j$qap($)AIwQGJ}Ubv(Xu8t455VeQWj*<#zK?hED%edOwBr0<*E)jt)cl02d8>J z5)&)bHQ$%byYgr&<-YuWedZ{^5^RMH{<-i5!Ra|@+J1$?z(IRvFLn-6++ac#DWf#P+xJnQB$8W+QZGmzhAVk2ZEOI;_8s&5B9V&^7834>q1QNJ#)Mc zE-N>wPSJ$G?d43^{Z$^1eoq4!o*K3_KRxGg36L3r@K-QsD$fB3BVPKvHX8#bT=}B) zT~E`M)$9;Gj>3DODFmnKM+CpU8Wm*fG0IYeS1}$(CLUVlwF(R0qJ9|1)0M`!I9(Q}({IusuX7f(%JoPMng{u6&lQ?4inObvEDR+V3qXNSWrJlPaG4otRm{^uae7a|2+wNUaghFvS~*i2CJTPEIx5t)$Cu|x5a zDzW$|(}Gu3db2n;MP$J=bu+Q2-0A6bew~OYoOAFfZI4@SE<12&s*krbK^z$$->;ru zqRd$OIxqY?O-(edDP7Y2vciB7yfadAvMT_<}Y<=HWWc!hNSx^Y!dNwI&}IHpk~B z$?j~phs^p=Tg9b|#d<8&L%1sv>QE%mYGz)tT-uKju^(r(lAk+cs#;lD5%BU%dwO;F z-ea0W(38k>J#HH$1w^;|T^7*yMWST#>6kTNCu*|9m!s1t7hBbn!bEA6il0Zv8HUD& zEO6;;nj%*Z7Y}Kc@^jryqbKXK#?{<}YGl_JA#d07sNZnk9%o9@&0m@@@&2%cre`dX zqYze#HIUrK##5)Eh}Pt~LMEMmLD`#nHv_)`E9E8+M-UPG_Lw2mO=B=w9{n)+2u8d2 zC*FdO0R$#Lk6?bGw>9+7MHkPIr-KZv|Nh;UmxEpCr6pf-Q4HwyE5AaG`qnaQmf}OI z!)gB3S)tVsg5FNwL`1(f^XT7PN`>%`$ehk22eOS4Al-K#>CQQW`W3;sTfc51V zL9s+5T+!o7ySbI%gTOTY;dY7d+ieF8ryGd8qT2Ls%{*nT3W-#MxwdshC#O6TJC<+p z3|G?w_qc1|r#Tya9fhVk$$mc+*;~Jkz1E#U-;X%PMJ68ER5$4=RF<4*Rgz?7xB8@p zL`GGcgVt)p$983h{r(5gNLgG4)`OkMBxZ4JIEwPJ2Ae5HgiBj$)dAoA6JS6eMj3nb?tx7a_8>}#ZBcbf|;9D}_BGqb^05zVp=LoM2@)BPB;<=%Dg zB8&ke)WNv>6V>1?>T7Ghn~PERAB?VvN_D2uR-CgnP6e_)@l8k)T68k>28XUTWVY1x zOG}8SpVH+LC+4K<9X^;6SEmiO35X4l*v<~!FE2553Dmz-@Q~AjfFfS9wF_@0mD`bn zSUs{`W(@1->@b=S?@ya3gpI40v9{3r!- z-^LJdEo25UU+K2f>5r10@q4hjpfj9eOR7Q88d`m*{e=hj9vB{_iPmV_RNryB7&`@v zEYY(5An0=UHGTP%Z0Ig_NM9pu(69CK`AU2d@WN%1z;%csZ1=>sp7L{{?$=ovw<%0`kU(6WiU3@IdKO7X0egW{otkY9+wnc4DnqLA~}M6<;#M3bD*8QG112EM3YTLH|H0WD=co3xQ6pY%>>MJ zExUO=k4yBYv7O`jxw0T}6##z#F0YY;*518Aeq|qm$61JD+JJ(V!XS^(;W~5LMA?ms z8g0FKZWS5bw;))iKUrtH(jbkdeOZt_HF2W{7vUyD^?J+X&1>Dsc36IGnT)cwQX0fV z`}sZrtaTQYsV}ePb5F|#GW+o2_|H|Tg0vSDrTfwx{KKh_O@v) z!ycDRvL;i}b@|&d&!l!*2L&KB&*8%ho_uH}gEX+pKAU_k>!(UZO~zjK4sy4>U`1~%*%svO_#+S1l(0Yc!3udY%EYC*jTYTF}x}toX(==`|i+Y1Bn0g=py)!X2EdQ zMD_Nz@Jd;1${>be0XB;r!+_6snsNcoZvj|2d+nSAbR#p6WscNFAQNUK4MY+W!TK&h zb`}TV9qV@WD@Vk|t&a;pT4irXH00P}Gs2=0y<=78Dzrn)1*5|%{J!%_x{Mq~+Tk0{ zDiYi&79M(m{=S~|gL8nHbIXxHAZM|VV@vx2Sr{y}cgJ9I{qT1O(HGY$0<)fw!!SUX zZAO^)9X&j`>lE9%X||s;Xx@Oyy2M>TCW4-EQqO0;5J?knEPbC8$0U-Fn8^6?s*I=J zhW)SPvsc1ebn`dbIzeKDY8a464M#0)y)YbCVGE3LcNXT0a+!>t^=kwJuXoWJ?j({` zwC3?w-iJVo>JsH#lhPWE63JTbtU^4Y`Wo#ChXm}u8;YY7n=FV{b$_&F@P$TOnmg2K z4kxISZr@j{lOw}3>}MxiF;~zZinky+C?GF^EzApFL8q=vhtUq}HumPfs)6hRfi@n1 zRMc=Vl8ZNwP!l&XHrac#fHPgw@+AU;kB9QK@TJ3$k6dM%P`6r9Kp=I?bl zv~!1&m=q;b*>F#t%7Og4mT3Zn!zQRtI{1j$AaB^Kft#p)TQ0wxYa-f7Xdjnhy%G;b z6wk})``<-mbKq?Y=*kdjq{nU3`mGiJ?cwt8S_F)@fCb!-a?^D8~^ZOIW1RNX!)0V6uP_5%_SW0Ee<| zpaO6*2F++h3P`{zAUZ|M0|{zy>81Er39ZgVY*NHqph1y-yzsB!WCOI83=u1_a>P07 z%>4XYpnH0k%5c4cZlN?N2If_`;=ju7UwbK4-ii(NM@>&-7+|CS8s#3@vr_9TIT$h$ zQWnrfV8MrQ2#YoY)pIOXU%2&D{70`?gin-VKrmlWAX&g9cHmQotL2$XzsJHZ^6Tc~ z!4PvJlii4f2!(fS3KRmQyZ2A9D++&ZKMWmkZKf{G9P+2_L-sE7S5kgJDtkY2OO}Yf zLd^IF=x=mjgd%TcKv@Wwr4JwVz1B+3%2pVWxfdtiJYN> zF0bR1EygttcX-TJGVWEmJL;kOYgK<^uD6$KZKj_v-?*Q;p0zMF#lk}7nvbz}1C1<-ZDE6iwbZDVar z{|BsxwX|_b^^J-5+%Lxc^;b&{y5$R;dGq&s?1{OS&ww4s4+6>|biz?2O{_)hHtJY6 z-XjB&kGV8ivLR}W8|8r`80u$A)5Hur>5e;*LY?-;B<0EFD7koA^ftI^^mJ9XZ|Zb? zqq$*!mesYIjg3vE%6x`=Z?ZUMzJcRMJclwHaNB~ja(q-wbno0z0|lv6%Bv;lpo$np zN=@p>XlZ=jx}%JOPV1f3Z2zHsWPi}=XVbLB5TR!nJr~G>iAd#EUtL?<*savA%^6zz zdb&5u?ErrpH9AI5B=TaGZ`eaojRxBmyVbrX{;acw-NLx3cJlO;{#~85a$P-NARdF! zsBS>OMMI4Ic2m<4b?cxLM~uW^dnduaA9>k9`?LY{@J5J zSj!N6bd+KJWXMgLq(17cq0!9OiJaEkTa}v|DR(kd)C~e0klu{o#HyZThXq19I=2!U zk0*~uLCs#Q55|N_*@>K*WRJLGdlHhDWTaMwmsR#oH`UECW4Yc}V+;mEk)$cEvq>5* zs)_e!-1kM7(JO9KP+f16^geF7ov%ps?$@3rwY!QPebNbYaok$C>irsRl6>2WMlOGH zdEoJ&&_WIby&~ATZJTwso25Lg&yPW!E+%5L3M$4lty;{0%l9Im6M7|Yj?SC#Myfub zl3fESl6w*PuJ}NPbkwuAZ{VDWo2(K!ot|mNoCo!LP9>zIywh~OH936-7QcR_hA8y&4u~w@ z2p8famOX>@p2Rj@8Azci9OJr(A7bro4hgXj2n6z>d>rNN-9Ds6VuKH7_30u3?sO&8m2!KL;?d)>7>w(y z$sQhl$HD^N2QYBxLm4vjFI6bt((If{sK*yHHI16F;CHjLSx_9j`S6v%5LXWgx*P@< z`uF?wnFUANHj^~%w{GWehIF?EJwnd+;SO;%O0{pMJ}RilSj^p$XF6Y*Ac11cvVI_W z+QqI;XM=c)rU9yJ&khI8Bd~Dd>I$E(NEt(YIsKPE3V#uIkC9;T$E@; z1^tZxEN`$YQ>RZ|gpH6&<@-mP8;AQ2Xn&zGdD*d$Vd4x}@Ru)pIN7y*N|-e~;OIYo zUR`cAti2Z$`OYUJ`_7{~BkRq8$6zuy&Cz7b`IVXXCN~X@GT5BMA=3K?YaPko zl&YbF*=p8pEeep+uZdcNb#!;G1lC>-zx!TMh-#>B4(iaK0E_2-Od^-zTU9)KWS{E( z;?sJMs@GeUD&OxNt}Yk5u>6J*{6a^51K0|DM@=ulX9S3r(^}h4^roepbGhy3iE1t8 zJ8dlYrx6ig5%tN?|Uot|CDNibF$6yy=1^>1b_Fw~U@|jfCy* zZQa$$Co~*izVm&^VgfH18`K*a)Xmc{^oFoI)XnMAh|Xs-2Ftfy>Ll_0W)rp=GQfL@ zM}#G1=XR+>R}LKb9wdw!ztbvFDLsUpzLbFWqO@`tnQw!D*tEj*3CzIyF0CS^Z$^^= zFs1RBm{^;JZ@!pgjDt*8Y$o^i?)#^W&`8WK?!R|ajE83|D@+U+Pq)n$!Ct!V6J96H zX%|=55b{8{-d;38cor6xyckj@xSR9P??R)78)dFN1X6w&M$q_>2TNRPlCLEEp73)O zlU4!ei|r(ef#>fG-$eXzF>o+2RyX=CTl(-Y@Vm*488n8*2_EFE=`F(_TAG`OrgCRz0lB@EWZ%sSlMP<%xL93XUvF;s3-T4FmseE@k4T;BdQQrI zzk>X57JO~~yJ1&sTg-2a7w(m<(rH+_7ranBsNjW?>#WsObjEPpCiXX@kt&2-Kz$H4 zo{Sv$sPBTJC(hK(I*bTX#ueq~gzJ!k1|VGe(y1k1rH6GAt^?OrE4tciaWpg$byTb> z52xkAn01Ojm4|=Z(2|u!5O_TJj1D{mX;9fUo-aVMl5gIv@t+TV$-<{I9Zsab*j6S) zc_&Rvo670XruVjAIvZ!Ga#!K5d_%v${3F9cOIrmRSUzQkdF+R#yFCyax{*U>@8pDY zdrm+=fKEh&M8soTDlQP>jOg$G?lG`7Kjdoy4dyIA;?PHw$|B|LlI_q~ndaA*C-EYs zZu9`V8vTirV?@4PA-A)(i6efOqeM=Pgoee%#jS;_tE)}nY+t6kQ<7O-R>*}+kJOBe z-YA0iL5IAjM$2=jDq*PL2mTQ0U$`?1whRqz(&RBT~_Xfao+6O*ALwF!}q5qs>4-r=_#DHbdc6 z)hM#w`c>r3)!gXvT`ZTU*2j8Ck+5Rxn5L!{ah2-+eX{nE)oR;lg;)9kej=iGMM|XN zfDwbdh0)b_@0w@yL+PJpQeqA;5r8&2>tx|FOTfA_3j|p?IX}u!RFO`|z@PSz{@n@? z4bas*-S`EgBRzjE6oPWX6Mo{H3Cph{)Gk5VHk8ok>I#9EM!gJ`?e#Yqom^Ql^*yJ! z74D}#C=+W-@e%SQqxk4hf=A4+u~a4~3a=KU;5pwuHCuCm|*l|aZ7pZ$hkTc>KTbXOpn72vD@ajGXDZ72kVNE13IJDWBA zeJ3jRCI`(dHk+x9nppb{6SVELh()Ba{K)yechuPP=|)DF+*ew)&RzN~w; zZs?pKbUOk_sV;nsYAKtFBP+z52~kD$9gp9g_~Vn>CK8uF|MAc@}z^LH14rUj}Rp{~=;c#C!X*6U#7Om+~Q}&NRME zVLV1oQTaINuMu(MB=iUJs_zk|{QQhOQrL@P#D|k4c&jq*uVW3JBhxc!X*Zq6hR{s! zNL69$e_I$~CB#g$dnwn%rl%89MO3X%QPFCNi%sXu+bbkD`1{@P&v3^i$AbO@JO54q zXP}5*V^3DJ!}Zn+{~#O2twG7S8?k0 zVV=-hHCo&dJ%Ss^ADBhcW9E&0xZd{%Pd*8B+JgOy3GlI?gx~HvVbMZ4w-UvKMsE-- zr)`#+D!b`g9v`_I%BlBswd2snSSl%gFjf+%wz5s{H8WZfmG9y6!gPADpx zT&#avugjm>?b*KZs#ig-rdXG_JG*K>9;E zvReW`=%V{4Td-#qc?uo$Lvj?nyfu=~yOTmad~O)lMFy%q$J7w5IYVu{R)HXN4C0u* zi+M)K`n}(rs3hvvNXC}d`w-5|hLV_i+2{mvL2jz5kU9$*N7hh#2dG^=J&1^iR~kz{ zJc*o)NuU)j_{@yK`3an+ECivWHr?h1;YFDFrPIA&ZdrJoSc&15l5>vGvx{_^+(2_BUK9K9CISCyg_OySt|qghwm9^~vd_YVjo^p@%7x z5+A6jBoe1|KPxL&;Zj0)-JLOeqcE&X8MZhR+@35V;eNzrgC62^b91Y)LyT^}xqiz# zZ|B7yWk+y5oxA_;;OrR0f8HdX1@d(Y^?-7yJhU@^ zlI6zY;f!?pu6iUGXL3NS>6+5(3nt6JG0As4DWv3`!Q8-kNeEEGj-O~RSzEH+Sl{5Z zgTqpe#gwm(qqW^ReESm$&JIah(?F&Glx+CXXP1GuVAA$SBpYeOTc?`~gQ%#Amz3T79>9BudLo>aoNJ*5Cy-)C?I}PQw)j(Be3J{(IoXOj#^|r`SHx;D2s|BM@&k_ z;yyV#OtL6gPF!15E^G4wUjq~%)Bxt@Mg6We)vNij0_7Y})V15R*}ghw(lok^uZ_qg z9d0;ZP;YP9&O4qq3aMGePZqT=5l~S-V)((Kkp|hNFeePeVZMXAO##Ju?;`RccM@IM zLn>bV=2=H{0@LHnpyivx>18tT#GZ4wr#mZnnIjRxh#OZOdI?jZn~Po-Z@h*b0SjQk z(8G?p^1JwYroRz@4XU_etqd*588IpM1D2E6{V>?SP%ZI!kI3s5`9?C^`liQH;PE$- zM5i@qoR^Q7!#LTrr@+$4vLxJ!$ms|=Gg^>Y^YSAalo|wjDIxFC$LjLmaK&Hcny?PP zgcABQCi?{6t&|O0<pGE_AwDY5wPdFdf3F^jmZysw_TpT0TmG>|ANbR*UuXA*zgu~_6?{B&`w z{7W@owX@;d$^#$Ps^<;P4gf{mm!(xoN)#4WBc2oTaK-t2QaKJd^F5zFU6PWZ>C1F> zYQ84_##OTZ7wDp=V3 z77s|J1u`#tZ_hs?qt}KczcpZ&=TrCLD5g=gT8^s7EZYwKVl4}yflF03O56fRWBs_V z8oZ8u@a_*uT0bdtXPf*-ZV296kH?z%SC(0V&EeNO|%Re@xQOZuRxp5s#7s3mn?6uYV>&bIXc5t01ESRr%Xjf)WboLCOX$SJu(rjYveQ9P zgr;~C&d!bS=@f+ZldRT~H%1h12kE>~qAXJ?`B`=J;a^b@PMHR^D5lLuJMca-y%D~A z&>9N+q-_N+qO*ySD-Vjs2p-zGMeJ~P{<&e6`>m(@*MQbce75YA#&U<^n~o@_)dr)` z8Pv}1UO-?zWsqwO1YeBFH!_-b&$}dP@}BA%F|)~BV|`@qA|rY)_9fT&u~%f*rWizP z>))P{G9nZ=R8Vnw-dKl4*c`v9JExNB%`Tkw>Auk$3L*AaU{ece6S2pPb&%MXs%HTFz8CoNh_zS z`aRq}efA)Ak8ga+q2THL$4UsSY*!o&zu3N7K|zD!4x-B4tWQQOd?gU*&7rBW%!{r{r6 zJu>_J=P_>cGc`ay1w_)FAjcgw<^*#Oq5vgV%y~{TE5-f2!?g6|^b`j26_U+v&Brm( zn21XG?fh3EoAH#XUbz+CJs8t{AN#ia{!d9^6a^m#sB7ID5ucW0?yfOD1=wHqEP}H{ z2LJl6OFTcJN7JdqWxu*y8Srr)Ox}H}>2;%2SFDuGI5Ech;2z4wm-I-ou&sCrffBOX zVr5-WL4m{v*PFNxJMG{zst1J;;3%H-CLE17Ha7FZpseW-M6OPy_u9do;=+qwN2)h$ z(ND$Cge*`%!w1Th^V^_{Woc96{fkO_I!}Nmk9^E_GjYT#izUevWhvUpTD$m3C~V}( znmkQgF$u<2H2BcSt<54phb9*-#UiSHjl0J~9?cOnhJ7z=1^M2JAX znG$I%E@e}bXHLjx^2{CqNzsqP@dtv%ILlhlHo09wv@vD%B!_y$F>ApRwgBTTMVdbF zlz2_l?n5GU$R7=dqyz~16cki_{2uf?A~B|9n$>9tHIQix|l6qS`j!Nd7KMElk# zX9|ROh|Z1+t9gB1pE`$(zyBwkK4Zb-<3P#~`UTwg+JSD1sa-v7P^n0nFsZWXlC-;Y zC}KHZP6S4C1{B(ijb{vxg<_W8MLY- z@5O^_D(d5}*Vi*HdwWZ8ZG6!v*b3=vkjYFQC7OAAQ;OW={2 z@+_4!stl@q22j~+lQTmr32Obt_f7tZXM~VMy8JiCe1^AP(r~TT10ShcVpie?Rtc}E zYt`vxWFXg+dFY>iJ-|T^e|WxKMiYUS_0&OJ;eUfvCH14Jv`K>~Fe1FMlwmRWK#S#v zifRQMEJ&ik@RJQsK?WHYlsMDB=8-{I0!=%-1l4ptBGwcy&R2LTJ1d&R3PJWxj60R% zgYw=bObDR?=He{!a?%Xz_6DWbhi;mk=}~dl-ipKI6eWJ3SxNRcsKHsdC~#{HD2|Vovhwj-d7;+LPF(zX`?oXlPUOn^IDpGwb+cvw5IRDm!#^oH!K?GS>K2!h z4cA$z7tRWE3(u4YhribRendL^h|25sR66P-eHrg4IO~I3Z@~HUuhyg{y`4)H&3DP9 zt;zM2J(Ys6kV8!>h`Q^_5?BVvXR6j53<+K{4atjOUfI-@K@AOi%#4D@H` ztD6UwGF#PS?1)-ndGHlvb!KPVV(}{5y(EIP&^{G^r7dKhd4cPm{{)K9*7b3 zG=ojA#Lj(?!DxG1Yc1tgd;9)%D9U{_y`BS7#>eaSfF8c9(}`3u?S12yKUL6%nWSF; zEBb@EwK*%GN0c*ZwZ7JuL&Wx(hgRov$L&Fe8>f|N{Dk=VkuXpbro`Uq8rx-81{dQ& z8Wi!pvJN%};v>ub#K;sI)FFQOC(Md*VMQ<%6XT6ymYe440}4Mzm1VLD43&A<`-%n- zB7+w>lJ6D?gSfdylDM`V^`LgFEmU+KI^jmGx29iW53i~MmSOmrz&+2>py$v{zxi$< z;0t|CJ#w$g3$ZaVp(rT$4)uuwXZspH&3XEqBn?W}MA#8cVonh9eng})=72nXP~oFNZV%_p34Y9*>-uWd(fZb`(s_jkj0J&UIl{L(N0yP_#>(sso;ZKeZ5;qz%wx& z{anknN`vb6q55EL+T0;CE4hFl5!0g*BEpO_Bi*luwp{f~GaSaDOFq~y<%E>?a$jxu zGpQ^Q=A$NMgI%UtL~zU6l+=?TMS!;DJSmQv1-@^-q`9SJn!U7<$N z4~H1Y2DwqN@@C&n8)QMbWLaU)zeJjwIgLQS#@dw@6#>m10P zOXjgTNV}(az>c-vDQ4;P=G%DtXP$joPhx`hM1S4F}Dxd zdm0-vuRT61Trg0`Xa>pd3!Iwue9}aaF-BP zw6gMbp+(ax`}+%KiDtx-PIB@`BfEVONwI^U*@EH5W1BiDjGd*PA(R6Xu{yG3374ME4%$l z{fpO703t9w`lx(5>^Wk3AJ4lo&F#G1{%IubpmhrAyK)9B_{6md%T>=$YRP25h?tH< zU%uM|HT->%T)v!!xNtz?W8(*zy)-ZYwpvbIu4ia}=<+n*r>y%XOasjWINwtbNmX2f zKx*{5=JJ)Guh{;nN1Pi_QaQN(n9jddG&Pwi+TcPZy3$g6T}GBiN0=@Oi~1#{rKGI# ztAF*mDk+^6|2z+4ouq({cdO6Si^3wD6IbCuLD2v=1kFFs5=)8uL^ZD!!*}J~AYQ&> z2@{%H>IF0n9-g7|qHrCvG5em`t5%d$?LyWh8dzu;qoa#(sAyO zweSQbH;HsSgQsCRY};z4-GH6L@)k5(aKdlTj0FV+J-@0t5CLs>S!=74qwaTEf{r8) zZTUP}1(nJio;S?)I|r)T4^QV?T~EJ{(ZFLFK-y8m->?y`GNkRo&Bjv6??GB!iD&Zv7x%f*+XM*{KpBK~0ekr9w{oV>t1_ z?`t`J`ku91E4kn2hHBUx{c>g#O`vxcV?y}mz#*73*k8+jWv4|Yl=S1R3o_p3(1Y%- z+ww2=T0(@95K?G8RU%t=0qIF#71=Cv2f|?LKNi4ptyLN@&uh7?ercq{ARxqL8EiOs z@iP8}%Y`tnb4@+v&{xcE@_Lig>^W=K!ytO+_k&})dt6w?0t!>ev_sa1I@^VSz_LYu zNkfQcuSo$ShS-HsN=GU1s~&)kT7W|B_Dy=1y-10!jGUPZCjTT0TU3({eKfQAdIPxb zQ!;gN=$8x+-a4^g85I2KO~(6*`@tJ6W)n9GRzcKg5RgM9tt8iVL_iiL)Y((=a+ZXLVIVcsSIjFA#k<2H8V6Aspv@m<6H3gNsAJ&Gp@Q&?mh) z_|>H-Yqc(o0$kfoo5<(>P$+|u=|g*Xql}jkkR!l;X77H4DEap+0NP1k#w8Q-2e<;C zx{$cJ6-=smp{EmJqX1K)@aE=b`w#L;=JayR50ewL%?IzdXSEEqG$(suR~Pa;EpgK& zHrnrdt}jk%$8)S~qmA}8Np4Kne9nE~fAS21S~}lLIXpjiW+QZxa+3Na{;-@jyWboD zBuVxZ$jVB9V7F-jK&qwZ`)%cmy=A-J?gI;BK9MC4D$f1W<%X^#MtTdvjXBe4Lp7iE z8k;iwvfQfQ;1j-R`(`Q&_a`ShnzQ~AvY#b#-nz&sJWH<@#Q1`HIPE;EtrRIOg| zC!V(i1PDy%8I0J?&{fQN5vIpBeBs6OA{?GXULZEKP*aKVz$e}v+zf1zlIcmwOcv|? zAwPfS?#pEzcHe{q=4lT3;%t^%R4vxx55cGxZp84W8h#=^GZUHAB8zB_7iwiiaK~5o zbt$JsX(z&rYLH|U%=Ak3nU{FsSmBchuL(p$yJhYtS~kjyhgT4!r!5=hU})VClyIK& zd+lK-9;Hf@@i~TISU^KzLk9+BNe(ijW4JJr+q$>6eBh7F4G0X_5TwEz0&avv6Kx`C z#N^zplfQ#SjdOEiKQjq5>v8=2E$Cf~^MpC*K!P=B!Y+r3adLGsbuu3&SuL#&7?Hv5B0!5lfYx|n2RfYthZdx&F4V3|}USmx!muD**cnQO# z{}?RLC(MrKv7h-zDbfq62+KqpsgOT;t~I z5{rLOY~6Rc(N1kd?AuDa7h_PK7qYapxp(iXymtXEfy}Gq=ZVAyCY)mWi`7QMuJYD1 z934=BB#-@teS2J=VVmDathedo*r+_#D*blMe&tLCZw?TvkoY#(z(F`@_*ot?KG_tL zWyq3hZG$|}knE8^ zKFt=TWGfRkVQLJGOm1Xmiy$QAUwVW}lb!;jIjf0|j?OUuNoO(lHhWL<8+9dCpm-gw z$6_%`YIX{BV<9vQl7mApJ_PTl0EiI@Yj`4SxIxB2jGgS6)GZ_lDby}J*TP}~_qOgg z!?oqBmP4PG@C!|RyPJ?$z&V7?re=|%D-j?+129-U!V*8o=KRX zrqHv%miui=p|Ip89*Ufd&~-J{f;0)`Own$?Y2pqsyEu?rYalNlEnCB>WNScLZqN=J zURSvFoi2&7G5a$~N#DAV6RZkbETT7-()I*eAk|GWD~_G%wF5ai`UYzTO#(mOMlv1an7k5;nFZA52EHC1O(cuM47ucA?VuYYW!3_!J6Ko~5lq~;xMlp&%J~!~(qFYbcDSR&cacjd-U$nkr?Vim>b$Dp{=z-Wn*%HwJ zcY7XC#&;K+oW%-*MZo=x%TArXex%vCMPz^aqU2V|nQaI(fZV24fMJbNkWG(pK5qqO z`uS*Wwb#4o#U6}ppN~zmgV3c+ht;#=(r$PReP9!cMkH*8AlOP~r9h7pyivR^#B){p z)YS>YE{!uG0geiir@Y}gnho?U3=&8|qxN|O=^n#QdWHM$juShqn~ua*Ot6vqAVU%T zl1eG2305locRTX3^uw1)yTi^H9V*nFas>Do4~{+5O+ia>Oi?28WI0szgY6S}Fi0Du z&Wlc9c^Ae{p4Y1{Q4?uUyv@x&A_1125;+)Y`=Y9T@1TMhvx*Jcj|8^$n(QGvBntyQ z?p8wy-MiULFN|`@rFSdndqYvN;v*~pVDW2!AyAiIXi5n9x+#r3Sm3~1chC*DaaH(B zO*6m2Ehn}YOll6=xSg$0b6)@WQM>zNPNwaq2Wjh$jY_+$FSixY#gvO)ocTe9Jw2thX|%i#xW1&BTS+<7`ct6 zL-JR~1ATp6C(Uj|diS7a7R$#;ls2+X5gZ#8(gJ_z7fLTrPd{G13r=wWAFqXHW^$IT zeRfDlzQf?8t!n&|aL!EDNKp6zrLZ7)=sYmvv9k_n>6Jeso{siMI`Kzml^*IxogOju z($P$)HM(p)?KK%#&kXx+=+|hsm*MdzVoo139wju-p}n)sV6#A$35$oNvrIx6(oS(xN{k%q5vSpMTde#A+^g@-Ice6|55|y?`p-0IA zsiACQ=XLbzeQ`w>Y5BVIm9U|-%)A_{g>TeTp7}1F*^@Nd3~hrA)d!+vqdDD`V}siHDVTi*ko80yOe3= zZv_<6wZ04FG~?b(~=ssoob)Rd+c2&P@_bXX^K`ZPPKC`GFy7^O8?U%483(d8vHqENbA~~O> z-`jJGKwv^~yWZkItV!PIjflNB5LeSvgOCii0{YsX3ElTFVPC1dyXb*=>F%@;(80Pn zD`T$`#%zCAdP$v51wycwhl3m%DYo{YKfU&BsPJJ0nNX$bjZ@jpbOfj2Ts$G+br(gV z+&kC8z$sIWf8`hB7g)OOJHzM>H9WPNcQ+9yc+StzM1h5F*3p3RD6vrUE=8}*WC7K; zypDZlVPqWOv8Meg?bZpNBN{ApFyV5tpew1V)rO&dQ*MYNk(kGGx<6TR_8We6MAqrT zGq}HGya)~>Fl4a%c-2k)ah>kkVmPyz`CpW_KD1nhrPU|5f;ndL?B*L|_9%#WmlFD+ ztBTJ3O}u~)aFlW`L5~ScT($)NH=1NLWTeUIIHhe773*Y z5~QUayj?YsEh*)|=3?7Z0xE)K5OENp|KGNC&Pf$Hu$J!*BUbMUQ|(BxD&mJ<^!>db@%BE zE)29wvf zT*1)NRlue$wXCC~VC`3`;82On^K){JBf{(Ukp(5ekq?)p-?Cl?Jd_k;^Rbxyng+`l(ZoU~OeT%@Gi;oc z>E|zFf^PXG4g>;M7vgNr7wF9yQ)p-DzmGLk{bY0d8j~TOZ-MLKeo>CnU=6LJM2=5| za928EudNE<`vMq)gt5vcGX0Q8Iz{l@TY7HJh|3frX2@az7tHt~=4o`VrRUMK(mr^{ zl9HuHZk~PBi}HWPng6~I8&Z-R3SY|w>J7l!6DSpi95PR^m=qIGQeLxMTuj$|sKLpe z+L>Bm~TiOB)<*+`i0j4%UJob znDJUCQ6>s0OM9(gqy8TM|EYe4AWNr?JeR<1rb9pyA zZ}@AKI$O_CR1l%ijD!p98x{1tfuMkmB^8EMXKTtAau8Q|x;v&V9sJqdub5%fZ_^n5 z42g^?>x(4IA2&F>Jh3{>v+i4Fmui+2Ev?4>L$_dMeo<9Eb;apUj|@|l-jt)w{M_IR zM$t0(6tmkgeBvVC3ISarU4K*z2l8(t$C43)`+d+akU%BlIENxI6jpMa3 z67ee~vK+1uVQ$=&VZ$VtTM}Dx{)6!ao^Ga1w04wzX0yvC6+U4Rzh`37$bz!meyP_a zAq#>^m4W1PrgS;yw}_lK`J|Um+k|@~z|axT=GOqWtOU>97p=XP(Oe&=M`rTz^axx z#%pYkR0W_cCf3+zKD|$)hp^~IP}PurP3eC-1b-35zgOPBA)rhB?X^+iE5>1?%Q82a zSR|C^^WC(vWOdBEp$E*`)5g06uu?I>=y0-~zb$I7y+Bol5IEj>Pho2I1u`ukiq{gd|YO2GB;j)A9SVM#cCEv8T|N$UCh34sycPL=i|$P%~QAaq$h5k%jMxDbfU88 z5Yq4ha${w&>%}&YNUH;?s4j4u2p#ID%}4iUZomgsGJKo z5V-Q*j{dzA09b>H;RtX~gN$u$_zUhZ3iZH0E z;{i4gjRbSs_x53*jfe~N?rfR%Xz*^e&FdWJaPF1QZ?6U9?%@#$Zs|u7`voGxBk8lV zPYTItef)U*k!VEMC~+snz#Wn=ub&(NBlu0fWya`9ztyd`!A2*~<%YQt!V+zccG_$# zh<&@i`<8?snLAR@4cGN_vEorCT0TNvb9d(K576cUr?)_OclY~%;6fTdB{emHo&7J7 z4Wiu`_pPd(tRmupY9jG0`j7BeXuJ+!UJ zKDFmU`HQ{;WiiQMz6hpxRqTh9y8E!flgQDm#3-Mu|AV^xeC&+ITW`EJ3U zcrq$r0B9l=0G6@FJyfV&P0+4m&MMuspmIw>)cv)NK5ZVCHSyxv6AXZ@G;Cgt@x9Duf zzX&Y!00)!>ft4n_e}LCN>al-C7pY*sl$4OvrD%z4mIqpr0|%;ad(3+9Nc-d9sy_sw z(@)|Cg+M^t%EaF5{=!)M5%?Cm#E;;)95=*>5eV+M@m41!V3`_0Zzbd6;hAGR_xAS_ zwz$kb{%Q^Cqs0hNFS6h|Q97P{&3{OBox${zq?YmI7K244hR-5hIw&czw4}I@71x)S zm*0$TTnkW+`#_x?z7u&_xNqpkZ@#Ws#mc?vunSFAdVi)+{&MhjlwXt|Pz1lJ*_zXWk+CYT|A1Fj%b}ilESn#46GQOlo3pzFYZEaL zH6r3_r{g!Z47i&tJe64JFj%e)ay_lnX;LGwJC^oC=z6@|)cFrj)DkpQT3TB1w>^}X z$J=0l@8ggW=i151SNH4F#^8{(i(K(s=~z+`-zQ>r4wiUzDv7=LkA~n}oGIXe>3X&V z6P{`-1B;4JmW~dY7W<+rzOuUFC)6S~=`|2d0(X1s>NsntJJWGdfG97oXlgo)7eDuz zvY@@kjx63r-oO`TczBp_5^Dn)GoG>Ijr2@P-4dh_rJzs{CX{)#EAXe7q-cU9KHg=Jate={~${2B~ygXJ~J3k zx$)NV5P{Iu4`tnVy3}|Mp@bhjzq$&?R8hW5$;`kIbdOZDVI|qDM?>xC#F0xpbhe=+ z0i~1Qkc0Q3wJBVL^zd*RPaPjYi_dkG-1v1o5EDM-LBV!i0I&U;t-Keg=VRu z7MAxS#{ouNsq8*{LBSyiwI&Q;ZZm@nXK3U@sTQ_Emk5PHR#qMojQ`N^6tr_(|Ax)7 zM2@a0kgeB<8>B(D>9#8eWt#gDaP%to)1{%XP}2T!#<&eNu>0pI(c7Cs&|)>?_wjFn zF>isqE{_MeiDZk?s$o_B{m+fW0}6OgFkmVg^36}_9x5*oUPHnsoY-`dq6<0)7fI%!*=I9X-cNU|334@c89AloX%uQYBSfEc#+|ZQq2EKtcI^mSzp8p}ET?n53i<~&H$($r z=F~dD4FWk?4{K|4qzrC5srLspc_-lmfRy7wf%ISuGU!3#`2im2p?av94f&tP>?D;0 z6H>F1QBWQ#(CafZ5*IgDaClm1-j*uN{iV~mN3b=yujWdCNgIYM9GsnAHS2W42*Qd2 zkHI`iKLinG+)R`IiyCqiDMic*4Sjzn!S}PfjS=Gq`7?&)P=ejM&G~a}iO*}Q&U#mH zGTB>OCYRD>Z@fH!?RCGB(Nri>*dz&XG$fWoXy)_?yDdU-52}=u|(G3o+Gbhj} z1%-pvE3Jh&L{)j*WEgo=(`bGKh?R?PzoCH;OYTVIgNh&$r3ieSA^0>$jpC9@ zD{is^u2lO6;sU*9Xd198n-^CSJ*Ly05D_t5Dlx@`ElZsi&7?TPRVCP|Oy!>Z>#am| zIVE_1xr#m5|DXMpV?!0QFaB&!!~?snjdU;!S~@5YuI>okbAnsK!8nE!yLfyn-unZ(+ENa|?}gdZClM!5(F z;T@ZUhFOfhGG(#e0cmOJh!w&V8FYT3_cK!0)Sze~%frK-p!=<#kw9ya@T(t=ya!TN z3=a&`i1BgC!cWKo&s~8OkC&I*R?K~1MAOrH-j2rIFeel7DbGyJf8sIUh(f}2j&_Ed zon4jFa`1+Sl}B0Psj&YE^`y#ffzL(w*(D$aPz|{uE-Op5sPo50S9c)W z-I~`Vz!WcvMi1fXmdA!=xaPwjH5}OA__ux9zE@uU_yW)AHta9joyS-b{BLvd|E#0! z^T|ZaN~lt>mkcV{8|Qp!99#sEJvqbHsnTG5+Pf7?C?bB;l!V^>xI zg@HEwpDOZ+ba?zgOC9U2-p_x9uJ-Nl_`QG3bMsy}_Q3yuB3?zI>Ehn~Z%+rTnX;eT-?#kYDgW3&6d(v6B!@!>{?Bjfj~3D7vW6hMBiPIT z3^sxR3IE8)zd&7NcSN|q{fFGF2M0B)sX0HH(aP~p!+|sCkEwtIa$(}rp67qK0$U?! z21Z7^jm68EzdNbv0fQ}M{Sys@-Rp5&>_1-H|M_Q2Y*3oTklN}_6)2Qlp?_6bU@wbE zXVneAS8e3bs4qmw{yJ)l2d|hLn)F3oBeblvZX~w{0sq8nS>mvq>FEcGzqN2z~F1*7yXj@o_L7K zUm3Mu)XKPoJ<~}D_J3a7->+ojfF8bpob8zs`{>B_qj$UaubpcHAnJ$Re{eU8-**5n zf<}bo?q+I!(O`l0v+zp}pW?g~G{!=u51i@!#Z9gnfc_mKiU>n7^K{mNoa)T{qC(We z&YZRkqgr&ajb~t?r*kZ{6A}`8SyPky;P7xux7oslbBpUKBG_P&x4HWZ0lZVz>}hTP zdR6}iyss05mO0GD&IXoiBUPhh`3RYUf4v1W^nqK_-y0DDLG^m(pXIw@vxXY+ixJv` z_FI9q%xjwVvbdL%eDR=CuZdOkPWB1oHevEi^6Z?PR3~S0qlYy6t$gd)>?A(+yZVci z=4Rd~01s|YZ*TYXG!{6j&xhj$c#`u9SsfmLh7H69UVa_ zjjYgcp#k5%eVh0?G&B@YSI5}|%7oXdN}ivuA9CsFc-=VOM;jZfR0(Xqc621;<%I;h zwRk?@HsfF3TtNZ=!fl2{q9#3GZiZ%?U?@+k0>jNdC5QWPvC?$sI&5n|cfAP{& z*AEuUmsOXUWKhC=FQG-R4V z7ES8!xLW4jTt7-B0B}!8h`UAG&IE*{|-R*`tTZ>n~^xr`dql|3{c?O3g^b5K1hw^Dpm>C@}+tGfi2YwPW)=0 zwP$wb7sLTtb$%dHlcFK?B9X7(RibNocwdKj1LY_0#7IJFP4t&x=MxLX6A!_{d)uX6Tw1KG=5iTeK*9;>Y*eZ zOC0puT5HI|2Z6%pEYpPt9kN(iE+TScT(eWud&R?NR*|8$-pMaK;k&4cJ#G67_-L%| z^w~~vTib>;Pm0$+MjIw(uJq%X;w>wf+fN8J=1NDWlsK@^E&;qw`{7@I&X!#qO52HB zra82bkaO5g?GT`2=ly)>y)y_k5l9I!y&s&MXa|2_w)BdLYAxCKHn&t^cwu3wTi-oK z4@aU-LwfoC{)2Y=k-7J#l{?Gu?QmUd3eSk)MVww8?)cN?=g?hmaRiF{vy3|kZAu}k z{qb)hhQ2!FZqp=&l@qeyRsdOA8Wg|VSO1f8g>O1z4KUCLyQ0RvLJRzSTluJhKdb+h zML6Lg5uZgni~4WW=8E$m+(aG6kYi;s$=V)_^KJvrFW8%;y|B~|!qBi>eWZK1u8_1p zA>h7#>;CSfd|(ue#KKTk38jvQW?^SV^Jp>91iR;sbs7PdL$Gsk1*5Hbp^q);p9b^ zq|t-)8~r28yuJykfepC43RxWb!##!>bNI{;^YyxDO>f}Il{?wq8{kO>7SXQX#P(0K zo^T1k-*umpW2F7ug(Vhv&F2QE+Wy3488$J7!SOI(5W^QuLYzq^kViC<@dg168+H5c2cpu)l2z&QHlwe!jwoZi&9i(Xvr;?kK)Ku|2+`|Y@B0>>Xxoi+}&Lp4en0k5Ihh(xD(vn-9zx;?j$(D zJp_V7aCdiyyYtBVz27gR&V!Py)aDq z*}|`}QCMAXZytC%?~cdLqh@-(os

Q@9T0LxaTFrFGycpVNeqvIDxU6LoA zgKuj81R14#6xxIR*d=03Zw(n2H1ghn64Da>eW<5OdKS{`hessmwVP(kat0YrgRf^2 zc&b<=nKu(elfoQWC(X}pGvhMxq~R9Xz8ZJ@pBO8vs@4Ie$zaT08CfYdz(*wzFhw|8 zXxC-g{6j$dYxABdQ-VciPrmq~yBt|EDhJAP%fETEH=bwIsVp=k!$dXek68b z`L(ipFZAVET);If8voa@prf;M(v%F^G5&r*c!AMX+POy?ZEj^Mv2nhdC7;XTiabto z!4KASWa7+(noht7BHJqN|5p0Khvet?B0Iz{Cv|OCu+12Um zltk$su{M@##QWMWzPC^yABDaK{D4h;zM6K8>+5xnO{oAf{mTTH!c~3wIJA##bQ$q6 zz%=T>KyG}ZUxUAY;-sxJpy892g2=E`f5|0H44^MWwLCb2jC;0+bnaA<1<>e2+MQ69 zJzhb+uM-KK7Q!xI)UFCEL__0KloL+!5H#5r+(EL?wycUgQkDfd?*vJY@mw%feY{3O zC^G&KIy;w-k{gfEd5u5v;Pmh^E_*q5I)q>vPs5#F}^ z{kE$}KJ~C3@a6*Lu<68QWf25)-GfF(6q+5@sVcR<eVF>Mzm@j7pkekv> z;y=DHGhi4JReV2EW+HpQ*HybtH0sHE)h$yT51f8Ke2J6x7G5j`p z{a!K2JoXH}{fzA>T`mDZWPRbvh}!C8#fN^IkT3%_mljB%O~ZZwe~j;lNQM++Qh8$w zWt}1S&9QgE{60JBVYO7(!h$#bsh|tbX6`BQFox68`cbQ((bV9bjw@pAFmjW~8yf@=U*u^ZaAIa~EuBZ$GK*HWPIOw#o+NG1{BUysPWS)CQm^2C~Dv#Vid@*r&j1^qBArn}Sk^Iea z0t(@jge5ADR5ULY!o|%EuLH5j&qc%qu?t8e-<|r4zzVp1Xz`yA_ju_~b&0;-vCrXG zJBp?vKOELWDRjb$9D$9-3{a1Ti$TBIV}3kvyQ$i%Q~#^?iDJACisJ-h@JpH6^V4$tgxw zUR)=h_O6Vg3Dm%0*Ml>^OS~=-Qq2DI-uY{--RP-G(43@N2m(tA`;HCG-F-|t^New@FdSZBS2D=`6w^#aH~t|lw<7&y**of_KFkKO z^A~>MCMXo#N(}I5NnOja9nNQGJn>O zflOt%>@u09R&iR#QO_%jwVigjdejU|41|`#NFV||bNJn(R2TP2cyl7R5oSaYQ#D}b zw^-{uE&O40C~Qrv0SLK3iSUDXlGNm6ntTX&IJn`Zdl9wS@2Hqn{r4<$o_O zcF!63h7zHpcLzelUvpczrGNh}=yUht?e#;HXc`f*54~2OysTttKVrRi{eCyQ%Ka-z zWbq8S{~e?NssGU4yble}-`Tgd9LZdi(-MoZzOGi+iUZ3NZZ1|TFg;rs2%!7F`}T_m ze$=-MFh4^E30tPE~faH;f_alUrZXyoeR&ZVPo8LyC zwI?-_WLePBm0LRUdDsweLu4d_3b*MK3-j|Z{mje@jZBvf)JqH|f5lZ|crASGlo`dOa+}vK)HmVR{GP{mL$WxwJwz)Lln=4pPGpqrS6AmB2S7rvZPT!JN3$|xdcOP< zL$&+>GlZg9!%$tQ^KR^9zeCcTz_eI;W4*{xFs~+BFk|jhV+zPkR-8*JqF&{#pIS zaYeY#lg1!t0^Xg9u;L|0&2ZmBYQXoXg?^#akcxforQ@g7K`}8m7)dI!z-#z$(Grc zSm!2v?TM&)OQ|R#@h(>a?Gw7Fobgz8V8@=a3V?l)w6fVuwGRsljDD@$^Fp%p?g{h?0Fx6oH#KIpXI7mlSm;uXF z-UOh{QY8i~#40A6j}HKWAqb-IrhQ^CM+7QC)|d(;_bE}~*O28BQ9lrW@x}dx`Mg(A z5XqpG=a!XJfc;=_LO;Ckzc-hYQh@&RZOaE6Q0w*Hn;}u6%%QvLMAd}EY$_Y5$(H?< zf*gw1Qbidb%q7wvUCfz#G(6fz5HF%y5|VRdmR<|`Tg*&V4qsMk{l_#CcUk{W9L$ms zCMFsJM-1%19*E>SBfF8@KbUJE$_u!;EI~dleE}3($VI};aS^R=3 zeNqiRg35?H!RxRp_0`3-2}NW}^p`v#9iYJ9s!05A(Gr>0F(iKxI`*`1e{gL;t#|y2 zc-_ar8)in?ADXK}swVHvhQU1LQPQRxn=BEA)>~s7_0BNkjyM3~b$>?p@HHKwcK|6d zJQ3hF?rtDUf!=s`^Lt@I$1Gd^I}M4>TXDfM#4b_InpwfC(+Ukj5JYeg zRG+xPfmTp46%K}!=21ekdX#+?Pvp0lseh-L3<@Y99P~>zL$(n09_EX%1(}}IYEY=` z7k(4<4?o0waRuyC>a+J`i8hfn1&m!_nQ8iGVSXS>h{s(di<_6cjTEWXl&m`qx#f39 zXQe=`Y>wXDMyPD$abx?V-}#d$hEIN{+=XPy?mKjlM9-E0xq*LfJaR|Kqsg|ilc%o2 zc&p^6`sp`kKjVL%6OCttk%`nBU{oZP{KC6Gd&wu z9p`T&RvC}CcEOjJOV9iszNZXBo!AV*5~JZze4@Ig9gHIhNh}zQF0v^Xl8c<5JStpZ{b{{&?8T(E+NM z0YjHo2%^(y6jt%(;KBw?HBa1;C7*7`5mLiNcM#5?q=e^&C)@Q|@D1KA2gGF7{!-N<1(3~b?S}>!R}Erz4Y+!MF!%@?!l&3-&>5mXB2B_Wq2wfkT59Si<**K=%Z9-5-xpTHA6UJQI*J6{uW4Wzi3?C>V0epv|I{H?80>y4`A zdK`aT4ompET0-W`YYkOaDz-CUVlj8?x1GAbgs=D{4yY5vr4JN`#4>t|h=`_YuFIt; z2BwFyKV50pby*rfGq?PL8kc$8O;uH}uBxc7KRh^*{(TSW zT8)OdXL&U0Z({S=BDkWQmB%Gaye1?!rC@d-JYQH4M*oL&+SV%zxBNdC~ zgl$n_bz?#9t*xn-@MC`Ld}@ON6evR>84@hTMV&vXIABI~$(t_)hsPvD1?FoT#E)O& zM$a*%moF|X6exGG@%gi8pvX-G%2`%9-_?dmV#AI;QN{N9=xI*uVp;RBw7sfgCTB#L zl21p)#0##DBp#m9Dts$&pIeNG==SxVrk!ggb#ne@xO;Qm+7EC~{wH#YC;4Y$y2mCo ztKcZ4AbD<);Zv=U^I#fYI5b&sJ0O;KMGy(!hyjwvD*U9Vm|AKy*oT0NDry?{OZaqnm4!THS*pCCOF2YpR^aM)vgdBpHpx zMXufW(NnmJ`@Q?Bu%^^Y;#emDoDdTihuX?JE$HbHC*X6Skbcejy{6T=qw)?O8QGaZ z+al9}Up09nS4-#JERz8m7C<`C^Ri-loX(sB81e?RKUkmi%DS zM`q9#D;>*()ml^Ya;ce|lAoDbQc8XCX-E`nQXIt0=rpyyu|qq2SK$XU$&OVA!V~EJ zQ0O$twA|>5{c-gMAILQ1X_uo`dn2h&m?!H5?(grvn=`lnqaX5EUT8=m3Gr|boA24Q z(}vYDKS|qa>PGCo&U6)ZK(}*zc(`f}V^|ls9{11b1N=E_qBc~Ap@6%1pT5^9VIYF5 z$s)Ev9G%A@h%4}$FJRYr`b4l58wvd*)Yzi|cE|Hu<9G!BKs4%-?qubh(5QNlL;EGW z?CS$}=|~SO4NDhI*{l}6{5;+~nV=sO{xkpDUZJN6DGm<8EvpU;fPD__J{KOhU$d!c zqxwRxR)EE2q7yjbbDd~4EEa}B0X*<6nM(7G#8Zc>YUn(+Z;{hFs=-~snsY2%W2|3YQ*#(yJes?@?>MuV-C)}if ziaf?fN5-*~-nDcb7yjTh&2f@p^9bc2VuDpjkR6OsVD^;TG5}OrtE*24=HDORh_8yo zw0s=-E!QK%Zgp1mu!*0?UUKU3VR>oW*o&e3^Ns1K>h~0CtOTeZ82iQYZS$M16!%$$ z&JHy9-<;CSi`1$?dD0e)4?iwL0&+2~T8>~;eYyHbP(AJv7DyVk1t+G;YI9XsXkG*U zm8<(}66<+s5#BQX@JGT@7e`i+Q2$U-4zOZTpCK~>2YtuH-uv;GzCQ5R4-WYkXG5yQ zdR}CHs`KNQhE#%?6C?}Erxv7mUgXUSdwNWm>RdP?ZQ~PRsYbh(vG0XPo%|Fs{PMZu zlaCaOlSEZW0E9n)K{fyNg%VJ08q14}dj|;C2aP+Zq$JjK43hb30W9mmfq{I9eX5p^ zOTWK@LrSZE&(HS&$tIdwse7xq)LuRla8up9mB!~?kLz)Ye)j_QEP<~L zZPraCJr#D}paW{ga%XX(8&%xnnp;V;4N$sX~eNxUrnB)1iNfF(w^*MEWghUg2P zaAn`%;Ll@m2??pf4;;NTh$tulxUaf!ahBDlvcIyYusrG$d^a2Bx(0PGRkqgl5Lnx< zs8C2b`c&K_A|qAX+v8(mR5t6h{?!5qabNW$_PRczRQMi-N{aM)e}x@$W~sFqn7?Yf z)TX@>j*S%tRN6vX&+6^p$Y2CeYipNdBEj?S%dqaF88jk^%hcNrFc}pd^P*WmrWb3e&X3J5Nu^hoz9Zy$99{bKqJCD6Yy7ff5>@Yx}%5O!Z=0TA)?{jil zI;Rzsj+Rd3&Gg*#h(aMJQJGb#J=%Z@9=5ZdNK9gZT@`k7Fk>$@mD#KR=XieCAf9jZ z&_O7K99YyZ)+5#1aA_19yg1ab^4~0O(HK0Jbp_xqbmhcfAod?<_!p2C{HdVW;J%#S zoZ~;{Hjv-L06gV?k4k{%U8)eEyqhfH`5yJ18_}`oSFx9BQY^i~`_z^rTNI>8$jj!l zo{RE)A+B@9Zmx_lmm`F2e3RU#9=Y|~nh)?HaN#W)f_RA$+ojJkkCv!EBsdFsSG|x| zd>?Jo`@S_b1@C72N?X?A<}$!^}?om50iaf&ua6G|W zJK z^PnW81YJ*}$Zk`<$@BRhz<_A_-%LG7@AYp~H7TjhM*r^AB#G~6j6{sY2p|hH-5gwH zy0Jg{4eMqWPT&YeuszN^CU?R&o; zx+)$$?**kk&5?5#LB=iWWc2>}EZ!WjXvwe`0fp;{*mgZYtaV&_Fe+**9|E5$;!p0u4IjhP9_8+pUM)-@4RC< zsu}ICx?4~?nMHdgSwX49^l~nRLeP7eLy=HiUX*34HJWf}&P3rXg-G7jj5I zpl4DdE34hVmLGOJbmOIIHG4SRf*&({*WHpge{D>fI{VFp?Auv_F0->urZO&3F& zwY0wP@bX(Z@NKnXuFX+`nUs5%{9d0-?qH{@Kj=E@F0+lyleYIhM8_ZT!S;7XJbQ1M zekV!!oYJ*H-VvnjzCwLLqociO>G@ceCutB7l;i)R`eqW$Vi3DpV#T?O@XN&y9-R~| z*r-{r5+$h?;-`IQwMucOO^Bp?1B3@sXp1=0(=pq?aKg%ci5tOjr<1rwVdx1 zkIp2I{R^?V;qLMgev8tqv?o$dAw^2mrSSh^~N_RB(=+>-92dG~J7 z#n-?#p<~dz=ElZaBwbF>>g$sl4?I#+QT)P+?<=%c+twh_Jv4*S&2X}4@20XaqPn4^ zj!~ew!B!i-fuFWIbFqmkv8S8Q^JvrAo=G&gU13#`<2`hCry*pePP@*bhnfHUJb!+| z@Mm57!Kf%XCm!_lzdE;OKm~>+DBOQ(9J+Usg%$9-yOHPfaUg#oJMh29BlX2h$>nq5 z7kFD;%&nlL1deZ)ZNn|adGC6Ax)_<4#_gZ9cYC;-EN^(4P3qMo^+@Dsh|Xki6THHv ze=W^i+ci^qXpd1>F7EFSd+k`UILUWBRwK%aO%}v~lYT?TLrdh>eQ##=a0=`4Xk|0y z5@Xs|D(*U#d&)S+UG)m0tY{ z{phwC-ES|Y9&&QgT0FD(eii!1HOJ&sEkq10j^+;R=bu(uamhPd?zswdyY;R9*8&IU z6)i2`_o27>sfQP4tG%Kw!*ZM&AeTCRB0lwYs;qKBPc}%Re5JUg zq=Z*9)%9l6%oZ)$%d;EI`=*wos*hOyDIskRqF`&IxR_Q&&k72jGip6)2uGG-QmC0L zw?dlNwOh~UL#<^vt41948x{sQ#sD#+`fE86{kgCob!=>G;3Wh#1bdSXXfiUgwWEy~ z%o$pT?P1(@aXs5dv6if-Cm*RjCD@g_f&Rh6cJ`VobRFsJppFia{7I_!_)4-0ILXO} zI`OH0zdrbo4&3?UL~DBnUBauX76UIb*vg6lod4E$1W!V0p9Q@76SREIfKDEYmLx;* zJiD`HYBFRGwY6&%rMzD~r8mVxuyYX65B^qr;E4FLQ#S(w=XI=z_^k!D1TnK6ar5%Z zM3h|fH+|!Ej(N%z3b3=YGYs5J*NO>lV@4+0Po#U?Hd+LM`*(*}){#R~>isvhZ}=slvqs!XgM+cxik0-lgNbrf|}`dEKDkP=2knJcUqn%)5BB4^IVO z8Jk2v5(M?{gn|ft`(v_~?75yL6`|n2egkpXkr-A$mK`(cf z@V8lZL9D;BPsD+!NZQ!9>o``PBHoxvhuu({(*2ddo2vqs98C8$L4h_!1Mdvs@9qA# zHUF#0TvV)F1QKMX0Lw55XHGR$io|Spt~jjs{6mXtdFL#D4S79+EOW${cFQj${fuvh z+0C>=Whca~<__M<7t9zD=dkHOs`%;`CX}R?Fke~iToU}(k90L7q@|}DZGR+IRn43v z`O5xh9WFpamcjm@SK;*8hcrY>DGx5mca+kK4miLZBIz&hm*!qzfdLl?nE0^$=OC~J zdST>-8|VrO);2U?lKEY0g=YTMr3G9_F9u_PkHF)RRk(lvt5vG*g+@e-fCmwK9CLC0 zzq9iPFu!%sX57U2kytnX26gMf~Z$}%jB<<(WAI~t2E@_| zYQQ1O46?SUlV(ZuzgB84EMgjApv7C{jrHok&JRUeLzFpfJc!IE?lrXk>s|i(@Ja^h z%;{J8c)NF*@~6Y-K-mj{pPe|z>zTuYL;o=Y0TWnk?A)9SCY#VEf1SE;|GW#gPm%}u ze>WZrGPE9!ca4=CtoUmv4y3vWs_UNQRcq8nWB>c>RY?JWmdW7~`^uX?lOK?X!4`JN zgd8A!VYb!#Uz6pFW%yjQAxv~P!fL?^K{u6bXfmV>-A z7T(nbLC-`VG??S{&c0JwP{pI^f zklk`?U{R4-^a(%&<_Cd5U1OauNF~ZSb`!QUvn`xRE~n3{uYpZXO_N94sro^?ua8h9 z!d?pLbH5Yq^77dHmiWwEv5o-rceTP)L?{3iClMhzIywTd5xAaTCUop9jfd8{!H?Ef zMvy@MHeA!d9~!8SQlH^|Jc%nEM^MdOQymFV@4L$cZt^s>2!zh>Ho;O@JImgzZP&jR z&&F;@*(ij77LN}WLS`>2E1CElsovR;DcAc!0W^EV(42~vc{umkl@&~qtYu0%LFkK1 zCzQq{ZOE==r=&|sKvF@T{??MN<{0L&I=-;*A0KwG=aQ^$~^4H zo73Ld$J-i?MbU={{4v6y-M_$nk*zxNP4CE6SIN^85RH2dazDd)tAb$Pr{%M0r6#8&gI8u+`v+Pd*i*IvF(A6u zbUb~-c(7EJvtoF<-A5IkB_9hcr5)Me4HoF>ZffB0uIaCZ*3yfsVoNN%A9snQ2?DG1$@;%g|SeD?o}fY z)T9gnq8YF}&Wl%;$?N=Vv^e4tOP8ZTEsTxN`Xxx;Hw?;?1|BZF=iYfR4@wPAuf6>I z<4j$~Sy)4(mDXKLhhL0swklFUM_gmAr2`$pZ9OzH&Ix@<2*zzlgl4rX+Ig#<#6p25 zEiInm&M{n3-iZSrH@OJE116SpgEPIQYv2EI!T-k;Q&Z&PWlg?Q(|wBIU_Z??F8uNV znv;_=xW##=tCEltCoisz#K8BMn`U+Od~W|J&3Y^jPA(9s))Pq&^2%cg(I{xnPS@U76EB^SMkD4s=4mnxAzDB= zNrUqN0Zh+H!yHs?uqRTE#MeY2f}*05lJ3DAKSsKK2SA_$OwO}Omync&Mrie8ZD&1p zrMEjFBLiaFtZ1Xl_TzE))OW^u5q<`=&iDrW(yw*y;`Vw5Lq9u_${5Zu+-Z=4g1$!s z@H}{YoY!w_NBaxy4@<&6l!a>VOWV(M>E%s)%4$%Vp<$1Yk;oral)UQPcTVef1}8x zpQn4CdhsHBxx{&PlWEV;axWc6LK#)i_UsS%J%Z2q3-ivqYb%dCKTlB6PMbH~JRH`a zjXfp%#J-}#5zm=G3NLmSID2e)Y;yJYuI?Bd+O0Q@@kY(J-fd zx-HV|+XD2BDL6Q=`iY-C*R}+NJ}$xl#ECqKaKox#HqIuDDYI=e44lIIPBWX`kXHF* z-pZrD<+p3_bP!Es$Ku_rm3r+h7QNevkTQ7{q_uG*!wVHy3b*J;`&6{`YUUjo8g_|*$L^%Xh57WA&NC@ zxO|nRVv*NuXUeyD2_1>Lk^@OSW zes%&SPQ0Q%h*Bvw`STlaR`$V{G6CHB$&n3q;5KHBQQK`Zq;PeY$>UnCVYUg-nLSQ} zZ;f_;ec+zWBUFdk6a~POHSHJQJ^>1cQ_vzFr@nVKy>MDjoAEmRJkwbU1fpaE@tvx| z@-|Do%OBED<~qrJ^nN-oCO2!{ofX6<--JmIVV@DAXr|0UMz^SN?-u{=@O=y^oh!1z zXFfl@*#1e+@q+(uTTv+amu)T z!Bsyp)4(`Z{Lvuf_0|Oz+@io)8M3#RG1DzKk@pDopdyxVG5oOXZ1rI4Zz4?t;pSKu z9GKmxl1u$EVMS9TdYT>|(BMxO@pvIcuhga>N7&WV58Y;GfUr-j0aooPVmt-6Y7ep| zL^Ajl4asB7jSY&x8?M&JUJ^1t@|Zw&Fi^R>(9zMguMS0G+helK)pVZI>Z@xW+V*n( zdvmSFg96zpw%Ec&iDnE($)J%3TpwEdv$6HBo)Ft-AOIy1aj0@n&J&sj%7!*;Uus12 zaGZI#`$9U?A_*VPDpL3ezBn6vMaUGT`BwBntjoC1gS++t)>TF z9NJAArV5*|rX10c&QqhJc>$qQ02}nK_>hP)@N~r!JxJIO{Rf~S0^3=sS6o@V*!c}? z0ebUBA|hR|(LV61J_UVodR|DGBTz%pkVGRTOY~IV!M(zhdEu)wT?dYXjL}(~PP`HE zPIIQ$AnDtN4@k+`A;~_2hQHeX+|T`AB0FX1JIZX2(%9+Ktc0?sf4U5QU~3}xMIpSt zB*deeSPsj(aq?U3@LdPgrjwImiT-FXodFWp-Bvgfa%@Fy5#ea$L7MDBt+}}n)x;d? z5&qLHRaML}1R^Lo78TW2sLO^t8Z7$l=86)Un>TX_U`Izvy~q|rhiEjVyARS;MYXjU zlWZ|_3ESI;?$#XB*}J^40jh`r!m3~D#K$Im+Aybiz6`KAtErbUpHfLmiarutO5V5E z3aX292Hv=>8^meu=cCxm;JSaERZB&fA!@s!gmpIS5s!7nxddNoF}sDU?_D(#GQkxS z!J0K9&s{$k;rl-oU0+O2&85fJkdLH!^78Q!`KeGEncpnk*E;qR@j2}UXz(_A*t6RX ze3W`BF#U~(mttsThL}XV8feA$j)Iw6+lG|i$jl5isbqj-9sf7Eg$yRU7`TQ9LpG7Z#zs};#C6R#BhABv| z!=)v!!tv2YGPk~-K={lA)h@PU3Iu_NyEC`&%MgABc|^4r5n&G{c`LcdD zNBD1bD0$x7r!GSe#2*~f&gH3sii#C zTJ8E=Z@H+(>~EgYG>0jW*)l){Gs=kX^;&G`PxpHvHJbcfHe6j|#69Zk?H-lz0jd4? zH#aDFEu!93#vty4bC4}y#-!l8L(j8K#ydq-n zO*e)U5_L@tuhCrqrIY3%36@NQJLSrDkZ{yE=rf%A0h17@s?yeQC(FI}`)M0ekw?zY z0hk5BK*0AdxLp-0`YmJp?$cRerr<4$>UaUW&&y@sCL3TPb=GSg&$&axEpp~UHVzi! z1mM?hjs=O5p%e5omf74YJ5JV@?&EEWx5$Q6Mq$}n?Co@gqWsrNRM0E%hmsJJac+^ zs^k~TH07XcIL_RB)&vh5Bjot6rTPQ&DxLePz9zbA6FX>mbWz#WW~hs})4-)o?{0n{ zkQZcJ==A&5e26_5vleZYjBJD(qhLwCT80&__c%srHKj@gtrv!!^|2|nfLGfK6d!JA z6>+*E5Q_d`m2?LGHlw{=xb1r9knQ1N!U->iP?!jaP(TX0?~iHcacyD#8v>dO02>-2 zjC}EJItxn5q+TDuBgZOC4gOMNFS}w$3LW%Wif|A2X6hSxKo4=z@k#@!`7$^9kWF+< z*k^B6v`cF4KB(ZJhQ7`SXzy`kd*KyjOQA!V0{G2Z%=ew&K~Qc7SV)O6KN?~4osR?iU~e-DbYvl8@{ z{h$VWK@Npc%UF}e$XR}9F^<%Ou~5}2K3j#o6=f6;78YvH1%SwarjKKhqKR}5JX%;o z#i2+EC?B!!kEoi`0&I$wjsm= zF`<8)UJb)$mZG@a&&tchiNvgw?3hZ~0;uuAFU=S$Co-pY91|@i`NxDWP#0}@K$d$szV}zF;!w( zv>B>GDV_U=2b1U&v7&2?uQyly=k!?j1!P)a=NDKYZ7SQr8Vdm=?GJH{7zPjqF#_*R zFmWLekxruW{gQ7#UP+B?>XPE7yK}>nWGz`&_HshRyoKN@3GwylwWERsKS61=J_Z~n z5O)dWz5%^nv71&Jz`5l;cX*eek8~UD)1|Ctui1b!kRYb>i>ec?F$mq|W?!^af$o z=_XjtSe&EG`^*!Ck=S_vTrADG7gavAL|lCuR_nW6)(~~xVojcv z<`qnOObahi=pmpa9Dd6LEeiCcy3$~QPQr&_WXYZVSD4ulidnJ?6&4jKFj?Aoz8KZU zXu>~ROsukeC{VB1URIpa(?HddPP^|#SZ9NLv>-f7m>z0H#FbVNi5jvj56V!hM#RaL zsWDks;;A4MVDpD|6AUZpo11obXEnfpFNCNI;7JL4-l{^E(K9B}r4jFd3yIZT#V{@c zzQanG6xlA-qBYfEHf}vN3VqhwBS0e+%B6YvvH3P4KJ@p`R7nKZ(SlVM*K9xyVDz3p zVxwH=Dakh>LH3pjgrl?BTgvOXl1EP;8)c&s!A6)B>}vD+Ir=kYR+I4e7u7Zx_*{=U zb;w$ov6YQSNmylT&Wo3%)$4_Y8H@SkH|!2~YkmYmF3px?I7^YRT@L}9JjX#0+rJ)H zH4UP_m|g^+OG-lcW*F->+Jy?=Em0!#s~X_sap$Gg0qZblY>ewxdJirP9%xNlT#Q2~PHrLrHG*a(&++?8Kve@qC+BH}f7L%6-+FRiBre zwa?U>sCBL3`dZUK46@-nM`m@uD3d-@aXh&w8n6zt#040jC~&{)H5!NJ6$^DHV>*Z* z_tl}*2+3T%rJ<&*c1|tt$qqvcM)K?*klg>E5Zc4RVO^}6S8K@dG7+UssO5v~zd3JB zXQ&R9d-l5*9`1ZRU{JB#VWIpqSBMo}Z%`=|Exrx4%-;uf-kUdQ@Xl&Yh-7tSQ2@-~ zm)CaU0l}mvoC{(`eCPj+#kg-C>%?xDY`9$<(+5tL0Uui)c79$ehDRqVtOVoFmt^}k zhTWBLbpc@1J1pA#J*gIm9}m}ubb1S@A9AG%4n$pqoOedTWXSy_LH6%i3qTE~Kqj0( zqYYsQS=AO9f2BlkE1pcSS`(rWrgco@vi=)U7WxNBHX$LBj=LkZL{Bju%z+A=^35jfTwj6@%&sxLkBne6NbOk&r9V-=D`T4@@hs{ z@N!h$MP3cY;<$ZweLmGNjo$nI-z29DZ`FB=d6zk)&V@iCbky;~Gco3}tawGLSPl{z zh2?tkl{0R5^QPt+o_^UPR(E3G+Vtv}KXk_my(^M3hzY77xTzS6GrGG5nC^Yhp*jBW zj`kC28yrBT!u_{YeA{5Itty#E!#K)!zHIR{gv-5&;Z|zQ63Ni2UJ_gl%KABo1kjMf z{dCb5VIwrR( z!ui6um$~JYrdx`9WTAbrnY__f*W?!&KHJ-=))C1xLt4**rTXE6vEc!ANyr_wm*sPi zs@bLw)8;f<-rWfhrS`(;%A!8=_!RmFWl~^YThDABNNQ{dxm<~EC6E2|wO;5I1tZst zdTvp0cWBZYyBXQth!@U90aYG~ge^&L&0w29jTRvv!N?H_`%x3dJHLC9DD3?1>0vln zN%^O=NFJz63m}f;a_*6ZzMunS^r%-JJc!>oh25^IU$`dIpJzm#Rr&pZZt%!%qnl}1Q?}BDsd}&LG96v}KCA-~ZEJ?HPITklAefgM6;-+5M zgJ$mp7t0NzW_SAwvkp{xh7;Jxz3yjbDX--)X@A*8b!iESr1nl`es!Jo_LdPENU8gUkx$3h| ze9EmA_!;F!4#`DIH6Uv(wCt~RDv^??D4V_G7swY}n~LlO=vAEUf2+i6`99BZ$M-48 z_z)DHav*L$#Pq2!7D^cVr3V@#%o2o}n3#m`QpgKU?;nQmvIp)^fhXR&7u12(jsbn4 zv%V>!LHK!cDe7fT|Bf#o6Dg%)xCe$FPtht(nQZ%qbNcOB6sMvilKGzdHeWHLPkX4y z`~gXZ2mYx1W|4=rV1b+&(^nxb5h%iRt9*i(JZfhrH&_dNcQf{O426iP4)=F>8?vDX zG}&Gq9ggnq_LvXyKaEX(Z8i@;zc=vCE>Y|%g#mjlQmpVr7{RJf;+N^v{}gOQMq-r? zT8yphGMhGKLi`A~qr^c6%^1p;<^PhPHR!t`Y`9Db!_=<&o`oSKq((pN;z{qQTwpMl zr(^iQpU}4bn+nla5~~7vlncR~T0k z=OHnYiDgrYwE=xBxk3&&#w2l4JP+!-V+A}GN?Ddp+ZqQlwsf+?G009gtxtr0Ou^+H8XDz24Z?h&P-#$60 zz%bY+CCBSY9ru-^jRd*;@Y|c2LQf8H*EerMj8@f{G*sd@&eE8_LAN)KThssxC6rUX zpf$-JL0}Tu?mf{$X7aVW37$bvH_aC_e1lO4Yv;w0$R&ZUj~E_g`o&it|ZaRus;UE9SR4CW*qrr^9S|J>jdp@DbtFDXv748-B97UDjx1+(Q8SB6aEaw8}# z=450-dwW?E)8#ZRwJ`#ZT^`f4=@u4UBJ0O2xs$C63MUHN!60d@kD*6t|ind9pO{ z!nCh4Q7pr?Vy*X0w_5pm#magbk*tOg(V6Wkc-6sbyPv{aWi(N*g)?hCD+emdlv>3t zxRW(oIml00EjXrkr9W_*xZRC`0}m+=Bs1XR1&kLU@j9>1 zADs$K!`ewQ0IfJDKFWp^CMZ514&)|#wM;2;4!>{HSQQp|${yMC3b{s-MCBB|7ZiD= zez+oJ=oYjz_Gb!s%)qHPMQ`aY3oojysR0ogdMlA|vH0EzS-OLNbD8*fnZk?EV05Zlu3v; z{E#cN-hom}E`ifPDxc`C>IP*6a_<(S9FY(cV}A*{2G1)@=0*3sV4s4jJN&V1VP?~m z9S-L!m=q`4RaE<-8h5x`@HjO~c{+BomKFfsz|uqsa>z_pMzgcb=NLNHNWp=G-iz&~J9s0ZT7%U(*mEgf(B^=+5pnO{W zL#)9ECg`KEFzfO1ODEN=o_n!QbZT4Ab zE{9R>t2u=H1eq8JnVWlf3!)5JPr*MpVqqafgfg=bQ+a{|usyUD!6PEDvlPb`D2r6X zC2X#cw}ChV112{^uIevpYOO%PQb8?!pk~W_ zEUX;z;e>;Om2W@wDZhoPVos%mURD*e^sFs^JCSJrB{Sbgn`anR_xcGwG=xJdjOZ2i z>imu!j5qSo@?{6sqigW;nm{saK@CTkAI07;MFV;hg{<_2J+D|8a|>rpKEfD`R}oL~4)2-2uebQRD_D z5F{49iI6CmLS9WNEykr}u$$A4XT!yv^eAdV)@9@b9MMfPS}U5AGBz&LjPnQX!`x+9&op+j)K4s* z?d>IIog|xuYc!S`wmHH?9dV!i3T&>wvmZ#CKECBb~1|BNuWlTXL+N0<~p+2hujZ&NEV);v^yFu&%?vj5%hzK_J@Ac4sskyQdL$ad2ZzsD zf{JN9ZR6a>8V6`;zttmu7Rpmg3(C{Hc7eL;j6JI<_Ekw9bf%{}C#qP;naxa@A^g4p z8B#6705z+beMKe7(zcas&l%=@yy{DGB&MKdK@oCOQubMnbZv{$Qf*kYmW7R?T%++e z?o;?}ORY;SnH}jcxvj14OC5JnGQ3>gnSP?#8&2m$mWaeb%FN6ZiLxuS*}uULN4A)tvA0R`S4>&x z%;4waGr=~J;-)@Ga19U%nfoK6%eY2AyS~QG!fDANBWKwL+j->$ac@jas#IR2z=Q+@ zbylorE9#K4^dnFiC0j6h6!&$T^I_mQ<{T;}KUy8rdBK?naK{t)7j;DAuuGi7Q!oh> z-PGgu(CIc25C(JBC^i1c(MnOD22CrJ(Fo(&6}gra0udM+!xD z@tMzlqd>E~^tr)wqBQ(Yl8Ly^dc}_$q!21X=rnl}eSZ#A%aJKI;!!*{gTlxJ*K*Cf z3Ke}Gof`uDXU;oygtGgh(Gh5?A8L6&0iYnCk}rn}y8g*%35Qs4N<7`D)MjR;RYH_i zw5<5d4hW;${o|WKQuEl3q(JS9ux(JS(4>GS9HY4)m2~~%>JDQzK!3v&G=E2iReh>j zZ}JpX7aD+%6dnC}cFFzh_*Gz`d;7eKL9R-$=Y>-8mdR8nWaT4JTA2QhyQ7f&kA=Yz&Bgbh z53X=4)47WZitFj^2fUVFHEIYkf>&Um-_Xh*6{+wN3i=RS=IECXX~cw*A!<_4!mB8S zDX1p)|9Y9hw+sDb%+mHSyXvK4wGQL#%eUeK%f+=}7vl@NGwh5CBfpyKXcn{Snyct9 zl%)#@e8>=z!}*;>QJL8(!8bM-v!;|ii^8{Z==a!d;eP$n80#yRT4I`8f5v@Ik6omI zD+qWgi1fjpw?qTxo{9uSsc!Zs7NNw={;otmto5rN=_nWRSZ#rrzNziboecf+HCRWT zAqGtjq;I|_fAm`ov=broc+%ysN4$tR5&0@|MNOd~JRqBOnOhY0)828ynU2f(WU9fQ zaN77C9fSy`8w`T^%979ZT($Ye-c|gs;BGIyGjr^>d zT79jvJMJGns}3)OXc<1O?ada}>)kPRX%-pWxrU#By@rwD%#mmJFiBYOEF%8233zOG zugnFGXet#iuZmYz)<|bSa7=grQndn5LiS%?tP>J8^k3@H0zHpC%3{G~5;*-}PSn&g zP^=&bUiHx??WQgIX=f4|WJ#z)7dAB@VK}vcF9Rx55o3dLKA<0QtBM}y%jeoCt zXCw?Qx97M&A+CAWPNwwbd(ak=CNy_raJavsK%Xe8TboWq9CN+vZIYH2n9u2?L7(8E zl}*=M?IbX9@TeXg=ZV1*S+n6wDZsA(Wy9lL4fes~)rXD_W~&{!N?J7ZeipLUB>0tg zH3~MB`i*Z|FL$&xDT?c=9vv$e>>Xs_j|4x1ks%QUMMfetyHG{A({c%NQ{w8EnTA>w zRViP?mhK*J2SfN0wZb}r?(U$LsrZ(W;Km{}I7@mDkC%mi^~mDT+}b&*QeYhZy8QYr z4qiMsc&tzs`3kC9(oR_Lb6+C8YCkzQH`3SbLrUq}w;D$5Od7|8DZ$v8jV#Y2{n*wH z0xjK?^h}Zf_9s|aSQPmS7B7=u@wqkZ*n>Mp)6_M0lH9K@M{{AwaxAgI?okeoj_Zww zWnBkt=!ZvxOC@<+lJxU)n)o`LI}RnvrpY&{&8UOtI~ucqC+j-gck08e)me<-D~8~w z>JpBKsIXES7N);M)6D+rA{oYgLZ%Au6>-M2m2k9U3*r)!LmMKV#2%3dA1A(o2a`>Q$_wOgR&9gxufS(CL;w;o7Bn5^5 z3)_3DFzrsMFt&p8pm1XC6JN#V3;IG#LGEfcN z`IZjv33z&i@I0>9m!mtPurYMRkxxa(Dvha|+s?5I>1nLz(EEUJi;y}I__?5NWYmhfp#4&`&cTXV$6s$@X7M12BX#$f;l;2DBxA&I8d*3tO>!SI>8Lc)G z%S@to40S+zol2gz0zPurSE@7bHRrfRrq?0EIHobvAsdv}eMiLr+q^VZ;=rv_J4sSKm#)!AOwH30%Tl&n$9!5Y_-C3hUY`h!x= zmQ47Lr$8kh2%78pY)`d#C-3L{yj+W6#`Yini1-|q!<%q_c1X>CKrt}9^Ao|&RnoMx zNeYC^%LOyHFr{>upTOUHz`^{K?05@tJ`uHGw{rCr?R#;PK$xFpv0dwmbVB}ye8CsZ z>$8q$t!aaO#72x9Wo34_QreQ>AO!^s++`j9sUJ41o2nJE-))P~x%H789Uc9ey=c;j zm+|Ma>j=V(uEsnLk6AyPhxhb5T!-im3he0#eQybDA;1LcHG|9sV~Q+gH}zANLFi@m zqaUKx8V>gSIdOyM^6ZfY!Z^=#$6FH=AN8^%fFTroSy?A+f=LsA=eI)G?4W2^~D~z^fOkcL7 z6NH`#>TDJT$-Y`M9i{8(45tVX<|(AYV>9Umu|*1HhtfCB03vQtT%M8Gj~SN{4Z+;W z>(_G-phVAMi0t(t=Gy}Rh`QEy@T|(Q0A!@@smb(E{&EC#E>s5KXcj37it*<7qVRpk zW0kBPAv+l``eYulR1rqS*YlnaFMS!=YDPv3D{V@x#>CAqG}zwzW%}Saahb-|FZ(JW z=N)zV3D?1a0f~u2?eGqwxnt)CFEq#oL_XX<7W>H! zE|cCdJN6>v9zLGx!%D^wcMZ6+cZrlJ+4!E!n_-;CsE3EPr_g)w?I$AH2QfaSHkmKo zXPlfQNI$4z#lX;d@PQ4@I zsgvI?FCt!hK;@p@F@8Ei4G%=xSD`5-EWj=jLL;_5=A+EpLXYW*ZF;e7eP?42-rM%) zTY6-d!K8P)XW;B4f6DmPA`rQhxt;hU3wbitdpIaG@e;+C^}m*>Dw%P_F)glygfSJJ zqk>Z3A8}$wpcX_CQPGmJW6G1@bD4(ob_V3lk*OeuEURfK$KNt(RIWUb+`g+^~k-qO?B{cy#RmPK>r39XpS8s=-_ zWUL@A(!b}W{DGG?o=Ad8j;<_g6haO8be<>ce0y-5Y$|CY{LU4&JC;%qm8WEJ)KB<3 zc7_ol#Uc<1BB(Q=5sxcVV-NvG4y;dMHr=S2U8h;Ye9kEwO07R?Hn7Ll|tW>VH*_+};fkLRRZh;7hAitLQ?;T=!@d-wSR&ywKf()EC% zgz5DbQ@y1HRi`LHVN(3!*>yD#_?Mt&iwFA-E?xH%OY|5$145cR;O%HGyfwDqU+Eo- za&>a5E_jeVbU9v7Q(aiTxWytRdIJMv=+l1NG2I@6Sn7DQ#GT8-v^=Cz-_ANJ0AqiC zzP51yAH(;A5=p=k@cp1Bfm(r%bA8IsA-p+4@Ppv<6?#fcBN$Mw?Go{t6c6h_#C3<|+s5$)MLH1l+w$f=BTGWH z6HgYOoO#>9e@PUS?yD6*_MM8Y8<6jO8fnBQreY(dvDaXng(XZCaAb5sJZ22a4fXak z7{rQ#mCVe}XO>*d=uqoKR@+Dom{ys6t%1+!BX-|cQVOw7&R0m~dozpJrYHBISA?$Zxk_XUCw|aEinJ_| zS8-um7JI7z2W>JzQ!3YW^)n0qc5UIF@MZAKJxQiZyI;qE2h7c}dhZV&2eg>=HzjZ6 z#0_YOGpfnotvySY*wq^bpzv7mI-N>#gU?5%gQZ$Ea@v(V*ZA;{<@4jYPuMKi)~tYt zFbE)G1g;cIkAG#Cfst2hO~_P?~)oq+ETJ9igSaWcQ#n>l^S`=U0Vi6qG<*uUOv4yt(5w4=}=Wf5~O+s3UPB zm&xp4YeSG#_?kz##%0-!g{A1UPJtnwisJq%b|R>wFB5jy0`&%N#Ah+-|vuO8Q zE|&e|1`Jajm!tgj&Cd?ZiGg|7^Htk}>u2la4_MR5lG0ARhI6IWzi}63t!|jbR~XZD zjlXWF6;czkjpm9qnC9vY`Cr;GH}FNHno8Blr^T#~Fz@!VW7fl{i8OYii8+z>fH>gO zmfH+`_+&$x(D*pF`$HyrailJ?l92-ZG=jkUR}Pz{saW~X+J7b)cVA(T?sn~(%UspP zm;rU2+gThnOC16wT_0Wh-9{g}s059esur$CnDydAT?&S15tZBqF)o}EBuEFQ$ZU!1w>V9s$ddbH2TCBC1;aTcO?=v_XTX*vr3NENQ>*y0Rj7l_#JZZl? z-JJ#Z2)afawCK?pGV|gxYEvg>tMr@|9LqMdyLw;I?sx$C_Cz15$;G;BY{UAg%oz=W zti_8mBDz(x{3$xip8qBG%=76E)r3XPLVk7DxbF(YOdEv|>E`(eo2k_@2j4YRh?aeF zdwsMoMbh#8w~f~ZqL8*wXawAZ!a6l{%BOeSwv_+NkFWV9O{Rw&$HCJo+I2RfN=mQq zTj<&BsluWZ`0g>DZiBJcfP8B9i>KrHChR@YS#AvtPC3`L(CN-&=I&Vt!B1+l>pWM+ z@Zd9MK)_;!<1OP^H}mn3T-VAuK8LMXd8O)kiR`1Wk&LhpcuE@zwAD=6^ep=*u&&AY z28Z(n4CjkB1gb?a^T6PnqE7!f^%^XiGBdYJ8U*OJ_mOHbzPrL#Z<^ur05g8MkO)n; zWKaU@MrM4aphW6XgUvGk?on%qSdF#+C7^zf%BM^tLFQe#k1Wa zwd)ni0dy9JDH_}9V*-!+;E<33>C*L%K#;-yL@qN-v2>yQyBG1)m`)j2 z-KmJ0UhLO9a;MW3!b^dr0(O1=N0iOa zL@ZTyOLOnPB=@Pe&LtcdgdZuFDDv7oSW{wXS`QX~+QWiVJ)C($0+b=YrmvAeI-C$s zJW!#g7H$mxCTe6_)!E(&?L@B_KKDqvd)G%b<*{SUUNg+(b`sFJo)0dcGS}c2K5`3djoi%;DISI1S=8|;K zO^Gz+=5J){03Xw2o_gfscy7Vno5X4I+JDb?Q{Ve7lf}EbnKstu%q+0;Tjgy! zM+*#_=H4yd9axpm&Mz-GANmPc%Vm_J6(of&9GpZvm#H@`T(QvbDrhb5noW}CWk4J; zjM4jz#AYJbz8f9Mfnxn%h#gDr)KAy59!|m2r@BJi5&iNWH@c3%a@)y}nu*Iod@q$c z%Hd@=%^Uma=QFX=i0(-K`j>jH^PN4{k|O#jBA31FTG!QAFf69~N{JVtf$5(P+oNZ9 zDhftJ{0^nHoe;yV{q8`)`Mu(_(XvTv;^zLLU2Cu;v35?)zi=Hf4KnJ6q16v=+ZFoQC9feRKW(;adyrGbZ~gv5n_cDl>&2CL zHmEZuqODBj>1VsnhwQR8;S%}B`cKp4d(s8ZyhR6EN62ActC165qa$zF|6n_6-0_MY zElM|m)Cxb$LF|a7@WwRr3xYHu1+I;9`j=nE0ILRbP$8WMocnIEoa2BTv#Wrd?4~2W zM}NI#Snb-V^!#%7Lze=55?ELjK=O!_LO{=R)ER>{{NNoueJkX^d!-xI;HC5dVjFs@ z#-W6bx(zZBMc3xwW%_b@^J+P_sMB+N(D}aV)bMZ>zuQ%RIixS@s~<~H9`5PNaKQfPPe&pO79=m;SPf10>$kY>@E-Q}dg;k%;tP7!TGS z4fB6;Jl=ajuKJZ7E+@t}xO8L@wob1g^=M9qz#Ayy*f@IK_y5K4;1g5&i{YU7AI9Z>tE($N!x|cr3bdA+ zw0{>F-^**n63cLOM z&GjXAp~BFa9uu+XF3s#l4bSK`w}h?ZF|6V_ca`ioo_{T6?aIWcSYpJFqS~rI_6?yy z6qB7n714uBk?QIm-**?u$g26*Cc}TM^2|toF+6B%s==i815D0I z8sv%oSZ0MTQE56btT9aI&}IOLh%y-4!mL7>D;eKqn988|JggRA5c-`)_stFy->T z5UVXE-)J%Y-BnjJ{)Hx(t)00}-Dvr<^ZP%|K zzo*sz^TWU#TfvX6SVI*@#&PQ5HvRT5WzN`lxUuUmWj}3}HNmV8&0=rU|M@K!g^YrV zie**`n+8c`<-v9I%0}KOFe-R8YD=fk05Z?A5f6*auNWmM+Ca$M( zelsq(BD@g(d1lpC5Zl|^ii!pV$c4ubViz62)r=MWzc?4m=rsMKeSB)Y=NStp3RI9l zORwou3(cxDmf=MJzz+tq_?W=|x)^ysk!gpYKO0D-nqIKZ{`w^XsDd*XU4?eK%c0SEUe7#1as71-I? zF)%a)|HQ?{$qJ3G!ioWHA4(K3AsyQS9krHoNeUb^!|h_d357)uaIJp9+)iFBhXC>t zGcdZm20zc~MMAgVION@P{cWfD`_Tm2XwR^YpZ~1(5q$*guNIt!s)vR3#r$V${tpMR zA1b;5_*kd{BQf5eInCck`yZbHEZX3)ZIJ)nGJl&Yumj}e&W(*A?(!`|!GN&M{TLi|byXn?cgn3V ziNZ!M0t5;JLH$8;mZr@Gcm01K?Y|o}GRg114Dwaq#IwXQsojMtfV~IM!UNq zhMJc%*ro`P@^`wZVHib>Z2e~%`8xiqul&y?Xz_w)ql0-9Sg$R!EVr-rVqCz(XDWKX zp`#B%F*mXdfhT4Z$`^2WgF)oSmhF-D>5DRpRczCjz01N{{ z#^g5#8$ISyva(jDo|?BOLBYZPEiI|$Zubrd6x7uJyPN#)iyb2aWII{D- z5tkf(>RVXAvu(A2_&rw#60kdlhcPe8c7$bQ=m3@pMy>TS{5&_eN1Y|`N)0A4swF*F zn8116txFC#Y2$u;dUh2e==XWuRB+p#)>s@UyY%_f(fT2Qt9WhhtZ!!z0Yx5c_>0TL z{RN4k;df_sW5`duZvZzmvWcmwh}RQlXdBvF=-}bQ)YF35EjkK{ zUQrPdJ|Hk=w)O{EO=!7343Ieu=3AaX!m;ySRn=UQ2L|87WWVrD9AZy)ywE9P$lC-7tliT^I~ zGTOQ@k4<91J9P{4=v_QqrrpD8KDq|fGwBCybPs~LL7J~`fa}#U1zjQ1XV9$2o5MK$ zv=zCBP(l&Ij5X=-I&uWNkzeFWS9*l>3%ARbz+U1c-WmA@`QgI{kJ)stb1b)$2D9~R z&Xpjw;{QKqvd;h`A-5OUOu2Th96nydNn_k^TPZWE=&3iqi@__=o#!MEzbqcd;G346 zK80i`{w|NrW8q<&xY#=H!%uTfuK6p`(sSS0ABiezN-uQsB`A9+D_n+8Kkr<@wH)?; z6DHMNE91WGHj%bx@p>5N9cHv1uzAK86?_G&zrL|pJ2=oYzQj!Synkw#toSr-r>Lx~ zW89E3PT)P}-g2H7HkPlzmApBqtUD;$Ve_nC{MmP8kFm&c0l%mF{+7R_S{tn z;G|1Vakk8RDhwo_W5@&K)ql8$P_mn*#^P|BULE-C)qwT?x@;izG*rO}LhTu1$t zMZ_h7zO@5$2Tvq7{H_CHRe%=}5AsVQc11OYHAIuYXq}J2ClIF&TX{1A1HV`M)Pzh) z_I@^6i4qDzmrZrzM=h;R7=SYxBXAKae6C>oW1;nBq4?~GRbewQTq#w;J(SPn_vDA! zpW}mHxGf?f4+Iupg_P`5@u^`Ht|xgUu4{tudCUVYp9#*AfU|n3&A~!iO%38u8ZWWO z^+~?QQ}(qqUzYbb0Y{`*AfnLve8p%Xaz6Y{LraScOIzz>XU;EIKTv*MW5Z1SmoMyc zX%0>APyb`wJ!y6I*E^3v`hH^A=!_hA|CZ>@MeCH=@HmV+(nyOLcn~s97VsO#@pl|H zy#zSi4w0?P=3~ug;DPv4tyXnJ;diqcn9g{BCs+8EsKsFA35Jv_=jVuW+MlcX-Lo&S zf@fcVT~&6)6VqJ5)$#Kbi#&?j2^5`aE4{&8d;$C6$GA53$kV^jiYKGI*|F4tJ0L5Q z!Nv+r#{$)3vFCQy>J4skybNVwg%ucfK$X7o;k%Lb_w~VG@!t@aUb_YSYiiWqChgaqLRpYwU4#gt*V;yE|ed^B58-*ZZ6!kgJ5V{R_R1 zfON0jONO* zLnuJV1PI{Z!eo)2TYL7gVTLV9+cFvjrk1!spqzkFIcxuhKRkB`-;zL7sf z{ZaUH{>TPSiQ-h6`|k4D32(Uw?aD5&PGJXs5R{}1q&fC$z!m5J7G_1zQr+R(X`b@e zTw-hnuHO@W9XrIA<{|^lIkoBno<_1X7bCS(%F%-96JS_MZLpY@H@=P{cfW6lZb0OJ zcp~xMgzx8Vg>i^Eh2A}j+k@u9Qr7T}fXF~k-2NnN;XyVBLPT3{&vTmuLW>Mrx3~*N z?m*8I99o?ZS0{+9c?z=!5B=lDXGe~s>rwBw8A{%JdV0DY4$m51U1x7I;IMkI0R?;r zmy?Cuq0N6=OJA}4+uKo+xgTx4+N)Jv)-7!r=Zrq^i)J>-#GFL9?kCJAiV1js`sT;ySK?I!c5F+xJ$mf3S(p%%3R)S0$7&jLrn`wSdTB zZbikfpF_TW{W@`T)S&4}R8 zY)^=2I-y17T%Bczo{ zA_&&zhEZNes4ABdaP$j?f)m*%Ib~AR8j`ul)kwf_iEd|Y`W1J7|LhK3K}15LF@-Y3 z-QE3cFYC3v80cT?R$YEnS@%ZnBVvI8D}9n?UoNMECAfgVfS?O+0Xlfc)fA91^#>vK zPk9q<1f-RfqJ4BsVabD)6~?N;f;}EtU~0wo!?`bBGqhw*U%76KJpIK2!ITD31GN9(-zW zyi;j>T6^-gqSiD!II4>~QN9*{eu9C86sh+0CuZ-m+fVZYzZIXYZ&=va^m)rmeBH4Z zx2Ec^wklIXmNM^S|5z|ljQ&_KO*cx7_#b}SckwXX zCl$alV$xTJ;(3tQ02Y4Zpw!Y91BG3`lj5n3^d;mA*g4QDD=iovykyexAuGk`R2ye0 zHej^0Qdsf50MD&;x&G*~ErUQHVei2lK4l`@k*Wz+g3Lv3E4up51YSMa@mAtp- z_rgGkmqLh1-1^wM<4t)2G<2|L4x>IjUPp2)P;aK;yHTtl=TtyDl4CBH`+vI^EhOH% zEuVvF)_Vv^YoX=5JW#3{IrDhQ2y^2+#xtH#yn!!o-+6|gTaUR|6An!LuupYWXqH|| z`a+BNdFzs?H7Jb6Ly1wS$_LO5$I-5=#m^cYOZ2gtjaa)~txHxc5bW@%&d;$JcdNR% zAcbHuL0pKaE_Mdr3g6l;_mlwY#zRc7<>h5@TagB$|LI}OFrKY}!D95o*7K5ftzFsQ zpUexh85d128}1OHqgL#1wp)KjM8j}?T(|hM0x~B6FEV++#(Lm#y-^M1sc?1Z=B&Vo z7G5`}`b=57BTI3>Oi3w@3TCm8=u?MJ0`}dYqr5%CKub;YDwqaC_6pmN3#SrhFMHJF zdPM|*FmIL5LR?%8^W(3}UIIZ%8hDwe{UlnM5zY*&WOpR%KaWw8S?ytEz-Uq)E?qfw*iYN-~ zmgB+5G5oQ9C?T{xsi*88r$q!v7DO4}T_@j` zL(xORM39kSx@~^F7~EA%K|#z@ze^gLQr_y$;OGnjD`=>+yVH<)#S;Y~Cc{d*yAG)W%9Y~O-*TMs zbdHgx83)dma|Gh6Qo=8Ju%T3);!(_pw;N6`_o7CGw_&$_&LEVEDCQNyuPl%jEk7j)av*;!=DbJEh| zTZ|MPhk4p(0yzsa*-|oO87z3gwzpk;e%)1)qk0=x=z{PGd7cQqLv37ufiEs0GCDno z)j3V_`z(QX?CpAHXbTP&uZUaX3hOEOmE1FW7Lx=xocafvcmzB?9o57agvK&tr|@RF3skMI~WiQCPl5|oITVq5R1_?Dclr;79 zC$9ST`jSkDWJpJT#SPqAHf~ujQ2m!NJ#7z{8%ci^sB|H&E`rLk=aaF9lli~_&|5bz zGU=VtIkKY}=jU`MrVqx>*chjD@R#;(|2In=w7VuL7x={oVzKeF9L=wM@WIKNF(}&0 zObWV_iS*Jo*o;#OV5;RRtLJAg&oxD`Z80nM0K8vAJwJBoc(FE&kCe@EtsQ)zY6oY3 zu`UKpMDBUqH}C#-8RoaWt}&h8lY{U7ZLe!~9>BPR|4L0^?ukW1|2OTr8W%!ceTEq~ zm>ic;n(3#D_3Fafb3UKf#GdI?Mn_l1*MYZkjM=1Nnq3l+Z{B*v)wpl+T$6GA%UM?~ z$Z4$CW^m>4ws1uL?)69)Mh9bdwgonTLd5$>mzn_c9+{QO-0&m_R&)vZVf@XFBl0R=?_*$ zM3&sk=cIyn%p#+?oFhU4kIoqUbx!8G_GLf*^jJ%H2S61irN#SvQ9;Mc>I?Xm{AGE>)A5wdd$`q1w3qlLfH{N6C#D7 z?FYt)033dBQWM~wI^gkbxd>y_?ljv?+=K+9i76T+>(e3W8#!1{!v|6eHs_Npj8zz- zUu>}9a^295NY*>{?Vv?`@848Uv{6XSrlEB42gWA z_<#rtJI1#ql-TbGp+`dI8f=??2>1G>zN-mE5NC;NBh!9zXX{9(*soshF}n9@lmsEd ziru}eS6)l=IL)3mwboWoVZZsEouf;cjRWk{D^w=6s6VO^@`Qq&TU!_8m4lBaUzudQ zZ&mtzbCsS=galXsG2O2II9DMN&@O%=8CQzdgJo* z^>XA;<@TBop?rO7J6raT{72`m->kVXgmDDH^tN9bDtE=3tVS0LzoQFAGVgzN-htIk zc@8;)H^GW+`hf~EJ!3q(IcNEnoA>kQFQ1R6d(whiHWqUgqzw%X$~JoZE<47DU5@tF zYl`YKT-}LaPoDeA5h_eChfKv#27zy`zs0bpsk{M&3!(HZ=_J=rY5V#5`DlE>{Cz`# z6GtOs_84+QDzq+0y}u7-y;^NlTkw&FhfPR$^By*-8v?%ViEokOslpq?*!ff8=6EKX zGe2eS6IvsFqj9m~PvrGeZaZSZ0GOG=gg$m?bsBtRLJpA+!azBeDkyKG-njPz8=Tn< zGAvm$pF67Uuk^RoEMH2&-kV<}7J9YeC8zN8D|qUq)VMOEh?@Iujhku0xfd!{OuI5h za5L*?$L6v5Y?xr}G7CJ2>_Oh+S^X?xMHt2El3eP@Z083Yimj-(l5B|^$gq7ahP;KZ z8HPqH0Oo2uPyW?{)!)r}yeeu=5|*o3jPT-ojOQb*5DxUHz(moxBh%E|?HYeYeC|&W z*RuFBg3ot|y9IJdx`ST$#Mr~9w;l`4D9X~ZtVGD`&HaxW5v#8g%JJyz7s$?Yl1Nsx z)*zmt;*u@cwFV-~wt>H14xlZMP}+AbIRt<1yC+utc+Gt@<69SRGep1lnOM((w*dlJ8pP&rL2p^ngDB~S(1}*_m zJBow#SW20pb38E$bY;IIt`AY-@jms%LH!CIyQNUSnTFn{LFD?$ybrm0Egs4VRPuNJ zlbOv(Y6dG*Q9sO`!{Fc&hr-z3eKa&2OG`_m5+!*PprQ1}*~s*-`!7VQ=#B~yZlFN$ zcv9#((4Fkq40pLx$RNUAyY>|k{p`suN#Q?|0Wb@JbbcNZQlgINR z$nBfz&S@kLyE;0-e4A?>RVa9j$hSde4xaGcCHd4wCvqS_T^J?x6WX~@D@4I^?3VqfnxQJ z+9SdB?w4g=m)D)<@P*@a7mfba z68&?B4m;O{7gX-IINz$*Oi>s%2o&csTM1~R`M!l(LQh}mxLDN}AMM;hQXEx5P5fH( zaWCQ6ZZZ9w$Gl;bYsK->NGOAM(RAjMGiN3Kr$S7XN%-{*G+LcbI#9=CA&WtKz8{JpDe#YlUGf=K;}bIxodzg zXEpmU9ym#iT{J}!{|tHfbM4o;@`%nI^OoWg;lSu%FivQPjrI)IL?FK%`liL^!*=kE zQj|EkVxVsZoeJz`a-R zL$0`b+o4{5ycLE{W%EwE8l%`%obo$?z!L{N0s@9HYUg{i5uF5ghT|p2Q4I78WbRiE z+a)nnRMf;F!Muryi2~2tlad$DrrdQZXO~*Ja4lxZK0GW-L^V{iQ46{*E>}15o%62p zhUs!*lei~QLC5lr9@!+ty)s>Mx~UQI6#8micDjF!@;zc1#=EvtO{ZYTTWi7`w_k}% z;+?hn$lw*9r?s2sTU+0e3apqI!n+TJ8}}1)h4NP!-0A5*+=`F}koI}F--jDVUE;3 zZaUIw*)YhJ@SC8l<)%JaE4UxdBozVHB?sGDJz!TDooUevwux z(ngNv_!NMWJkoN>totF9Y*EX0>yg>>_IO^(f>%B6^r}wGwk?v}kW4>A`;`Ube*0}A zzIWQe2afEfWm}BEc3)T6wb6^|qAvXwW5=HmTzGZ00ml$&P-8^v zfm&+?3d3XITS2LXi-?MtMnVjri{sBan7RIBsxeuOt(6b2=V$Ph?NXJxO3!w3Lb(T$ zov7s8dTogNKDMq5xNR(aPP9U?o0ZJ6Gc~j0x}t{0@K%ubxLujcD+~e3ZNlUu4M!a& z`TogW^~+6iU50Oe6jRt(6k2GxZo#OkU!y9oY9Vpp;P?ML5iY)jPE0Oq(xKttv z@2d0i|FHE{QFUe8wpd`}8z(pfhu{QvcL?qlfTZ1GgBRU{HW5r>C38=LYSNHuM3sm^|xu&SSUpiiN`7m z5bg9M#%RUkcu-826X%=^b>3fWefiUVJ0EIH>GYRpb$@P7xoBA{6_JmMzR72P`)$yk zDa-3Q-X}+DUobldPU7PAbIBfzT6=MNMurmVtat#cM8-whYX6h>L2Q6@(W| zS^ix#kX#a-1chYRUCpwBX~&O2GjsD^g0={}AhWyi$r_Sn>}_JCBtdc*HEaiibVo|u z+yT#U`!&xcrtYL-4Ij@dZ;Ay}V@5&TQ_C}c=mM!JY$Ji>9>&2BY&c=4eTFfR-Nl+cFv()bsKCh4ZB_qWT7{@9 zADN$Yw)UGB<*M{_SL`;u)sccdl(@fWLe*O_BJGW)_?3uK8&0B;fKbRS@w~mi?E2vf zvc!yE+-;s?&D#`xF>Kj|*ykQ?h07eBYiIAOU}PY5Bdu;fN&q25Z#a#kynhO6!u9dm zyi|XyHzIJ7q4S$zN5{=W@C)xOh&tkVtm%GSsLA$io$2apCJDWW@WqP9-iq?T(o(%a02gza z(-O*}Mzk{s>*KH>_bon?hNExd#$+4z#Ln{2yCA?oG=$p~YV(%?E}g?{Pvy9jN%hqp z8BB7pLon^heW;6Ndi3MbMd_Zx2l2?6A~MF*x!(95f+P)v?>EFu0m673Q;}4N^>{`a`?{)#?V)IkA3+*2 zBg!}BI=Y#EH#zmpAeF$e1zId9Pin4|%5oj7bob4V-_2BCKN@tQI-Ng|<5x?T*Z8Thg`lwN5c5_C~T7mxH z{`Cnjbm#C;n6dS|`P@KeM-k;%yV9-gRoc+7M_IVJ>-K&?WDa;9%(KPY=*i&sev zBJ@#M<9cWn9y4253paafWhzB&e!$~kj^+c^olMv8ST9uiR$dL@ItG}ou2v`trwb*; z#bF>)^NL>(#HPf?ibAHsp$t|`3hsV<+hZ(t+a5NUk%Nu*3X_G(ebk@0wLsSQ z-!!a1b24WF^ye>k8Fs$q^t%wwDIBGyljStTQ&P)A@Ns$LQll|AUd*wd7kI{pmV(y< zL!vFs`$ur>X6wypk7TOeT{QW;5%p#TeSudZh1^`jJT8!@R7ln9`S0k59~$t+3O!jejPV ze(^&PpkD=IUA+aJ#!)^9`_f1IaB*>6k2al6#J0UoK4PmT0ilY)8P}QZ5XR{r0$w&L zPH;UQ*v*ZQd}D6r0k4RZ-O)4|qCWxD#-k^ULU1+q3Y4ldYaaM9L=$mpg8H>0FR6sVxzLD)8Y}@z3_45-px^sTLq;gk&49xpR)p#1*wBzReRU_|cq|o3 zWJ^k*Fp&2v;e$7)i?W2wGA#)~WMsq;F0v?N>{?!Hu~OEbxm0JJ^)_2XFdzn{D#qO& zuA2P!i>?UzNerdB;ZO@qGV6z}+`j~cYM!b42NGE9%Q4;Wu3SwrG9(dC{Kcbv(2~`A zmLEKgVvMDi3~vtE9e0m4f4QG|vALd;#PRyr%TwPG@p~rmKi(^IyO$V%&?QA(J4n?@ z=u?2iP2DdF{sVDmc^s>*5!_D4?hidUV(e;LBN)2g_ZL*M zdAiv`&~ULC8A2`Kw2LmYjZQH(pAOq=j<{Io2SaVmvf3YKz zDkOcNqYK|1eTw&fK9JCAvCkEU&~ldy!aJ{qBhE>V8vdOr5@a?P?q)zkQ+T~}hL}{5 zs!l=Pgsh(X`gg6Lc5#Pm-_c=NPM%{YdYti0sKaD6Kd6FL>Hahu0mIl^cI*Wo zC7b_ibkPkeV>?H*b=ILeGPDSZF5Lnct(xKA?zYrr#ZfXzZtGz>ihZIbLTqGZF;AB8 z#oi^XsWXQRBOoLFgrpPwX{Qc3}^=ha;m_Hs7FjCc;lPfJW37P7BH-xB2Gr!H$RB{vTUKANhMAcnp z$rGV$E1ux#j%?w0T*P-rU%`DIzf-ifyLh>uFSO3)O3lCL^JyTRQ@6&D0za%P+K{faH(DO z@beY!bSF)n!9>AbA!>5pfwqEv#9aVNA{HpJtilCJ{?U0IEe}&Gu0?EUXbgRVMD1H1 zYM^Kx2C&OeV6Ws^z%AhmWboQkyBdX#i69r?fdoBKoOiDa?OT3dzRGQD&MC`$P|?Hj z+qT@cVaSFeI0thch2W{ZkJ90f_&?Iur}h zsLzOX(NhQIAv&2i0Ndi+gpWwHv-M^3^_8Y!g)%Z&~&_pPgPkBZ;&WY2hHO$^Pl3I3RqB1R>N4!3HmUeF!rfIkFeD`yWk5 zJVvLT^cr0cMMSUr6ixm?TmEUk{sK4!NxxO0MYm}WZt+Iz<9GVr`1^HVZv>-EpbET* z2D{RoB zhf!C2$>n%_F-$p$$(wh@;cg}CNZ{>NX3hJ}%hyoR|1Clpr(=@S=P;+~ly*Fy6U&v+ z^LBu0`|OOdnI)g8clVRwGUsTY4LJ32qmS5p>GmW`rVoX1KjuBF=))eD11P{obAc~a z#9Q#~)u_?7?MdDs!Jji5Bq|Dk7D|-90*z8DlXI;pg+X{!K;flge*2c_^OTl+tvrF}&qjH5vU&5&`_l zYP>xF0?8aE_nX26f{9XhEZ%Oy!-9~f7ORAW2+G~jz+0H3B&Z?iK(*th4`ud$hzEyl3i8HnEg!)uiSa`jNZ)>(qOc}E2xiZFk zmkOdgT`f%kUn8#6gnzPKFtU5CEC3u*e)k?%Z*l!BFOW2$MDl5!C6qMs);jhfQ`WIzN|IBiwkP0r$D$uB)&)R ze0d>;1r+mAj+AlfTDk12&7z8XlwgR8w8*ITd}LZC9wcXygD8*^8Bu$}CJnw(OSD<2fCYUWEj;pe$Nj) zjq`ORwrR1}=gm7n{mZr(cQ@G&8z2qrgjH`#wp8LfS22i1P&I=Rzt>Z zn{%8_CToV_1p`FtEawv3?~W-@uI`Ol&Bt2#XfZYX^x*59>C1KwZ2*rKW83CQ4Fg3` zgNLg&Ap+{QvBWw5!1SYJ`4_2EOXMO0zwcxaa_fpb|KQ~Ry%+!d2?6tknuhm^WKl_{ z$$Fk?f*t5063R6Uop2X@wmtpI0pZ|Gv3e8xC)XXbKtwSfnTu z!?Rx=;=Kcpbt8T)C9=+!e;;4jayUz&uI9)XI#Z@Ab98!o+Pj(rd)9e##GyEL%GdqJ z`o8%Who#V8NMXVB0( MMuw!zvujtg6-`s$`?z^-^qs+IKP8~6I&N@Qj^_6fm9{K z&%uN|ONRl9x1GbQ9TNc%Y|Z|N_?e5}ffJc|`fqLce@X=c3CYz=Zhk(FS(Tb^sy*l^ zkTjS;vb7Uwn`}3jLoabOZ72d_xyhE;>+-;KQ{^v~EgEdbujKaJ?;^h>G}P zwF#<>_vh$XjRF{yvcG{K%Y6%JHJFFHlR14X-0hCc0b;Ln{+{mM$+S2s95Zz+EJR3; zC%o;=Lz|l%i#di=@~?zM;m#YK=3$WxywiGTFTqkp0|VEY*Vv|QHFQ{zu9j;)PB;H{ zb=t|GVsIGIVVFr4neOKF5kq{EP=)VT6xE;;HZcHYHQU)|1L9TFK7~}0fPGZvc(~Y_}xW|gN%H;LxUd5(d$%*v zpIC;^gGpv)JIU);-scKuF>9_Imp5PNz(}FJ)KmgySla3x6Wi7c?g#gWkOPXC-Cm1! z0q?t(0tY)*_anJfCLj(0kN)uJVQxzP0FW%?obb4Wyl9T`7RR_(>ACveo~)JMK%3VB zX$48X96;$nCK&RbrhjmQz&iQ8VjszZdp0N z#-|~72spG{+qOp6e`|XT-uqJcyven=-{xSKkRguoTlpmOs0Z8%cSEZsUUft;eF)jM z0|!Lwh7h{{cueL&kdXNBG?U#fIOS-3}16|v*>;qTwKiLgH2A0!ooOM*I7J!(G8I039Ko9id^Gv%>!L`A;i*s;$x4w?in{a3@W@cKCejGJK?{3FNAl$q z|Ba0-`EA^m zYk<)vGci_apCHYYJaVB%y#!VT0`9Y09UFB8L!re^_z9l8R6v zZ(%`^GpD&QctLX;o3bp>=4XZZ%u3e16U$}J0KcQTJ$0tNPiz51*~o6UIX7o>3Mp-o z5`>y^eF}K-N{mM!!6q`{?`W&VR43rWXTS?{{D*{TrHjeW-9XLofja({C$qjP6~VIh z%IbLyXd#-t>)Xpb<-{L@od7w5ju^^$<^(>h&BXBZG=2MIOTVNr%Xn0oXzwE6@LP=q ztU`NpGhOeWPq1yqGOK;P@^xxbXy5B*U)0o#|3Pm4SKXHW(GEBkm;oMNvIIAIOF_ul zv!zUe3 zB?^1wS<@^oDQcmJvh$@`USymBsJh!n$oW$zkYT(O$y?sad{-nmgv&y(a_LT77E*B zM$&y`xy+(WpD4H0=l0p~%R9$^uc`RFJ{}`N2}5%3E6ifm6%=ty_y8$2)(W_yP4oe| zFdwzq5`(jqQj5oGY7txdUOrF#;Pf3n8gGUE3xr>6^rHLt;!*f1syI9x)HF*uf#v7t zw+|%GOt577I*P5fca~TmeG2d}8z3M|13@wNuwUyw&*@`gV3qFZl=O)fRTlXQuI>%Wn^DlF} zwWUg}X?sZkx9O2bP`B;h-nfeIf^ee>9Oj)c7Sk1^2k^`bsznEW%fcZ{Dt^RiTyc|A zll#C#XEvO~Tvg}_(3c3=8@Mu?i-Qt9g-IhR* zk>l-;jw=g5n)R zm~;}L8q9**O~V~N;!LChP&bO~CA-!9kFNRhi5QVQ+6k5tejci!FWgd%OVp@>$T(sU z7K#Oa|8{yLQ1O`e)ryO71a=NK=J((~_Dog)ch?bE1X0#J zDtg_DSJlgPIL$(tcKCv9ZP3gRDu|S&H zfT-Dr7-I#6yp!dc;`YL`wYH4&SV~p5omOw2lh-HqO_aW<@NiR;FCzRk*dr-Z>3qEo zC1VdTnT_-xnLE~LcJ}sU>h|cEO-)Q33Mxp)3{H23*n(A4h>bsErw8-7JLVtG6j$Bl zQ2{$*LoT_{Ivg^_@fU*K5)N<=iLap#gPts%TInQ*G9E@54uhzLlN=t$#9)zP16qNN zzW?(xKIRjd#h-BrCAE}yywP*0dS34nKWh$WV`KOQRe0dcaUWA8{g&I<{-U@&I?9GH z5+Z(!9iYp8g^L+qw@(aw4YD}&bZh_ZY%7A=S6o(U`rBmQzpwUuutyP-!_duDk05{( zJ{S$f5c6)#&+v>rpVUSwp7PuF?<3@WUDt$#MB7Fel{}(jY#|3Rxx%bUUKx>{WTUP! zUPu28db~Ya((v6Kvl{8U^9##ykdX-=8S8!91uy;>mZiM@K}JGCl-oh~t^1^INLT3B zOB5fKfa{$ug5g=$knFnka&vOa-Q(x)Z2}9dv)NZz0i>g`2|fx$N!$^EU?eh7N}W|+ zhd->j1H;oE@olPwWR=goZzC(D26oUDOPkHIzWMnfo2>+XGl~#qCkds0Y8VX%^;{tpX*{Lr zr}ckaK#V*gnUbC0H04V%k=`hL8D&a^*&jVChFSnkTipSe;kPGv9a`=Dl<}sqC zE-Zy@S4msvbKM zN+`w}d=vOkc+X~HIh45)O;*x&!_UcW(7bBpx*{085mUchFohxVa&yDI-7itGo^Ia@ z`)k*l6^_KEr^}BupYu{sz87|{()f5sK`D_-n!i5Jb82uVWjucz6oGF7G{)7*g49_k z!gRa05BV7}!NE;#HS@t#>D4&;t`mnZtACBMw-0-jmW8!oVlI5U1P3C#PO&DZvm#LY zXHv~Su)3ooS>dvySaZ!S&Z3J2?Yn$bdTG>JOZp^IAA@?g7`G zo36|DD0}fRzon?E(f}`V4BofJKhjqIMnrv9VV}6!hm?rKl zSC}jD93W7CcaDZC>0ra*bE}7F(~Qr%Pqh-#W)9a*_D=wGmYP&y%<_9qK;}FR6ooobeZ`6E* zkvRpH+k@+#5ed`3Nc{|mVBv+Qcr&t7fzvvaAw$x2 zit!_%$&`{IA;lnyfRKTIg?^GqDgXky(DZl3#=X;~gQ4r&;7t8o0?KEGKaaNV+=+xzxD%GQ?so+x#>CuVyH}iMP1jDVHz*1UDs$tB+wQHXQ2v7EZ=|uaw(}&s7r$2l{BV>=dZti2 zk)b+)4_f_C-_W>bRq{egtV5E&sTJ1}wElCe!#8ORetN0)tv zS`Ce(v_F;4;ep9NK%~N6lV0BTKzVaC7X^z90NvsjFE%q-fr{3v%_cICQKRbmZpn=< zCzPZ5DLElf=c9we=q;~$jj|X-7bbz*P07E1L~-b$R!C12BH%FBShNm++M&+|cQ!p1 zRJZQ_ut%+x49j5FT0-kjuotVxk9HeW#KoD7^-E@l$C%zbZ*l<_k-9cEFe^tV#Y$fV$Pu3X*-GT(g2%#`{F@-hwi}Lbvm<|E>VtmJT@*)4EIP` zfj2Y8Rgvf216+AaU^wM8EN`dETYfr>_uPMtE@k5J@wvrz~LGx<`DyPg_T$btv5VvWF@Cnp?%O zEv1IR@4U%LXgag^P3=w2kT=(Qr8NRvOVGaR&lF$;bg)BT7b~rc)zkvRq6EK+a}y%0 z=^kSQf+P)Iz?4TNg;!csZ{NW9-aI>0CvR87wn`p^1uGICjfYaHfN zvrS+m@EyZC1+3%#?K`F@4D&hZr#nE$I_SDv-2#s+Ue6CF6U4gn__lW{T)!UY?jD$f z6O-Jy$pMX;pDKKO+@TB%mdU&||6m{s8H{7+Lkm99nZ=}-NK(-H-iH(|+7$cPZfgj-C$ehqu} z|J)6;u|!-&W$fz8$;W1m7fx3ndU|vCF!5L4$LHagkF)Ruc8+cl5?UoY#ua8Du^meb z2XC~15q-bQ8p3W~V0r6%-T1so)XZ0*?e3d_gv6Jmv163fF3==R{7$+r{PCD|mRaQi z9vuPYG0S{hIh%9fz~hHt=QxLt>bJD)L91sAEmF}pAPxy)lXqwZlQ1MIzqqSy6(D`- zSx5AFzb*BqK%UNjdhQJ7=HJiB{E=u7t{L{C)6IpjR26(n%t_r;Q2K9WsX!65&Vl5; z_cQpf!I8-4QYuqpslrg?FJ?01%b(W`0-LMdu{mHpn|pOe zCm-}?c)F+WE(MlaT*uc535}rnCc56>xkGEe#k7Lf6&!x$v5|{&Fuw6YOaJ=eeoA4% z;bZtIF01(TUm})2fz)BuIXUF+XI-c}W%EQ_?kY>c>J+?S3=E7U9bQ2YD(phoS_#Pt z`2gJ6V43W%SyPj*N&Kc6pOOQiBpV5rToi%)3sJfd0at8>$18=fNE+7@P|s?kb;|i5 zeoq78P7AlwVf81T06k%slTYw&vv}c}_2BnXwk>VmW z<*`~QQ5{F_NS#E5H1L$lB$)3XpofOeeOfEE_%iv zQE4>t8QfwrudgZ5PYSl@n~%mD!a}bdtny*n{rvY4H30*aZzIXdMrWj466Upun$!kV zh<5GX+7*IUQ3QOH!ihpQn{fP~`f=SR(a09!g(1dvf$yy^uRO(M6#7*fu>JC`i`Gl6 zy2J3541Ro@ly)KK$HYFE8!cI+Zwgjc^n^$PqJWZQ(^K%Z<2ybKvtQB|K7iXAc(M{F z;0Ggr#u{@!x@0@S*fwnJXCFA5$EY(hlzqbE96}r7(cYT!!q-sW81_`{K4Nj9t-+@8 z06htwt4Za%_$r@4%GA*k8+0z?)heQ?KWROm&gA}GB)9Jek(f7sYjt>6^qWp|ea=+D zD*!wRGNV<%n@`G)Cq3q*^bly5*mOJ$3d28dIDbIeUQ5mJ!PJ+&H;ARTzB#;gJnUxH zV%n2HSg8%fGGTEQ>+`3S_eyd{!IdUDE&Jkeg0R43IV{W!_$DC_XewMLF16grDU<&W zlAQ>wwboKbmXMf0qZ8k`A)*7^H&OrJvLz@4b2wf2fp#pFU$x>7lI7qNhY}%5SE*X5 zCoe=f9Bc?cp<6Ti)?VK)3<-F09??!Hj%E! zzxez5nr(2HY1euJj~?^*xG1i?oOlKiL`G~&Ed4dUr@#LS)9sbOhw7^qu2N;uVvSC} zQht!e^nO49r#!a4;t9$aX{-0^_8GC{pFb0+(%bYN4%=AlX=dfh`3wt-@1a;XT}yP@ z>1WraC*e1IynjU1MP;;8{0jZPzaRcQoS=M62eQHK6cy&P-}=@-$BP2f8Hynx8#{!< zuBoU9jQ~O*TfQ4g{Qyemm>{rmX1>%>5-F`sX=}sSH0DAobiLD)5A)PUK?w>}eqL(_ zOtW^chTOMqf3=fP^{t;6m#F7vf&U_|T;A`TH{f|OM2Q28y-0VEmHTcv7 z=u}i`Vd_nWu*r@AW&h;yz2W2bK-~4!oxZZYEZdBo(+5*^oTA>$HUrzKICPqLlkB&b zjSmQ@OF|0XoWW0=aT$m)RsIpX$RS*4pMMw=@ZvJ$Ggh4(mA6QL<6#^;X9`V4@_B1f zp=QRK(XY`bh9Y_6f7v#+j?K^TN>F1(E0O)DcL|Gv=r2_=rexvzIviR}WkvPztuLCc zumb3-&g8rvQ9li!=A5-T^r>l89TIz~h7P^JBIT)BFXDJC`#m^ltc)kM!9xo@uW&u^ z+uIibgK!v8Tp(BQ}(O~#q(jmVI_ zNy23xQ-aO98ZL~hz8_no=2?1#%5U-@#N%=&cwmLMvH>v3Y+at(iAJa5B+i=jr+hVQ zoW}4oC0#p(>04MO*0MH6U*E zMTmglH>GP*Ei}oBq`!w8V{NcN;keJaw$d7K!<4`3a&e-BwyYeC{&>gLmHxdUb?LWP z)z|3~DU7mmxxUU%%JZ|TKV=9Q2z=r{SC%m=nbr3sVK{8za!f@B)VP%ET`%NkjC1Jw zP@s3O4qqwtsr?Uaf*nTi*70aIoGA6R9{$0!w9U=y4N{~4&?c%42wa~{*1)YWpN6Oo~b~c30(b|cPToM-J+78?HAZi@>}4Up9+aF9;hm-o3Fd>>&S$SAaDwvt^PVw zNh|j1=J7N!4M&XCoyPSL94@ZwFHX9=hXyrZIv_~0>NTbkzD@kNw794=N7Q0If3B1e z6yCVVQ092{f~raJHeLvsU+U)CtK8{7btu|nwLdt_2#M*M%V z+lndYkNjSTjVN(azEK7HTJ~IjD)UP$W03m$>Mes|iaPhK;xB>xpYu5zUIB&AyC(Pu z0(Oxor>pXAiRB@lj_M5?!vo6GEq0)lyLJ_XuTiZs2Z{T2`aanWh~D{KnJEQl6`?=- zHrmia)eAFC*^36!zq1f%_#mAanCN^@)c<93vykkQ^xc!KPLI#y((P?ffSVFKxqrs9 zWKsRUhb`zvwmwSwD|_C!INe9F5M?SkwB?lV$-=mb>!pYJHVkkzrXbF6m$k13ccXH% z*-rdIulJtHd#iq>pqc&xrJ&WD>)1Fvh7_3GkgxT0o8~4os)_`Uydqz$PM;f@)-*A0 z_~9M=ynp#tc~8)ntKBOUK;4S(ak$OA*u*j1ER(xR%wfpVP_aiypQdbPwd;Y2<>agU zXI=@yiRtpyrDDFg%vF-$dfEr^n4Tg}XPS&X#G)_eBy>N{q5DSE&nF ztkn9OS*~TWily?21f!mCBzFx=gq}9sk=i@34nvL&12w$LwFAC&E|Ci=o7u@Es}Z}{ zhMS9P!n!Uh4_G``D%uLiL2JxkY%rPVdjr}lEwhgrGnvM7e(`D+n-48zcMQ$qbN$I{ zT_oE6_@B^oilFnGk{#z-t~Z`+$4zv#2C&0{Y-c3EFYSkS8@H660 z(|H%jRRF$bw4SRscFX0VrHL1w1^@qiet#lBZfm5lJ?QB*v%C_#dw^EpajnGZYji#- zbQ0OTcWWEo<*lF4TGr}{^Zp`K#8D`ErmOJGF`ZJOnP5&z9|~=ZK?L8Eak_^cp>7) zr>1=mgi785Z)i7eF&pL2pUw6nKVm=ms-$_2K?h)Rp8qHryGrM@!7H<|`(0FW4bm8t z(K=w1*8R`syFl>2Z2L_^xS)y^*HQTN^kfmVzRrWshZJf(mAUi@LSsXtncR9#=6Aj# z)2UYw!puhq5jQh=g4-v*Hj8gda_Ls1*$h;cf zxtMGT`pAQ|a^m2{X$)&Xpg7Shmx6E&jg6tXxLVe@(YL%iqP;(yT=nkpfbJK&wYZo2 zT^3-(Bkyc81YehJ_B2XZ?bWma7uQoypYdzgc zO}zNs+SFrj{;h&j$=d{3{wu%DGN*U@E(gJq&(W;1(PwlZp)k48=|tGq7t-;y^W9%_ z5HR$m34~pVK0J<})FI~s;xM~?H#u(iYupoH5#)TlOv8&-9f^&w(&Us+w9*udN>|8r zd9lSAwL>$iS#7n@w%MwMn^pApVzeDuqTL@JneV~nyj@SL#^^oY>o)!CFk1)#rt@d8 zsbGIzHQ^EmpgSlKuzO|_OXbRq5!pwzb@L)J;A$BUc6aV5*+Z{_85{)f)hV8P!*ZL0O zXjdpFF#MV>*r-_vmnWBtjL$I{r@$wtK0J*??7k0ay$t9`KB9j=m-h6Yby%F%u&xsa zm_758mgTL|#%H+7>!f$99{J;^D@_L-!TH+H8?a<2X?1Iq)D+rPK5x46j91UQbH1;0 z{{A&vnX6G388^qQS~w||pHlnG$=R(8bb8KuOG%{qe&ESP@jg;V5PHDzy#Q3AOGT|Q zB0f<&{P3n>&ttoA-1^4)@hE}eJj&Ga$ymPEedFuHqjHRIig|yN6KD~j6j@#p1NkEf z`Bbu$?RU@0n|T8^7DLW{Ts`aB3>YmG>$?YMw%|1*Itd#j^d`-z0{c(Wf=d3aNeWH+ zTeYIQuYZ7;;4AtR93sPW_v$V6G6o5p%NeN-xOEKgZ?=D;)HS(@c8;Wt{;|?r5vJhXD5z1-11fjUUB`K;Qn?7!@Az$}w<~kLS~B)N1GS!jR{xnD2ygNb!ulW||<_23XA7H5LGF5{!aMyK$A01_Uc-2U~l zQunTRO_G4feP0OUQo)C1rO_#uk^k+7UK0CI!1L7I!DH9&x_D_d~Ag zC2HFE-U-KA4ukHGbo6(WpRxXCT&%;AM)!nUNT3E!&FOn-8C|00<6^n_uDV@Oc(+K} zwq5v%l`~#n6&RB{gN;(-6zVfe>vwgk5@xYB3Avt+A^eksuduDV5e*AKay4Jg3u&_8 z8&0nuV7xq$5S`4%MsQ$-`o4~6hc^dO%fw>t6nzC%A+I#3HdngF%*496yTh0BRd>Ymj2q+RwL=*@>vZzq75}%M^$h+Yyp~yb-u@r#*jFmMGe;I%zb~) zsM!+O{7pND;twDVOD`3#4N!Zs(Eo^!_@GpGu4<&+AO=_j+ImiQOV>Ze|Dv7OUR2U4&{+f(~bvY?0;3Z&~sWOj2A_-Q{R^k zg03l2jtg=r8IUQ&@`ptdz_ht63*x|2i`Y55*vs$|E_EVuNKV$oY^3`MpmCLzXeQWC+-w%sWK6?jclilBEnLd0*WhE-1@Up|exeN8`LB}?GEK8BOCs*~+f zyff}hM-;}%SXki<88m^7d)l)*LNJPrFR{XvT1Oh3E_2iuP}0zHcgizeR?7T?HX+WZ zT))lN2h^hoY=SimF}#D$$ttqP1YUkpDl`N;04nqh@sqzfa=!RM?J-?&T&O95(@25Q zW)yr}`lDM*6)_WZ+$@!jqHvg=xh6V;>(|H~CA7R!SEF&(B)A+U`f^WqfdjPG;mZM& z7-)mV8*q2^fh@OH;21Z9C$rwGXfMJ3y;-L#puRA**_xm^W4 zXkJ(t7-pYCj*sm*QK!~Qf;h+&UBaG*ELskjIQ4)Hu0@EYfaIiVw+!Wn_wW1|`Y-l7 z#<=>=^2fMB8ggsq3f~2vEYe_lnrKVax#}IxW}~uijT>v|==|un)|hmYo?MIX(d2eM z7zs~_d`9{uu>se)|IB6VEjGL}lEr7eq{cY^ZsVce^$G>@R5$y zUur8twm0wBwGxlm2Z*ed7@s8#?Qe|kurnh64Bf+M5E);rNvE1^#n#GWVb-x+ZyJg}qkc)`*&7ooYX^t`4(XgC z8Zo)c3K$*(h$W(JrXYtlwO3 z;?>O;+TOypc)VZOgAK+$UFdbg^>s}VQwFGZwZ8Vo><&L<>=uR+L;xD=8pT6kaXb## zWQyuPhi-U&jyp{qMjeGk4a(po-o{Yim7h9o)4zse_jfO#I0OEk zKhYnv1*7@hvTJj$7x_rqDcL=W4{)z=ocme02$k#&ghQ?J+n3xMmZ}?wWqgo8RW==M z2s$&O?uT_)t$}^$#4;1`?3WBeA!Zf_$^GVkUiap9&-t=3fvc`r`qrM=eBKvcUVBSM z7*4Kl_XehHvRVx4rqt@fJOuND8f?41tS_qi zT%~Um;*s%=XxHw%Y0r!Y!k7HwRghS0&2@as?;!_xI{_KSnGJahZ@$`?C{7E1e-eJn z0)9iZ{QAXy?_14_JL8jd{e2-EN#OL}LF0#v6KZ>#R2u0Z&n=QA>!W)Z=!S)6V^aR) zO#+wfu1g-A-q7UN5>ug)6o~xBaGNa~B{%A+%$A7yl^UJWlrm4u_U*US zOE9sQmGEokMcd7h`KxW4`AfxT&T*^MSq<2C6}t)ocd76X!RBkOM<22OFqL6`Sj*rS zSS8%*Rkpm<=(fZ~G?lzmNT1B`Vc1==%rOzc3+$(CoZz%tYZdwM_6=QAbD`Sx0{z5O zQKQu;SNzpbAP&C6CoyIB6d38v$Dt)eBU}5hHurNb&@Wsj0dWhfuds_kA zAcz5o%dR+OQOTtq!@P^*6BRs%GIMe_g86WG#9)vZpZz`r;bt?ytDUMgzgTczIx$9Y zHP`)e)>UJPl(7S-AfD4^gsw=I@v)`BLcTQ?E0K5{<_v>LE;9(xB;=r<{4cN*fEYA8 zQO_&!G=)3O{q~SiR8BOQ_7aXLB_gHzH|(=+DX<57tF>mQctfh69xu~TI5&@PgyLlr zBJUIg%do&d!D$SOXrp~3SWf)z24r}?* z2cnS2Om|-la8M7sD=n17gWp|YVq%^6>&8oy)0MmQp0!&_6{~>q5z?E$P0`}Lz&pUF z>>NA5Ac{>V>eV}Q)l+Xl9WW^)Vg2BLrJ@=^TqLGndYJil7d40j>6yOiP*bDaBmehf?=<|Lrr2$pQ?ay{Tx>`z z#_>v3c)a!-#kPOkEZ~H6xZ?7CzUOYbU8wHQo?iU`l*)c&DS`d_K8u?OuI-7abzi5$ zZ96$%tifK9;D~7DNfx!#Ky^<3tG*v;X6U2G#9&cZx7kt|nOB|P5rxNr5bld`0PRe74BYFD_K+gk_`y4y}Q#kV^rf>R`Ky z^cFb9ssB^gRfk2nb^8G%loXH_#ezpU4h(5O#D7H*+}js*#e6j7h89OH_3y}#ZwjHs>-?)D(E zW$ac=^R|)P$fa#r*t3yb4%{}1ojR?xzPre=7WiI4H(}omXH7{(g?ZY+hP@}0Wx^B) zNi~Ta)V{x}p(%K4Z&pD;j$SJqPtBh$yZvR@UuVX|0AFcOg~x=bHC)UKNYU6Ff-$%r z9vm|LoEW1^O(PO?F@7HHP3aVQh{lNvly*kP=xOwdyN)i$%*eZNf4P`nuO`LqOUX`h|s6%vf(9X0q zH8F)92zKozo_OVFfN1&(6fKIsN}2EOpK@rjDK3-~DM2MffbJ~uoxjkZP?g~G>5Tm9 zLvbX}!a-Y)wfB0RgDjZ#tyVT*!SHl*viI8i&^8VgLRe0iod8t-jcqp*0iOG!=f&pj zGGecmid+>U!`Rmyd1bd8*e0%;8l=PdV}x8c(j$G!hE*#eQ-aPLGBh+P{&a%HC}WRH_nNZ?5sCI;OVB`l&0$TpDu^_9qI^5J@0InUG1>PjD?hqH+yLgG%< zJ42y|*Y-p2dwwXo$)ixxJ_Dh(E`P(M&G@l$9~|PQwMho!5~?>^!JDlfUheHcSQvO& zFrc8d*5;Q_0;~*Z>z&xc2o9RvVKly>w1ZRF;*Og{rh^Ut<$hDU8xkLjODl zwwo}>{-kfHk$O&jOzHkyS~e*S&oC0t_Gf50!&f#JIKevvA&Z`&3DEIj0$;M3YN&XV z&Df$qu1z>9OG=P z`-wjivU81y9jrG*v@(f~`RqWXHM7D_T0l;L&RVrk=aXmt^lT9nqDh9}9Sy^K&kad7 zKbqaU8?u;G(;V@N{gCkI6s4ry(P4i1uYL5qBAixSCJx?8LWdIpH{bQK`G;2PoDa^NQ(h_QCVE3`_K9$vJ=WV*~!x?A(bfKZmFHV#a z={L7PqHP5d09*3!m_<3=+`|>dS6sX+vo@p@9fNw?Xg`W&9dxe-iH9{(9jQ!7g5p0G z(&OJbH-B4C4#H?dbi)txR8r9%y=apnAqgKz+s4K;419aCJ*J|0xL7vaU|9G_9L>fm zywu7F6`izSc6P8`OrziaP48X760rS0!@MpVYqTos>W_F?Yebj)S?+C4>sPOc@=6f=<-j{4)8X zefJtQ{#w%@MemdZn6&I&6xuG+mNcVQnn$L-$CB4i+f5E-Qx9Br7q+F$UM=rvrMCMO zzBT4zSGF&c*^TxGs;^oCoIWY!L(jIL5vJ(?)HNDb0!1q1Vbtz%+RMgKW z_OW<9BOmSB+Hy>K&fm7x(*pB=U__C%%e!|O&*wZPi;{Y;LI`Mcyuc@Fc(|ci**PF> zIYFkORCzT^$P9|1Ai`ENR<06@dLcNf(wSfXd;AJm%8GCOPDY|=}M z0|sq~F2n|aF@+f#sBLWlRpaeqIU40LwkM1cJaM-I(H)-+puMMNWM@55+%O>vLePaxIq8?Z9eA#n_}WjU&^=`ABX@zZfaYuI6rqK~st38aW$ zQc0cH2m)jpbAc?PBT7!=A>Nc6?kHN-R$6ZQRijFZNzqAhWrlc4$ z0F40P+q$@A1b6s6wM_TwDsl#eiTo=T4*mRY-P*tz=}&SCfTZ_vg@TFP7m6rAB0eYt zzFZ1|9Ry-O`yBs%WMU$=^SU|RDmQ%BAZMX;9Q5dNg11XQq3&UMk=B$R2HM5@{&_Zf zw|dhB^vxd+pU)S+g^!_jz<+t|G`1+?U3cR*>1A$DH7*Qe4H_O^x$6l_y1kH-yiegX zZmXW$?iZ?hvF;h9wTiRw-SkYR_;~}WQ6d$k0 z5nD0MIPpD;7Z=mDs8jSbL8x7bD>f>=*LiZZm&!WxX{m6_7)ePb_{wPhiJmb2{2mG> zuETC5E0heGC;!*{^(T?_Q0bE}Y7s*uK>%c07;*72BI5CIb}e|6{=K6%57kxF$sr*r z)LsM`mlwT>tg*y20!2ls0RZ=-=Zq=)2J3Sg|avj)Ad|+q&b<+2+@?3MYY+cYdPT`8a=J zy*Utw$F6%O5jWD@sOoUFsW!c9@cMCN2f910r&wHDDVcIbWi1+}`O zqLj#+P5G22hi(AGhHpwgRqX(2a5|cJa-YY%bfOz$>jpTkBE`p#Q%WX^s_=t|;NjiP znL@~q7XBbP64r7Y8J5RJW&YRE%r8%NXV&vsQ@C$SiaPH3@_nh}{}#jkYJDiZowVEV z?YG-*<5_Z^G*7FpR)fl0+dK!Tnp$l8Z9R^L<0qSvT&^#jLghw)*ZPk-4CYPVjvGXy zh^3A=etOT}Ew}H}GMrlwp8MBajug#@Wu;3g?$KA#Cr=J^9_w6$Xuk)It~kJGc|&eX zT)Og2vMAPv$mLl|nA1BUHFX<)#0263YazPTwv0LAsHx4XoMDN9dyuy8Mci%?_!Pp^ zQl7VH45TAJ(>*}qb9+WG;CG{d=5&~17MDz=PC10p-Wu$Av}+?TrfbR`IjQOFygU`% zoUMTJUq(LiFJF&1+wQcl|NLQ3oxR>K+-i{GHgFq0S(hxxvybf{H!Vw4cAoUU7D#t$ z-XYfU6UIyZtIljc;kdGSJ7HvZc=CK!IQ4z~{@|utJGF3)4{|Ru zN*_$+DNP|rC+fJy-j&}wuHB()<9;5lI*a8OA#jb%*A6+`sllw=p7T*Umywl)9db3k zp!GWSlOa=1;`ZA^hlNqoc}UKDijPPT#tEdoGwzzMS=8F_uJhf;B_%)p21R0!~E132x>ts{7wXOZldc@$w=3#!^REdXkJ?OwI zh{p04ES>1mNhOpk7h!CQjfI~7YJ4|I-UOqt<9_FZ0dC5e*jNUs`$L1NxAVJGl9<2p zf!>v~)1@`bbft?tXN72@t{2bH2*CbfjnFSLoH0DQy<+tdca8B8B4Tmy9gcA;7Gbke z(wr}v3>;z2Ld8+|K)5ub-f63csU(>$izZ<|kf`&0Sm;nT)t1biyI_hDb^OqDjc#I3&`qkB>6V<(~tsX+*UvM0skr=F{6{tuN2< zzk=}1A3Tbn#cFWgk@4X&>@!rwMPW~pmyu6N%bSf4_Fn7-33KCwONS@qJl6ZH)h#+| zO$2m1Y~R#y`2x{Q_HirHtx9nG^ud@iDej=@1en$W(H+RINN55WXe*tJX&Lef7=R84 z3wiHb@*YHL+;U8;4Q&Ovu*E=)dPx@nCt@|K&-!|91VM#rmztiRT%146y{OjWXqvCDf3yb5(D#RF_PsZCc}3`xG9d9#@oaY zF=+-*Fo3!?9X4KG4)jsZ84Q+JY}L71S+-z@!Doa{Qb4;_n$sdJ0uk-dCd-oPN}B=N zhOy@sYo-srx)+aLz2a$EN=SdUT9JC@RCVY6X9A(x=QN+^=PrCp!4Z$qap;B~qE9yH ztmW(4M!}C(v-Uiz&t>S0@HTxGvP7_4MNWOs3R{|A`LnKIvhh0R`n8_Pg?th|$~3^m zI-EYEJ)IBP{%m@A7Sp$bLM>9Mui=~!J(-4CZjEUrrl(hp2)z#Rs*C0!zCiXvy%)S+ z*A*k8F4|67>_qn=t`pM2l_4twn8EurkRTNr_jRMNk|ZJ2r3gk5z2t^lJ60J+cWmh% zQ!9ejfXB-utHqe;#lXl&y42IjO9CJ zgpFTmy$45)Gkgw@89(qcN}A0*w&C7JRVS{lmznW+ZrH>h!mSQMmbM!VOkIHId3bfn zd_Lf{WXq}QH{?l$A`C6a`2d*!P}K;~YiEmC48O0qW}0EHBsKLyzq<=Qdzt6H9vRZF zg4oU{5D|F}Y8E|ze6hV;0=Cyf11HO2B*zYi7g}CUB=>J?)p0|+{BLFn`)P8g{J!rva zF3KSyc_eB;*a=FfVJ;zf$`fhL9|U#n9+V^Oa~v@lIfS(nH~w(HEy|pltw-9CoayX# zb>_9&4ELPco)KCksE`Jr-AYgvBRA$wUa@VO+N%(|YRNfVvVk^bGbK+kCn+cKTN-+A zNQ3&Te5|j1E(?uB?aH5}kknIjlwiZ3)1Iw&ufRi!K^_-%7nS3aBq|pTlp-G9^>b@;3AIDx|Qmwm5+r=W6~;>1e=*3JsYpi?;d{Yi>Mt+0^9EGMKn9u zH=b!$90s3gg#;Rv?CsA)FJN5>|6a2)JMNYMX1D+H?2kj`HYPhOGAq zRlLKgO{NGClCTYTSz)+T19{)46=KG1rRKAby!)KX__XnW`t`~jQo_WZX5pfJJn$rU z*`ZU>Qa$)N?Q>|$+YW0L8Df-8{xZz@Ta62E#wXtYV2?lL{&1AiulKqdb$gSlxzW?X zUM^JG!ai>5Q`Dpwmb4)GOvP|H4Z$>O7-V#Qpw*8$QA#Gz;67)_czD~u`^JR z*-)*+7K8*L>02vxF9oW?jfy0Tg_lIDU5dS9Aqp7Gc2vO*z5b8+tRJ{avk{^oL#*%m zrR>s7!J#QMTIbR*T^(nar7n)`p;3KKJ02dDIl0>fQprw11Kv7#%gL~%gHOFO2Gbvw zp@-BZg^zGDd_FF7F!F5{D+hjI+F*v_eh2}z>Na8iM8(<-tH#9L(ncnr~3@{{DdSl{5aa=^l72hxcQ?@vc6sj0rTvu1j$a=?#U5R$LHD#LR;6zR` zUOY(eA5{L*E{a}1(@-^9D|b2Wax#$b`H<@sKlneY|E2$bzA7QUbA~nTGygRF<0&z1 zUx2Z8fY&V|u^X2D{F+om{h8>MHcjw*KmH+Pf`;yEf{(cSXQRJpSU>fnK=*xAJ8aqV z^pECmn22P-%;7wf>x>JUsAv5&Scxt{48ef;0_13|$^T~I7qtYL*5~3xQaXuh`Q{ZT zjq925sC;tOv2JHk z%B~i*JP@ZRtiL2tS^Rf%-6M-P;huq*aS~-C7(-TV3v9_fRKHW%B;R|uLo#ldfBii> zbpyo%rwDe*FD+WjqMhhF4u8fgO9twi+XPS^uH?C zj`g)mtwnq<=gB{0&_dmrI?&6HfAd6IKjt*3O@#HnR|Dsd+%n(>+PVdmff#?w&({KA z*H;TC6S99;oTfx;m5M%?`MY2(kAA#rtn}a@cAEN427e4Y21-8G z5B&I3q&We3Wx%;xmb&iKZESfgtgK4;q;UfS${uJkXo@NSwL2WTmk?h>?T|}owaUN? zA?6aPL^e*F@8T#4CK%C`SgAhyL2gYbHkhP&KNL$Q_TbF(cp+hT>m%<3#ZRTre{xgl z%NJNFk|7u1GpT$N>^>+Yyt{G4RkHVoH+?!d1NO!7$=|wL+yAv1^7BX$}9%jWPGL60KEy>pbU0=`6(o!`Hh5CFOi` zWec7hZMKB)a01xeoQg{8DpDj%=C@u}Ci^0)hY%svk|+juh~K1kBwLeoK2~-|JtKCA zQ`GSvnu%(T>H@^&cQi-Y6MN$oSEZie@bh!GCi$vnMgxBneWAA4n$Czz2=0{)SZa!y z5^>4BH|VQ=iZ(NHP3Nkl5}W|JJ^N0htn2HqyTBI!f5sjD;Gi zK7DM=A|T@Y&4j!sF8LY$tKXd&r-L&stax_T5XK6+vLVEIfB+wKyp8U+G=uhDpxco2 zlP_4^_<{(g=DE%&3}$9#Z#aUqazIrgZRHGFs9+KMQc=-HDCyIF4G56TF=`Gwv|y1? z$~GNdW){mMl=8AkMi(e)lk>89r-#J2{wEHhYN|*loNYCw^U44htBt2*yA4!b=@e(oM6EZzc zKD*EN78>$=WGuuw!HQ~ka{ zEC6g{cTJc?aU-y9Eo7p4S4j=@NA&ocfM%v|7lJr6YgjwA>teJO3m_{abHEeURpBAF zHqZDg`2ViiU!oA(x?MYw(sjgxN&3T`V&BIWjQ*83qCBm%S7g`gv=l?IIpNytFDKusvw-Sg zz^0!X(KHkr>;ZO`{C`A2cGvMqll-Satn13n1wdMSd_v>+t+poycpYKn_L0cUgn#9< zNEa<^#YR!Z49wR>9u-FdpnmWm`L=x9+VQ26QR;r<9?rs$#`cYm{@> z(_KnIKu%X^X9`d!{pq%?X0zHd0jl}ei?C5WmiyfiY z&xZ`0<+giQtKGG>Yd)%i}<4%eEzika`FcD1S^=7DMAZ zCJb$S=cXrXwHQ*~v8ODejT%q-jw%hlxukr%v;ZgP1a>k8L>mnpCB3dOZj*XL_zQpkNP;8GCC+c(GaQ1kVw0ceL z9r5o|kwvnhPJypImqk+oTmo`hyJNma43VYKtk=id{O&AqQI0<=qP9u`u#LPFXYIZb zP1RN5LEP>lQCC2`P*O@peunJX$F$BUQ?gu$ZWPpBF_bT>{fk4PCVcW@rk1SCmWak% zxF=Yh^J^PUCm=>f#xt2Yb0)M_-7nLqdZzk#eftSgf0HG!mYev7+6J>*zS9v^6tkj7 zc8gJ}dX5TuRx&Z~cFbi~BP6Pkmvqx`WzVJ>w!~9R|7NbUANiPue)BvylgmhFM zyi22NYb@%hEHC%bT-39&INhpjbk+4Zu|OXjj8k(QWoil#dGG-HWM|6tVff}1P{J(l UP#I%e8i4x9Nh?d0NErM74;4?74gdfE literal 0 HcmV?d00001 diff --git a/docs/images/overview-light.png b/docs/images/overview-light.png new file mode 100644 index 0000000000000000000000000000000000000000..1c80f6a6e75ad6bb5bfd58cc26cb5d9237a217be GIT binary patch literal 321416 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