From f556f7e4ca956ac1310eb991130f9105112a038d Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Wed, 26 Feb 2025 18:56:25 +0000 Subject: [PATCH] can now export events, cant import lol --- NearFuture.xcodeproj/project.pbxproj | 20 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 123349 bytes .../xcschemes/NearFuture.xcscheme | 78 +++++++ .../NearFutureWidgetsExtension.xcscheme | 114 +++++++++ .../xcdebugger/Breakpoints_v2.xcbkptlist | 24 ++ .../xcschemes/xcschememanagement.plist | 32 +++ NearFuture/.DS_Store | Bin 0 -> 6148 bytes NearFuture/AddEventView.swift | 15 +- NearFuture/ContentView.swift | 218 +++++++----------- NearFuture/Item.swift | 56 ++++- NearFuture/SettingsView.swift | 43 ++++ NearFuture/StatsView.swift | 67 ++++++ 12 files changed, 521 insertions(+), 146 deletions(-) create mode 100644 NearFuture.xcodeproj/project.xcworkspace/xcuserdata/neon443.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 NearFuture.xcodeproj/xcshareddata/xcschemes/NearFuture.xcscheme create mode 100644 NearFuture.xcodeproj/xcshareddata/xcschemes/NearFutureWidgetsExtension.xcscheme create mode 100644 NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 NearFuture/.DS_Store create mode 100644 NearFuture/StatsView.swift diff --git a/NearFuture.xcodeproj/project.pbxproj b/NearFuture.xcodeproj/project.pbxproj index 8d55a3b..7508ead 100644 --- a/NearFuture.xcodeproj/project.pbxproj +++ b/NearFuture.xcodeproj/project.pbxproj @@ -15,6 +15,7 @@ A920C2BB2D2401A400E4F9B1 /* AddEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A920C2B72D2401A300E4F9B1 /* AddEventView.swift */; }; A920C2BE2D24021A00E4F9B1 /* SFSymbolsPicker in Frameworks */ = {isa = PBXBuildFile; productRef = A920C2BD2D24021A00E4F9B1 /* SFSymbolsPicker */; }; A920C2C12D2403CA00E4F9B1 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A920C2C02D2403CA00E4F9B1 /* ContentView.swift */; }; + A93BC0942D2B18A3002E8BBD /* StatsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93BC0932D2B18A3002E8BBD /* StatsView.swift */; }; A979F57F2D26B1300094C0B3 /* EditEventView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A979F57E2D26B1300094C0B3 /* EditEventView.swift */; }; A979F6052D270AF00094C0B3 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A979F6042D270AF00094C0B3 /* WidgetKit.framework */; }; A979F6072D270AF00094C0B3 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A979F6062D270AF00094C0B3 /* SwiftUI.framework */; }; @@ -60,6 +61,7 @@ A920C2B42D2401A100E4F9B1 /* SettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; A920C2B72D2401A300E4F9B1 /* AddEventView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddEventView.swift; sourceTree = ""; }; A920C2C02D2403CA00E4F9B1 /* ContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + A93BC0932D2B18A3002E8BBD /* StatsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatsView.swift; sourceTree = ""; }; A979F57E2D26B1300094C0B3 /* EditEventView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditEventView.swift; sourceTree = ""; }; A979F58B2D2700680094C0B3 /* NearFutureWidgetsBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearFutureWidgetsBundle.swift; sourceTree = ""; }; A979F58D2D2700680094C0B3 /* NearFutureWidgetsLiveActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NearFutureWidgetsLiveActivity.swift; sourceTree = ""; }; @@ -124,6 +126,7 @@ A979F57E2D26B1300094C0B3 /* EditEventView.swift */, A920C2B72D2401A300E4F9B1 /* AddEventView.swift */, A920C2C02D2403CA00E4F9B1 /* ContentView.swift */, + A93BC0932D2B18A3002E8BBD /* StatsView.swift */, A920C2B42D2401A100E4F9B1 /* SettingsView.swift */, A920C2872D24011400E4F9B1 /* NearFutureApp.swift */, A920C28B2D24011400E4F9B1 /* Item.swift */, @@ -290,6 +293,7 @@ A920C2B82D2401A300E4F9B1 /* SettingsView.swift in Sources */, A920C28C2D24011400E4F9B1 /* Item.swift in Sources */, A920C2882D24011400E4F9B1 /* NearFutureApp.swift in Sources */, + A93BC0942D2B18A3002E8BBD /* StatsView.swift in Sources */, A979F57F2D26B1300094C0B3 /* EditEventView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -438,7 +442,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = NearFuture/NearFuture.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 16; DEVELOPMENT_ASSET_PATHS = "\"NearFuture/Preview Content\""; DEVELOPMENT_TEAM = P6PV2R9443; ENABLE_HARDENED_RUNTIME = NO; @@ -463,7 +467,9 @@ PRODUCT_BUNDLE_IDENTIFIER = dev.neon443.NearFuture; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -478,7 +484,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = NearFuture/NearFuture.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 16; DEVELOPMENT_ASSET_PATHS = "\"NearFuture/Preview Content\""; DEVELOPMENT_TEAM = P6PV2R9443; ENABLE_HARDENED_RUNTIME = NO; @@ -503,7 +509,9 @@ PRODUCT_BUNDLE_IDENTIFIER = dev.neon443.NearFuture; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -517,7 +525,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = NearFutureWidgets/NearFutureWidgetsExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 16; DEVELOPMENT_TEAM = P6PV2R9443; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = NearFutureWidgets/Info.plist; @@ -547,7 +555,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = NearFutureWidgets/NearFutureWidgetsExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 11; + CURRENT_PROJECT_VERSION = 16; DEVELOPMENT_TEAM = P6PV2R9443; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = NearFutureWidgets/Info.plist; diff --git a/NearFuture.xcodeproj/project.xcworkspace/xcuserdata/neon443.xcuserdatad/UserInterfaceState.xcuserstate b/NearFuture.xcodeproj/project.xcworkspace/xcuserdata/neon443.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..c03860e902fb26b2e8d707b21529f10c1b461a8d GIT binary patch literal 123349 zcmeEv2Ygh;_Wzxk+xFh=E!!!f3WS6ZLQqNqq4$JdVn`MUq>)W%wmVj=SV6Es0tg~@ z1RG#M1yK~l1_~B2v?^9oQ9h|nVO7!W68Mzgrn;hXVw;K?bD~AnF(-#EUR7YXjm#Ss zT@)?Oj%Rv_lR4A4yz0X0sD|!#m`XX7GjmCtkMna~xD>7{m&&Da-MDnFJD0)r;4-Q|H<}y6jpg#Vd~O^!o}0kUu+JAKVuY!h`V; zJRFb2lkj9b1y9A(@N`^&&%}jz2A+*e@H||FWB5vZ6<&(3#@FC$@pbrmd;?yFm*X4p zt@t*)2H%D6#`oZR@qPGy{21Pbx8oi7ar^{+8oz>H#joMl@f-LcK7`-IAK(x1NBCp> zE#ZlsI7ku+lL%=+l1Y2gfpjKaNIL0GdXh6pZ<0d>lHp_o8BNBJv80rgk#bT&D#<)j zMPj6y)R6gP0Xd7DPc9%Ak}JrSutr!bY!dDgwg}sV?ZT77Gs3gN zE@8Lug0NTEFT5-q5Z)Bt5)KRR3GWNv3qJ@y3O@-y3%>}z3crg;#G)!XMV}ZF!(v2i zEhdZY#SUU;v5S}{b`#UZ5#mU3lsH-(BaRjG#C&m_I9{9}P86q#MPjj7Dwc`m;zDte zxL7<(JWsqpyj;9Oyi&YMyj8qSTqUj+YsETojks3aB;F-HAZ`{P6t{`n#b?F6;sNn> z@eT1U@v!)=cvSpQ{7C#v{9OD(GD(W0N@mF-StXlfmmHE)a!GE>O2ecn(o|`hG+io?&XfwJ8PXhSt~5`ol48shQoc#POj#{H}adeoua1{y_dv{z(2<{zU#%{!IQ{{zCpi z{zd-PB$_0XY%-bbrX-WkaGp#YLH*GL>mjm&vd_Oi)pLrQPX3l$4yU|o;E#W zdd{@R^rGn{(*e^frZ-FnO@~cKOh--cnLaXoZ2H{vh3Om9x27LWKbd|r{jOkzD3T&8 zEtOVEYb9A}qqJ4pDeaXGN=M~1B}K_ldMJIAzDhr3urfp$s^lx`An1LZ^IBjsb|6XjFoGv#yTYvm{9XBDeN;@gsvFcz>RsyH>K1jYx=-D&zN{WlUr}FGUsGRK z-%t;#htxOKx782TFV(NquhpN`U({dCqFFM_W|P@sc9>h4Tbq;3ZOm=W?ab}XUCpWH z9_CDQUvoe6MDrx`Wb+jBRP!|RbaR3EOmm@mhIyvB%v@uhZ(d+N&#alL`Ev6W<}1xt znXff3Gv8{y&Ai3D)%=k8Ve=#AN6n9!x0$z_cbFeH?=xI_qtv6VgS(jUH zw63tOwBBT`v#zn;VclrG-}-=ckM()$3)a2X7p*T@_gVK_U$!2wzG8jD`nL5Q>$}!Z zte;vxvwmm&-uinK+b*zOXuHC8rR_S~^|qUBx7fDW zw%Q)DJ#2f#_NeVK+cw*F+YZ~~ww<;;w&!gJY_Hf}wY_b7$M&x6sO>}Br?zix-`T#m zi+0H_+f8=GuG-CZx7}k8+C%m>_O|xk_CEH$_I~zkdyc)oeSkgJKF~hMKFmJWo@dXu zPqk08Pq)vs&$7?6SJ`9sYWqU_+4c+V7uj#I-)g_jzRJGZUTd$jud%PSue0B7-)O(j ze!u+z`=j>9?Az?m+IQJ^+n=-VwePndv>&p+X@AfDzJqfh2X+t#?+_fKLvqLtlS6T+ z4x7X4h&Wm}S~^a1baHfdbaA9PG90}feH_`2F^;j0JV(A`oMXIWf@7lNOh=((uA|gZ z<|ubmI2Je-I<9qG=eXW+gJYRvx#LF13dc&vO^%x#w>VZi);sQT-0Qf{@u=f5$2P}y z$CHj{9D5xvI*vHrcD&3=uoe^gXXG>=* zXKQD&vyHQ@v!gTBnda=~?BzV&d4_X=iAPYoFBWei@11~;1XSuOLm!Dic58wU3OQJ%jfdDTDe-gl3kr# zon2jAnXaC$ELSgAA6JfRsB4(3$W`o$x@Nj&xn{dcTytD=U8Sxv*F4ukm*%3b^Iey@ zE_dDFTIO2ry3uvBYn5xgYlG`?*AuQMT~E1ox}J7D<9gP$%eC9}oNKS^71vv?!>%K) z4_zO*K6ZWU`p)&e>j&2_u48V=ExTL0lih9HZQbqM?cE*R9o?t7JGnc%Q{9>Fp6-6` zYv}&?i%-e_X77q_aZlSpYLAczSMo0`&##P z?iKD^+_$=G-Rs?Vx;MG+b#HM$=HBLh%DvNl!2OE*RrhP|*WGWp54sP#kGMZ{f8_qy z{k8iW_qQI=BY9+x$)k8wkJ)4KI6OX&-xKh(_9T1Scv3uFJ*l2FPlhMUlkLgz4D}52 z4EN-F#(BnjW_wCJb3AiBrJgcRxu?Pt^DOq9<+;Ffq30scm7c3SOFb(*D?K-PZuYG5 ztnu9G+2py`v)S{AXS-*I=PAz%o_(JEo>x7uc|P@g=K0+7h38ApSDvpu-*~?D{OI}B z%XyI(dx=-_TD(@T)9dnjyk2j>o8s;2P4%XEyLr>S-Mty!p5D{FXL$R02YLs2hkA#3 zM|q39#onlQrgxTiwztGP$6M~L@W#B=-Wu;B?|EL$d!hFt@1@>ryf=84c~^RG@~-u+ z^WN@V@7>_t4~H#lMW^wN_sQtt)#ke7=^xR=zA>FW>3DGkm>$eSCd={e0QJ9AAImAm2#ec;5uyMBkad zLf>3psjtje?yK_6_nqrI&$rxnqi=<8rSB%+&AwZFxB71Lt@5q*t@YjMd%(BZ_n>c^ zZ@X`oZ@2F`-yYwKzL$N6d~f=`^L_98!S|!@C*RM$Uwps%e)IkAJLV^T#qadH{BD29 zANIHRckp-gpXN{Tck}o1pYG4|=ljR`$NMMvC;BJ(C;O-Pr~0S)3;nbGCH{H-Du2v> zmj7)3IsQxhOZ=DmFY{mJzt(@9|9bz;{#*Q;{SW%L__z8W@;~f<#Q&)OG5Of6keqcdhVPH{Uap0`Ld4Y=q zmjsput`1xiSP@tmxGAtUur6?WV13}uz&(L`0}llr4(to;54;>W5O^iwz}{ z2Lp!!M*<%Nz6g97_$u&A;Mc%!f!~8TCV1z926WJ9331J92=Y*oD!TGoEe-IoEDq%d%;hFp9X&o{ucZ_cr3()PzZ;_kQ8!-+#yfM8%heb2(=8g3T1|RhO$Dv zLZ^q$2=xy23H1&23k?hn3XKVk4dsRMLlZ+&L&c$JXl7_us3KGuniskxv?O$C=(5n| zp({dHhOP=N4P6~t7Fr%!9jXo0h1P`Dhwcn*3T+NO7}^rr9@-IlJoIYlwb1LKH$n$P zheB_L-U=NK9SOZ3`XKaG=IP!hJFq6VIeGrtzlc(9&Q(IAMOzD7(OlBDcm{S zC7crO8qNs!2=@zThjYUH!-K-Z!g=BR@VM}#aA9~xxF}p4j)rH3%fnUSSa?BrVfgH@ z7QQ}wV|YdQmhi3N+HhU?_VD`fo#9R4d&BpI9}I5^KNj8=ej>a({9Jf%cz^iS@S*TK z;rGLzhCd5`8U7~xQ~2lb?-4#CMC6DXaYUREZzL26M_NXbBON1MBI%Ltk<3W1NWVyS zWKd*SWK3jiWL#uoWO}4H5{=A^%!yP+sw3w{&WmUf8o4C0ByvS$Y2=2;vdD_ahR7X} zjgdPen<95b?vC6S*&Nv#c_gwe@_6L+$QzM^kwcL;BX30xM~+0^j=U3jH*z%cUgZ7A z2ayjWA4NWnd=~jB@^j>u$gh##BELtDwcuKaE$l5EEu1Y}E!-_4En2i_-J)BI^cLM) zWVGnfB5Pcm@|x1p{hWofayHJ+xj65Hk$EX|ql;pb;cwhZHoi?!X<;l@%Q-lwhBZ>l zxjB!r9%^1)lD|290mu|T|`giG`otn|5XZNhEF4<}Qb28J?y63{50=s+2 zfZPccRdZvNg+%5)|av?6vMYtARORg2yS`#!;lQdZ~X^N(5 z=Ji|~t}WM&YY(px_Fl7SR?Vi_;Z@e(rxw_|Ks$pAViYx}vIZMrl+x?F}fbE-bKnSiefjiz^lki4BCw$SbOfM$4zyKOI@Gcfbj$71ZD2-5Mvwlf>DfKA z3+(OcYlPA{g;f&@W8+I=CD54(CDpU@O3G)IMj@rZ-U2da7gd9?vVOXnwrBS@R8>(? zI-{^^NTR9&yRRWlZ>B!UBtzBd-7;FHb?ebGExmhM%brb!nn&|$Nt#ddZ-8aUG+R#-K+z#ckD z4xI`TD|`-j0oQpgcP@7xr*V`!Uu&;*&^l_TX`R*r1-Ioc<}Tru0OeY>&RUArm91DZ ztQD+I{b0sMi$H!2EGeyyR_W3N90&zEXEx5I&r{AKJr8gHYq z=_B(-)KoLEmt9p=xTp^DE$40oIj?`5I5KaP?hGlgd(S#6wR6iZX{qOQZh2O>%x;}q zX7=cL&N)UyH#KVLR_-?7vHEHUlz_OZC@-vnx^LxHaW_sKnb+_vG3mA3?Of+ITphQD zTg$D}x@qZJcP(QLx1QU;-NCKbdT2ehEO>>WoJAvmRrDEj3@?mT*RKG341FF~ zKC@vF8fEqwbwrED4bdmEJ}J?k`?&i#@2XW=rZIV|xCd)l-whGkq?No15J)h(M9GJ^ zM>y|l?qRLhYVJ|(bfyHE*gavHeV|u&aF26O6xaj6^K2DHGjA2JWK}cDB4yTFJ6cHYw)(%EIc|lYrBr3kL%~uU03Ij22c6tf{W4irTq-$Z9iB z*GZH)%=G&8Dz3<#b#%1@YH*tCRF@mpeO!4_MOj%%HAs+_^EgPf|8ll zwO)U1k}sKy|4ZJ{#&}m72qyO{@27uA?zhBvC_CDuoG~na!qmdKWeXRdch&M0x7Kdm zvv=RYqaS=}i<{Dw9_PIc?i@Uc;o`HL!}vCMdL1>^Gy($gC9>64oW zim-fEgDfaWP}gqmMJAk{~wa)CbiY(uL7NK46#vd*{YP*(5zDIAOg76q!2+LaqWKadk zAn+k6p*2`$29Fv^szle{yO^dHjfiN=Gd6_5i8p)iV|7O15*UYnpz)Fx?@*P_-; zTcNh7oi;_+R@1ctMh?fXR)M`etU`k-uNPDX0gNgKQCh+j5-8!er_PyM&e*8E^82q`EPW*l|ZrmjY5+O$)U1JEShz6m-Xb2jLhN0ow46R5j)}q=>ZI(7$D_M_5qETox8iU57 zJe1GP*5+t)wNkB2E7vNtNkA#Dz*9AB5kpD z?!OEDpap0VW1ofEg4JlTw(yh~W|RXDI1ZUe|9otXY|5{ysHoP^dexj1Y}KayX@(Wz zfW>OFJDe`J#~U{|Os%Ml!Y00=ifL2WsaIFbjg}8AiIx@{h*j4su%D@FgvE6zRA7%p z4MCMtQ(avFWf)9v(6up5vU6a`;5Bid&*Bd>vURM|$i7fG(&9uwIsut$BQ5JuGn8+g zyh;gwY*P$bbOr!InOlHC{2G|*M~#AQXXt^XTW~78a6^JAO`6LfFJt+V!Q$| zM{jZ;Lafmz+?U)hh(~5*g9sz0hFXHoVR1#hQ6JO~1nW#R7hQqY8@LQ7fLdx(oQ9q{ z1x!w`iH6Q+WJ$HNR-+5FvrkEu0Iks_+~erdKZ4fhjI!T%JpF<-J+aH&Emp0n zHJNJ_^#mB#Vr_(RuUe?jL>%Le8$W4kw0z!TV|MCct*z;7aTg?}7ivSLThW5{^ ziB>HdUC69B%8tKoBq6K!R-eMlurvO3~>D##}`XgqW6RC z`W)H=(ysCR=mnchW-WT2ZPorD*MzEQWhq#e6YKgSI>7YpOK2b3k6zZU)2`QU(3XL< z0lkV|)2$85wHyBp)`mYJ^WH}9G6sJ~Td^7))mHu?gMSDN{_!6%_)Va+KR-_BW#|4i zq4#{XY3JsrGDB-o}#tF!>8M62SwW=S0KttW* zh8VSDJuhSlLl%`a)dCnqHnnOEmD))nwJoH!Yf=GNm1jk(V|oe5-x2b+gAbirB--5x zPrE?ZjHmD+)na@A_X;z;l&)V`3QxPYsLkjB`=il?MRN;hMOzMtRz|@DQ(mOwVO!q7 zyhUX*DoSIcON!=3tDuFR@#6Q@b%o-+TC8ThJ|q6{-ttU%*r$atmVWh5Us#<3&-(}J zRCNFhqq!|+;E>uugHNERh7N0_r{Y3chY4*U%=rv%7=$uc05n(x2GfhVYruH77HoA7 zaZi8&WjA*K0+SDM??Eu~X9yvJWMn~hlzMQt9%GLo&kZz za{%vF0shn=ym$$O6yJ*;1Yz|QdKx{4UPiA&2=UwKV+b7n3VjEm!e(s4KHLho!Cedm zSr0FUH&vLpM}qY~Ltiu2{~UdRzC>SXw`jL&w`r>w>wk;B(^-GDR{P(<`oCk2vHmfw zZZ$@l?oKD5)?fSg>-OiXhrR3gx9E1PUnzs2*(IgLP)45#L&5542}7STD`4)?_f)zU0H@*f)wrAXfVR1jRM&Mm?twGG?jQFw zlkSJ_Wz@5IdY!{Cvu z#o0JVdsKU@77xI=+BR(mo2m9Sv1rxkDmMNqaF8TCg}VJAcOlrM*%oWa0A`bElCwYH zxLM#NY@EmF+)zAhm9||U6}KFZsAcXFBV`nK&3Zf@GJtywU zm>N)CgQKOD1@_bHvmS34YCeJ{Il$&pV9z#68x$I?0*7Z~x9$lh0oby-1gzCn%u>L7 z#s&87|7aa~C5xl=N-#lhMK}tUU0kd^x0-7MJPC9bWE>u2!XR$>W_>dZ5eYLio`cI6 zna;(f+Vk2Awah%L8)g|p*B2iSF4btUAxfA_b8LM|T>P+Tg?guFqDR$O1Ftl$!SnF~ zybv$Ki}6|bYQ6rW4+g%q!%cs0d!Y?zM3?B{_mN_Xdg+1l_IFtJ)#RT8UU z2IFYKIN-bZR2WWlLu}d_b{curi%O%D8xp6FC|p=l2J>AUmpPsW@4MbyLMSI!R+WH1 zcTpl)Kf6`j)Mo~sC|yR*EUYQ5);nzk2egd02Tw~XA=HBnW3*A-@WMqEHPv7(O^CQe z{n0`_+Ysg)gAF1?9RN_%D;~`bkj0p1t7+@?OTGfbUUW5HsU2F4Z`R&4rf__I{p>Xo zo~yWPYVm4ZtG%Ti)w(1Wb}in(dF${xd^=vR9oCL$Z`a{FKpotvy#s{zu9i6sOhyg1 ztEuc$L%fF_J~BcaQ8)|srZvUUNiZqKu#)>-(zA&WeE@H5*3v^|N>60<{~kRcAAMI z7)D|R-oo#I4FDg;NATO)x7v5w_jUMPd=wwmexQi`XN&4&L(h)I8;_eA?FmAHM4fnG z1_vyH?R!a4;)yX+pWtD)<4^Ht_;dUP{t|zMzt(=FXb?p;6fL9Z6^g#5xU;tXHT)g^ z9{+%Uc z9gMMajSc>JkZk38P)=OaAD`dRB$c%@CDDU%V~0cO#HR*DS|8w`{YH_MBD?kzMFT0y zrAVd7_6iY*NF>fiWMU!;QHhyYh!ul#*`A0D8(v|UQl>XhzQLHDddWBztjJ6Y8qc95 zbG|iXXVDmppGVD1)Y*_m5wHD1kwlTA{j6YJ?hxag}&oOoCraS=E1 zXund#QG~Va`-zYEVfB6`K@ytW(BwG1Gum(3@7gg~1V+-p#R+FQY(-fJ2Wd%Kfx!uw zu)$|-SYhcppd`>?R?K5D5HZjqq9`xucOxnkA>e(sU)MBn>^# zc&#TfT?^DxR!NaSk*IM6_F;_TdUfsEm1%=m*YapZdH3$=T@zCtGs2U)HtftBzddde zj48+q)scQAo4c{`BUn?m$Bz~>a?FL`z(q#M{sea99biS95LUzTHf6V3 zlFP>Ur}OV8gJ9@`(F0^C8OB04XB5VwQ{Zn^v=mH{^P>>oge(-9{}n4Wl8gd$4?>`p zjMP`AvSvnUNs$r$(IuwGu0cR%JtSo4(Gb^(rA-+fomCjCi6x+5al(E_@<;)|9g!$4gg=Im_*4; zG7H|7aBV0GfkuU}E{a-G)Rm%Cin7_K90TD68oFV0GbN@6*yvW=Q1e94De;}g%6>#hvOg{kiPMBv%`FtY|l?2Pf%&%B9pd`i$Hh3;zZ{Dm#tfV*!k-sSmSdi>Kax=`?E#y|%fTz^dloZcc z1bfI)cKehi!N{57r30hA!vQ^kX?x3hMMO|QbPBv-VC`!>Xr!ex- zbr-}T7RQ0h@M!t0>e&wIvgCexMO*@jkq5{l03XR_@*vqlwvva)!xW`a)QzHain>#j zK~ax&&V%K^vNC&a5Apj(D? zClRYVx$nEDy|;PbwRa`v@;UMXo69}qd5W?q>Qzhjk{2mDouV_e%<&L}2uA6t#U;R? zu#YM)EUz917OBG0{8AA0i8@{-uNi@ji3bPCn_y)mhbZd1n!H6(KP|IK9g_-cssTJf z+^*f8D07s2z&i3Cd7q;G6b)#+sN-e=V;{eq`7g`x=*O{8cNMUyF-LeW%;rcpGVq5_J}yn|0Qv^U?K&)|D-ZTX%| zcNZpfcQHi(K<6>OulnCp+|41tzgrvg13??}gD9F2*Ty^;MAz`cu#^2#RHSXvUqBcC z6c-o#SbiLc3qFs}rzlF%%vydt4{JP&qB%@8oUglU{YYXC z&*3#)uJh;Vay@p6IfUJKNm*q@Rdw!sW-sYb(5quJ8O>k9FX1ocFM~^$F5$1_ucGJ% zilAyr(R^J-!^d+d(wfL<{%ZajLq_wEd=^Cu5;B^i#fFex&Peb^3h`-)4K;t0Az2q4 zCs|$R9W(yzCx(b!ZHU;j<03ZqFNoNNU0`DgyFM;q&n>Y3J(YtK3L@%L3M;`}X*8L_ zcAjtqq`;nO?4I=3bg*-?r+GD%Y*~)qOEt-pSno~z{SZFP-^Jg}-^1U_-$&8;6kR~k zg%n*x(Zy@|2l&nWgZvhLD@B)3w1lEdDY}lL>luJwOEl z&YN_hY5sg2yZmAHgh4H_LriS`0csh+w@rIfV6>Q50@ly+Sw`)E#81$Vc+SS%fO&6{ zaY*^hibNGoBc*Y6gEF6Bl=&n@mucHy=AQ;L2~ZvX4F4>@i{Cw|e!oc3l@wh;(d86f z`*)E^GK3ZENjbcCc4BQ`;9ml71HYFCgb19sw3gq;@2BW$iXd)jyfKpT#t6WE*?d5a zOhWpufPaHOSYQt~nUmw!p^iVqzsWG%sk5EfOq1yNVg5*y5N-Zl{;2VwQJ0#_nh)`B z{Kxz!%oNIh&VNDCN*xcbp=f!+ytta8x~8(`EB@;SJa`*LAXKEd+0R(e9~mC}iT{}g zgWw8^ZldUx2BGsIb}~G;5?sw-wQC+&5l4jrF@)32#|fuIvTP*Z+ALWYS%Sq7S*zkA zYs6m=SzVjOel!wYf;%p{Y76XtZzBm=kvP(55MP3LPHN^6d_o&A^9X(+AOwYw5Eddr z3!$aZN@y*>E`BXV>nOUNqV*JQpa}Mt8!5VzBETPaQFQl4p{)TFg^t2$LMNd!*H%bj zQ1PAwRNPDvY!RQJXg@=XFaPhMMP?{8<~qL9{BJh%2)#je3VkTLHx4X?Yyg%*j?f=| zb14Glbie-k06@z@c8lE+7Z}1YVI-gyVYmRhwFfEMQY(xSMpFbjYun#u=n=*VlK?0R zklPF#zoDJq1VZN|HSSTzK77KvwKvh0P(N2n^j zJ4L$~WA3JC4>RBN{+F0<{>TXPM@F2Jn}3q~zV*wB*1xPsPE5cR!csPWdjwF&Srk3j z#C+4l=8`CJgRp`T-7;ah0GjD}ie8{-Z=JAGxJkH~B2ervQM8ZIxV;$6xJA(hhtkwS zc3WvR;6XS6)TC}W#*>iRt;@iH-7~TW=4Pj5WaW%2 ztSal#eY{bxT}||8odEu5u>1%hbo*0u;1o2_OhpTK3-<{33ilBX-fb3uRllO>ZHnHd z=v7@s!^a~Oz0*WR3tNSUn2Hu26@bIuqUd!)MN{+|MQ=hx2go?xOxr8*CZ)2p1|pb> z!O_{3z3oy`J|%5h*JvWzXG+F2UAGH6n7{!I@J78x7oHM!GL3$aqC-ubVs>==PC|Ij zP|JtoYB_&lmxau%-6d93)}_cef8S+RA-e-&5qQ7~3Rrk5piqe0Ui7DZPK~wmb8+o_ zxWJy(upuahkRAvxJMJa`=8|MFT+mkh4DKMKCk6KYI)FQgCT>zs^GXsLJ3$Pu2(JUg z6kZizDUMR~Uajy32N3gpBiP3-9uoiwth6jv3_)E)69)gvH& z4ZI_X29F5fi(f4O&3v$00J8aziG+ACK)eNJw@qaKK!78n>x2)5kA#nfPlQi}&nWtc zqK_&1grZL=f{&lC1AFv#5M*CN)Yt$f%zCqzFCczw8>_qp7;+Qm@kh|dHC>o8jEXz(k{jP9Bq`Bz|c z^IkUMR53NqsW6_uxs`tsNQ>RYegLG!46%opDfSez#9rd*;u&IZv5(l7Vu%DI6vK@@ z0>vW562&sbCW;k`Rf^3U#cTsei@D-JagaEeYby=~AdTT(O5IJf3x-Fo%=-xIk6WB=b@`ZxJY#Yv#o#K{y}<3L)R20&VzF66Rbift5}4Eieo>FIG< zDMrQFpxDKk;w*|C6gz9h5^)a2E{gqs8;BMw#2DZiu~M8TRzdh7#U6^`bG29lAQ~r8 z?EBAyXz^^$CZ5wA7=MuV$z2laY(aiA|)<^Y(h{it{H78~pRu z3nv^nuj^%V8bGvop?C?K=ZnY&iUWY7YsDpa0L4L2H_gq|cPICgn}BF>skjVOns~K% zjd-niop`-?1H}=FTTtAR;#L&5rZ{<>xExq?1%uGy%@ns`OxadP&=j}-mw@O~`#Dbz zk^hVj^uy^FvHuA=T_@@QbdLxCG>hVPe+Z(*yTyCK!71KDafcH+IPHTIb#Dt^ z>y;IOz2I>K(&fO^fW~fdH zNmwEh&$X3AraA{EROe8N$5T9k;v&YS#s6P*vJ1_Mqw$@F6c4YJ+DYvx9zpTwzs9j!tA<>!QkszIr8uunI$b)0soZ>u z$NlG3uGF8iNduaz(Pw*Q*R+3g&9~gV z@Y9VQWRTzxi*#BOeR~fkL^<@SFgth5J^SSOh!U`q^Pbu&-_E>DV0j)pgg5A zif5cyd6p#zty)^3D^F>@t~{fsAWz-=BAo;01Eg~)o&`75NfcJ~eCYx>rdMQ~Uo#{? zqv#-tXH$GuGrh}A-(M{zmDfY6xVhZ&V{ znbEx)m?!`inOm=Kr4@$01@mW9>(HrfLx~Bhli)IeT4{~6mf}i^=haHLgS7-#{j01c z(kAI{u$D-7Q5;(>0sN^xrL{zQKw{x_(q`#FX^XT~dPsVh;u?zQQ@nuUg%mHMc=7+9 zwM4g)NV}!yj8m0O$PR2eMRRMVJSV@7A-UQ)EFG?@PDeVBo z7f=l05A~FGzCmfPGD-u&(;6u4ph0Q$pQE(*q>tewsr0_|f%KvD5ycl#d@;qBP`qS~ z^ojJTuv7Y+;!7z8JM1Wp5_tFp2kJ3*RUq+KUw@8CcE}#ksZ9=L$zHCF?4$Tv z%|h{YT4w!>CigpkqOOG!JqXLKniXyhg#kL;zzQ$ZG8?8ix!-w5nw0J+cZ2K7;~l%=FU$X|7e>3w3Fo@J!C*Wq&2CW z-AQ=D%11=23zbCf7g>$4UsMEwoP`@scDIm z_C0Zcw`q2#!BGW_^YSZnp4u-DlmXoc&!R`=!C==OnHN9TQ$5=ViUvPVqh~tDP+Y4^ zFnOpv3{G~`7pRqo!wHl|4-(`zQXbVLxM-Y#bCF%gW`=8-%0T%ib1>FO)+Sfdnvx}E_sGrBz!GLv0I)c z&*s|7bL6@3xlAr+yPo?g20z~y)Re4krKWb&)E>~4sUtOI>reBjDc=wgKH~yiL!KtQ z4seu&$%pvSOCwDu%Gkh)DkCv$T#cQGgo;)-nB3va-&7+t53Yt}$Kl$*`QSzo*ZQHG zxWi08xEep-Y)iCn+yl?6{yVCs}|HM79{qoIe{FsJPzi;efXE*o%c= z-Dh_LLp5%rJ5755{)FSlz(`F$v1m(#Kh^gnmECy@M;0M83_L9jr%{a|=D=y6V!bvv zs0}BHba#cj(M5!M8k`F$*7cCA;bC{%ZNg>k@j;5WQVdYxQHo(NlF1J7;T;q|LE-Etgy+@o?d9v^d;84=_Js*& z83e1tHA&I38Kulg7GwIhU?#hrsc-3V_ZRd|?=~~NN4M0TsqOS^`jszmmHX`8X_;9W z-7_+>(z|7)_UxY4Exmj9?v3)m-3PtXy7%Y_*U+S=Htx@gcz?DO*cber{pp#Ok=iXI zGZp@%relbE3Q;VB) zr!L-|M+)qPiP@>viMo+jv&gvCw{N8(6nm#Q2^rT9gPU!r&)#jt^Tnc@Siwio4> z>zeVvY6#qoU{!|=9#bH!jPQ{z3c#w*pP)Vh7 zE|v4CTtwx!sjPdIyPe8UuFLzua7R0fvRIT*5dWx&5ghraY9!%|hnRwyaOXqQaNB>d ztbVmf7eFHHZjl0e52Iau81R({Cpdc9M1M65u;B)e6O?HN#hU7GICgld;WobgBoWSg zk}w7Rj&!5)e?A7fz~1Xr-HD$)9jV_B8qL!oV#A93J#iGLx)G)6+%*oCXjqMgi*`@2 z8hTI+U<0^|oo$q&RSo5gNbHkLE;GN5h0B^7vNyfg__&V2)hvme3I6_4{ss&k@@4YZ zIwW|tR{mE0j^fuT{t9l#ZiEPaj*FAmARHngPL318nKO%0Gox9VX&GsW8@J`(ObBjd zkbjqtnK+8yp!gughw4n&L>S0?lj1KKikw(gVO*b|zZlN=0iqjHo<2YaIwl2-x+c|R zHd#!tw*%SmF2x^G{8`-SYjUu3r^#h-XBruYcOZ&Un^wmrG;z6UeehAg?yu7$7Z zZ~A_|QeDNK>{wN_g*`Fa2(dcCriiJ9sU^inDSnUQ_bL8>)iM96K^iO3_lskPSc&BA zQ;t4=guU4@W~W1gH%1-pSsfir9Zjd1I#CQ8`Hw07gyK)3j_seX__!r2(Rab#TaV~( z_C45IV{iJM)vfC)cw^Mjjn$E^|MZ~v^Thuzpbp5R|4Z&0zePW}?y!LOt*HlKb^HZ|8!C*unoI*&{kf)rra`8`6n{f8tn?2Q|CpG|VJy9e z-u@`Pq|t?M**qLR_9E+m(a}7kqbw`9Lm(Hl07KNh!evqF;S*~l1y_K+t!gi)x;%xUzfqm@BFpTjHOsBk{A$|#B*X+tlcCA@?wQ(4-5rdm*<1PJG zU_bM3XsO|zhnX9L=}x0| zf(q>H+F1R9i}4ku@SRmLC^@gDqNMOoNBA}Fz^Ra+>E3vwaL3DlM5BNDRt+Yzn|X%o zcV?ys<8=!K_R0Tn-3`+gzgDx+km668FVG|L7Nvi3ftvew8!!Kkc4M#p00l| zZ9C)5sDEwR5`5G!k?|+Zr)_t|i^AR?L%=H+-Zj=%Tzk;a7Z zdb|l&fqmv*AcT{y&~P|dpD?gAAK+W@*5P}42A!n!Q%a#fn7?=9)hC_&2-zvCKc%?& zFkU%aocotz7*EZppT%1V{#$m_rmy48g$wN0o_ImxChx8TqVuDr?ApNi4MhW@Rj}0T z8Pv#a6{3FdkU7zQz)<#p8hxe8m|>@kvf@Lj9XY=s@WNZdnCZq+5Jr zp>&0fg_4Th?3a>s@L{kQhy*glHx^2!0>L)5N>3$=k_<|E)GDVdXHb$!Nw2>x4oJyX z2Iz4>N`DpyM0!G?g)$K0fJj#JI3V;wqHDvHQQ&q|hAShKk(8WH3G}OXoibV(193p4 z4<&v7^Kn4RM9!v6Y98BD{+YFA`O;zGC7-|6a-4HHT#?dYpE4ElPHUdGYsc(YcYo2p zV$I%%W*k{!gCpx5lDEhAw~4tZREqUb6{U!Us*s#h%wVF(9HoXa@m!@;DO1Xo3Z+t+ zr&K91rJ9lfl;lz}kdi@^45nlVB||A0M#*qWM%1 z)BZmb>j!C4*hzrD>+Ue+3dY1&QUbU5=w=4xYG7h1s9ei_Su`IRZM*^-I}?k2qjD2t z;}yzEO2$%>SF7Bt+(Jn{C6oWQSa_vYS;rW%PFbU@rDPl><0+X?r`)crXAC)!l1cvs z40$&&**(pf?D6j^?z`x#!AtK+zvaxHyLmVY3k-QbYCw1;za>1o4tGrnt+1>w)F(OHjx!%I}O6e^q{?q=J&lTIHAuR=#{DAp-d4@?KC@xaq_WEf z)m^AuxPI7z`7lQi!JBGWeiL)iR_zQiifTKxz1l(TsGg<*Xg-^gb0}N{NzS80qlB(g zyKrsQuH1e#4I+5S`HUwofCyf4(f`E=-Vd8jz!_>^MnZekJ}iQlT=<6(ylSpG2qJh@ zfF~E9ID&UsVsb~QqjkZm!l8eFMVFp}JQGF6s}MYNhdM!>s7_KRt5eje>NIt_TA+eV zy_}LOC;{Dj6(vh4xtfw|C|r_BuA}7oJJcD5OjT#9vs4HaQs*#<3IT8o7*Vo<5>Sfk z*xTFx_r&RcesiO;J5|+1lq`$ONR{2Gs-B~s%YG?YPRWhND+tM(?VS?qeUZxUR8=ol zFQEj$(M`4Lr7E~3Zl>h6zfVjqRj)O~^-N6O+FVTfu1R!lg?bAUlPlGm zROrqsO27eATc_Tt-p0ga9VKi23&i9)5Pi2d7kyG`zPvM(y>=y;`}O;K?}Q*K5R-R6 z-i^)kev^OOp&g|ocHQ0KazX08v_Kb=DTb7=UznJUdsO)Ta=52Kg=J#dd>QfZ1ZzUTkxs#Gjl-xzh-IUxz$-R`^N6Gz^ zJg`xHI?m9$m4Ld3nJd)2jHNdxSb7WWbSQb!uvonCzsJ=7r!bQG7UTcJlsuT=|961@ zAy!-efi*IIwkK%gBlT0p_aCdDPy*=bp<4Ab^>Ydr@RG;=KED4({hl@QE!z$}!nOnI z4{ST|=!v!i$eZZeZ)U{!{&)45nWF@x1nB%7b!KcPjPD<(1TJ{`Pv5|7RydnkZO+TJ zT^|qJykpc24~~AKYlmgGO=f&=wnAQ8^Sl|~I6i8-aER}o9_zL(+LF@fOtIN%_5&(1 zyUcF0$LuvHnSGQ1%kHG)X-b}<-Kq0OXP)9qZ|-33#Dv@)^JzL5`r`|A%xUIy07K?(lstbzFqEjdr}=bUe42ad z;&U$(pFc1a^k_2`lqiyI9u82*oMY~99$?Nj4>S)l4>k`m4>b>?QL>+smnne_ z=PQ)FO37=KyiUm*cbG>QlG8lKun?KYF}Zm#AvfQww-9~wzb7>R^GL{C1d`BPOv$0R zBs9-Dl_WHmo96*#m@CYcl)OdB;aYQ*IY!A5O5n?Q^zihPT^ax9@3J*7G@r#9S;Qpa z+e{Lg&t{VFofAnyp(H_p=bJAENoc;ne4+UwN{&+U9wqPBnJ+OfVUq9zNS)mjKuvZFP>uJ;zcZ+#SEJk3$kDfvG5kbB3dMiY%y6B zi%NN!@+QhFl!y0b%3COJrM!*ucFH>_@7!py7%XgYSezD@1vV`fILAkMSDcCYB+4gK z9-go-lHhy(?=kZKsa=buE%3ah9p&9|p0{)ap0}Jvf|kw@V#|B9-zg8Fmmm`CBkki7 zG}6tI0c2%Kw{)kxkMjOnOAkvXeg z!bH~wT80ACTLxJMTZT|RLirYyZ&_yLB`OO*GJN30Ok9<66 z?qim5KOPRU>l{1mvrK@z6PxEXp(kp-e_+t>wU69TwJW(}4&+Vl*P)4N(=ydk1iKi^ zG|O~Lf#v_PcOHOIRqNW`3A+uN>AfZNn%;o`sSrAZ-a^U%fsn)`R9ik35NQI6pr|AP zgdnJZh?OE>!v-i8tSE{F1q8+VziSFfm{5)vFP{5z&wV19tl8^Z<^A^RYfMm1P%iN; zh(~d^BEB{8ZHRB{?!^R+4I0NC2rBUOV)%B%hoKk4$NqQrVuDJ8%F!nYDkHvqWzb~e zL(jW_Wia-;;r10@m6;KA6AOML@!^$0HxnPh>aeNq9j~dyg~g?wEr7l+QP3Ss0=EU- zPJATsQB^@RnV*Y>LyNCHmwZ@3S-NLGu6wRDXfBf*78u7=V4IZv0#StJ=af$L#dCKM zhVCkZ77-uUVE;;;=nJ_l=mEE{54zv&>k}`c7vEPZgElZV(5I~Ot_#BHuWrD;6i?7kaNwu?9eDl|jTgPP zI^$&Z%Z*KKKPa5)cJ{c3H0Z2J<#zT;Nhz~IE3dO3P5c=5sMSB>>@PL&^!IQ3 z^40;RPHAK{XP*+i) zD+j}+HheIsuY!zHjzOJLj#g$9UrzkwDrJrm?XoGvPrG7mXXQ90E@7%tj>m8p56^P3 zGckR3l_=3@s#e~hELEc6G@bYv#NSx0oUEL}eCbWZ-+c8O&dQrPmGTyU|Jcw;qDmZq zrM%5Q?1fJfRnAn-g9}y8QqET1shp#{OF5TtZxdfZJQ05z@o4JZu|_!`qFkuF+kKus zKa+`a7V&qYz5HKzo__tKK$R<$4|{y+LvCL>`_jI2wek_>OVom8i>n$ zKJi2NMCD=SM-1YZ6Mw(wCz_d!)q=0MzfgX~T-KM$qr|Tu{=q8c*UDqWKSX@xmGg_o zl_yv=T&Mie-OPL#)lhkgH8WTGk0}Ixl&;{Ehf3;;V^YRjvF(`6qLY ztBGH8^z;xS3_Wyref)UJQ<%nO%}kX7VH^90-Eb!PlaQG`s+Zqa z*q@BO6}IK3TIuT|HoE8TqxswUoonhq9vp?()KsR~ww zs4xsuL;QN;(aYRG{6^v*BmQyXpCH_r#&0Hm%X(EakBC*R8o5+$*pH^g_e5JInf@G*NQKwYhROoYVBmU_s zRSy+9n9mT8>u)Y&ZttRVgT6@msRly3s{X10Dzwv{CH^_$pRZO8QVnL>h4Q!m3$!~5 zdK~Sq$A+$xR^=dUu7B7DZjSb4flI{>qF0S&jlrF)G1zDW<~{?$8kqa^eWgf+%^7P{ z#i|n34XRRAnF=k{7m43Z{2t=>5|2@Ym)EGU5kobNJD{3@6(T&lS%`m?4IA$Jr&>b) zd*`~UW~$h-yhi&}v)wJBOD}{_El}N!mXHcj<9n*Z z%s;-b`aty|@t+fag!nJ2RUfH7X8!R@;*b6d{NtDKc}M+y-j?cjzD&6%s(MMFbQnyyOQMXmMQ@2-#s>9Ub>ImY0A^t4!zY;DQ<$ot0 z#q%fef04kE5KyCz@;F6xoTrbd?f{o41bSVfAo}`&YovqGg zk&J;m5O98Z`zqxr<_=ai;0}CtjaL`KiK+|K6Vww)xSoU{5|q{IN$MgvQ9(t5`szDT z^<++^p5pHqU+=f&zNd%v*j)KYl=t;U6~q7i;mHklyX)-`~H0xH%Zh z@pTX}VdS~!TzxAOub{nj2T?ssy@-i-w)#%>9Q9r5x$1f9`RWDgh3dOW(34;w!AOFM z1TzU1609WHNU)ROs8KKWig&43y!SKlI(_2BsZgG6{6g3@@%{tiUCYD^aRmFs`zRCd zhQ^E4k6|0X5W;o<3r*0R+^&8^z1F9ZC)L}SthTD3BHT4BG_O)Wt$v1t79_O0VyzkV zcJ+%)h&$9f)w@V&NkS_UT34%gtM@P=wjlxQny>cKb@e`o>vex|efIuSV>Tb@{^%3C zx=tLae?q}pGwQbx_HF;LBbV%Ze#N9dzgIVn@Bdy#Q(Sv~PKXE9hgd$p!`xSU=DyVL z!F>s#4Y)6jrJt{KK30E*Z#DW-{i$2N;gGNTJ-mDIz4Na^@qOhhH4Y_Qul`znO#O}e zTlIJ9@72fEKd66HpHQD9A(DhB5~4|nAt9E8I1=JXNFX7RgbpNhT(ADgGrpt#MQE%3 zmE9$+{)4HwlXsYw-CMkqgdU!|q=jMs_muo!wNOlRJw&g;Yc0tudX1X(U>dwj+FL<1 zCXE$!N@Lc*dv_tBYn8^Pf&We>q1zQxyrzi;7X?*onrfP9P!@0Nk?zT@U<677ko|tmk4oVJ@}g z;QU*pHN!L`neW@D!HEfQPg$4j(P(ltxb>%6lc&koxJVd8!eA1HR0}IK*#R%S)87j>bbp#=H^T1m58J@~X})}ZS@Rkb?>fz^aMvW1p|y3Pi|2e_d0X=y zbJF`Y2Q&vY?`YoD93o*d2~$XzO2RY}rjsyZjplub@OCcdC(SRK z-#o7LSGOyrOP7W=KpO;4stwdO((+nCD{3XJtW{_mYp>Iy_kTMH@TW6Lm_@>D67D2n z4heUWFqedRB+Os0ReJibT5Zr~tzK*3T4+tolP>V}V6mP7p7cQy*0Cb2x#mf)swdU9 zgeTRaC%Mq;Nwsa^Nww{??HMFsxMGp#CwjaC)or{rRvWF2L%q_*Xwm;!Lc%>&+ITH` zK=+bxAM>WTcjte;u~D0(?doy*JhHijD+PR z++VHjsbyOv(0~zETzvO|BHcr&eV4Y+wwn%6j*dozx zU|{%>2hzJg`*`o}Wv`@JnqqL*7+1fE$w00gM0dLEdBvg`6MMCu& zZ61W_Vng@Z@g%HbQe5pGxhLU~f5e+!++$wM*Z!y8R9mW@?DnSGay23LQs9nh%=~F&O`t-S>z&-!> zoaoh`*VJxgo)JZZu|9XtQo9MB@q&k5XrIHBH7Kl!_Twsu=XW30QN#d17Lh}U!{Fri^F*130=5{acy|Jx%5gOHzNH)A`oN9-PS^7-2v04?ABGR(*D5k4D?e zzuxrLM?1soIK|JkUwU-=g?7fI65b%;O%jm3Z`Wvl_UiUGuWtWhy4~;7EzWcB4&i@( zO}AHm2wxWj-Rkf@JK)u=j$P2A)9Q2#5)P8^j^`&@G%u)?UXkdmItOZq&Ze`Ifd0pO zRXV3Gn1uI9IDEzQt81=fn=W)Mn10!Q?Q|;TfaJtdSVpx2=uFK&Gh@>h4icIr5ghM z>U!(?==$pV>H6yi=(2PJb%S(+N%)e4qa=Jq!q+4mBjFnoz9r#1622$lc#UqTXD~=N zl8@!%xE8uGOus)stZbW#aDoC#DBuS6&)=^J_#Y5(5fd=R`+oEZxD*2Bdj@J56p&Z3 z!TsahAg^w^?k1+H8M+%uK#%xTmF{NUEhPLz!kH^4-P?8Umft!ZT7Kvlokk7hb697j z;DR-9o({|As&(^q3v>%f_?d)XNH|-qTclgebo(m_zx@kzyBu1)-(QPQE`MN8Wqyz7 z<&p2ako#!xn{M4ch_Da&hgJT$dksG?UHx#E$phz1yzh7&-B#*Wd31}#+0ZRJ-QrTY zR-=28>2|&DQQZdJM%`n&$8}HWHt9C&&@TRqM2^G&5(7zWL?Tb3K%z*ZM50`y+v<7m z>YhZalc*(8N20!3_oMCvbSoN2#HkTi{e6q=w7Lei(^?-LS-Rx2Zm%sc6-AeqtUvA6 z?e7Tthre!57NxFk^LfU$iZ#Mh6S@t+`f1-xyPnfGa_d$f$aE{3FOqTIT+=J`28wZdYxWRqLoA&iFOhlBsxh%%W4jZAtW{-u_=ko*6WQP@#?L5 zo8GQ>a4qz~OupBe_vG7gXUcvM4^`VfkK8(Z`UJ2_XAz^(~ zBO8OnmN+qm{XoNcnXl9n^_@^r^d0maNo-AGn<{;hzB7q!Npv4I5z_D6M6_qtxXg2t zdHOWm0asQ~Ty)W~LSH1Q`fd=UK24vl&mgfKiO_OrwZ6MPlL-IaEKw z?aB1R-JUEGg4B;)O2D4tjl_egXys_4#_2eyo0+e!RYb#8?vJNQ@^j zfy6`-JFL-9gz6@-K|y^9i5;2FI(Y^K#m@ibgM#`QdJOSliban}BP2HIl7oW!+x0Us zD5$@K#4ZgF3hI2-bFO}Y$63yIJ4<#$$c4(r_mz9}OS$%y`g=)CtJLFm;f#8hF6vi! zZX6QRv(-r#xN+!WH#&t)%fr2_xMzEUFTRKME4lV7S0WbA!U%n}el;^-6^Y#|^=nA% zQQv^|UIQ}!hu5vS@98arJ?!H4@-koS8}*OXH)oT63(S%4#O3gn`X@>3Rcq-s{WHwc zr%CKxsehKlKCCM0#uu02DteC-?3Tk8wM_Rte7k-p`@#+q`&R0Ak=T!YK~pa%yW`du ze6Rj>CXJW$FY8~?zp8&tzmLTJBn}`ki^PE>4kB^z8vPskH}!An-`4L(e_b3x;xH0X zcq2$$ioQFZAB^QQMdbx!am{mC-?8b_#uwxkl;ajz7E?)aX*o{aak(2^Sva4^l`=i^ zTyS{6GFPE1k0r8)TZ<9D28C0eJQh$`hkt9xM&AM52BZx`7DX*}& zY;vh9q*-K0K~czM{T6qrkoE54%q`BJ9yZQZUhXQbW9^kl>9_jhET!M+zbA1NiKDCZ zKj?oXF`Gp9VFxO95R)sdAg>&6xt!AJsIxBLORu&NeA#wd{|9G$M1MyAv;G(TS^cm2 z-}JweIEKU=5_3t+BQc*u7l~sZfs6i&YhefgjX1Q9NF2w0Ok_W%pksqfZeZ{ntpv6@ zEVXzFt|1@iLY?zl-{q-j-0S@F`d7 zvL1sH71y95(YFS~phaWFpfl(hB;o}(!SfT%l}vStH>V9Y15QY(GT04hh!&DKsmc&+ zKs&UEMEBhtSERvWXkloB28*Gkp_KuRqGA&9KE0vZ(ALn7HCReXEW7#*76Vq}85&rP zw`k$&C2PB<_j!CdzxjjcP2E_7#Sn+E@%{~#vgnF+tA?jMxnS|QAmKA@^V$ZBp@Sib zy%g6OI=LGxlkrl##Hk2|RD)-b&)^>96Q^F}E7|H!L)km-0@spz?_;m6fT3R3TK`pH z=xyl7DnlPbUlM1Kcw?2JKhy9{e@DZHA%<*d*f7*E%rM+A!Z6Y>$}pP5n@PNd#9K+M zAdyJCjl|obVM7kU9IV0R(eNEizU)FEamoKr8ZKcPzJbJ<-VTSM+&gAqm>Q_ZV9hoX zXSo;K|KyYJO@>=piQQ~Krrt^7oGL?w0oi&NiSw`6uz_KgVUDNn-s!Hp>_iX4T-Mm0 z=ik^4{@G{R-G+OZ=oc9l8j3jK@EAi@p+JtNcYj@y*Ga_kQhLaqr6aKY8>>kJWWVzuK^tW!#sBN8Byp zdoGf3?$(EaO|r74!U$glz$9y>9(~Q|bHlrat%hxA&l#Q~aapAS&A|KXHB}8Sc$=!r zv(;Uug}Ph5p@qfcI)sPEq{JpiM5RTCCS;_?g~lYO#D=D1q(+2B$416RrNyVG#YLre zDW6{AO3EuPDl0B@`ATx9VOPE8sbP=d6|Q}?VXuCb;bjt6pwUd?L)C^?4X+u{T3ksY zjC;AhS#NvIdN5m^`Zt>J;pexU8=bp>+wiXU(GOptE7{#m^Yh#2hW8DhbM4m}J}`V} zIBfXH@Uh_&!>5MNNUS8Wio|LX(RWx)BKi)GkhpfO;fUc2!q*=|;zkl5Bk^$((Xijj8p|eMgO}Y6TiX~a8&T$NPqI(Zeo*JT%5w?|>n>Y2mz283 zx=Kr3`5xEatDvkL_br!?A61rDSddpxG!D1yx^nPc&yzw65y1PAsxYUlJOfwOq7|Hs zK%-b&XbPI=?!WIhoaR)J`Ol+^OVOfs<@e2^TZV7jf;jH1;Y_&dZ@W9@a z%X82S>gx%J=H@EHZ-H@v3EZ*^{M}R6{|Jn(H2g{8qZLmgTv#~nxz0qz3(F}fDPR@Q zg-(JaGbJ-M6&DAi2KV*aSDOLNx)$zm_v^hC)yNx#dKJ|u8yiC_Mg@saR2r`%aTCjK zm1|l_4*CiC?(9x0bDLvS88wwgHHn)^+|obHoy5QdqrQrzW4I^lSvL8iG8xVFqp}&B zqkb6eh7XNSW3VyA*u>b>*o;K@Y}60v^cfP-U3-qi=Sh5Ft+9o%rLmRasIiT)t+AaE zBRJbh+(F__cm3E!;)^8iCGn+;)sO$}I>F&~4P#tj^va4SJ$aVs{`aMd$(LnG#?JM# zEZLaKN+*TH-IYf4Blldmbh;Zga4TCzd+IT(=XDFCm$7&KC-*ZBV};Qlg^^_(XdGl5 zY#d@7O5!W-!g!U$*GPn?!tneXB)+-UINUhGI1+_1+L&z|W6UA(EfV*Wc+g!K?~wQ| ziSLv6!N0CBCPG6-G~3^18j21J_guD~f=;Vvw@Vm0y2YiCQuv6;MYx2!v@EA^)QCF& z^OR!=dkoqg2iRk57kSL(7WEY4)cOT7!*~-b>KjQsRB1#T@VyHcHPsPf1HzkSoL&FX zcNyn%?W>G)jq^x6Oyb8?#sx++H9jTrt9q{><2~N@#7Eic2^V+;UCs^O7rfB^TxTzg z4Skdsx+dYjWp!@OHZJ#C@X1AP&d!_c{+jph^xA9e>s+1gwcrBrc}BF1D~uT8sy04o ze8~7PiFi?cPU4a3z%*l(v6^}DFG&276@oJ}Ej_zmugt80+39JS1N#oh&PwlBDe1k6(bnnOT`Bz0wCDlqZP)Gt!6lOYW0(?ir>VZ;WUk5*n3obNi4RBcl`I z+J_{@#@~Fir~1{f>W6pZQJ-Jg$Sqn~5$f|BPZ%)++E7ZKGHzoj`I^LIZe`YsBr+mPU3I%Ytif8GW2%@eqk8Njyv9uPmMI-Ce!tei+Zh zE7>!Um*pKYOY_#?Ud4Gh_Zn}}hJ*JjbxkQKo?JFCrxb%ho=2pjL4e>b8+dxQ=d-$@ zJtg-Mny1E(Njz1t{UE=$QFtS4e=~k&{M>kihm$=+;%O3pqJYK!({bBo$$J++(Ofa} z1z(-`+W0Msi+_`UivkuI7EQ_@M1`n^5QiFf@J^7UJr~3ZoXX77S z`_;x@jAxC%8h|k=26EGv z`Sl9WoBIuwtuK7t?7v9xi&TYH4OrtX+pL0dMQAU2s={U00<>N0JuTQkyh7K%Qj^lV_VE?;!g0j^&`#N#?1!Zj3U{Y@3badu0oSHW=dn_B8 z?oyaDxhQXZmaB}-AP#ViO^P3zlb9Hl8<*fpjA-c&=^n%Go>MkHDKa8HAtEs$J~k#M zAv!W5Dl#^vPLSGf$4BMGMMczkdzmu5MyayZxBM-m@*)zVbD|>>8Zat4Atoj&AwDuD zA~BH}7#~sBaF11a5%Ib4QHcqW^{ndSwMz4MvkH%OCB{d_M%IndomKG>v57H>Q4vwF zIVL(fCN4I?FRSqFyqv@w1gV=~b-C4~ev6B8ZY zt01=&BkSR5t|_j<;u2S>w+)fzDn-*TKMmceI*kZ)^JciFmAWPrjw_ilaZ1jF8Rb*Q zPt7TqQCc?M6`qOy(X_Cl;sW;H@RZ2~h56y|SNW6C2Sfz9lgEV?l#DMfa+MWKnp~KJ zz0Y17$GdXSU;GyvSe8FA={(aTa7@tzptTqSF9^4KgzGR zMn*+OMI^+<$3(_NCMHBB#6(3mR9zDw>^xUaz3Mv3YnAD$Sp^B^fo@!Br5Or~6}a znM$y1(lpjI&NSXsV47f>Xeu;KG8LJM3HR7bc9I+0G&F5k<~K8WWhNh+ z)xKIh?X$45Ja+g+7Mqm~D|SzoH)v0tP=y6Wm?>>INmptb(=?kk4(}wXrFR6}gnM*W z33~$d3<@}mIS}^a+;F&QvFTonv745d?jfl)No}f3OHKEY)Rv?xx8lmQ!n6`|8KwtK z51Ae&sU1n}NeZntRhp_Wmm!6b^eH27EOtW5$DqU;AwSb0Llm zX}#aH0bw`#huyRD?C|G$ckMH8lZzkpKs3%RJ=get!nDOb31r&LCV?cj;>xrY-EXOZ z6<606`dZu1nqF|vfS9m7E0v^}i+s!XmEEQ{nR54-_L^QYy=;2L^s4DK(>~MdrZ-56 zBPpJw1dOfLQk~)!;L{evxy40B7@@!Nv9rSE8GQG!?+Z8fpD<-8B-$o;;_ci5S z`329WqfEJ9k(BIH?l)}m@(XMc1ngcpC>K9!m3zYU6I1R<(`qc9Nj<8~3Ugy7 z_MRm5y808BW(}t@YyAb>DR0xevu1ZKT+)8X6z#hw`!KPa4G3%W51V#+Me5HRQk&1d zQ~pG|SczRzKCzoEX1iOqW}92K?2e{Ona4BP;-j(u0@)TriY5M1 z{2=y$v!&+DpVvN8mh@_6bG%|9+cJbL_YeEUv7^mR_SDxlMt-4f6Lr{9N48VVGd!}L z?w0NN%aCn_c`lPJnQt@SZob1j(>%*O+kB^aj`=QFOEC05|4iw0?nxx6zx2<`Ncc~EDlFyb3x&P-o z_|3e*{5aFoM)PANO(khsmH7$tCX%L;bmNs1?NjDwSR~t+XmMNz&ZA_v4+tR_5$z81 zZYJ8D=3V9&NxF%on@PH*+PufSmx=aPk}CcMqJ14ge8XRe+M2fO=a1~Mbmr0U&F@b- zjlGxnC_s-MMaX$sL=f-NBy44gox=x;BpwluRe zXQEwB(*0Low3c?9%F^Cnh@T0urSW6Z7Hq26(I@$aMr^g-eoHvQM)-%ViCI1J?&&Fg z7VUrau~VzRXjdy*OSFX@_|)i2ORQV8D=s6~I$63ww3Z}GXG<4LS4*-b#gb}Cv!q)x zNP37Qj4P}psgk5BlHk`@k+hnmH6%S!W9jY@t)-Wxx1|r)!qSh4cCAme>q&Zwq;0H= z`}8%{{sXEV%~Xr#?KSbH)+?U^*DrW*0rf;FQ7&k>C29LEz3M=#(-BUNzYs) z8+~7S$g+;9`C-dSOQogCQf*mfS#4QkdBn1oq~}O_o+OmQc9M3Gw3DP=B%yh;o1{H8 zmKv{`H+o*dmQ75}dwptt`P?h`z%?=d17hC6#EcSo$tULB7kvf4W_g3Dc%S8Ul3pR{ z)hf%ImbXZHjU*iUdxb78v%F(@pQ-U(%OT5qB<&*!k-brE`M~laQ{$T?VUf#KSL5eU z*b#q)eaN+X`lqU1&#&GSXSjQK`t5Et9!1!%{KF=4H!~V9W~pPv)$_t!*wHc9;|2)>KXKC-xw(U19I=*N2leMz7cDMFq`JBmQ`yG?*C5P#({jIpA5iMtH zmRq*RA=^s~EnA0MU68GHgmt8Kly$T<+d9UYW6ibZS@TKyk)#tOog@j92tSc@nxr!% z{Y=s?B%Q6Xj`hlRf^}k`mTO@xVzT|!C)+8O}77lY;R(+#emLlKG{}4 zwpI$%TS*D$`a5QXBwW|E96M6=-gcGsPU~D&qvlvKYVjvYe^puMS?80?k=*EtHJh!A zt!&QNx&+l$4q(;Rx)cLda$o}kRhsMH@|m{6$|ixW4_Y6xK1?!CvOuy}ZLPGjNnlwb zS^gL39h1P;1}1^$EZ;fb@nfGot2!Oeo3k@-hgB(KR+FqDSxd5xWIf3Sl8rUim%J)|&HM6w6DpQXUKPt0-^*8S zeoe*yfQs1~Z|lb-n|&(&>=G~EudVF(cIz?gHzZq0wpCfbvwlyqo#duh?&W*Ziq>DX z^_2A|>uHi5Bs)nCuD1Sc{e_7!gybgw0x|x@scfA83$??{`&KNvuE$HWa*y7}zrT4A z6QivW!t(xMUpoFu@=Jre&DnVJcSFLi8L!s9d~K4gG4k0aGcSf0_+`9&ZEBm&En6D~ zt0CJKmwx%$EH>THTQWe|N0S`m{uzs5EAs>D=IUWy=Wffi^WI!+h|+1Z4AjtBzGpcOSLW6 zmdAwOmE`2BFMQhshw~*5=l6$_d++@22Tkvc*lblg$yOreb^|lAz6clDmaud$Cb?Io?H-cd@m%oyBil0D!#MxQw%m5V?E%{g z+k>`;NJi!FOL9Mw`;$C?w_%A&F$d_Lm zZI843dW_^jm9{5H9#X%aZ1vWY!P)BjeD$PGeL(%V>?+X(o5y|YQr&m4rIhAiBTMZL z_@1umNt3Y5zGcG!`kfr4oiG(=9X1RYOW%%g0B$wn}aOY;eE2gyjHKQ zXtdw%a0UjpTB`e&l`&-~+A?Pz9I+90AUNkbo8eF#!nyNdcV$x(1{Nj18C=FfU-Or}r5c;Q22X z;r*}oKLNY5@OJXa{-Et$=D^+|Ilt0&h~%;L9oS*714HqW&w;sLbncf&C_4hfRr(*f zF}9hORoB{Dkdzn~6&vA-h|G(Q%*oHsO^l3)&P$BS%f;@y{P={ZsF+CX&q>Jjoj+*% z#P%7p`BRd|RoXr$dHjW5hQ34|wSCRL@D<4gm9}FfPhelT@LTPB8+Ns>u^qSlVEfT_ z!gkVjisXqT7m_@QTA1Bp5|NLWX!jrN0stD~AoXSvpHUm4+gdG(S zHld7p^~zJb_~j|vp2Ihx3{pjw70UiwzsjjwWH&B6Uk_n-a;~( zr4=L-$+wYwJIQyf;|{P+q&>nj@?(#|@nF5(%lYM*=Z1aeqx%SBF1iuN|A4;#k9XSm zN;lb_iX&a^DJ0LTw5O3gn`PrAPyF+JySp8|#A~R0E((3-Efb6u5vl9)C z$KN^j(b^Fh`zZSucQ4GI?e2vwKrhUm%lfbj{ra$)fC1U+OwTr7w5YK8H_X#=^!1p+ zyodDlaknX4S<`W#>m*;ZGvC$liGB9*_K8fO1@;LfqldGk%3jC>if+!|5NN3#7e}nK zm)XnhlkHRNQ|;62)9o|tQ2V_kqfGB3c^S#eNxq-t2S{E)@`FBsR@lk53qrl4R-ouN ztwC#=4e&g2O`)Cv9(G1!MsZ<2I?oL`tf{3rCB3lA&UY}deUW_$Qz%OI;YvFSb>)Ag z&}H@&Orgu|_uElil_Xb@TwQH{(Ebop=qi%2`t52@P})~Rb!+@pH>YUtj3ZcB^=P4X z>FE)Z+qe~q$qjo0lN~0{&K5o2UO+2EGo%6{Z*xV*{dptP zXdGywu5)M|I)~n2a2OpXhuL9qpuvjaoR>&`ndDbUewAeCY#+(5ll+EPRgPd!tJ2Y| zR#k7FYgHb)CaS+BDo2C^*RxeRB1wL$(t%lq%UdYts~ho-ju4e2!I9|bK=OW)F*ba# z+R@38#6*QY{kvCRR1PeZaWt?{ra(F8zCq7+eRj)~^c|aS=w84?<>-#Enf{{M8g|p( zyphR0H~#*>w&-SKifTpW=;i3^7L^0LH!)H39url6CaU-SMa7SDcW@np(ZThe6YKe4 zcwo=fjuDQLj!}-$j%<<-ll&3MACvqE$)B=baD1Kaq5Fg>*VGViAF$3TF}}m@*uhR= z?s2+ob&J|>4s?~_Jec!-_jN$q)P6oF^ZbzBPkdoxE+cF&_c2HA2l>8cul<_8rM@aP z&VkE5svP4T1ti1Oe^KR_=)l0oQIhK)5a_tUJ2G@6Tm7JKWQeuc*g**$&L7pj*o70} z_0HUP_s6@G;b@t1*0@WGbRWx7%0>Z_ViH=qit>FQ5duo zj@xqF?7+NKox3<3Nx_jqBt;M@^rWzo!cK~&^+o|5_j$AJn{0KIFWWrF zBqzs4B_>CuC5EP@L_~zfL?@(#CZ?oCgeIgV#wDkxCnl$*rW~j}e%Rr?oJ9W4?@95I z2~qJG>4~8j0LOvLIA%FCIW;CCG&v?ZHZ3hVAvz^Cw(gTEy*3^9ds0F|Od8Jgi4Dae zKd>n-Dls%ME+q;FD&pWOj3>sWB-gWPjrU1E`aLNkJuW&eIVCwXJuxCJG$t}5Dl{cB z6^TuZNR5b0j7?38N~~*>_vRD%q~DWbqm$!PqY|P+DU{geVC_ab}O;3)Ejl(HJ z5wR)tQunymrl0(t6cv$@5)+vo6Pg&E5DA-*#FPY_Q;nqI7^CEr$mqm`x;8!OebO1f zC#9yx#YaY@B!;HP#wLcwWF$x7nJ54Z$Ht{arp2aZq(}KG;x-4nNX79q$-h)O&~!V? zMmQ}OJU!3jR=2~?I(Cr!YsL0=I8~!?$BT`^9J?KR0=95*j+Y&;;7DH2>B0js69qvO zl#~y1pP|(cCw7tiR|O}N{2R%?`y_jD6`Hap#m=L`HDQ@EIhIR9I|Jpah?No}5gN{WDr2v5EqVfp$6 zDFPeH*KZuqy*uj^jYz@!W!+`z>|E9zm%EcfIG0f;9Q#uO&B!31jXybX(Q&2YG%2J? z2V9B!Y{5&_i{F_2zmr1Ifc?%uXCt5ejY)BxpZ%AmZlC>5k=cK}&wi(Z*&kSIzw>&h z681ac`;?VV6)9AgQLmjk*zbg|R5xV5)oJtDuOWrj&;HBuDd+5WGW&Js>~8}5`8IXz zZ|-b)u8ufck;34uBhI$W#&)DIHe_R@GsISEf^pH(`GNYUDt0XJ}qJRyCD{yHZ+ zr=uU>oZ_77oJNYaq(H&9uXfIG-srrE6rrSuBt;DCuCud;2TU$52LHLmJw!1x4=Da#N;zzUcm5%Z46YKRk=Tmp!*R?_e2s zJ1N2{oij-hUJ+3@L!5IsmGds=T;`O^3nsbP;ij(-=rW=ODc}Nep1yOwbAiVTyQ-Y? zIp2+f&byt9*>e|>BC684gcQ;BpUbHNUI^IkTvjnZTiqcdB0V`dCOJMdHZC2_gc!UC zlT+fOLNhXAVv{q{lOtmjQ?k!H{4hJGbW&W5FBSJYD=|;#e89QF`JnS5=flpGq=+R& z94X>SkwA(>Qgm43ta4U6S2nUv5;$pUCu-k~orN%UzKlpNb zdTLZ`dUP7vOVP;OWHc)h64T;CqZ80xj7dq2NQ;fX;Fte?$?SL6oX4GWS&dmA^-#$5 ztj4%M-0b=A)m8(~z%zJ1-0BVaSj!pZ=RSPe^Wo#SR>~+%Z^-97A8sgrqE+*AA8z-2 zh^m=803Z75#V+UToUz9FqI0)%k8`i{CFje|SDddpUvuswMG7fWNs&ehxU>vXbRz{^ z47^znQuM@TM<;k-j?5z82wb}0vgFUNw8v2uW=~lKn!tYyH#E0Wl*#f7m$&)7GKwHn- zCCfF=eK7tY_hGa{BjZwIBch{n)Dzt43J%~FRR;$KHwxxSF^Uv;Ke^7GARjCRUx%aB zgXLgFFdAT^NsG1ZM+!9h-(P99E*9Hf#Zj`{rhiK`cRztV!@QlvXu-R|N6Q*bzQ zma8Pky~GIa@ZzC8ak$sf^bheWF4z!^!>;{oR>TF{g6$Oe11a)IkzWy!$Az>ACQ)3bF*?ZZ7wst$OTRAI4_*Lv@|Dy(BFM{6K=a=EJvZ+=BZ zqhVQ-vFO2t`&JGZj7pQm#$JIFUDM0zERCu(SMZhA3ZX*AD=-7gAr3l&LzGRLHfxUG zvkGRo5YO0*!klqs_?@*lnssgIncvaK>I$(!LcI*b1u})+dDB6e>>(+5f$VS9x=q`L zR$O@_s%q1&cEMGv)}dh|(Gxm%OJP-LJ3JsF61uOGuzXLFtD@R9`1u9aLXGC~xrtZ{ zbt88tcNaI0Tfi;j9_Ak5HgQ|Ht=u;58SXjmMQ$HfJRIhZaNlu1a3{D^SQ(`WuwzYB z`+#uws;C|Ty#odWj0>3HN&dMNQPG~?eLn-RlET-f3vL$N7B6*F{}#b5gBu684sPQX z!B|p^gAPbBo)iUZ#0+6iaACdC9&Ol1GSiJK5d(~H+)&q}&W1VSeh zu7a&8yok(Lpse!g%&A-=m=n&4CtMa1ZV#rZkYLvqSPA`?19 zCm?TRU;*q1fc78~bO2pIe=rz~1fw}lhtG9gL2ob!i~-|7At(YRU^18rW`LVOHFyTR z1l|K5fWzQp@G1Bld;yMvufbXH8~6kK#c}!o&)=m@evEH-It#dkwJHFdf_o7J$3KVsH;w3YLNU!3yvYSP81Yli+25 z^ca4?v=8hwssZ9QCW3BYAV9oE#A`&nM#O7Gyhg-}8(}yj;x!^(5uXw9 z84;fm@fi`HaTQntu=dYb10Dq%!Q*5wHg!Z_UUXa~lu`5XPJe z(gEx=BcIGY0rJW`6buI=0m|KsayBEM&36LWfHSQ)^C#d8Kp9y$5C~8%79$7-VIUSH zfeerh#sidt1^Hnq2X}!*0BN+W2V1~auniy%%X0v>TV4XMfY-q5;7xE8{K|1w9Y9>x zj-V4jeAX_YJLnA%rxkf^od#wA*PNCc_5jwN6zSO)F~ zC{M@J0O@wT0Cs{G0rCJNSe)Y{fVdrq+kvYn2SI0+E96ZSi=13>`w(WwP` z&;&FE%|Hv#5=4VIfV4W1hv>y~PUN4n7w8N61Jq&XU@#Q80P@s10Zam@XU-eIEdXhA z-VSDgI|0hqxe%-c?*Q2DguPDK>x8{%X>m^En-lpK90+(I0@xpnx*B{vP=XN910er` z5l1lcD|j`)bAxNZ2Jjeo0wBMFkypWQgZ}VPXkk?I7Pn)7{HeClcfh_>fXu1tN1CYk1djNFN6uM{% zT{L|id;xypxMmvA9>D%)oj_**+nd4mX0W{(>}-L!Ti`h@kXJ1ZfOo)q-~(_NpiEkF zzyX3m698LV9sx(e*8ugeCGxf<%Ci;9s}<7FDgs1-7;p@n0jQI$koT>S_pNz=d~YoS ze5W-cX^pV0VPEU+0Oi~ob+2_FFbE6*!@vkI3fu%1fd|2pU@t%#T7L*&S8LeS`Wx^a zI1UhZ8>FL+0zeaOf`AH`K~sS8XcG;PPi+uq8^qZLW!YvNxE0(1RsfVio9DsD0C~_B z>1d1k+13K^oVIvQTco9JYtRQP&iL)(rZ2@C||0RcR>?NeYkKv}j$S+?B= z-T+8bTjX!spE#}^%CjBvww;0F!X%&v4uEnAL%D=C11&%pK>mjz|HEPc>Qh((=nL`y z@-FN?fI1bn9qa;#I}CA$A?`5LqcG%Q7|JsoX$w~ZH9%bp-w!?kp8=#l{7di^I0j&6 zIO<*aui$s^C+A*{9ubKDBA+5e06Qa)2NB5Mh!TLjjd&PTf{g(A5b-p479gJ^U|+<` z;8lP;i9nu2AWtwd#6_TdBVku$8gPLka04gPsZ*a3sH)F<$}Va!$Oidf61W8*zNp*49bgu?6Wj&n zfd$}hZ~&a;xahV3^(z|oMI+y1P$y$jKu<6fi~ys+7?2APPYj+Nvk=?^mV#vf>54)A z#UTG;kiHn?Tg*oQc@rA|8UX>IzQig3;)zAwk5vKGr&!ddSk$Lj69@wlAPS(~#KwUH z&;cZYt{@d;fJ^{eW0423NMGzjU>(>7P(HC|I4%x#CoUWe04R?**dI3&%m&DpID9V- z`4U$J)`Q2vCa?u;1uueE!9MT?z;ojcf%gH*EDq_6`vjoe;!sZUNLM`45g!6V0n!kU zG{hqf@km2_GJyT@>7W}x8sd@9@yOfwVt~36kGc~NeZ=1i2;2_t2FT}l-3>VWd?@I5%maUD@FJ32uV&=sy0@6TVFcORhr2uuTBl4-^4Dd2|8+-+j51j(RbpUDTWC3^4mxMe_QUiP^33esHuB7Gw-%Gj?5SRs4fPLV7@FO?{&VaMvckma-b%q_C z1%PLEhCQ8?0O{@A8ngqU0GjC>2~dAKBcD4XpF1P%osrL-k@n6=d*=+02W|sv0MgqT z>FlBf2-_tGQ~;E3m*)WTxC_E`LAtuU4&DWyfX~5~;A`+LKpAxT0h|DTa$MI&Km-Z^ zTf4&6u6lrc?3xG$1K81Z0+<9!0O~#{tSU8RMSyyd@(y?pdhV)M(HZ^Z>oUFo3vIQI4tkpa390Qjs62 z$m7&00C}2v7gz#nz++%9K%Gzh2B0icQ4dp54^z*8vw+$47ssW+jx-x^f+nCjXbE6f z8th3+03AVRfP6?x1^qx47z~DjJm3P*K^nA|hH^@q4p3HUivY?fZ7Em=s=?!6GuR5Y zaa?);Py#j30VBu;DBtuI;0dq=JOz;V>Cb~5;6;FRro%s_LvQIQ>+~-G(w%+`pp4Uz z_H?8@9cfQL1AYN0^YlLe(w|`mNM8ox%OJ2CyarHq-C$EU)X8ori*877x4{7A(QO1k zS#+BON&wQ`4e9QNbaz9#yWI%x1oOe&Uj_QuYy#SYa1aGzK?3LqkcOU_pcm*127o~TY3ex}Yz1F(TrU;CcY5LPy~Y8= z*Q*Rn0f?{H9Iyl|1jnFJ!S>!Lv)%%bK@d;_q@}k3*g-RZIC>**d&8dI zg#dB%#&dhG1F)s{Q(zlFJ@5SzK>qc91)xs$ei!@%KeOiNd zAPk^v`^11afVlghZ2NQvJpmrjr$5L7V*v8Gj|(9EeNcz{+zIA_`CuVHS@(Ga)PP69 zM({M)3t(fPec%m_>kD7f7xDKE1rZ<`+zvJalw03J0A<(rBk(CW0*-=X;5+aGI0;UJ zUpTHG($r52P}cp7zzk3?`XQcvDEoe>!~I%O@C;30Q5DW3+M%q#{&j~VPGUcUJn=xVB>&7Pz3G+h;zU<;1q|=!9WL)=B!}Q z9^iRdDWESH2!?>+ARFX>e1PX>O$O5dfd$|J0N;~U3047=V;0IWYXf)&AkA6Z0d$)M z-DbT6UIqKWXB>y9xPcCU_y>*x)4^?EA-D&?_JQ|g`+4E5c2A<)#L5%=(GbkP;fi#c-kQsx9f)QXeK>iIvT^%$YOaQQF5aJ*7 zAXo{i!5Xj*JPIBIDBnS_VGwK>1RDk&1c$%};3Eue>wyD=fM%cthyt-70dxTApd081 zMu9N^whV?XgP#K^zrl!OFya`DIEDlP*ggc|h9Jxk*gIq*C;?>vHzA+Pz!)>85#^wKZb^ZNDvL;0PG$LyN7lH z$hV=>z`fvEfaecA0g&%Q&vM+bK%f9hfaeaw_l6~bt{@el9EN3rUI6uP*Z_dE3@ZXR zfO3Ge3`1EAyAj+0=7I%a5x55|1t^`kyAApOJM1*jLpjsw^@ z4Cx_IO^^2-#Kms(la6ipgc#k1Z@EF zX+$_c*^Y<>$fFS*L1&N*hJq0QOaV*4CIGuf{DLVG zl*z~xfUqNx_K}YRq;KSR0O=UX!u$sQ;J8sDPysDKdPbRn4LAVGbrkF!6$xTMJV05F z>H_fmQP9UI*fk1yJqq!RS_U2f4}nUs79fvDZ3It%&EPPmZX0O~~c`vA6Qe*(S$Ux9A`;>bSBabu8= zWAMx|c;*;9a}4rxj2<)rDE~1L0OdUfX&%!Nbp3xV-F1|g_0~7w`$wuEB^}Z|gfys> zq#!6r*8l@Umw+;a2nVE7VgPCBkdST#=@5|aZls&{;(gy|t?PN#I%j5o_x|jC&-v$B zM`Rf8&G3rU#{Gsz(HlL4_h%r38OBIt8gBM*nTE?Wd?l+`!&Y{(hy5HvF5z+smrJ-@ z!mnfRO+UabH`QxX^EXXPPQu8Gew*sEX(g&qjjyrSrrvJqrkdJkQ*Sqmi`!^c4ts3o zTW{8s2qJN}&D>(MPJBmqdeDopjAtT~kb5(`ZZ?zOFmJO3EM_TYZf3S-cY>g~zMB`M z4l--*XPfWkRuDv(FCshUi10HJMUZ_&8NTEz%o9NlVwfcz>=&#jyqM6DJX5lVdtw&$2-UdPI z7{um1?78)aWF#-%Z|(io-fvxwinzbl?yt3bYu%70G$n$Tw4x2en8Tmk2!b~1w@FV9 zN>iRj`299+wapNQGYY-8(R&-cw~=uhJ-3;MyJ{ojHtVqSHe1-nKK|trS9$l|Eo9y{ zgsj`jy6p#iNOIgp+qCGZZ6>mi2Yt1bb6fMZjieLb(H%Lrm2=wx{LEm6GMtetW;b_& zpj{k3!dvaU)y`Y(ywy&&?fflmC)ajgP=U%+!A{%Bqn$k4HKzsk+pZ%rYUg`yr;m0& zGKg`=r=9(_n~pndH=ji;VHqosRl6M=<}%l~$-6%9^N=Sz=T#82|B!?v#tiL~kpgqH zPeVG)(*7%Yvw#yp&_T`}3egh1b?~ouSj`^Jaslsl@K%SHLD11oI{JIkQT>i`>X?$O zl*Jx8RzfZvtMLurQU|-~*obiC)X{q#TO+HEgBgZ>bR2^|I!<5`zcLLub^HxC)o~%R z>i9d$*@qrGeSn!e*;6O?(5XHBQLB@m@3fPXLC{%No!w67Jm|BtK0E8PvpzfPv$H-s z>$9^yJL|KvK0E8Pvz>PCLN|V(C$j831pRl`e`o!7QNK%S+)o#ocX6v-?7WLTchP$n zy>zkX?{ZU&5`0c+X7ldfa|7S4Vr>v~HCI=2b+yZ`YIaq#tGv5bNAF$r-c|2i{a)8i zY~fGbPd7EYeTARxR)bpTx7!5PupYnDZ7YBAH@n%#LEK-re{n0_PIHcnTnU2iad@Bj zBqRy$qPv^u?&i9GjBlsAth;9?7c%djpMn&o4U_Q3_kRC-xAVPw_{b??lEd0W{h$(QTmJ; zjSQk@v4}s|gk41GIcgtv5oH%qN6~+jzN7B*JP3NmARY;jPtT;Jz`gX;b5FhYEJPV9 zP?@TH!?)C-9?fV=2lU&sD>ClcgMJKU1p4jy3loTDCJR}~YSyt4ci3|qdpN=w&U1;Y z+~5|EcpU^*8T5*Y+A#o$d+EQ|ZSL`a$GDwd zFL@ILz1>jnSeU2xMfTh zKdJpwK?+lhPZ^He{b>r*n2EdmN$)?s4T63#h)oB2V&;B*>5uyTash_#_}PNtw?o*07#U__+aoZh)T~;O7STxdG-J;7$g#qa$5{ zVBq^CCnah47WIjk1gGy1Ba(qQ?>d}D4*xjIJM9`V;m|;*ae&T=p zjJp^#hh6;3DbAv|LHZh`uR*uC!z*MsScZc?LO+93k(SJ4BPU_xr4H&3md{|h40cC@ zWii-0gUvtqHtG$DK|JI=Bpn%0Z%7Vuk%xSgqzYym;x31@q&0Ro#O{XJ-H>klKu`KG zmhnu)Z4Q~jG~CXR*_eIEd=_GdLw0i`2!?)$H;2|lZbRMN&<)6E=(8Xg79tjLd7mVt z;bStAh3w=cH^umz(tLp(4>QZKYJAOixb0!y8K$pc?rNCahUsaT8yL2lb!=oa_A)#* zpHhx*h#-Th44fBn#?-8;ZQ2>7rMwoSkzDC&Bh%(fr0gY%vQ}jAQuOr&f9{U?%eE1{B*^#3$!^i`;p^=Yy_cJef9R#D|kPtf=uDM%6YI!dpj^g7CJM!Bz1{gL0OaZF?~avbGuM#*xN{ft`0TI4rs9|t*%o=2VG zJeQE;C^?Q!jQXR^KH40kqZp2NMn^LT^+vn1(cAflb6n&K?`qh^=)3&Kn;;kyA|_@Y z^B(a?Kq9i@Hpa+%%#X}qBl;bq&oRe2#aZ+@MxSGD;Egfz92*-o$ErD2&9V9)`w{j( zHWPL}wh%=rK`CT7)|+E1P>W`Kk6Fj|rZ4>&$Y6#sk}=47teYRZn58UZ1#%uMm$7mg zyNRv*iHyd|=9ds={iPyp8O%KbYY5OH_^V&=+F6*>ex$kE%Y0$-)Q|t+fDS3 z%*5?P%PU$R(d)36XnTqNiya)r?MGihe$n@Mz++zVHV7ugAU1Y0DL?8@>W{f6MY9O+ zOj^Ts)SKj6nsgm?COyMWCizAuhp^|#YE4c`3d}v(+>^~c+1!(}kPWj=HrM3uk?Z7T z9OgXwovi-kTii#6lb_(NDSDk^&r_0-k~Dlw2J%pXQk11UvYb*Cc}{TyQ)D=$J^dKK zAl%=S5!l<5Uzoroeq}m;um%}V*?@0z%2wn&Mb1-pvIqA%iV;&b#rwG3ZihN%_#mU=X#2@yo%`s6XrmjVQQ}s7he^Y&* zQ}?o;gPh|c_mJt-=e*)=5KN21`@|<9iIL|t^`{NT?N6Jl)p7UJYf%@wn%;>nbfr5z=tUp;(jU8= z{xh@rlWRdR!<#emP!o4HL;o}Ea>hTL!Y*c9;1aia%rjo{CJ1JRh)HackOF&~nT|}D zWo8b1%QGut7c;#xQ*SeWq#t^kIhbL%v6;W(re-c?C97G-M(k_m-|S`|vYn})S?bTK zf*Y9C6gkZD&MdRf8jgCiX7M}bo3)1ZY+)PQQFqqAn01!@%z7OJq6%i4Z??V9meuU| z*!yg=&Q3;3(olfH6s0(yQj#*1qayY<+x}+zTRZz}+GFO~dYUco*-wJtx3u`#-`X;S z`Ru@)zxkQpj&h9i+~78M`Hx4ut09ly^gkyq`kkZSIr^QG0=t=GH*?bS8BJ(MXJj@< zW^?Rjj=P!j6a5*(IA)@sIg41za@_cw4Qxh^bL?l%ogkR2{@l`-d2Vf5=hVXt^P-u9e&^|To_^=) zciu|8G0)$ld9s{$oKu|T0(L*o-sgXS+~&(|elp}XUvBfwH9sT%7R@h=9nUX=9nY^o z3%byaALxlJ=l5keBbmYsW-}N4&6mOaWvoDs^AB*98<=taJs$8F`Mb6?2qrU+ zh1kVnH5R*-#j9Dz-|S{D2lxlGFFwWz?gqh<50Up0^DJq_K*ll=^_NU#7W!SH-zDB! zvWD%r$0d8%&mj)u8((4{OYR}ZB~N*Q9G8ZW<-OL;0$g=&1mx7h2_ z`gEo%cD&RLERCW!ZgpvY^uKfvLvg!HMvUx1V-^^tzkl(WPY-BV0 zIfdMoUEy6XxA5&Od(1Ol;u~L{jk@%pALd&=liyf^y35sDeh9a{T%F~2`Hx4~$8!5v zuGR|oyu$uhBqRxTvLXekNsC!md`)}2v%(B3WVON_tvJVJd@n0*BHI=EU7_C<-dJhR zD-$Efm1?e3b7eZ@xiSoUUs;kel%q0oTv-iou53a(e&T=p%n*h%3OBlPJkj{3R!(Cj zt67U2R?2tf7XD;AzK4~&*^7);%H|Il{E-)L{?V05Y~l>Bf?!oDGLaQ`uqqb?akHyR zQI_(!gH>Nr6*H`AKse25Nn1M5neQ;eDz~sof2;JiYA1U*h}$>Y#3KRfuCc2% zVYu@(6{w8))>NkkwQ!4T%(|vAO^Ki~GBw>~GB|#xRZv*x{O0n0bw! z)}}$WYg^!F*V^ma!#oIrb#8T?IoJ7_bsv*~oD`ri#rTwxl;$h+x=yd_^t!GQ;n>SM z_16vJHhnG0a3C9Gwc#{3xXXV$;yJH) z8w4A@vC*D4ra{e(YHn0>V|L`Zu?Y6Qu@Y6NMor|nQH~qExv@3fvD1zAv~eusiDnAZ zn29_#%46d~mLP|Xa@Z(`jdIwypF_xZ<1tPkn~i5V&qegSNuQg_62TzU+GH=A%(poa zdC>Rf;(SI)Dq>fg^}e|_^=L?A+`;DdbfFtR(3`&WX8`)%tl!Pv*{rY4r#Xk7Hp_SO zZSL^^8E;8Pbvn_5fkZO}Ic!;udRxrD5A>XlpslzO^!D-D<9_lh}Yaw>}AiZ83Qd^|vM9Ba)K}Z*9v# zVT$o7B`Jfu*e26$jc7&-S|Q7A9g*j@uE=oPD9pWW9`?V@&bBRMC2n=wIySO}KRM1R zWU@`p+b(dKYsh=sE$(t3ng5xPywt#(e@h4f)$A_dQJ(9FVqaAj% zqb+9K(V4D%PZYiBi`jO_aK|Lv?2f6-U^a8G#~t>#V=+tFi=F(P5O4lni=IqF|9{)# z-!Fn-XH4SoKJiFOI_zg>X0nk3Gwd|OPTA~qb34tj^9w3ag=&0*?|El;{LR@pow+PP zUps$iHS5^O7Pg_!UEbVPl8SswByISPzNoirJhL$Cu7xaN1*=$ty1RB^_FX5ipI!E| z%N^`;2fNunJ1j*l64n{jte%(vT)b{C*9#W3q`eeEtoIU3NIaO`h)1bW@A z*WK-Lqr2Vc?rzxO?jGoS_aEqK_sbyI<2Lq`$ItF@Q+v#?=O6CzjCVitCJ2lX?0ugk zBqJqh_?QgjL9cuDx>v7zKc_VIvRD1R?rQG<#t@CW*=zrMXEL8fxRt%jS;^HP*cX@l z6vuA&)uSQqbYB~GFbcz6G1)ZVZ5{*#>HJl@#vjs4!(e}@-AaKKy#5|Egr zq(F`bGLi-L59Fi>m8nf{hA2`Z}nugZes{n@U77l*Jt4X%HOpvxj7Js0IIH z1`F^rhkj={>-men+08x<@(<_G>mj`!((562c<2F-QU9OR6r~(hsKz&ZO9L9yln7cP zuYa~;-~ZUbKW_SPJmh~^?uWCW-r*8dq$<^^K^@%OVK;YJ-NWsP;%A01oKg6DaCkh? z%wawYS%RG$_DvmL#Tv|d_;wH+d7rHKK90!hNC$e-m;MZ7C?gn+H;&lzk;TaIh?+;# zJhB#f9&vj|?ET0|+};tlcf{=-k>e3L9(niX%OE)V9(H=vo{oC|Xby6dmrp2!JdVoa z=;xG14oB-Fhof>h8jjmPD&M26X@~xgcIG>}F@|O6>FCoS_%{t@@U#EQ?BAvA=N6B6 z_cJee6$Hm(lYqpy$73l-je9)yF&W510Se>q%`v?m)9W#L9xG2X2B42)6PSc=<=9MS zGZ%Y0W+%tCvzG(>gPxC_#w{LmH^;6Z$K#18i`kEx<9H8-;l_?n%8u*uXAicj6F7IDvjo==X#- zPTb`sYMxZ{q?#w=;^s~!CnZ_Qg&a@jr!YnF=E={fLS5R^341-+9W$To#gFu30E2L= zC#N$DIh>U5N%@{!gk7I>3n%q|auqT;H5Zc`?Ij_i(xt<*3M)RHp{Dkmc#FOkg(pJFUOd`a8Xn)vU$- zPVZ(PCz0vt%h=oLoBYQkp7MfML2yQ%XVgFQ13xi>8F=T+V$6F+y)y^#eV%bwXRctz zGk3Vh1JpemlSHU_)|_X3pJ&Z@_7e(GloGi4vu^&Zn?Gw;XB*InCNw32NLtgD4%p?{ zE{tRe|KQDYDJe-a^ncDS&uwG}c5!Ym`#HvWE^(C`+~zL#F~hmHL2y16aruCRBq13o zFvEFSo!8%ay`67IN4oMoZtQ$dhA^B-$nv}_&(CE6?&1Y3enu9T^nPh16PbZLF3n*+ z3o*kbSzOx8Hny{yeVFBvU0=Ev1efjNvi>gX?Xuo3>+Q0>F6--ZA&O9*8q}j9O=yOF zUAC{w`o7$SuE_H80q*lW2(H8-6=}&z0o1!v3E$zB`ZOY(7DUnpb+6d_l|iU^WjeDk z;}tVrS;SJ7Bd;rKSdZDR9Ofv;kmHrpoZ|wQxQabqxfujkKN* zkJk$0d$?AHa#Wx?b^%m4=VWfN$lN8@nZwTRCyN zw?3sLc6ZC(ZdIl#{vO=w%n0;%YbL)TyIcCYwVXd#!+JJiH@8z#oU&A>8SeIW2YRC3 z?a`R`wtKy8*4y)0!tbm=-P?chH}3WJ8SLiv9q#jxC%C`cuY%x?S?|Or0g3sD}n)cVm(WHSelzmF!SB= ze2EP2dh_l#xQn~(>BM(*rw8)5I|x199nL5YV&1#@y6fieUO-QG^>kNHcc0?!@0$Cb zx$nip-1idG1T)_A*1ZmR?_O{E(w~70W+?9N-em0Ip1Zr}?(WIuo_o5ti@hA+AC7X2 zTe!3Pv3U<~-}m-?Z{JUfZ|{B<+}HhFtY#fDd9azS{E2rT`pzC^!>%8;#vUK~J{~S%87nd0L%;WMCwth> zA&&4b$2rNndNO!;j|V)(jvvb5;oBg1l!;PQr6zKCB!@?Gc+{Mh=;2X2Ixqn{d~}nC zK_J@T@kb;lJz=Q#*u6e>qmRF(4sv?jgr-EG?&EIs<7eFIV|V&kc8`C-JCCE8hZ!C} z;yJH)8w5{e^dv4H5TB1JL>a!uEKkhx#4JzD^2FOun&I!oldg292R-S7JATri0qEz+ zLS*~IoKF+r-k!?nsVts$LGMq0APT?tbQmKT#aPB+hNotDItTThF2Vkuu3{~A|8x_l zcoPKA;*kh>K9lFOG^8T~_Vnx%%=pZV&ni)cYJ5Xo8qgRSKeM}MdU~e*vvXX>vYx+( zcb+FDBkDabN;xWH#^?6-{9EMrydLU4Z^L)U?RgJ+@;_wt-0q%x>v=R&n8r-p?DM&- z#LUmvV&>;&eW8aJ@%fO1q$M-%{zXp0C`b{C^BE;E^NX*r;}b+SH>VZsw(%c^N?;%=z+H*06&U+~Ro< zyoy0$J|a2k@y4rCsQF5*S8Ba-f3G4@@6}Y~^GZIi{$LeqzuL}D_OPEr9Oepl`Hx3D z#oMpF{W>m5@a}8(^4jdL<@wsYughS+uPb8S*XDg~-q+@Rt+&_aecgukbmBX@(}Q08 zNI&fRwVq!uV=w-`yuQQRAb9g3$w@&fGU5F+J<@V(z#1c@TtxMC9jlN>Yk4RO1`Ir4IFJNC&uGZ5|*)&wQOKBTiMS+4)bpi3Vp%X)Swo1S-}?mW;grrJE3Eo;56sB5QJjH zAS)FJr#0>9NN4mLqbGWfF@(|l!UXgjV+OOBgWh8-WIOtdafl=6GlutKoaZ9EB5z8F0>>$=MR>=7_7OxaNo}$GABO zBOe8*OjYz7*ZswHe{uC4SKo2<9k(fV7dMhNxU0B5u*0~0u*3I4Bp?wVVejuvU^eD> z&m8Y93PSID_x<90N=eEDp?G!}&%5!yr4IEu#dXXU&s_2D2ch_~i|@Voed&+f5-evk zM>vLD5}e^Ym$-_I65Qq<4}wrax0&z*;-lw;dQPb4gnCYx5}75GS;F*WM4t&8Va|m1 zlF;{A05Bo|y1hkC;%Bn3y+7GR&GJ4H?Kp zR@6;W1UpJnfhttv8*1a7Bn^;95;G@p2T4XS8Z#y_W0Fby%5>zFWDfS9WD)vG@)tYU z$!_*>kblr~5F_oO#JBFE(a<7Wml6njiQiZLu@KM#UX3U8(;Mq~P+ z{}fv|!&Po@o4Y&>LMa2>SxWt<)PG8uq>N80J|-hs$VnJ>m+}+Lkg_v<=+8j(mQr6S zM>Cdj%w`#DSkES8nbJL_bQdZ0o$?Te@pnB{UaC`<7RVx%EK-?2mAa|aOEs63tYriK zrlk4{cbaM!>ZY=zRM&V{^KB4HZAYoinA(h~G$Sbwor?&glW=mawLinyy%Q3ZE zPF)f=nz}6Zn7SgBX~_WQ4@d6i5GQ+)$cd_?79*;y0GC8vUn{Nt%tAA&p$p z$Rmv`()`N_&T@gv*k4+^N}G*>=r67Q(&{hm7gWHFrTvn6=r3)1I`JLdaZ_pgVrOXw zG6?%gdnpK|i-r45CyR7>aJT8ql1|-p>ZNN)YdX-GuJpiu()B^zbR(I9n(00nC=puF~D$7I(PMLmu;#7uaRGH$mv*G?bt*-u!qrySW>L((6CH zJ567i8q~rr($}Xs?a+UEnWXQ68Pdxoy*$#(BK=TCFqZK|GnqA<;yU_EufO#AOaBbL zrGJe(%a8#5WynNUa*!K$<-dDBl)=t2e9Gt8Plk!CWgD`{aFHvRCBw@glu^Bm?lj}a zWF{Lq$&3ADEQq=p%kd3rW^9c)Gj_y`8N2ZVJ+Y^ZKk+}zmeH;%r3f<3)ED_@ve!&{&m@D)?-38ZXHG;aG9i!5^2jWY%=*u)|IGT& zT$=J!q6%MAliJip|C!~KS#Oyaps&oo^9SxL^Ex)Lhl8BqGHxpKP3$Z4BivDDyUJ`= zne~}PFImixMJ`$7k!3Vy$ubx9vus4YEQdMGId1bG>Sa+ci<`{yCJ1E>5tAgOrw~Oc zfn8@cW7aRIfZNPkmFmV1QGmjfqzdZgXo{J0m^X)cbM&AO=FHI_b#wf}4CXMO zMJ!_l-pR3szd6DUZez|I4=`hnXT0Q15Xu=M7I86KPJQLfNM^F)CUWK`5Bbn@PP@!m zgqn0=Jl@RdCUV6f8|8^W-?@e$gIsozYYdZdSGne*|6KadwS?cX$6VXk&QA7mki#5B z@41uV`^lY?F!YsMU%89(8Ko#oIodOgE$rf7WRhDZxn&Wi-!S#UQexh)T$nX1KZPlV zn+;Pp%#On9(ui=H(+am5=AE#P*j1RFhfQY|b`)mDFf)cNWjTMahV^X1Y+?EeJI+bu z77Qx=sRy2WRSNam8n4k8l(Tb`p?@E zGvqZx-tXzfkM!ebhA^Cwm?7^0^q2PnddqtaS?0Zm?@1&K$|ui!>gTineCEivgA;fs-xVGNq5SIQe-Gbc{*Q5=`Lm&3{=C>%{({(9 zelzF)2D9aFO*=Z$g>L*nPwXnc`^^78qM5=}>@NRIeq$aBFnj)`_|EdLz)j}A7lc0f z2ycE;54n9}=bvmtKA*e^LIvVtUj;rSAt}j77W7|0{{?(s1@hp|3Y4NO<@pjjF7P!q z(0hR~Ok)o7(N_U|6`cXAZ>STJFz&O^ zr%vh)Ba6Z^C~OafxAQml zRrmy_ImboxUs(Tz^5+Rp|2vHkg0zLMyQDI zsK`KuGLdP>x5#hI!@m48FhWKCU=8cI6oiTW!!8jH(Sd6mwLhLAXM7T zmX=Lv*_4)lY5AA_5E+-QOiPBLcIj>GLG99Rq_nI`t5Zg%WfJibaxEj*GIA}Gl^oX7CS=p48OmoaNLgSBy_7Ng2MN9lpPEo7stdm%EO)%RLH0X3xBQoUh1trRrTjvcu#8pcyZi<=;jYW;z5K%I7>Oq^B`2w-YR}Z1AbrtgBZ#PMq@`6^;+>y zcC!z?R#cQOE%JQfzkILq#EdR=8uI&CQx1bem=|E??qL<21^v3;F zHe2O!Ou&vRyT8irud?s8@@(cZAA763liNY)OY?nMfV%WzGV9R)mwNuv_xt5d?r@(6 zL8yvet7O8hRBH@}5UM%=b5xzjdfa2xt^9@WuIg^~VeeJ#y{ew7 z>Z$52%vtpw=B)azzo)pZs;_txguV)}pRdZ`{jYvzF^7;(wS>r|nk=g6xtc7h$)cKF zR;x%GzNZgA@juk4HUjrq?H49sf7Q0}C(F0~E&Rz2cCi<;)i{MdYv{Aar65$(&DC^sHM5h8JT#*to$1Q==(pxt z+)~X=xTTs;g3z}yiOqY&qcmSpof_1_9=_G{xAyt%6nqQc9^nF)xyDWIAh%lT)JjSU zQj?ZXC`UEEp(fu_hx&{}?OID%#!BQ+YddyZYY*P6WjD3lc`bKZ>v<5WorF{rpc4A6 zZ6~!G(3qw)ryVk>-G#0UW*GKT+uOCrFpk|E<0Nvf?eAS}@72D|yZ2u4HVD;;f!ylE zB{N~S5GKL+qKqZrG0CbF2{SE_d`KeFkpWrM%SH}zQ31QISDSh?qzU#?uMO?#L>Kf@ZwSK}j=t*YtDgPWJIZm~ ze?2!>?;1CG$_rixq51*#Qa=`nNlFS*qrdv;$wM*9;2!JiufDsfZ#VVbO?|o5ms|aC zn$eaH=&`;Y>&veGKnA1F`XiBB{b;5zjTzWqeSI~MM}zznqzJ|NjFMEQ2HtGYoR)N? zJ3Sf1P)0DCU+`7~^&2c;5jS`egc`;q4(}5mH_3gc!V2kVwd4E4p%c=M&a?1ad={KQ64uF z?q0*)Lbx}=XCtrhm8@nR8Kkb~fl2(zbiCbkKFfnp^Yxgsxji*ETk}(#DpIH8XlivML`V#-||Nj5~9g5iZe*jyDDSrR} literal 0 HcmV?d00001 diff --git a/NearFuture.xcodeproj/xcshareddata/xcschemes/NearFuture.xcscheme b/NearFuture.xcodeproj/xcshareddata/xcschemes/NearFuture.xcscheme new file mode 100644 index 0000000..c7e1c25 --- /dev/null +++ b/NearFuture.xcodeproj/xcshareddata/xcschemes/NearFuture.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NearFuture.xcodeproj/xcshareddata/xcschemes/NearFutureWidgetsExtension.xcscheme b/NearFuture.xcodeproj/xcshareddata/xcschemes/NearFutureWidgetsExtension.xcscheme new file mode 100644 index 0000000..91a14d3 --- /dev/null +++ b/NearFuture.xcodeproj/xcshareddata/xcschemes/NearFutureWidgetsExtension.xcscheme @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..84c4b29 --- /dev/null +++ b/NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist b/NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..3d4f3de --- /dev/null +++ b/NearFuture.xcodeproj/xcuserdata/neon443.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + NearFuture.xcscheme_^#shared#^_ + + orderHint + 1 + + NearFutureWidgetsExtension.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + A920C2832D24011300E4F9B1 + + primary + + + A979F6012D270AF00094C0B3 + + primary + + + + + diff --git a/NearFuture/.DS_Store b/NearFuture/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c4df0355b5f473d6691d3cbdf2a14a36ddd685d8 GIT binary patch literal 6148 zcmeHKOHRWu5PfdDC}KgEh?SSDka~kOggsI(0R4y}C8TQkEprOioQ4B%BHoOxsBLJA z5JCveNS5Cl!*bj^kLEmdH}j?f~^C(PfX^eHLMjQGU@ag_gLZ#&luynvDyNE zQ2{x-BMf+MOH8qPesv_j=?}+cG1u2`=ZpP}qRg^UUXHj@o}a$IybZp>ntX#bpRK;# zE4N`jmsl{HN8Hjs!Q&hy?wH+F{8~OZIo;3Ln$OOCigHUnJ6UV_K=YBD%uE4Oz!dmN z1z5Aix`zSHn*yeQDNrjQ-v`eom_)1s>ZgNFuK>gj!)olyT|ziMViK_m$QhaoRAQjI zc*Ssm&bW{3l89BnK!=N$4;OcK@}o&}x;xQxKy!(LIa9zC*ifJy#yzS37u)au8!Q`| z0;a%!QowbxVU{wZSX&#pNv-v4S8QUkt_oOF*wIqVwNi?Y+0+>K(jg`htALEq>_ String? { + let encoder = JSONEncoder() + + // Custom date encoding strategy to handle date formatting + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" + encoder.dateEncodingStrategy = .formatted(dateFormatter) + + do { + // Encode the events array to JSON data + let encodedData = try encoder.encode(events) + + // Convert the JSON data to a string + if let jsonString = String(data: encodedData, encoding: .utf8) { + return jsonString + } else { + print("Failed to convert encoded data to string") + return nil + } + } catch { + print("Failed to encode events: \(error.localizedDescription)") + return nil + } + } + + func importEvents(_ imp: String) { + guard let impData = imp.data(using: .utf8) else { + print("Failed to convert string to data") + return + } + + // Create a JSONDecoder + let decoder = JSONDecoder() + + // Add a custom date formatter for decoding the date string + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" // Adjust this to the date format you're using + decoder.dateDecodingStrategy = .formatted(dateFormatter) + + do { + // Attempt to decode the events from the provided data + let decoded = try decoder.decode([Event].self, from: impData) + print("Successfully decoded events: \(decoded)") + + // Save and reload after importing events + self.events = decoded + saveEvents() + loadEvents() + } catch { + // Print error if decoding fails + print("Failed to decode events: \(error.localizedDescription)") + } + } + //MARK: Danger Zone func dangerClearLocalData() { UserDefaults.standard.removeObject(forKey: "events") diff --git a/NearFuture/SettingsView.swift b/NearFuture/SettingsView.swift index 7e0b3ed..5d424a8 100644 --- a/NearFuture/SettingsView.swift +++ b/NearFuture/SettingsView.swift @@ -16,6 +16,7 @@ struct SettingsView: View { @State private var lastSyncWasNormalAgo: Bool = false @State private var localCountEqualToiCloud: Bool = false @State private var icloudCountEqualToLocal: Bool = false + @State private var importStr: String = "" func updateStatus() { let vm = viewModel @@ -67,6 +68,48 @@ struct SettingsView: View { updateStatus() } + NavigationLink() { + NavigationView() { + Button() { + UIPasteboard.general.string = "\(viewModel.exportEvents())" + print(viewModel.exportEvents()) + } label: { + Text("copy") + } + Text("\(viewModel.exportEvents())") + } + } label: { + Image(systemName: "list.bullet.rectangle") + Text("Export events") + } + NavigationLink() { + NavigationView() { + VStack { + TextEditor(text: $importStr) + .foregroundStyle(.foreground, .gray) + .background(.gray) + .frame(width: 200, height: 400) + .shadow(radius: 5) + Button() { + viewModel.importEvents(importStr) + } label: { + Text("import events") + } + .buttonStyle(BorderedProminentButtonStyle()) + Button() { + if let pb = UIPasteboard.general.string { + print(pb) + } + } label: { + Text("print pb") + } + } + } + } label: { + Image(systemName: "square.and.arrow.down") + Text("Import events") + } + Section("Danger Zone") { Button("Delete local data", role: .destructive) { viewModel.dangerClearLocalData() diff --git a/NearFuture/StatsView.swift b/NearFuture/StatsView.swift new file mode 100644 index 0000000..c511dac --- /dev/null +++ b/NearFuture/StatsView.swift @@ -0,0 +1,67 @@ +// +// StatsView.swift +// NearFuture +// +// Created by Nihaal Sharma on 05/01/2025. +// + +import SwiftUI +import Charts + +struct StatsView: View { + @ObservedObject var viewModel: EventViewModel + + var body: some View { + NavigationView { + List { + Section(header: Text("Upcoming Events")) { + let upcomingEvents = viewModel.events.filter { $0.date > Date() } + Text("\(upcomingEvents.count) upcoming event\(upcomingEvents.count == 1 ? "" : "s")") + .font(.headline) + .foregroundStyle(Color.accentColor) + let pastEvents = viewModel.events.filter { $0.date < Date() } + Text("\(pastEvents.count) past event\(pastEvents.count == 1 ? "" : "s")") + .foregroundStyle(.gray) + } + + Section("Events by Month") { + let eventsByMonth = Dictionary(grouping: viewModel.events, by: { $0.date }) + ForEach(eventsByMonth.keys.sorted(), id: \.self) { month in + let count = eventsByMonth[month]?.count ?? 0 + Text("\(count) - \(month.formatted(date: .long, time: .omitted))") + } + } + + Section("Event Count") { + let eventCount = viewModel.events.count + Text("\(eventCount) event\(eventCount == 1 ? "" : "s")") + .font(.headline) + .foregroundStyle(Color.accentColor) + + ForEach(Event.RecurrenceType.allCases, id: \.self) { recurrence in + let count = viewModel.events.filter { $0.recurrence == recurrence }.count + let recurrenceStr = recurrence.rawValue.capitalized + var description: String { + if recurrenceStr == "None" { + return "One-Time event\(count == 1 ? "" : "s")" + } else { + return "\(recurrenceStr) event\(count == 1 ? "" : "s")" + } + } + Text("\(count) \(description)") + .font(.subheadline) + .foregroundStyle(Color.secondary) + } + } + } + .navigationTitle("Statistics") + .navigationBarTitleDisplayMode(.inline) + } + } +} + +#Preview { + StatsView( + viewModel: EventViewModel() + ) +}