From 7c83da42d7d2338d16bb904be88c584b08e7e11a Mon Sep 17 00:00:00 2001 From: melvinfoo6776 <67073360+melvinfoo6776@users.noreply.github.com> Date: Tue, 14 Jul 2026 16:48:05 +0800 Subject: [PATCH] release: prepare v1.1.2 --- CHANGELOG.md | 12 ++++ .../CodexBuddyMac.xcodeproj/project.pbxproj | 8 +-- CodexBuddyMac/CodexBuddyMac/AppDelegate.swift | 2 +- .../Bridge/codex_usage_server.py | 52 +++++++++++++++--- CodexBuddyMac/CodexBuddyMac/Bridge/usage.json | 4 +- .../CodexBuddyMac/CodexBuddyUsage.swift | 20 ++++++- CodexBuddyMac/CodexBuddyMac/MenuBarView.swift | 21 +++++-- .../CodexBuddyUsage.swift | 18 ++++++ .../WidgetView.swift | 17 ++++-- README.md | 14 +++-- docs/images/codexbuddy-menu.png | Bin 175899 -> 153197 bytes scripts/build-release.sh | 10 +++- tests/test_claude_auth_recovery.py | 34 ++++++++++++ 13 files changed, 181 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ac8459..8597e6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,18 @@ All notable changes to CodexBuddyMac are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). +## [1.1.2] — 2026-07-14 + +### Fixed + +- **Weekly-only Codex usage.** Codex plans that no longer return a five-hour + window now show their live weekly utilization. The unavailable 5H bar is + hidden in the menu and widget instead of being treated as zero usage. + +- **Reliable local release packaging.** The release script clears Finder + metadata before signing and after archiving, so both the local `.app` and + the extracted ZIP pass macOS code-sign verification. + ## [1.1.1] — 2026-06-26 ### Fixed diff --git a/CodexBuddyMac/CodexBuddyMac.xcodeproj/project.pbxproj b/CodexBuddyMac/CodexBuddyMac.xcodeproj/project.pbxproj index 7cebaca..2467169 100644 --- a/CodexBuddyMac/CodexBuddyMac.xcodeproj/project.pbxproj +++ b/CodexBuddyMac/CodexBuddyMac.xcodeproj/project.pbxproj @@ -260,7 +260,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; ENABLE_APP_SANDBOX = NO; ENABLE_PREVIEWS = YES; ENABLE_USER_SELECTED_FILES = readonly; @@ -270,7 +270,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.1.1; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = com.example.CodexBuddyMac; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; @@ -290,7 +290,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 3; ENABLE_APP_SANDBOX = NO; ENABLE_PREVIEWS = YES; ENABLE_USER_SELECTED_FILES = readonly; @@ -300,7 +300,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MARKETING_VERSION = 1.1.1; + MARKETING_VERSION = 1.1.2; PRODUCT_BUNDLE_IDENTIFIER = com.example.CodexBuddyMac; PRODUCT_NAME = "$(TARGET_NAME)"; REGISTER_APP_GROUPS = YES; diff --git a/CodexBuddyMac/CodexBuddyMac/AppDelegate.swift b/CodexBuddyMac/CodexBuddyMac/AppDelegate.swift index 31200c3..8f66ac5 100644 --- a/CodexBuddyMac/CodexBuddyMac/AppDelegate.swift +++ b/CodexBuddyMac/CodexBuddyMac/AppDelegate.swift @@ -78,7 +78,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate { button.image = NSImage(systemSymbolName: poller.menuBarBatterySymbol, accessibilityDescription: nil) button.title = " \(poller.menuBarStatusText)" - button.toolTip = "CodexBuddy 5-hour usage" + button.toolTip = "CodexBuddy usage" } @objc private func togglePopover() { diff --git a/CodexBuddyMac/CodexBuddyMac/Bridge/codex_usage_server.py b/CodexBuddyMac/CodexBuddyMac/Bridge/codex_usage_server.py index 2283065..b1c0f03 100755 --- a/CodexBuddyMac/CodexBuddyMac/Bridge/codex_usage_server.py +++ b/CodexBuddyMac/CodexBuddyMac/Bridge/codex_usage_server.py @@ -299,6 +299,49 @@ def convert_window(window: dict[str, Any] | None) -> dict[str, Any]: } +def is_five_hour_window(window: dict[str, Any] | None) -> bool: + """Return whether an upstream Codex window is the legacy short window. + + Codex now returns a seven-day primary window for some plans, with no + secondary window. Older responses used a five-hour primary window and a + weekly secondary window. ``limit_window_seconds`` lets us distinguish + those two shapes instead of always calling the primary window "5H". + """ + if not isinstance(window, dict): + return False + try: + seconds = float(window.get("limit_window_seconds")) + except (TypeError, ValueError): + # Preserve the established mapping for older responses which did not + # provide a duration. + return True + return 0 < seconds <= 6 * 60 * 60 + + +def codex_windows_from_rate_limit(rate_limit: dict[str, Any] | None) -> dict[str, dict[str, Any]]: + """Normalize Codex rate limits to the app's short-window/weekly schema. + + A plan with only a seven-day primary window has no 5H limit. Representing + that missing window as unavailable lets the Swift UI hide it while still + displaying the live weekly utilization. + """ + limits = rate_limit if isinstance(rate_limit, dict) else {} + primary = limits.get("primary_window") + secondary = limits.get("secondary_window") + + if is_five_hour_window(primary): + five_hour = primary + weekly = secondary + else: + five_hour = None + weekly = primary if isinstance(primary, dict) else secondary + + return { + "five_hour": convert_window(five_hour), + "weekly": convert_window(weekly), + } + + def convert_percent_window(window: dict[str, Any] | None, reset_key: str = "reset_at") -> dict[str, Any]: if not isinstance(window, dict): return {"used": -1, "limit": 100, "remaining": -1, "reset_at": ""} @@ -919,19 +962,14 @@ def fetch_codex_usage(auth_file: Path) -> dict[str, Any]: upstream = json.loads(raw.decode("utf-8")) rate_limit = upstream.get("rate_limit") or {} - primary = rate_limit.get("primary_window") - secondary = rate_limit.get("secondary_window") now = datetime.now(timezone.utc).isoformat() return { "plan": str(upstream.get("plan_type", "unknown")).title(), "updated_at": now, - "codex": { - "five_hour": convert_window(primary), - "weekly": convert_window(secondary), - }, + "codex": codex_windows_from_rate_limit(rate_limit), "source": CODEX_USAGE_URL, - "note": "Live Codex OAuth usage. Values are percentages because OpenAI returns used_percent.", + "note": "Live Codex OAuth usage. The bridge labels the reported window from its upstream duration.", } diff --git a/CodexBuddyMac/CodexBuddyMac/Bridge/usage.json b/CodexBuddyMac/CodexBuddyMac/Bridge/usage.json index 06ce15f..f255dec 100644 --- a/CodexBuddyMac/CodexBuddyMac/Bridge/usage.json +++ b/CodexBuddyMac/CodexBuddyMac/Bridge/usage.json @@ -3,9 +3,9 @@ "updated_at": "1970-01-01T00:00:00+00:00", "codex": { "five_hour": { - "used": 0, + "used": -1, "limit": 100, - "remaining": 100, + "remaining": -1, "reset_at": "" }, "weekly": { diff --git a/CodexBuddyMac/CodexBuddyMac/CodexBuddyUsage.swift b/CodexBuddyMac/CodexBuddyMac/CodexBuddyUsage.swift index 0cc40cd..c526a90 100644 --- a/CodexBuddyMac/CodexBuddyMac/CodexBuddyUsage.swift +++ b/CodexBuddyMac/CodexBuddyMac/CodexBuddyUsage.swift @@ -61,14 +61,30 @@ struct UsageWindow: Codable, Equatable { guard let resetAt, !resetAt.isEmpty else { return nil } return UsageDateParser.date(from: resetAt) } + + var isAvailable: Bool { + used >= 0 && remaining >= 0 && limit > 0 + } } extension ServiceUsage { + var primaryWindow: UsageWindow { + fiveHour.isAvailable ? fiveHour : weekly + } + + var primaryWindowLabel: String { + fiveHour.isAvailable ? "5H" : "Week" + } + + var hasAvailableWindow: Bool { + fiveHour.isAvailable || weekly.isAvailable + } + var nextResetText: String? { let now = Date() let candidates: [(String, Date)] = [ - ("5H", fiveHour.resetDate), - ("Week", weekly.resetDate) + ("5H", fiveHour.isAvailable ? fiveHour.resetDate : nil), + ("Week", weekly.isAvailable ? weekly.resetDate : nil) ].compactMap { label, date in guard let date, date > now else { return nil } return (label, date) diff --git a/CodexBuddyMac/CodexBuddyMac/MenuBarView.swift b/CodexBuddyMac/CodexBuddyMac/MenuBarView.swift index 0cf2ba3..b31659f 100644 --- a/CodexBuddyMac/CodexBuddyMac/MenuBarView.swift +++ b/CodexBuddyMac/CodexBuddyMac/MenuBarView.swift @@ -127,7 +127,7 @@ struct ServiceDetailView: View { Spacer() - Text("\(usage.fiveHour.remaining) left") + Text(usage.hasAvailableWindow ? "\(usage.primaryWindow.remaining) left" : "Unavailable") .font(.caption2) .foregroundStyle(.secondary) } @@ -144,8 +144,17 @@ struct ServiceDetailView: View { .foregroundStyle(.orange) } - UsageBar(label: "5H", window: usage.fiveHour, tint: tint) - UsageBar(label: "Week", window: usage.weekly, tint: tint.opacity(0.75)) + if usage.fiveHour.isAvailable { + UsageBar(label: "5H", window: usage.fiveHour, tint: tint) + } + if usage.weekly.isAvailable { + UsageBar(label: "Week", window: usage.weekly, tint: tint.opacity(0.75)) + } + if !usage.hasAvailableWindow { + Text("Usage unavailable") + .font(.caption2) + .foregroundStyle(.secondary) + } } .padding(.horizontal, 14) .padding(.vertical, 10) @@ -248,15 +257,15 @@ struct MenuActionRow: View { extension UsagePoller { var menuBarStatusText: String { - "\(AppSettings.codexLabel.prefix(2)) \(usage.codex.fiveHour.usedPercent)% \(AppSettings.claudeLabel.prefix(2)) \(usage.claude.fiveHour.usedPercent)%" + "\(AppSettings.codexLabel.prefix(2)) \(usage.codex.primaryWindow.usedPercent)% \(AppSettings.claudeLabel.prefix(2)) \(usage.claude.primaryWindow.usedPercent)%" } var menuBarBatterySymbol: String { guard isOnline else { return "exclamationmark.circle" } let combinedUsage = max( - usage.codex.fiveHour.usedPercent, - usage.claude.fiveHour.usedPercent + usage.codex.primaryWindow.usedPercent, + usage.claude.primaryWindow.usedPercent ) switch combinedUsage { case 0..<25: diff --git a/CodexBuddyMac/CodexBuddyWidgetExtension/CodexBuddyUsage.swift b/CodexBuddyMac/CodexBuddyWidgetExtension/CodexBuddyUsage.swift index 996ff46..25a1637 100644 --- a/CodexBuddyMac/CodexBuddyWidgetExtension/CodexBuddyUsage.swift +++ b/CodexBuddyMac/CodexBuddyWidgetExtension/CodexBuddyUsage.swift @@ -51,6 +51,24 @@ struct UsageWindow: Codable, Equatable { guard limit > 0 else { return 0 } return max(0, min(100, Int((Double(remaining) / Double(limit)) * 100.0))) } + + var isAvailable: Bool { + used >= 0 && remaining >= 0 && limit > 0 + } +} + +extension ServiceUsage { + var primaryWindow: UsageWindow { + fiveHour.isAvailable ? fiveHour : weekly + } + + var primaryWindowLabel: String { + fiveHour.isAvailable ? "5H" : "WK" + } + + var hasAvailableWindow: Bool { + fiveHour.isAvailable || weekly.isAvailable + } } extension CodexBuddyUsage { diff --git a/CodexBuddyMac/CodexBuddyWidgetExtension/WidgetView.swift b/CodexBuddyMac/CodexBuddyWidgetExtension/WidgetView.swift index 19f3dd1..411f2ce 100644 --- a/CodexBuddyMac/CodexBuddyWidgetExtension/WidgetView.swift +++ b/CodexBuddyMac/CodexBuddyWidgetExtension/WidgetView.swift @@ -47,11 +47,11 @@ struct SmallWidgetView: View { .font(.caption) .fontWeight(.bold) - BigPercent(value: usage.codex.fiveHour.usedPercent, label: "5H") + BigPercent(value: usage.codex.primaryWindow.usedPercent, label: usage.codex.primaryWindowLabel) Divider() - Text("CLAUDE \(usage.claude.fiveHour.usedPercent)%") + Text("CLAUDE \(usage.claude.primaryWindow.usedPercent)%") .font(.caption2) .foregroundStyle(.secondary) } @@ -69,8 +69,17 @@ struct WidgetServiceView: View { .font(.caption) .fontWeight(.bold) - WidgetUsageRow(label: "5H", window: usage.fiveHour) - WidgetUsageRow(label: "WK", window: usage.weekly) + if usage.fiveHour.isAvailable { + WidgetUsageRow(label: "5H", window: usage.fiveHour) + } + if usage.weekly.isAvailable { + WidgetUsageRow(label: "WK", window: usage.weekly) + } + if !usage.hasAvailableWindow { + Text("Unavailable") + .font(.caption2) + .foregroundStyle(.secondary) + } } .frame(maxWidth: .infinity, alignment: .leading) } diff --git a/README.md b/README.md index ae3dfa1..1838ee0 100644 --- a/README.md +++ b/README.md @@ -7,17 +7,17 @@ It runs a local Python bridge, polls the providers' usage endpoints, and keeps t latest snapshot on the Mac.
-
+
@+BttvKz%rIgDL ~XV3+5hi#WkM+&LOrjRPG`NkaP>FmPi`5g#KUW3KZ;6O@L>7BI+M5 zpKXR*&oqW;zltk~EEctlG>Hgs-BUM(?C#MZ@ei= Ew_8EPDa2=f_)K_0JTdLy#Hc0n$-T-!ErCKKT z7~@%gs&wu-wT(cF#W*BI(YlvP3g`;dEeR#gZi~KUQ!z<6?%p}X8wQh=%b#?~Mg>YV zn`7GoNpbA(%#EYr7|d};uB$^q6KtdTm;%@+2!KKYio&>B_4M%ZwA0e{>3m7YFEP_c zto)m`y+~7vA?|$H!V97_&q;uuA*@(+Jnc*{;J$%!sWm?r=a!BN-&mWshsRk{wDQvx z`K55KrUI_1MU0#l;b_fgyM N{ YXUtJ~?G(yPO~13|9+!##WWeUXnXxR(XL#(h3zfBqH*kF>8NmH#6e5chUH;=Lt)Z zgc8&)DV|PX+Z;NJre_zUq0E%w 51x~Llk%}*m|~U{R2YdYPX#9r|9334%aGa?CuPG@~rOD ztu8g%T )RdZJ~|MKVj2jc}H67&7AzZHl8EJccTY!-@kSD|O(F8I1sb zIfT|KO6+8|W4g_&;Iv3vRUB6rqqT56E2%}0mqA5}y_MuhL5f0sX~Z!isT( V*;6wVvuwX PIR>KaJhj zXGeF|*&z`rkyJ9?+hnUSQ=Y-jA?X7^2~rYOhA6_{4zv85Y1n?S!zUf+Wb3Hlw7)T+ z_^%zn3)f(@)WuVN5(8!weIe-kD%?!fDTzwv;Hi+KqTWO+grN2HCNq-ETT60_n%&6@ zohR{^JkLH8PfhjofIa`fE|rmJTxtR%J36EC!kOFrC<>L%OH&(`bf-2tt6Y-ssS@e} zw7jrkT9=N<+z(d5O#;qeyj^AZ4}EQnJV$%WgOWr_TVHM!nX@}!v13VBW6CXg8gDx2 z$}s*^)Y`Q_TqWgdrlx(1$sXoGRA24-B*RUhWr?gKG;_hta*`43l>?8E kS}8Rs8a!Dgb@i&tG4qnT1=!))q5Ftme?@Zg@L*v-pN-SaP7i;MW)lxxwEL2c zFet6lzf7%7<>+MHM2PLl?G1ZhT{u{5!a=0Klpv77nlNfti~{Wt?{R>wo$kD6MtnWh z;-*>WI`=)ykkmaymnu#jA?&9@T;M17KWR5H%SbkGJXqYw+nNl{^xDWSYPS){MNA`( zlPhe^BRsZeFe~3!c}FcoKW9{1E0dA<%@p8ZHmqW`Z+9y@JK*gg3%M(mp!78?E;^ku z^q!OTqOf%IWg51GN&N1!{G3GOonj{D)v{~MJIrO_DD4glP{Z&*ytnNxU6oDDV0Dtz zs?d-5^{N_VQya;ryIQBaQB+IuV_hsg*|cQe5uH#SMMcr+(4e30Cng*@-mX5QSyJM| z{P$gc*THg=nh-5=ZtcoL;@Ho(t$pdMWJLI14YJOybX9veWtYfYzcH|C8O*!UCfXw7 z7N3~Lr0Ftl-WC70O$s#yjVKpP$2!<`P=AYhmmf-`XVG)Kx8t18L4t=D45^doM}Y76 znxl~-7atdi4rGmGb}OR Gby+^ +Nyn=dY3($~U{*_) @8u1S4M}wJjyKsfHm8+*UOr 8WQ`l)Pzz8z3afIG&V(IlVv(hftY@>0*M;A`+5W7InjeRIY=3W8 I8b8)&C@EYyjO*OzH;zTd$9QdI#*~^O_CnD^1|{C*tm!lL zt1tOPt3T+raG4yTb~ K5UZ-%|3;$VVR?8)Pq^!^hA$j#y~$o!ISNA|c^~vTu0# zeaOocqQWbfc!O;epG-50pM2JW@^lp*Q#trWex!dqOm~{dUo+x2g&z*zF $r}v#)9Wb2#JC!t$T?cMh5+q6KNjTc>ivBDhmIwbTs^!MBH!6C9vfygP(E* z5TuxA%F}=FNci#o9qx1gKB5qLi8cATE*ALuNS3ivBg}se*)pFo`aW{V#} VC>OA-{EYaD(W6aL037BzS#;qK)*JH#RRI@6{|zDDNBp&2_$o^V*Bm &vRJ$i(VGw|7QyQjPZC2! z^(fn5j~?1^?dkshpQoA<@B0qDI$W)pYILhP({GU(o6G_TB!sVJ9Jgu$VA?@_rh^bd zjMpg4-YSW<7#My$mJpVDfl(ZkG=I0}ZaMP!l
8rP^3cKfm-DdW)=U!%XA_lljhT1!9 z7AaaL9begZH!e&8aLq8l%GI5X1jl{qPF;-ZyQ?gKac2j9MgtnsWo`Xt`UyrQ-)%BQ zZ~Zwu5StxwNk~BPG#JQ*j$9K#NS7iZ>PY{s3o?I3q_145MAGd~twBM?N>M0IosXs^ z2kJ8!=ARJ159d~NzUg}ij~v#*%)=Jz^L2Xto#-4pGD#6#g*!T`fjAYzSJ3L5=P_Ih zx~d2wuUQ%7OYNUBy-7C&mJx3-2wAO67IwDQ;$e)>vE_dBs&wbT$*jDcn?D zZBvW*?&nopQT6o3H+vj*tvavR4y{rB5%iMjc`D5u?P>)_zON2WEd6yaYy`^IeCP)G z7ZC&_H=52>LmnwM8I_jDxDs;68U!s&Slw#C9if= niyg3u^) z8J8ES-}N5HRdMWof{#H|B(MB&XzaANohp-4;JyKuQD-Kqg8oTQsxIkxkjdb|k+eLM zRUp&*f$JzMn4;gqv*!>#^2sfrT_1Np;U#l~FVI)_nS>h%LrsY`tMTZr{@N-8yS%eQ z0Tl3TSoJy!gUkjQ5}vP^d6>LDp<=|$8So_K%Z&dzH94_-{jKyTMt>tN(OqqaZ#3>K zKIr4!(e?P%N)p!@{$)I%eFgbzBxF_BIc_QOWY{_xyq|+h^|x8b^1ZU|b;EJ2>Za`N z`xp-&FpiFS*^Zc RDpx-yMm|!H)C3Lm2!(gO%}qZP|{zD7X#BNJsE6jaN)**~|I^$$o?oc@!| 8{C`g!q+61{nknjy`wpUy{AY0xmhlqsEf zg=Tt4$y9oWhrDjma3aG2a3sR$Zl7d_21fU}8R)fHH>)Xl9EfE597{`KU~k;Z$<(IV zb)vMT738mmB^GEcIoja}xV67&iYoB3z|b#3Jx5nQ&vZM3%KfidC;#qwy7Ji0KeB7U zotR;_kqNj)lA`Vz1gbWUsy^iyg ^=0nI8O)F8iOJA~_uu6zw$t%I#K6gqG{7*0E{a{Wd?svBLMCiTm9Y zqC!VD8Xa1 Id;b&v^JFF6(%a}K!P*SL0Hgk^=VK~p)rY}2By z-WxZ|iN-|jI}a`w+*+~2xoQc`s(CbTf95gtg=~milqB9M2_R)-?L@Sp>cu7C`|o0+ z@~DT?jc&gMw+KFk(th(ZpCO~yKNfpQ@_3)sZydwe$BT@rAnTFJbII~}f2`RbjMPVa zm^o5Zsv _Hb#ZmvdK+b1j)X@AYy7&DrG>c`pt1a@O}KNY2^q z`>xID{w2nVQfZSwwA)z56;dXn2>KYUux;ntq87b9Brz9>jk~?FWDVR<{$$M`sqxlp zP~^LhsJltB(*yYfnqe-$L!8PcC&Bxm`J4S|#`lh|mtJ)a`6aZ$M{~1^Y^QpuDLPf- zDJCI&!*XQmZ!8BuptbN{yEU@iqzHN*`iXy@PuywJeVqU)A!vN;{cCHy+o=gz@fPNy zSDP*G00kTciE+Kp_+*aWsjV{?c$*iDQ}x|HzwFbPba4LN3h3@o>Z0_r5g)bx^{f~n zpk(4I;<1zMx^0qAU?KZB;${TT;n7pirYhk32zq$wuh5CuMaqQIub!DUnAR(k#~M^X zP&1d)%Mx8kzkrSyq~56vtLwPv(Q`3uwx26GeBq=Gv#JV_(Z{;0ssPyz{(`R`*R^^J z%S@9r#s2qu49zX2iVG X`XlG#Fd< z-vJANJ};?Fmz|gs5+06>x{FxMz`snapJ8* 6ESi=>f7QHE4v3u+?5KKsfSK=KV>vzk)(4&aF>^0I*r45Vy_YvlsHn!6n~ Y{*cMp7%Z*jMw22UWcfS(AlK|SQ*dHeh zVoLDe1MFXk-f`_4y6y|#tebY-_4zvXJmO{!PjdlIEjbPDMSO!j!+iSBO@gXh#fLP$ zWt~X%=@XuPcPW`?%|;Gr)D(3v;g|TAzm@Pbz$^F97mX|)`;F)>{)LfF!Od*}P~oNd z9~iH`y4yu5uY^M|-`6y^Z=T3x>R-hJ4=u!?&F);w2&XZF_L}(LH`PwujSW4Pj2as( z3w-aL@?Km!-p#O3^YF;EKR-UBC8!}g65C_iADRjYF;pqnN~n5{e7c~ji~1ZKAF`yP zq$qF9B7X!>cI*k5LYmLWr7FqrN8yjo6gdx`p2v lS-(#i0EsLpgipGXO=MYj7 T@lfGgGdAWpc#-^=`c;}(fvh|rYn)a5gz}I-W ziFG N$v?*cKw$pCfNq=+?`l*jNd=PB`Ca+s}4jddriVA`Zd2$BTu0vSf zLJhBQth9{FDYYCAAM?ln>ji~IVrm)$Dwd^PrDVsmCNvr)}jnV%A%;_-Y&~6iu@TCL7*P7^K+>b>$#LkhrwA%L%nQN zFC?p S?lU7>>NwPA8DP3^ZFYCQqd{8C?<{)y$1hyU>;#=?ZV@6>i+lUHH)@YuF* z$tV|wlmX=hNjI{jrB-fqJ!x68S9=5K%6nf)3=+QE5ywp5?lDA4(rZC)Ge}H<3s8*~ z6F85`>UQa@HxI0mQ3AxdmbUPt4>$4DP6<+}UL-Dfd^uh$^^V50D>k}k|651c9fv3o z>7cqvoyn}t<-EFzBzw^_n)T&;;Hy(o>f+a5qv)_4itU(Pv2^F`j<;F-(%lw}WkU|j zVvWP8xMT70p?~wRbvOC>rawj>*1hB7B^>$RAIAbKH*{*im2YhTsp^F)GkaApp7%2y zEWTe%A!#(U*r@6BiSHaEmgMs~D43rx5bhP^NN5J|oH%d!H596bGMam|cmNVhR}0iI z>5Zn9Atv9LJp(e#8fU^0o}$AL(%b95!lnBYsH >)~Qe@hX27=Nhrv$Hnu$bGh<9cz*S161a} v0i7wyJhwX;MKua42(_ zqW(HxARrIuse4jjm00-tD{x|`vN<4;9`AjXJWpLOQM+3QY z=oyCiRP;{i!H@B`wma3Qojz~(%|@5jYr2JZ{Gf^VU*YW|svByHu$5Igi|x;+XB>!5 z6jv_?_^y!mW^j5}`#An(f8ga&hu$OUomF96c*A%Z>}~M1xK+IIzW)1o@P(EW6A{QS zsV2HlAw{V+IM_s$`V7}mD!fo2y}z~@#rurhET3u`Q6unhXv5<85&$W (aK~@`Cj55^8HD^TU zJeG;-@nFTc$~y#mO{D?j4`X5;UB}0?ZA4F9UABxh &t5cqjMNeCa=-W)@loF#ESel8gN+Yd~g?y{0$+by)}x^sVJo=!!#@ZeD= zMMlP`^OQv?4J+PVh3mjpPC=5^SIgHvVZgZej2?6$NJ+&m&qstmbf5++Yw$OlT8dX0 z{i0*PZ551yCjD(F3$4?!tF=eGUl>boWPV=h`Xj!9CR{ pk;RVjH?=Aly zt8%gHEC5m8@+r}rJB407puo^KVfiH32TNfifncapE^~9gm0vZN6CnfUFG}i65 VWp1EcR1Gu>DGGH%ZvVs${T< <&T-lwNXqUi*b;U7 zKDuuT=bzB6DG0 KI^*sGAEYOT640W}@$dV{_JAs?ZE%3X{ S%W$-Q)d zZQgy^mf)^ORxHVbMDWI~iLaX5MOblG>lSF?U(5IfV#Pci7Eo*mj3++)!dNh+Y@_XA zw7%TOW_aNw{1Q&v*%uTYsfFm=s?Xg!i(GE2OO&c}X^3|~4%)*D%K@U>8s99r7dw+4 z+|5br&buk>Ll176mn7M!GDQr?6iObm2HK`ZrA#dM2WmQBkMy(T+2I9@%ycQGcv?-+ zU7U;#!IB!Tg>#xa3)M;eI+$n(sF}pkv%HXo?RzbP*hbIQ&-m}6;~o%1RCi|bmR;ia zWQo65e8(j;S>GNu`3^|kIBOaPh =ggj%4=r7zpp GAQALY35m@Vo>0^JI1MQrYty0!CI35lKAxPO1srkx!jxP--=r4mJXq9T%rJN# z!i4ozQSz!3K3?5AR9Y*FR_sYw3eB78*&ha-L3gFm$X)l79xmeaUX=?b?uKLIjSxzM z5A;4U_>L$@{8{PdEcK{*$pi|Fs{IkG1?+98X5;P4KAsmG8_oOFdyo^pbqR~(+H~xU zh$t#ie#hC11P$kl4!UDUc$Gyn(w=4k7NTYXkDnnY@VX-v{Q&_iOI9A+m{w1O&Xd@% z$E+eZseM^W!npzl4j1W0eJZpRYr290J+EsoFMCsB0jErkl5)|i0?cntvp?H2dtU5s zO1uN;zMma |av6tG=G=HpF4}UUDDHl4R#j+p6%_ z4+MJs4A?IAgIPD8$Yk?AFOyxf&2ZA00ElM$Ztpd)95!wJ(N tacBy$Ep7uf$Iys z1*h8396BNyb0T?b04wooJ`ptRZte8Ph0h8x!=@a-#GSf!6ey z405Z6d {`5U%ODS1xn6suaYPT_@tGg0waU3tcGOVqg?BCUuh* z>J{Z| Wc{c^3(k&h3M_rV!{8K=-odaNDI zo)qrvq96HRXxmmX?9(GX1U{O)gMQkkHdNgY7v{TLP8IO*Y~L1N*+v#CFe9cSS_^xw z@cUn7-_!@aC$pjQo!wqz_jb2SwEZE%9ZgK2n_L-2=rvw6GzJsk1M^7kM8Su?fONoP zkpEdAhtI3tOH4b$w1Ab#hU@P-RF!Xjk8}2)E5xjHAC{8+$>WSX(Dxw}upJU3A!S~_ zS*P6VD~ltQtZnA_4Ih`cpKfA3x=ZBRd6sQ;yEqEmt{qhV1O|lPVxQ(ca$eeZe|ZHJ z?Lm&MN= N^Gz948y@I~JFlGA69MYaf>lo*A;dar+Rn^~C(wu9qPJiO z^V$o=PQU2;Yx&qnkkM_dUZWdj-@{(!*_o2sb|mvHK3gCt+{uw;>E%Z)GgB>JAOf}b zPQACp#3`5BDqr9GPZP*+ OaU~3I1pdIHRVM+3zex0}NB?tHH z?~Bc`ot^Mso*04G#{PV*75ej~B$D1YNDCE) -yYIPjqCN&xx566i?f)vbJ}9c=HI+fuP4ei) zT6y&`Wpxwf^|(%CCqg`5!pDrU F2fqr>Oo#n z(bXV(Jb4v2S?1ngd^q%L#!e1$drWF~km!G^$Ou5FtV%UK`aHVz^yhV mhXfueSIv z7j1RqY}*!wWVOu?HyBz?Sm&>^taKuu3QL?Zjb88kz^gyK7sRd2z6pC=UAFEY+zR4t zNZjl=4Ts-VtZbHV@Vxn2Yc;0C2j;>`w$6pck 14K8CYSFz`)dk{A&;>CH8m>& zi>w=njorYsv!`SR298Z`?rS}?Lg2}P%-o=++u*O0-Ls3!wqPbu=$9i^tRH!N0!Nmq zm;x4e#>L*>w;6|i98$o62GvuROy|t0t`B~Y&mt+MictKe{HYCd&Y~7_Mk^V1RwL@g z_E_p;S7J# ){D2I)_Fr9Wu zc%?YBuC&=q-lAOKG7SqmhDq9dLbO<{wy{#xuPn{^Bm;b^M*6&4wsUDQ1_ZLtHA&;P z8@mAECY|xcM0X{=iGPxt0&jj3?+`Er$`@1#`3#0q-CCNO*0E*!wJPP1Dm^SlZV>d$ z!}lpi4f1sL$Psn3n=9yfM6a&^-{)5V5>DlMR;Mgo@%Fmsw)eEj5;Sif;Xhn^>DxT^ z6g=sZku2?ZlD50csv0P8QlIVgh%5csovGx1Tp^br27;@9#%A0nU*dgb*_ql;Z^{LN zWb)oJO;&`;l`IPL>BoXz-}GI_QKtzx0VE*Peh7}q)6mXp&DFg@2a#f K5kI9@#dMbH*9Jux8CS36=R#V zzRSmH)AIx6F#ibK*$d0XiO%&UEEQ?3FVOLIEw%t>M&xv0)rsUXO()}2;rQe20CRt1 zUE`7Tsi`3rV8FjgEdkebz?y=FQi!do0n8c2A+m174U4Gb;mU`C{Z8Achq^meYOby+ zk0cOfHT$T9f{nYFI&}LfGFtS#p@2d!yYXZeAB~zh>($QfPLbG0ng*@RN+$?fyGZ6k z*kS_{4yU)0M<6}r88OJk)ef5)=|@__cbamJjp+DmJZJwe{$&xBdnd|xY#<#zmq7;P zvhdU_%B9D_COQW%wxMrzCws?{sJlN=pVrBKK<*izjNf`-!L=1v6-u>;4>|+zz9`+F zt#374%e>0e1Y8jNGwvQgys|+Vh{DFN3WfwMDyH~ihKh$}IP3e~6WH~Ie@kPFlxgiQ z>b8&IW`CA>N`CJn`UMMA4f~sB{u@cy2kU2d_U8C;bdyQ!0&9t&lV4;1_??2u-`hT` zKFXO15)l`Qz+E``-wN8qin@PfcMI=(ZOFKcxg<&M$9iFJJ-WD>Vc*Ka%~Jx_oIaXu zVhS(LmojOh;?*Rp=RQ5P&9&>mHP&at9suVezt7Akp|V(Af0yb*4z5p2xti91++i{l zn=0Ryjjf?j#9oTBL?WQkw3L@x zXex{4xmd4~ti`Fv-gfqQ+`YdRVpBm)z#kd(c`DV|(Y@AbR2m9y3D&L@pD{Snjg)T# zRTUk=Ss!AZQk*kHodl=K^C 9xA}8g7L4M;htQ!d+R$9h2CdMv8CyB0XXUL^3j= zFA 8kt3S)7%z%YyZHhhde8xoUc5+EYAqJikWOH zFVW4$=-BUn4Jds6@+><$6V%B5+@f^{Lk<6mCC@So6HY3W^Q`_#&SszLL1#If1bINw z1sml-AV%G+i$~0rug%{~i%2Y1f7xsKZzUq~L9hV3GdQ{TLZ~SN!& w4PbTw#VR9NE6GK2-?Ye# zdA$82c$4~LR!f-l^Km-VY<3|i^|4K+3)(#}CNk!S1K?>`&hWy7O7go}a-zU^1h!~n z!z@|OAY@rg*rdUItCj+x^Y^3Yhdf~BxaXmUk;Gu(Q1XoM`J5h^jy-s@Bs#8Ih=zeG z$Y+IBK*0FWf@bklY{MofDzc*ylH enQr3= 43vI!@kC%S~hYNPb8sjaZD&E z<;QX`ZITpvc*AswVTuo;bc$^-<`pKf37OEK5aH w#g5vd&t?JmA$Mk15T ~L3((&X!kTJOlOwfPClJ2?@284$S 3(V4ik8L?#=GDIQxg(Uz6cGGro6ALdffZeVsZC@eLzW+uV z!656+JyxueVqV#YrILA>7>?S{Pr|1uv79yPqn} 0zRaheOb@f1 =N`xLx zCEvnRh_Vs`4+uMxo{qWbvSh7*i9t&o6e;mAfH{eJL&bpT{0l^#4gr%>r1sfdN_;HR zP96;IhdR!|`Jl7Z6WSC$Bu23}duB~GLECZNnd??Zh4U>o*HNdX_k5J!s0|jz6iM{m z`r1?;uM_S^wIKB#a-`#^%s^~aV#}}`wBKHnNY5Q4cw`S^0m;{b`oc$WFd8-ta#G(0 zh){}4EDI@*hAmf8I&=bm*;c^-QwkWF1Tk^ZkYsGlTem2o@Ip{jez};cpps|Bab 8 w}(#n9c)62GfG Hs@&+YPw ~t_7?GdaykuePg=iJBx;#tlIzea^2X%90lu)M-+;V z&yJn^h41EP?Yr34WW>W|f*IT|qKd(l6m~!bDC2LKn46JKG+mVudQ>uz?(BRue02!T z5-LnaHF2J`1ho4MudxkzGnm0= xM)n`v4UK;=9JDny%i&_`3BWW2{r&{|ow$a+ z#N&?v%LL3+&Iqm|NiY(Ne0i}e`$;HEAhOmM_K0k(aSk9fsnn7`8B3wTq<~i?4z#cb zEtFNV(of_#kRqCp5on=&bq|daCs;?qV*Lcs{MKsL675&QHjYE536Zk2EDyt5u!Q{v z^c<(y^ih}f5W9aC+A5P_Gb^tFhBgKPE|h;-XfF+w0jr`a6n!v(r2h!fa39`xXPk3; zu5eftRkT;eZR4I=TM2?L%b$o>x-YDmXp2NHFJ#6jD4A;SH@N#72FbQlqJ(?|-*1zW zx6 lk`CqKKmF+*)uONy3ArJy~*m5rYiOBqMRtVa!LarM(#%_tHs z2@|Qy4F4E2X=RB;+=GpnS@^t3U-V;d0P$(UL}d^CiK<{UKqx$1r_FL+-*G{o+@D)I zZ_={W{{rY54*bw07o>zyyED@t Lm@1Dt#J_@IQa_uV>a)&0*gBl4{G9zwTXp5mCav$YTjrBL# i;DBT zkbY&BqSNf`h^oPJ3$7J8xlp!D%7+5B7UQF3UpHarA@7FIaf=iT9{SCG0-+P+`+LDA zFJgbXBhPIrRz>!wH$xc4>`$r)g7A6go+JfwZXTJzqO;}B<_{ dW36xY1)6tp2EEI2yCx60oDsETN6KoEYQp|n?hAW!>>kFc{QY5BBWMEtD zz6pt&pVT)a2m}Zt05$d1GG0&!iOG|d&k1^%c*+-lKBItFHMjst!ePyxEQNX-H@?&s zA4#k>K%dLtPgR0>UvruUVG6xf?Q1Ljo?AFZWQHgp-eece-5bRsb-PL^+b_OnVSP41 z_uDD53I`puTLN5mu(;}Re~Z4`INyz_R)}ME%{TxU#;pH|Y0h41U<1+E#KB@(Wf``L zULQ;sXq$MJ %$0OUr*y%+wXM~=u=g;Xstgim^^P%@{Z&Pf$+(c7^& zd^#&%rjBjui&JuY8ya_@)k!b5SA-RI&G@)}7NVv;JS Y|_-0C-S?FBZaXn9U$k0RW(5`h7N} z6yD2b=wN1}Q5 Q~ zC1l_ZGv|F!SMf@p?^@Bp(XJgfQ(|d+n{!j$o1!))zJP7)gQL45iYv o7R6|Gsd|Dmuq5CQdy=x6DgAn{- zG8PBX#qgJt{T0I)V6&9?zAKct6wzK$X4 Z4oeA}0X@-_sF&Hf70P%+nsQH(KGT|8eN!X_QWgNbbqPKH$98CRl7t8t}4yRb!@ z8ylnTsTF7V??K4(?^|hpVGEI2f*`rvvssO}D;U)3Ons~p!Ja;uW~rh?wlYjpS*O-_ z3U7A>87`KQn^pnwj8A9$3cXUWC$yU76^EgQicHAzLwP-vQ4!(T{n+9nXs#?VJrY;c z*Z6q?5SzZvRE-pn99=;VCNee0BCfrQmY5B^MdR1xMxk&u<(ATM+U1bYcPxHYVmT%U zMXUgrFw7@#-e4dB8hxhvBn D;<(l7E5FdUn5pA7+&JCe4p@9lN?H8HG z;N$zko*0r3Kj7XOqJcixC12PN=0P958B(SZFK&=h<4eI^Xrmh)7F-H*!nO$4^F_YX z5cYGDa4dkMr~Qu{e3h|>1)6wLQ;QBivbdTb%v_|8Z18Oo*~4#pW*k)E9_Tos3(YyH zK08S7L{-C&g~@(q%=xBqYKbUooMpg=TSL|tROG9!Ib_dO`vvyBZaL5!3}KrVzOoll z)Vx=&hUcQ^II3tZK@a>PCMkzSl`!fZDZ-Wvct6-$6q>XL4km@aH$V_TBHan7=Ph<* z9F1?g^>^Dh>U}H#ehMf)sRm*s*j#WtN>_+5JPQ+IPg^bUB%n;D9)IT+GHAi&0AKYT zOiffQ#AXkY=qMmJC<^3AE`>w|Iw(aW15GE#lLWa`D+z>?muE5*Sw$B+-hI)Vubk%H zvXaYu8H9ILM72aB4~xNtw>l~Wj#{N8Av|(CeU^X22Y=!VaV3!YFD#h`96i{D!W*dI zK5 $A4$B##MF6>{M5sg)Ni_)}0A9TZOi=%s<81w;Cf zBzS-VJ1<<~?OnX=v!5KKOsqsie({_2lU#N&Oc)_}mx(SUp=}l}1D@29rO5>V9lZNg zJO7~syrh#(D9h$u9jh1Jrte8_6T9qufJHBydt=PI`{EeC?Vd4p_R*Pgm?C_uVq4N4 z07S+hl8OeCP`Li~DSg1`O-%trhXtPngGG}9y_?kHD;*tsa)1H+p$a=4Yfh9Gwp0KB zKmbWZK~#u2Vlr6rss3ctivTcW0MNngh!;76K^kKy#UYEH HqvdDX4PK+xb4W>Q@ zB@f0b|JYDvH7wKsPajUOvd32!)?RF(EvObFK;bHAji>x&Ec9vNH-zAk7p`HJZE_BL z{ZIcf DGV2*jSB7nzXU<1LBeDk)Z0E(`bpdM$7QUu~6oDmBCF{`%q z47k?=BjHzk*W3J@Gvj|Kzmpy)X^|OGEF`&xDZ>JX!TU9VrcRp?hadOCn4%vRUbTu7 zz5a;Z#BuSkelhCj7kx2SE?@j>(&P_f{@{U55A?kJ>~pqyx dWDu<`91UI#=_<6 NCRYh6jY`xV|@gGc#Y zkzef|$*%Ts*-UQOd>`{LVyxS6YO`JyxE648v_1RI+R1rbiJzz%rd9B!0tBf*BXKAI zs$tt*B9Ic*p#D)cc< @q{g&Rd`DQwYn8=4Q{D^ zo8VPBn+yyC=*AsRd^Zkk+VQ%_yZgh4Z9v_)?R+azHxBT2yzcSte&sV<-HqGMx8ir> z0B^_Z9`EjV^Qq&tuH#u3s29x6MU!!MoEyjL@9sS7wR#|QeJpr@g){dCtu>QfCxv5A zELiwp%)94?IO&Yn#DHkMYxQ^@Y6?0R+bly9O4W0?x_#WpZTPjnxw`VKI8|otQ+MN3 zSjFic@9tN;;p%Q&`rV})hw*m2?(yz^H^26NH*P!Mir0+;ydAH5yt`ldY;j!~)WoQD zVNi#+gkRrwlP14sOAtrGL0GGlUMH|MTv~OQ^rv0xO%VS8_#N;-E5hXIa0T!x7S7QV z 5YXIanKQ`#4qo@Sw8`{M!(0YUpKFW z!_>JLZw_M^qCbHC$9SMdwr1ZJDQ==lnG~J9PA-pY=h-L38 z-j-nvuS7d-ce}lh%=Z3B?QY%L`_Q!0G1lJiZnyUz4VUppEAZPIo?C<4ExXcInWb*d z=DEA QlHW%&FB3uEEjo8#2y zz9H84kN09+`ByC~I(4dueqFlTckQrBH5`{Z)?QcIZdmQN^VwS5%42i&*79uE2fpq7 zk=nn_@>92VFVuFeN7UX3Iy5=a!epqsJf@vz2O|sWW}E#Eyx~y<9T^MOto&fqdPFt_ z2gJ>& sH4oeVZ!3iB-7{$G64f@w9&5 !#^sS8neKzRpfCGGsg>P;Aq5R%>fUn(+9XBziY&Sdh*#Fp=HhEIa zyYH5G=pnuAUbC|C27t_uY_<9gN_)eoi9ch;wz1Rf{q?7gSH@kpTpUXm&5d=B=-wz_ z)A>XBz3~879sT;27$?qteI0d_J`>02SL{1-t)pY#Yzh&$lPI=+@f>F1+;sU%$lCSm zV}%yX)%x^F`SBAb#l%UIV}fe8Cr*md`di_=kjhVO@uSPMnPB`{IA4wA#b+D BXG(01d-5uolWET#^&+;I=6*kAw^bUZ92=NMG-%Z z`KxyBmji>z%C%)R OPw3-EA#p^hH z;lqb!xBbvihWCGdRj}d+O*||Y62SCz!2bjKV?#@qE{}(oE%TpCKyJRE49e!^=U4eU z 1M5teMb=VDgMahWGKJ# zTI~_FQ1C~m{mG-Ss{AWZg4**Bx!w71*}p>h*35PeZ-0CKrP>%lQ4Z;rkN@TwcI#`Z ze6fNbk>NY6wD~F}{q_1|hpShuj8&^w#_H88V)aVumHOuGfd0 $8MVu bM3Ow|q5_OW8y|0BEaxkcKHmmPcy4sZ&0SPUpA~hOxiH z%tj&63O#?9AeDq)713%)LIpPUq -C@I9`8le%n{I(O&} +}PLICBC7AU3CgXWX2U`c_FOhN!9 z5wm9*RnJP_lAlOb+fD7SnwhZ`*i!qe%%Vn1P%+Uql);Ld@&zn77}+c!;8p`FkAm7F z0H8tPRi2PFr2 8!n5j;Y}5YKBq2W5EUdnTNJ!Z49e>NIg-CoP!#~HRu}=9lRPca_NE(47 z$#2K0BE+{tzToh3LB1|a`8lvn P+pAvukoSwz+cDr0w8~D;5 zD-E2Tplqo_qrqWRMgFb%H)+zu*v7YY`s0?H^o_Rr@AWQp>UjNWYnO&oD@E(bNQ-A9 zk4e&2x_b<-)$e02Ub8w5JMw9|JfGovSxa;;i+O9!on>m3e(T;=E2;9H4G#1Lo@qgM zjsY!;Kss2HD6P+N4I5WZ@sGDkp7XEB%fO5*AGCJ)*-xJ6L-3H_y5tqC1kmFggyZqD zD{Ysbvuq^!mewYp3mn9msr_LyEC?wS&fsckz+gLiWci!gUvx=kNRvEW#EGZ*r3j9t zFKCzleSb{>P5DMmorkd>T;k>v58f1!a{*!( 1GZK67cS5YE5F!fM )qjiZ-+cV5?$!QQ{xgD#RX#q!KR~udeiPSW?MDjXZOJca3D@!Q z$QM^J-_-w{FEB3c+f@GM{ErVtn*UoLf14T8r%s8f)2GGK#Sg~Muev0*9X}z)jnXB) zbHs mHAHJC=$H$n#1wqr5O=a7I_Voibb^m+nobN)d`(aiz{5pm;Wv`}%G+q78%cf& z1VI!MkanefCq_*?%g+RVeD=#T#l}WQ8H{b7KsFxlp$vBC!j}j}(g6nGr$^l6ppsxT zEPg7jia(tHu{q_7-V91#os^%8NlHkWl^+sK!a>DtR9Cx+P1}Gys6osGBYoL!zrm@` zW0ar7)&6RW1j=9C_FL1UJMJ9G{;kcwt;v667I%y&KVzLfYjhql{$O<5k6$;nKmGs2 z$wxzs8OeUOOuoFY29qhp|8@dhjd}Pn#@})5vcG>+f9$x!_A#)2ZCrZs4`PBY%UExX9~ zkIxFB28YGjs6N1ue!`0ODW#4#@-4>ro7yjA|A&K`9rhRAiNadx;wO*UEb^Vw)&$Y8 zFw-{qKr8_s7KB~I4(0#|KLqMiZN~qQKtW0SIRYbEs_oFi2VMo+r$!^{z_31vn$+-1 z`Qm5!TVp?RMv`yNsYewh!PS22P;_jU|LF1G)P5vwF8?--zX (+N6#uQaf1@5| z-#2%D^lL3UT5B3>n}4XrqEa3*YpY}N1Xu^k>H@A|4O~3}$@`ixKJd_^qF2J^&Rb|) z<8#kWc&WaS^&e+AP)t}2aMk0Y0Z%k0v+e^rDbxhrzt#+r9B5wfp`o3Y?|T$HNUJo^ z^Y0l|i0aMAcjCf*82SF|oG`Rd7)uYKG67S*wKOTMEci!A)(EIRC22*eJ`BXi_G_%e zeq(DGFCe4X0Ezi@%13w0)i^cWDZ|OP4vYy4-P`3uBUbjmF)F`CzVJapT{YNg`qH=H zF=)QvsC4_^%HadX8uA+`8Zm7I8V`?o|sTuZ5<1Zl} WDnI4Qj4kp%XxNvVnfCeT5twlw9uJwHpie;jouS45$nis0@o$&!?2>$* znrGfSGEygV#tPMNS;g}Aor<1MwEgquFYuankk&TVIMzDWywr+1OI^a;L$55xtev)6 zrj;R>&e(C6*nZZoy2rUp>skKU3I6H?F2Eov*BD9PAAn`j8=zjnV@JdpoW3U~i?B0< z%Tk&}KGB7FvMM5y$w>0~6F0-j2i)k{C4aEU_pZwH+8SB8LS&_qEf88P0_MrVDygCW zo7$iHLX{70vhK7$3B6l#6Z@+GC03CS4-Nb1h22d>L8!j1(a4v6DCqNcOTJwRjtDFZ z5%RGYLCMI=a(H$6->hJx;+X50_QL>v(7-Ee8ZG%rWnv+Ehp~zLBux7yp^*<2y1Fup z&C7?s(26e5^3MRMQPlQ!=3guRio5AC2r@dQ4JkYdzjpf@5kjc)tJ1J(D9uwi(xWr} zng36m|4|)bX?>M%Q_yh}|37~D>9@yb|CahcJ(*5y_dj9n%)c$OpRWz`4l--oOs#RO zbrksN$ic^s#nVuGGFug?!jm|^DYQ NMk>;z^rxUV`@79RED!t+G()hCNAUfNMEwEv^O>0F5im_%mmLxR`~EQ z@~sRM=3|LDZu!uGN=*aVEE+`z^QiI}?eu>Rr~N5E#pZ)A@v|NrMv|ZSjSlKIvQdXp z^lsU2ZibI6A423?0XhvIn)XlOkJ-b=- fE~ zl=d`g7EfgH$pej%3oG&7`yCSN)@_I-OP8kag^pp~`L`J+RrQZah|;QbaFUum0J|gM zhNYu@7Q|4&Y;2`dwnJa7z&CU$TO&UyTJkHu436N)EAl;Qi+m=C&)(`&92?sRe!23Y zRrE^xQw}7Z_KTq6F$P19YN!2fsx7}-z8P3Pd@Rxaqn-5jjd)NO?^(OtNean)3g05m zRfl}>1Fv#u `lilV3fp>n(bSs1Ny!LRclJn++;;qq_m z?O*!vvRJD%j zr$eam1J21d0LJkHbwYEZk?e*P@AwKDj6@V^33llxgDsPfJacc8Z&`+R%J=L5PoAA1WNt0b3{}r8T2=n^8j? yEQ-Ea71^7}mo6GI{uawmDJ}a`*IccN&qtIGZQ4$) zsZ`|4U#WzBXN5Ra-3`deS?z!H_@`afe*0O*q9JVgSX(tVwLi!44S0#snSbn@es%u0 zQ2XXLB_Fv?7h8{qI_>ZFfBG3u<$NlR>&U;H3oZY*;xAbp`S {9`|S$o(2Q= z;>0sFAgPmC$Xmv-mj%yZ&4_%?p1Tnkv_6j}-@0r@ei4;QbjeQ}H1w$QixIY8HrR-2 zzd8u9wK+M`eimC0a|9oyEiza5?7%Wh ~vnEB@{B+wB*n?JwiDAHLQ86aq@ie#Xjs zla2hMhlVHybMVOt|Kt1oxbc|dFD~R5F+olv9~c6Fw&b_$XRsx|+LG}v1dMm(-`4xT zW?Jg@n~;y4c8d<}^6`wl!=cOnBhCL`mHlh z4y=!Dx0|Ui+pqCF=B!%oG}>a8G+-1aj#Ebr3M8GPv0S%@V%u$}$KHGG5j)PBrAr>2 zBZ_yJ6A&dG+~AkBk9y12^TrZ%wt}<%Z>{{2!zEhMSMm|FIr&zt$VZn=?N7I&Z`CVR zchBnA)MclVfHt`T`0QzVc%*tP6p5{) s_ODs jlBE9Q_b>aDF^4Sel+)n$;ghn&*YqwvWl%+AtMhE>8%t-P%tLpz& z*^k6pHkF_JVEL<)U!@Oc|KpJ_ol)BHmsjn7EXjh`vAhN8mY<{z0 D zF=okT{6BL1D-X!gsg?f-Af7t5`G4g6du;Jfe{lStE`M|We=O_I*7|>qcAhh5Z0EI) z6^6J`T0e%|nrj}Yhk9mU_!0ex?SL*9_SyfCm_MKQI_m<#Xk{x{Ne*X*PB4f{kv;k; zy7BSB_q{Wo`o4wz_4+BbRvBKt=e3R2q04?NBhEId$hQuSSv53h$H_v{ zMzBBiuiB(7_H@%6S$ $W$K!vi-JS=HT{ZqK|F2)SK4$GOGw!+T4*f`G_{T(`XKJe8m~53^=~U-r zcfEcsY08vo{u#OSQzb%R{nuoxcxw8Kg_l*Kg8kQj`KCDZ&;twq;j8VppAmoifp^8^ zi4)72A3Q=O4pk+X5geB)o2Q+9@v2w8ICk1;hj_*_PK@ohpV`PCr^We9?RL+6{uw0) zO88-;_NE+6(BeyY5`LN`wqJ<&@(EKRss7ocXBor9m1Bhhgkb{iUx}ukzddUk%KO znL8gd+r)nFz^o}E(}*pVZ*(0jt=ONes{Ax#%jBp3Q;RLLf9vJrdMR3CPP4WJ#{`O7 ztxl7FAb8BX0kt^831Xf;+g0k^Ar@&{oqt>E|IYYZ6% 28DmjF-OGFM;}p%He0iR{_zXX6ib3(=2{qQ zVvBSH`3D@Zj~2P@8s1Mo;aIg(el^;I(hIJ9i^0AqYBz*wP|7dBZut`?w*B&oRYXEE z8aIAS^!Xkx#GUd-=_ju;(4F#OkxOR8c>OSe%U0T7<+E^i`@fDARc&Fr{q6G8J1Deu z{;x8gc=?)^#LE7~pK80GZps{Kq
B)+90dxStbHF@IAxAB{{QW>pImwL{BJz) zI~V`oto`e>=1rPBML)60mw~eMyUJPPrgN#lp_o$vafWu9^RDRJiW zPLJ8MclNE3Z+`px@zwwQ_7>Y;Z5+=37>v!fyVhm*miEhLov3(N<=BCP{osgbOZ@+< zlyAL#B2`O*TJe{*Iap#Rb=9x=N5}bP9H2GE>4X}4 a`|btEWrhB> z%xm88ws_TR-x4o>^_$}IE3S#V?!GtP@z)=SfBNVrj5B%4q}XAH@<2(GMeDC8wwbEk zEuS6TamPK`wD14he~NW$^@_pHJI3C7&Z#6G^VDIM*AKij6X8d3t+DKblm+<*$c8t( z?iD(TOo(rO>%X)Ju8XtIe0DthjAz82d+Z)>f7=_qs9y53D}3Md#1oztFMsJd=JkHv z>wWSuM`}@B6Z7URh*M8JA-3CYTRniAYWXKW{rGr`7S|bqU3|&qk})w}_nMc9_i5Jk z(d N9a|C{#z@3;I7deY9?$KPKgJ;;%=^CVMhdMN`( zC322%&dl=o2sk)Bab>f_;J%EOCFAEuDMnZi>`?ij( =>^KP`9WKh#e4rx#x)zs!#pz38ks>4c}ox4!dzse@7@+y7|(uZsgqiNlS- zV%ctgmC @0|8I?ac%YBv;DHpOD!I|;Q+a!F1CQb{jo=C!#e%4IIn?`^ zrWepWp<&^a;a*JLSDTumI!`hlNVu9{dk|S5(N|?Ungz#F9wq-%KRAd}VP#%LeoD%L zU$y`LAU{L7rT!n#^Pcfq`&a{O(c)>`Q}x57wJcq# zSE7_vc`2Ebq|6#~&54lmS!5{Fr*9J<`{>{6{n0t@Kl@py#=m~zbE$+OX6aTnv#Jbm zl>XjHnIjT4=vxSh+!I$`d2L*G-A#Vz_4c>E!QlJvpC2Fi+Yd*t{@~c_wNqq~Y%lE0 zXU?2q&|)p@4=!E|`?&Si+Z#0GA9T=u?z7YMZnKQenX}s#+0TsJoc|pJ9a!Y*qS0 VRighVSh0l>5cvBq~EBEuITay`5Axb#uJo(kJtYj zHw?tssgns=Q*xCkA+!JwF;TK~*Zulya|0Xsv11AsawX9fb>(JB0;i+;iRFo?gk{m; zQuQ!BZU4-tKdSqX&`12^hu-Jk0tJ89U3W2z!-545Xpz;Qq_s47mR$t*SUn9|^2d)K z7boZyC(1_M)a8=>w%hKEefHTi#^@>gA%`3gcm48Sk8`N=tMUZ4VBv#t@WBVfF;6-& zF1hqdK(X7dyL!RrFY=)a_s%}@vGZb#P9ofwe7;_9+I#Ok^l SDMc~_s+E$v-I@;N!lS_f5T02`ZJ&Iv3j`S##`dxgZ7Vq_|V7W%B!#S zD-rBk7ipJ@o>kZUHADI>`x$;T|L2R~>BHgdceKQ(E}ZC<3lSqvynHxTo7~K<< coq4Vob zUYt%Roy4)7q&uC&!5NGhJO_+zW-wsD#tcHtNJ2~kBs352`+rqypMB0f_v-3OLf~lK zd-h&KRee>pYOTHYaLx`5f+Jfp@;dQ{1KI}$%5ZqA`12!lDtoF|Lr0pCfQ -ZoLx~}#Fmwdc*>%W4tTOe= zMtcaj;;OHdx9NroH-mZ;6H#ya(v@G8BqiN-@~S`sz!S2CcH^I-$BZCey!g3t$ DJ&eSUrEyY 4;@2E6xE* Fj12!_7n@AcUKZxs8vG&i8R zujvx?3rm+K(J(kg@VVXu+OX%b2?eKL$!n6BNF4y0xJ*({4{6tDzE*yh>DxmiN%!1) zU-`;c{!MJjY;17* *|*_B+e}_o+YgZ~1Wweb$+$mPwN)m78w9z5LGaeadpa_RZ_cwconF>^^n3^5G9& ztX1cMrsad-LCKl_~POgx1BUQfw2!}*{7vb}cc zVEfID3}aZB=tt)Nk>ZEJ7#;YOjUfB^13LPc*rJuBj2fazeAZ8OR5L-EjzUmVK~}Mz z?JCpPrbC=E#;=sx8!Yg*ru|jbYJXKJjNOh;*S@~}pD{*k9kSP~7$3w`)|0D&=0;*o zZBM@VT)FV4KU5xl>`8rDK3*d%OC#Xn7n4IA2N2W>NMh1i>NMZ7a{cg!E-sh+jGp0C zUBAR+^!tDKr+(B2Tx6n$ p3tk6&QRr|5~pFaQBWhZ^Z>I?sTg)UP( zS>E^47nZ{hKeT-HtJjo2{qxV+#}$9dlwEXFYPEiVWz{yZzut7&QvPQm<63*$|2CNZ z6iBVde*3X@O6?PfLYeS~^Xiq1KO)4B#KE63JMkAW%7L@un4}e>Vzc<_|1E95aeM6d z7!z(a6_d8((-HJjbarfC`|;n4&!xZp^+@HFU;Mi=d+MHqi|)2ZkGb1My76 ILGRW79_HX~sW#tClO=fj=w5~C-isS2$59sTUU;pN}$}P9v zQCYnAAV5Y&e)C$|QQ#A>h#^^=D{O?yG(b?wv%0=n2O-sTUmJg|?0EU*rKV-Dx9#VF zTFY-X8sr){U%dS4@*h6-q4IMdxy0>kxUS3Pi3peu{>v{dZSc2+{eV~dw*-Ej YC@Krwp55w1u`c6;ZVVJRD&?IYpw<1#NW7KY#vX<&XaOFCunjg;yI;IVeM($$guZ z9N`-S$w6Dy9wojXYOMNLWl2>aZ%zEmHA&v4yY+`2dO(>tVPaXZa8Y^S!TI`8=~ZFd zR>p7p|FyQ?K_P$BhkR3J0}qv^{}mZZG!i48rm{`d^&x!|tIaDCKT}{X2f3s&!Nu8* zsu9S@V5b5 I!CCk5TY%KO@#D{iv1!>K*5b0QAOAlN_zHw3 z^`AT)X$?(gqSAroD9dU(f kY?Qq^AY1DcxDlKg$k1!@C!ihk-Ye)WNAi?0 zy@Vo{yQOjG7=kwz{(^-Ibyt32W4~8L1n$2R`*{YqJ#ogPNb1KP`#l+E|1+mLzKAjR zzal^Z;YiE=CqAk#$wBAX;GCd7=j1x@1ttO{#2JzrjIV0s{20eyIPl-^_#3tTgp-3x znM{Pt;N(DzxsFC+PORQ)s>)MT)%*M^>XEB8MI8MlHC6~}Q@w* (K85#p!ggRT^j-L*EBl_Px86o37c3FMu$B5{6{(Jhr1}&%d^uMP~LaR^w zImo)=kCmsRNKF98gc&MC!|N^nJixbM{BOr6F8a?u8A;ytojhx>H8CC>ogmCI?^Q8~ zx8wv!;IkNHfGfqKG=kIvBrZ_74R%^sjj)=8E4C>$6^NjRMHTvohO`|YPk8#VPu^($ zuN_Iu@Hbrl6AE?GRF*L4>VN8nwx3q<2qJ#hKFSe)@d(rA#2 _#&bReA<^qmRM zb&61ESUqq?<<%yg53vV{@?@J0O>j`-kcqY|L*}zC^CLoZc^bAIKb)AZp%8wT@7_rM zk7$Vg4~yzHdU&M$ZwY vP3vwu5& z_1V_*zvD;!J8ocXnYR1xUKIMo$Gx7L2$yzEZ(er=nZQI?Y3XKewqSzWT-GMnwTjtR ziV%sAg|Ifo#2IqMpqbZf!eXy${%l>p9siBz|E8O>!|8wbXqduu<1(@0wr$k^+Y&z< zvhD2OjxP^vEdE4NW0`|maClEcZORI_236E3%!x3O#iJFfWdQip!pI>3G07IwV)Ce( zd64U)K4K<~WvJfFUa3kGWC#m9zEzTq+wtFk{*MW<_8|MX1D>WtLr?$5CCzQu|J(7m z?f83r`kx?;G G5Y>x8ra3KM~Y3|9Byw`f<-KS)yGh;5yen3El`ph{>+gS43QsKj`7bV31e>!=P1+ zyrU5L(GsWitSUvDql4$8W0@%${aX$fOuYhyPXj<;6n(c9eDQ9_@9Mblo2s0`m2zEV zUJw3f8f*8zgNm;0)BnvQXpX_{{l7i_UmxQ?1{aacH;jfzb+9pYwUeeT4S>$Xh8Ry` zb%M+9;8Dl8jY*E_&{?+4oH%Bj>c{J&pK=>JAVf`yrnGLnYDqGbZ%+H0=>hG~q|;(r z>kzsDZ84&O%J>jvsn;&1{Vuxofp7hJE>*Mk27L>2V2utS`h}GZUg9LaflyR9n_zz^ zC{1Ka{iUSPQ*}7dN>ZbboXN9|KG~K3e_Zf=xb3l@L$oK^e+TxvlY8tZ692vQ{~O1C zY08+4(dhl)$&+>mt=k7}BAzu#u=0acvm28sgV{CAcG>yHGEs^#w&?X^!DA=sGeH%) za1b1^hc~8(n3$?EK@*rz#$*@NG4b@^n_`gqs<0An=$ mkASMh@X&Y z4ufgG4y8Y~_BZjD_7i39TefMx -v`A$_NV#w&9< p=eSurZNo!vul$BAlgFCzz$liO@JZRjWH!uyr@S`OoTCY zf>f^uh7`CGU;E&0;Ugw%J8hM-(seMpX+iF^g&srWkJa_s4HL(db<3;V;q4Dw(5i!B zd{y}phw8mD#6m@B{r t!MIdy*CO&5kS(NT+bNR>dq@8@?JHhaIHH1V-H#93;&AR zG2=8ObgJH&W AmzAY&Ik*n` z344t%li#vadG1R~%H-2`DdQ#&lo!78QnptN SZY{Oi4`Dy& zsk`jDYdPS61Ixg`fPT;O@$#Hr8i)O3v<%y4pV@v>=)wgH%2Q7-kQ{D&@w=ik^tzAP zWtCoQJb&K9`u)&XVzrTJ)?-l)` z{v-MY{IzA)tXXB($vfLNCM@iKX3?UuM6Xk}FFX^4-Pk`#uVC44?ta2s>|fch{m*Zg z9(>3_dKzP0nfK6q{eblNGI#F&c3JIzzL);;OD~m0&nzxG>7Dck9C&~r#z>cW`Z+=! zeI%br2pxBux_f!$<(JC*N9OCga`df*$-VSvJf$&KzS* M=&e^X#``j~rVc;aaVqxxnbAnV``sLBb9`);7 z#AH6)yTha%%AC1##P?iz@rCF8Ww*&wrj|K#_BH+!k3S_{UTDU|?7e5}t&2PAN3tIf z^cek~>n>%#{pQL?6U$RiK3$$!jDDdPJ|C;tIPjo@)&1-Af nXj-b%A|? zgtji69nH?Te0ss6^7K SK0XACQBNAuJyh6 zaU=};p)@HR77+8#aQ4Ge<1fY&vZDV-hhKHEHf3P? E82vEwF6HsZ9_#D>x% UEL7If7m%V4s(tDnc(y!>hRG!gfWdF++`(K@V@PP-Gi{5=vIrL43dY~+j?zR8l za`MULjI+)x`|r13`QG=wS9aZXayj+XQ}hbv8RgAKA6=&D{r0 ?+_}8>eebnC%jClaixzrvzx2{ebx_#blOuZZn&)SpeWvWa_ugfXJ*JhH z^g_Xd4mz-0c#&*56kC?-SFRS6y`<{}7hIq>B<|z`5-;pqs9(PV6GMr=1I2gIMHiMg z;e%zbmZ#y x^i z?piK>|NCY43{9vznU?;4P7^W5DMIJuli#AZuAZSjnp^Jp-W~S;si&M)e&VdNbdViW z4m$WCy_f6Y^5Fds_|ZWH2miVbLi8cS+cJ6buH}+T!p}2i&aj{7>EOFsKYw`I>8F)5 zC2!ogapm~qkN1y$KdE?|IB|k(J4|nWeO0d)UsX;&?ew4<7++2}?zl2R?N2`WM99AQ z; G#%1`DFbD )RGzg$+#Ur{FPF}_UunW<&MjPYgFldH?(%k+Mt HFJJtk2LB4Jh9+rX?jlY4`~Rd9PApG7 z^>q2t<(HRP`|MNR`=0ldeKeWea_cSS)?39TwquVyw(P#g9$E=L?BEP y)> zQF^i6_sj8`+)35`*|YbRz9;JCdXJQSd3m3NEz!H5{`sH(#r^*)zx2!H`*+?|zJK>U zs9jFcfnuzdH2?I4FIdWlKk{Kslt=3QO*eaWb@$zODSwOJPWt9@h9(i-);eXk$>r>~ zo>SI*^WVw?nlun}{yX2H)u~p<*(dmaXH8&FJpOpO@x~jqQeRyzzU1Pvk5=bD{NWFL zP@1~iZeC3ub>vayZrO62CJra@?x5Go@;d3Ouf9?TuL(Y=(N^up4M!a%AKWD$oN&DD z$DW<^YV5o2x=Vh%Rg=qjz2E8+TG8#L$$JMM(C)eSUcHy<2>bYugAXnfRsXkt`IlNb zt}XA^1a$i8r|W=tzs;DV)#ZtL`5 yC1Z{Ic7W-O7hP{2{&H z>Y(yNA4s*Jm^!t5@Pi*LfAhcox-47zs`-wTjhxY3CO;2oEPn9AAC?|RmRmK6A4|O5 zep|U!F~ YdjAT`1%KJyua>EA-L;IL zF~K)*Ce58#p8eMs%8m!`Q1;Noy7U%KCpu|hhp}Z~XFQ?R@U8;_8z|3T^-|eQGNzoh zb6GxrWto1dR!KS)U;OzO%I;d(?s4Ii^6X_VvS3Y(#VxyRKhno5uZQ{_5T+Px|06mD z @{$faVn)3l?f6Cxj<8$(?l47)= Y6 Z3UMtO&rhP%LVV BG|4tt`X3UsbX6-$zJovzaWyPu$ zW#uy~%4a_PmzofDb|LdvG0xB>hs!RztXy>A1!1=ucwyhQ*IidmkS&~UPSe5Q=9_Ld z{#U;8Wz?2!8*~7>vT){9ZNcE3cHU8^(i6(h|NMXOYJTCOMdd2lyizMLJc=)_P?;6w zvBw>2`>|*K{CW1{*+20UTHVep%d}E`SO=ixx)kx0R%u77-#lSR$eOilJn2lvcA9=9#CLhjkF*05F@$QviG;Z=DXdQ#ENaoH%PCO;(?R?@K3)McL0} zS^dA8{QSam&uIm@T67z9Y2tbF;(s0$ gT(;3IY^69_)Oj)~TP1!@2 z2pFGFEr?U~r=NUElk7>BLCiiUU&kwAHk9XIc%cwuL&cvjq5-Dl@z3znY!<6TSGr$0 zwXU;*ZPTX4AO80Qm~u9C{vmEin}d)4+o@;e*=ee?HkfUmCXexI!vPFNPlRez_t^oK zWQ|p+f3k46)m8Q&5`6k?`qpMgosyG`p}knjfUYlYSQGL>nkwV$Th|_;EM?^*0M0-$ zzbnhq?=3H@pI%dTId;b~ZmK58CIt<`xMqvYrMJIYmfgGDtI;WE?^4EUBAhg5LRr0V zP1*5HlXRLtu1uUcUaQX+tqVMs;>n-9>}TQ(p&PZIN#UHc&(ZZPO{Tg|xtAsi60b|P zEKP)@2?OdH0fBXbR!E2HwDmeo44g*tQaU2(k%#B&-S0mtXPt9)Is2?LwfcLwoOa4v zv;v%i2(6@6mM?wjOZp|4agxuQJ#}+Sr^Gz)KQL~BG{zBQw6Zz6OqwvM+
EXaZQR0S*3u4mzjmRQQMY{-8X!_*wfbo)*QH zz~|cR#EBCr>fkg*r_pM{Zc$TL@v*-S2v&Gp55D%AZ)p`esl4Ou=awV1V!ZQC`9wVM zaUGJq6Y;NtCjez8>6CW-xbb>j^jQ1kRUL$aR$J)AG+z_r@h6<1Q}>HCsp+y84e8{g zk38C!JFdLqYW3f2FBV{e?+04Fo~Q}#V;`GUCTZnb@%Pc?i8IeULld8V woHp9RISPHfR7KM1K|l06+jqL_t)pD@_(lxQ3?M95SNp$(J@&Zr1#>iTG$) z6CUeIwm~%v `3cZIV9sIPKp96Qnk*k)?tI_$*fx)lNR4}BCUO8 zU0L_)hVsgty3VF+s?qxz^0L1^iUl9`tM`;Z3G9CMGr;%M(fopUo$qUD|MqX+RG^LV zjS*O SPDa65TLCCabKsoO)Wh 0|s;(O@U1qp@esE8D@x_ @{@0Un+E=_zJ~TLT{pZ+mnOh(k^($D zQ+#7*?!I$lz=(>;?a{{{^EJ>}GiR1>eEn H+4c<}LRo|?eQLpIQ;j?9TO(Zwyv>p8OeGT %VUo{E VY$|ec^7*J!%iicK~3DY~L?TB14Pp5VIg9Qho)XK+K zm$fgiE7N~=YI*+ZmkN(Q?Wxo1<>FtzN?-TM1Vod13r)G|AWCIx^*UV^SiN|yCeHQc zmD`t<$tUep#%aQ~0ix<>KdYLUL6L&J+B>UF+P||_Xz$mGV?bX;{lO3KEwgpaa_Q1n z%Ja{^P+ri73-_!PkJUBB7gb)N0WfFoTumBp^M&{Yn#{OH`rPx+=| Ba~B#-zdlV6v~_LR#^OCkL!6bh@aU zEJy3wA=eGzW56!d-Cl0okoKLspYQf_*B$* v7Xb-NxDP+!i!6E?e#9xB9{pl zKQ3Rs%-4h8@s4xLcfS2y`)TTKyX(|)rST_gfKSon<3S)k67rqX=3rfq 4U;nyq zpiI?d@k7}+d-mRX1@z(Nx^I8WmrZ*6|1jM=I`F^)$~D(qqtks>W#h_9U55?;8*hC0 znBd-Z!THkf+tPViIry|w3O8|3;{N;Z*Y(q#%*N?A6D3bI;Mbpi&rgYDefiFJzFUsc z^-ma>oS6u3yg{$Q-aYR2-*CeX_66gPn~_Hyd9-d!p5U(ARq}ZK%L>KV3%YD_oGv}! z+hcVji1;J+cHVhsO_ICoI`gEmQ1SP?PW8D2!kcoBJN6jyy-=2~Sn2pXN;fM{RLo)* zH>Vcl={>sji~l$`4S(2RTY>jgryUb433-km=OeC|Sd+-@m48#_pUuYi1crv4)J&eJ zZWY-Km(mW~%v~JY>|;n6t_rSGIB6dfvC7 v`X8-}{%RdA?fl=&G{#AM!_ A3F)Pp;Z@N*Z=% q z4ZfQ`@8Nld=BCjJnpEGU)%IFlX88VHcX>6A%Rl>BUd {!h@*m&(Xt`*+~uQ)xZjU=V@k6fSHDu3?}?)6QY3odwHgIiG^_TmbPmPpkJibMEuqdj 6&Y<&3L;=*SMGI)z^w0$$4HY{Lg;& zGonyI=~^8S&OiU1dNP5yTvopPW!~}{eK=?C9LYWfZ J$G=j#T6G zDxW#|G7Ia}6bH;jwFih(B{cqJv7;yRcL>-1yrf_|^!VL^@)hIgQFFjCHPXHgeQp z^rO!%Di^)?L*-GeU{>k~l(IxA$H+6`7=(}jP)Aa!zThG?&sRF{R%f+=kIo8(nA@W3 zqOQZB_J&s1UUbuEgU%+oTMo^T_>DCp%hZxQEI!}A=Q4nk>}caxS%_czige(|LXtEY zq*cd$s}Y9TK1f|`*|dv}{I4iTgDkbgHwqMlci~F_lPcFgS;Y*pUvkIjnY-$L@Oj>l zH+6Cys~ v98S)e7A#$@uFS95mQZ>i86W$M|lzn2cXR#_DXr*Zx|4)s~0EiMrDc zRJ~LJ?@;z*-&h?;m+P6`PW*>nL-`-OrcBvYms^(ltfLoyDF08;HDf8_N5R;W*kM2M zw(QlV(mQIfzaRe2yNXT+qK>aZ0Piv<@v7}X_ h!~1`d;&uQ1W|ynJ`1$hY{SOk}phuPLi>^%#vaU)B8ql)aiBk#!$3{ezRcF!# z#17#C^(rl%Cuu-8G|IT+Dkt=Egb2**W^rfdcCK$|uF`2Wbm53$@FfF$<{uK+!{XBs zrjZ6(>4q|iB0b1CDFgm`*|b47IijJ{PAIhP_q8=KHu%ceELQJIaB_5KADl=KO?~w) zSlMbRGKjmP%k-f<$o~@Fi@!pr#^BfFd&ucpVQ?bT=Wmt7~jlZV PTsT}xWzs6rLKC)ryvcJY( zH@ 6VDFdggKT2QCqgE}Pe!`AMHAs5aDIu1 zyXE5Gzxg0XWjfh`f&`UA1cW5QDp*|9hW3ya!q|q{l_J_Jey6s|R83})V|-QE0@WKI z#hiNZ)woWNGp& <2&}1`OH$_8Z9BzzJQX07fr=TKJ~1OxY0ZV#$nl pcRD2>qs6KV@P`M{um8+_%!vOiOSir>URBPHPA< W$40Z_aD6N*n7jd`$qqppTN#_)%v0pOa zLY74#S7rX4T&AuD0~I5{53(x4{QdjiJs+5WDA_+1S9{lKAA_8V{`eSy4Q9~>8$)D& z``wnro^+{zugCrdzdC3TzL|tw{V%)`$A8EEPFG5v^{V=W9Zmdgvj1E5!z CZ1-g z1rPF+ytCF>b}vbe4>KVzjx-PtfscEJz()x;Rjhy+89v%!gHGqy>#_kqiX3W>#C`$E z 7e*?d%yS#J^R`3>j!CnimxhcrvE$k4?F%w9e-)RoMOG1wT84`-I4yc-x>?W z;Qo$YBlbofe;dKKPbF~J`A3S31Rs5?Vwl;AzowHQ(WklF4$q(jg#kM)QKYkIQ&%ZU zI>D?WfEG; ZxT#0{A&$+)`hP_JmmEnOH2$^(zO`)izsul(sE@MM|AX*tboel`X@B tEZEglq)OBq^KI)n20LyH26HktjdPX zjd4S#uHI-13Yc~0IYgT$)K9tAUBo1a7%Rj%^-3eNKY7j3vOmxyQ&`~Z<0%4XDCbp^ zb%)U-%0A=312P}uTNPO&n>+qjIeB9b4=loWg|Y?|k@l9T&9L|~d`#-v$QZK!@owlz z&^l|Ksf+rG@4edGZO}MYf`(#rrzV(m5_{gHYF%^E!54f2737ZnGBh! {D%w+>PV2QBoHXoMJ8~;aGiZx@wFeS{{ ~n_^b8@NniZN ze&n|BH#+}7ZzGgJ`Q&xKC{LeKi>_*mIf6RnA$4PbM66QfR*y NXnac* z7&8hL;Yh@W8jyuktU)@xIvXC8XzX&QOD4t`Lvqx}pDhbe mW~)F zWl)A-_N~Fhrw-k~)oyh7;;Z(9g&euQKfan9d{j#O%IDQNg$RW3f0XfU_+JwpZ1xXr zN?_u1`;L4Me)T`@?1yjr#k@)W7r6lip7u+nNa%u6@h`pX4T}$qh#jUo69KIp1KJ{U zAokiHRB<_lJKSMb;#A`;QgR$$sZZMP3BooC&Fvy~TPj}LtQYd3Lx%Ks7P{yKa=rE^ zDJ^g~ #&JGu-J|7!2dKUitSF{Vk_MN(I7S~6QY2Eid*vI#0VI{Zw> zMCXKb!4VWH)P4wj@x(tZCiQ6=a-b&oskYNq*4|W`gAYnTMMn9mGxc5gs%Y@hXVmz@ zsP;Gbk_TX4e5xJo=~sILPRLV_@Nbv@@w&y*rjH9Sh!5M?Cv1}m6=;Dh?Wfen4_*WW zKKovLGk4<~5vih1`|+WLco%tOB9A@(XS_1nP3jH+i#F b+{DeGSu qTN&%Bob`$+BmG5{bjA#g5O_%TBd(=vy{R*M*kXFMflrO?Cs*xn z<41jEZ2S*rW50ai{+B$ bV2o;v)K9o?~pEzn!vkLLw(C3tGdA47|(Ral5qnHvffv+4kxGwgd zu%a3w>lF-?Vm*$w)h0~wuPRw4vQrLa 6f9;D!h0^Rro zG#A}MyKL)&kFC~E8 *^tKe@Go*8X>c zCRNu3w-qF-I!lt+ki9Yd;P2qWh@usrb|tXf|LE&N^c{I2Hul@;wXD6$Q1}BYN&b&4 zTYdcBsu6z2Ryad^<%)8(KjJF}twlj?Jm>;HWZNtx`yyb-?ZjWbQ3Vh5BeOrO!+?;7 zr4fH>v7Del727GYjrPA4t@tTdyZ-S Om_=iv*B)dD|1)n;a z+|cpA1-mlZI`J2b@HuJ6^~a6kciA7T#_v1-&~Cv&DBU{vs?YdyBV SV5Ek~S!F-mU zc6*oY#>Drq7~egjTvSB8u5ZHR4^)w`6*^agk8YCXU&Z2ScpA`+dgS>!pK4$f9nHZl z9nk@5v&s8$R|NtkY*Yq0{!r(ls=Dn*rX@A~pY}Wc%w-IyNER<_GUP*7@@`3jp8gM3 z)X^vCs{gU78(+k>SGu?DZ}7oJV9S20+W3h9OVtnEyYTH7Vc=Keg*+QeS@N3k?=qOK z4g4 C}F=c Iqs5> z8!Bll>0CUvFNwE+gCOb@c~-`eE@wrHwyKBM<=ohT$b-Xzl^2D|qs9lv;w4A&yYN+? zkcJCPbZX(l(TguTq4L&h4r9NFI{1}~nn1CAP?$)YMn|NlzQ$*qr}o|}&%ar~kFpOi zl@1X~7Hwj)s6sWOXE!W<)n!Qg6?Brr$M{|SuSlpm85`Y0lbCoCpSD`>&XCQhhvJFP z=~+CPkv4k3! -<*prqI7g3t{L2kf$a2_0gx?mtWzA VFjw zIjsFgLsxXS7RtxuYG{;`HvD_j(5P7RX@4{RdhPf4lbkO9OPXcMPDFR%Qxo;*@8rEU zsA&!=&{q|;|7%>KauBBd8UK(Xu+mv@AAA&}zaRyM (-RNX|0HeJgJR%AZnkm_9aqwQ?!OSBgG{?Dr1ZD<>Vj|~ot7IpL7KOth z%3+M^5J3#Yh5s<5QkemSU{p1Hqr?Z>I)I447QXWJDiW= d8x0h=4kLMvxOyX2fy*ZS}dWBZ!}9w{Ink_s-^}0PX7n(i2Gj>j4v6sABn@_ zBR>r5kFRE|2sJ3g_;U{Xd-`8aZS2SQh!$`E__O2?C^{hcblVTmCg4j#xBX)8XMgHc zZ^Yq(#(wGDJ^!E=wxWyjHi}$SRNKJqN=e^U*Der%H90H6goC}n4gv}BUfD|1@VFw> z@C9dR^g$uI1wFmjwkA)~?oG8PKW)x#3O;(JP^23_ vU% z0p!(*!uC@q*@OLWNZVgsFcf}0kf5MxFjUF)A;#O<{}ckRO6=GF!8pkOl0D-1ul|=- z;8pyJR_(6)KxC3uE>w&D4|B3=1pS}(3$ltK+rkg~BksvpjY5OENTRdc|EXB@*2v?p z_6Hc7h~FOnqqSdlb;p`?kP+0yA3CLO*05!N`kxv`F{x+rY*Dzm&jtskUI3?0qwquk6h|)8+-n>>FxgpKkYZ2=#@5VKjQR>WF-Pa6&!5bWPJ1= z0^e*1;u+GE!Hz2JB1$)6zZJ-M7Nezvs1QW^Q23i^zoEV9#TTFxdnq#%K6;uo`=4Ug zA#wEaH$r^dkBW(JJyoV^WB3)qz7{oRjyC=hkzG~ERd!zHhTFyJrU@ajS$(mDMX6)s z?9iQU1PqRbo9ma&vI&FWugtR0S=X{OH-Xg}H9n4)gwU2Fw(wAkWbuj5;Rk#ZODpm5 zt(KY^d{@CkhfoN4uFhgul?Cmpr+7-NyBHe6u{3e|qHZTl-e?GRh&F!m!Cx{6 I%GSXlnX#X&X!wixqo&$VE-2VFHn#C?P^(RJAt89H=}QcA;kS4Ep zeeD+(l0?whFMGP~-kDh&$jIlX8y{slfYtw|Rkf4wt3K5}gw=@-e2ZoUm3h-qNsHxU zbEnvCzv^>P#A*Y&WKx!h8r=Wbk78jz Gy)MOdoz#H*r(hfdA*pk)WkHG%mLHFRa9<|evN1i5qXzTdD z4?bieCiLiwA2!fWo%l=N2_f)PHufj>V0=;HkR+(_HwZuVfix_DjY8rp*ERlWN*?47 zi;uSL`3KgG+D~7LPjrp_8UJFZC6fq(tkDOxd*d%gkiOf#hh8IUO7WqCJI*yCi3){n z N!Ka9e-PRD zuF@u`EOTS{NbHAis208zRi!%;D-vI}7@rr*gjplN7dx~lsMNvd&LkLW3sY%TfsU4Z z><7OBVSmNPR~6q RaMw8dKQxD^-T#zbg|J9N+7Dp(5eP|XL`FuHCZU!5aPb%8mM D%%W*!s(2gSduro7xJC+*SnS?U< zAb>ZKOyLpMaY+^C3%i?xZ;krkD;VRar$Tq17Km0*N@#=u(p(*nR``GzAo#lMhe$_7 zZ7T~zk#{8xff4posdoAbn^g=q#cXQ)3^v-pr^6~H(qb}#7g^HJIyvhquMVPUC>V@k zy%OKJgYn%p0F$%}eDSAE*ydI??nB`-=O?}QiDUKB7Hq|LQA}LG5Tg&Ta!x6oy$tWN z-;rCf#G8-p46 zo?3x9(md7=MHBkl4$KZvn=~-#+0L4;tG>ZHA72 z7=&I4;gOK8_#dwS1HnKMf6Aus>{`jQJ+?t0gW@lgtSdk49gL5DbX>*;MhX}C(Mghv zjq)E>^P%tXV2!Wvp@|?hy=_K@i?r!uj2`>#pCRxq4ZaqBV}I!4wju4u|N7TQ>Uu-I zYy8n3jgU&sh`&&s8YSY*@#B)I^|Xgbpz^*qPdOcg!ogP=6G+0xFb5usOI-41 zqAbm!!2lkSp^a)fh7=Q$^8CB4GP^ZswB<1s^C75_v5EMSVSMp-;k%PVuW%|lC^@J^ zE6Be1tkKaY?Mjo3fsR(#_A8q*9FSf3z^F0)wM%Rp8GT?;u2xxsQY}zjHWf0_1a(Lh zJmF*o@-bcn)O76c#t%k(Em{E~#=60))WL@WeAn9MirvImbZ8^P>h!_)^+oF!ve?ET zZR017lyR(Mit$4aK+w=y){G}91c%LzKV(B!^$ qNo3<5hd}YJ;tYN z#Y0j2h-ld#{hzorr?Vh!@L@5dr363n1QGXHg@Yh?sOOI|dt{QOq&zexQoFTP8!;Ss z&;+r^ANlxCe3;>nJ=+n*zj*@M_!)nL@I|*t_^CS@ciX>- FTtLjoBHZF*tvFL&C|KjFJKy1dpD~{&izXT9+bS;(}@};?o8EH z22P1hr=98?jLOy& XZqYv R{GUHz{*P}->?_}ZD-Y7GTf3~fK8_2c+Me^r@J z4Yc+63H6;a0}0A9KG}!20=gSN#F@qzBFFyv+1&U?FX`0at5_3FZl(g7UVL;{{RUnB z7&QL5B;t0MAwv?Gx(n&74F}urD&sZy_^9GrE`q@4KieqK2l}tyG; 4Tc^^3Yv(G-;iX^N7J&-D}