From 61a0cc1f7d2ddeec21480e3eb7dc3d7e6edf5df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Kunz?= Date: Sun, 19 Apr 2026 16:29:13 +0200 Subject: [PATCH] Overhaul native approval UX and add widget surfaces Bring the SwiftUI app in line with the Apple-native mock and keep pending approvals actionable from Live Activities and watch complications. --- .../ios-marketing-1024@1x.png | Bin 57018 -> 49200 bytes .../AppIcon.appiconset/ipad-20@1x.png | Bin 1006 -> 1346 bytes .../AppIcon.appiconset/ipad-20@2x.png | Bin 2570 -> 2006 bytes .../AppIcon.appiconset/ipad-29@1x.png | Bin 1629 -> 1609 bytes .../AppIcon.appiconset/ipad-29@2x.png | Bin 4184 -> 2578 bytes .../AppIcon.appiconset/ipad-40@1x.png | Bin 2570 -> 2006 bytes .../AppIcon.appiconset/ipad-40@2x.png | Bin 6002 -> 3386 bytes .../AppIcon.appiconset/ipad-76@1x.png | Bin 5736 -> 3173 bytes .../AppIcon.appiconset/ipad-76@2x.png | Bin 12723 -> 6625 bytes .../AppIcon.appiconset/ipad-83.5@2x.png | Bin 14346 -> 7147 bytes .../AppIcon.appiconset/iphone-20@2x.png | Bin 2570 -> 2006 bytes .../AppIcon.appiconset/iphone-20@3x.png | Bin 4233 -> 2598 bytes .../AppIcon.appiconset/iphone-29@2x.png | Bin 4184 -> 2578 bytes .../AppIcon.appiconset/iphone-29@3x.png | Bin 6716 -> 3672 bytes .../AppIcon.appiconset/iphone-40@2x.png | Bin 6002 -> 3386 bytes .../AppIcon.appiconset/iphone-40@3x.png | Bin 9707 -> 5158 bytes .../AppIcon.appiconset/iphone-60@2x.png | Bin 9707 -> 5158 bytes .../AppIcon.appiconset/iphone-60@3x.png | Bin 15819 -> 7730 bytes .../AppIcon.appiconset/mac-128@1x.png | Bin 10532 -> 5544 bytes .../AppIcon.appiconset/mac-128@2x.png | Bin 24261 -> 11551 bytes .../AppIcon.appiconset/mac-16@1x.png | Bin 776 -> 1182 bytes .../AppIcon.appiconset/mac-16@2x.png | Bin 1884 -> 1726 bytes .../AppIcon.appiconset/mac-256@1x.png | Bin 24261 -> 11551 bytes .../AppIcon.appiconset/mac-256@2x.png | Bin 54094 -> 25637 bytes .../AppIcon.appiconset/mac-32@1x.png | Bin 1884 -> 1726 bytes .../AppIcon.appiconset/mac-32@2x.png | Bin 4575 -> 2794 bytes .../AppIcon.appiconset/mac-512@1x.png | Bin 54094 -> 25637 bytes .../AppIcon.appiconset/mac-512@2x.png | Bin 57018 -> 49200 bytes .../AppMonogram.imageset/AppMonogram.png | Bin 0 -> 8025 bytes .../AppMonogram.imageset/Contents.json | 21 + .../IdPTint.colorset/Contents.json | 38 + swift/IDPGlobal.entitlements | 10 + swift/IDPGlobal.xcodeproj/project.pbxproj | 336 +++++++- swift/IDPGlobalShared.entitlements | 10 + swift/Sources/App/AppViewModel.swift | 91 +- .../App/ApprovalActivityController.swift | 63 ++ swift/Sources/App/IDPGlobalApp.swift | 58 +- swift/Sources/Core/Design/ButtonStyles.swift | 72 ++ swift/Sources/Core/Design/Cards.swift | 100 +++ swift/Sources/Core/Design/GlassChrome.swift | 39 + swift/Sources/Core/Design/Haptics.swift | 33 + swift/Sources/Core/Design/IdPTokens.swift | 109 +++ swift/Sources/Core/Design/StatusDot.swift | 16 + swift/Sources/Core/Models/AppModels.swift | 31 +- .../Core/Models/ApprovalActivityModels.swift | 59 ++ .../Sources/Core/Services/AppStateStore.swift | 10 +- .../Core/Services/MockIDPService.swift | 59 +- .../Sources/Features/Auth/LoginRootView.swift | 255 ++---- .../Features/Auth/NFCPairingView.swift | 12 +- .../Sources/Features/Auth/QRScannerView.swift | 189 ++-- swift/Sources/Features/Home/HomeCards.swift | 576 +++++++------ swift/Sources/Features/Home/HomePanels.swift | 726 +++++++++------- .../Sources/Features/Home/HomeRootView.swift | 457 ++++------ swift/Sources/Features/Home/HomeSheets.swift | 592 ++++++++++--- swift/WatchApp/Design/ButtonStyles.swift | 57 ++ swift/WatchApp/Design/Cards.swift | 65 ++ swift/WatchApp/Design/GlassChrome.swift | 8 + swift/WatchApp/Design/Haptics.swift | 16 + swift/WatchApp/Design/IdPTokens.swift | 15 + swift/WatchApp/Design/StatusDot.swift | 11 + swift/WatchApp/Features/WatchRootView.swift | 808 +++++++----------- .../Widgets/IDPGlobalWidgetsBundle.swift | 292 +++++++ swift/WatchApp/Widgets/Info.plist | 31 + 63 files changed, 3496 insertions(+), 1769 deletions(-) create mode 100644 swift/Assets.xcassets/AppMonogram.imageset/AppMonogram.png create mode 100644 swift/Assets.xcassets/AppMonogram.imageset/Contents.json create mode 100644 swift/Assets.xcassets/IdPTint.colorset/Contents.json create mode 100644 swift/IDPGlobalShared.entitlements create mode 100644 swift/Sources/App/ApprovalActivityController.swift create mode 100644 swift/Sources/Core/Design/ButtonStyles.swift create mode 100644 swift/Sources/Core/Design/Cards.swift create mode 100644 swift/Sources/Core/Design/GlassChrome.swift create mode 100644 swift/Sources/Core/Design/Haptics.swift create mode 100644 swift/Sources/Core/Design/IdPTokens.swift create mode 100644 swift/Sources/Core/Design/StatusDot.swift create mode 100644 swift/Sources/Core/Models/ApprovalActivityModels.swift create mode 100644 swift/WatchApp/Design/ButtonStyles.swift create mode 100644 swift/WatchApp/Design/Cards.swift create mode 100644 swift/WatchApp/Design/GlassChrome.swift create mode 100644 swift/WatchApp/Design/Haptics.swift create mode 100644 swift/WatchApp/Design/IdPTokens.swift create mode 100644 swift/WatchApp/Design/StatusDot.swift create mode 100644 swift/WatchApp/Widgets/IDPGlobalWidgetsBundle.swift create mode 100644 swift/WatchApp/Widgets/Info.plist diff --git a/swift/Assets.xcassets/AppIcon.appiconset/ios-marketing-1024@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/ios-marketing-1024@1x.png index 0b0e8250be0657aaa7cda2cdb84d9cc06a1e1654..20077d942038a6afd9a54be59c4ec6f6c773f68e 100644 GIT binary patch literal 49200 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 Q`)vX)ixY6u5}14BzYenGn*aa+ literal 57018 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

d_K8TV&zJZl>6X@~E)(xjo`_4kWdqN$7 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/ipad-20@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/ipad-20@1x.png index 54896474192b04ea6c6697bd0bec42d113b5bfb4..d7f686058aef3c2446bf8906a4c17da3db424503 100644 GIT binary patch literal 1346 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 delta 2561 zcmV+c3jX!h4~i6!BYz3eNkl2({R-A~>4TYAL4UxOBQ!sU1zSWOoL8Z*XkRtAgyckQY+QYFvH` zBG~z6^B{ma%|O8uq=ff=m61rHTU>B34x6mEqe%$ON`JZXhe*fgn@RK0;KNnjEwAcU zrDQdZ-}c_s6O%m}oU2pLXKCuEXJ?;p+nfd zZ95j`X7Rn3Uc!mfr%^4H;MsjwHcI?I3t%8BQ4nX1vFn7CTd;lGHvIdui&(c|6ZYP5 z2mW&MBx;ok;M@veGAG&)P^(t);`e`q9h)};aRqY=4gB)W-(Yxf2#&_l-n59)%x>0F zjk(}&qcB)Znk5&95Quo9D4HIaqar$OiC0J0<6t$rnMPXSn9IE#Z-dO z^3IKPsHLn%&_Yz zyPNGc>a`m8;YbZYrCdQPwP>XVNoE*qnptGVAvF%|G~Yn0ZTPyT1vzFzK&4b-O-H*M zPzsfDnO%??gPS&N!2S2!gQU^met*;R^Z3atui(`A^X%?JPe0At&!lbaz3Xla*M~6I zOb}}gDI6q8F(DCz!9r@_tjoh7^idKkTb|?;=roz=xYrZ_hXw|aS&MR|f;ZlOA8#Ky z!j^ya@L{}v^eAez8i&cowQI3y{RTAC48{kvtwWMIwkTPWte062(h!akbbqw~djbav zODtvP%=|oRN;7R%TCQj|61yC6(GACxr>s6 zF0yJjcxt>J$$d(YLXdSmT-H}-Sq3Q;@0PCrMf1Tk6;Y)i1FYPFk_uXB&ThwoEH4}k zxCoyPK;kdTGU^-&O7XZb|9|RQU_M*ko8pox3@-X^u-eBG8)J(m+1qInaGcX{06tu_wh20e`3LBdc^8Wv?}8 zB?(GVgs}?~XtY{vm3FIzr}pp1sqt}q^vNf9?%Pk|8+-Pk*=%w(qLO)OYLXKxw{ZT8 zf=lt~PeF3&^Q4;dEM~1sh@C~-WJuFAKk5{_O45|C?nV^SOj?MeA^hXaC-~sQ4{_kZ z2QfQ6jp2a-{QS@%%zrhT7^&Bp$TR0Svq@xJoSejPz0POfWlb(Ac1|C;qLM5sbK^aX zBX%d2H@pC4oQrCtTeZ4Q^CrK+ikG zN{Gek@?||jAb;7gjF!aO`|j-|CfT(bm;abqv&A~Mvq;Tc4u!ypv2J7yrswDK1kyTx zmBGBG5JwUBYb32aq>9rYeaB~_fLwtuXGShBTBtK|9F4WobYDRk?A>k)5@S+a-BgaF zvkRU877SY0HFFYYE=_W_=GL{HOee4^qdih4miRf9Eq{6!Ar?!R0Os2UwbHWE$VEQZ z(K(Zutt;KR0$>Q%*)Qp+dK5`JTYOGC*Gk~o2X4cS^)ifG%09sXovY=3vBjh-1!h|r zes^qw1wp5~4>peVr>(4gf8n)GZmf(!GPi0a$({9T_1#9Ad{a1YeF!?%3SS@Hj7`He zWUg!SqJI@;Mz2QBAmMPinc|(le~Pwo^tTO4>Z*?3OVV@{LQstO?uoi%5Z$p@FV_xR zZ`QPoxsQn4JAU0GqM{TnPNJv^>AbEIHT1gG?NvY40EWNFrnLW(>Jx2Be*a1lvjicyet)mM{%2qc?NJ&{tDnxND?XS^^c3j06 zyL!b~b35}>A8^#JrKlMk&74`gD|2?&N*yK(J|q=F3gucwVi}emZoM9WjDdesc6IY& z_o3U7rt6%m`@bRP!wvVKd9SIEujfqCW3rHo2#SW{Y|*z}=h@=F*7%DaXBGYh{6phE XK1+!~`M|#E00000NkvXXu0mjfDTVm_ diff --git a/swift/Assets.xcassets/AppIcon.appiconset/ipad-29@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/ipad-29@1x.png index 1ba88e31512bf6185c511eeb53d1cc60fd5c5200..a912eef5850d6db5bf35002a1b45e59ebbae44f0 100644 GIT binary patch literal 1609 zcmeAS@N?(olHy`uVBq!ia0vp^vLMXC1|-8Kr}G0TmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lyFIn@J#ddWzYh$IT#q* zGZ|QbEJh%f0%8UR<^_xl%s`qEB({JFE-Sl$8NmiAyjLw22vl}9GbExU!q>+tIX_n~ zF(p4KRj(qq0HlDyrosxy%uOvxRH(?!$t$+1uvG%9umZ9{!um=IU?nBlwn`Dc0SeCf zMX3sAdIow1N_Jcd3JNwwDQQ+gE^bimK%T8qMoCG5mA-y?dAVM>v0i>ry1t>MrKP@s zk-m|UE>MMTab;dfVufyAu`tKo-FP#GR=X znFyQmilN>DdQcxEqi?8Zpbs}2sMQ7}YUP}tlV22EkeHlmXJ`Xfh%AJ#1)@42vm!Mo z!X+~|HLn=xB0EC^BNM1DbSbP_BXMg*l7ecr(Fb`LDF7g$3l;?iuN{|-K0K=IxDLLx zUI|PGt36#DLp*rjPCxG*>L_x2zj67!uY2dsOq(Uywsx&>O%34uyGef8vwnfvUv+n?)2*JrnmYac-rpu? zLfPet_Zk=5eYP!rb|)~QZLZCw__vZbGZMlo-NHE+xN__~B$0pY#2x$A4GBH(j2&jH zK3UN4Vp~gH<-)yb3e_e*=WJQF>|Mr8X}Hm@`cR-p;PQk9VS&RO)8l4k#A-p zfBc@%=~M13&#j!*D5-9^-r>GEXTttB^DY1QZISsIk^A~awC0sfKSNHO+uSRf{g^K` zrD$%*u9U^9-p^RBY&k0Tbn3#MnQJ#HJTvg;QhwFEgtPbngL?7D}M3VW*>f@r>mjWuYI8;!k(kTwkyzCh6=h4XN!%FKoExW};>As*-z3?w+T@T$3A{ zjNMM@*8G0+;N)V?C=lXn7!%p`3ha-cOF4QbK#Lm89LF&~0cd8$L z)G>YKH8XqL@$kb%)e@VA<^Adc8;e)!^i*oePmndfvP|HZ`0wRf3BKDWx!m5O!T0~S zdFGz#sh_^@+%#+Tr7s)ius`#iHh0dtmEtBlBMgO9JTBT5o!*f2_-1jPWUH8=|NH;W z|FtIU{5k8s@4*j6NfsfsKf=#gG+NA@77{T-Lf_6##A@P&7j^SF(}k4h8vV0eyJE|S zh1$H@e|%cf*H2*jp5LFCVzIsAgVzq5s*qo0Z+jmn6kE#O^Ifp~_QF{*av3MXdz_B3 z?)~51efoLb!`JH1`x9gSOkW?8VYyX=eb%WzNAK>obkjQAc!qoJUdE%Ut`}z&XiE&V|e#&sK?$7rNDzTLWQoxSAp*GKf${tuaC8yGahR{TYk@6&b0 zZ>Jwiy~@RJCA6coR^)I<`_5}^j5p(3*6F(KelA)Y!@ilZb>2(nhu3f2%ja7cC#4wb z(6!HK&elJ(*BbguChq&NHg}uYo0;ChpK3i1{V`~-yfpQt_&h)UkFsfcVLDTcYd6*d zlg+lR>*W?ahFgg3VjNEmH g&&R!W`lJ6@I{d_@z1%!(XF;W|r>mdKI;Vst0BzZeb^rhX delta 1613 zcmV-T2D16d4BZTnBYy@YNklA7%75?tI_r962ohWib;smD-;G}A*xT3`} zpsG#9&yGbK0a6f1Eu~f0RjHaTLl*41=n6GkmffQ+_z^;+!6+mm5)gibl>~xgdz_g! z@4fqT(7A8M_0KrTqE~vFc{BH(@BDn{J6ApU%u|g2!-_G$Reu#YI2dANhCrk??P2&3 zVQyoG`w!g>C@F=^YJegLF_Kb(xB*q1FraNg8LD0!qrAI2focUL7_F=#O<)Ey^KjrH zfQrOV^^Mi~3K5meEJn7CxDLsKprT?EB8P_eZaOmdbKDBN88j*)vc{a(MD5D^qa4Cs z1vYYah~s_02!G-LtpbAgL2J5^ne1}l__gzHjw4IDXc(wONLK54L`E6h;~@m}iXx?{ zVJ)n+ec-K;%HF)}pp|7>A}oBh-;kNN+MIU?vn(v?dptnrR6yW6O}gzl&W7NF0{E{l zynuhc{Ic3RKCYbi{cZgKrHo1`AEO!@8BudH4=STIf`1RpAqF4)&q(PmF~04e;|-v~ zg3Opt%c`0YuwGHpvFT~`+Y?XYiJw1#Umrh?Zm$QT`iOkW6JkW^D*XNTf56!@|G+eD!e|ul)_i4iX3;Vs8ln{aAjcu@18%0$$k6q&V>t*-(rjj zEH8@meSgocUDz?w!qol)VAsR+!Kp!is+z$VSET&thTJ3i6;_1_{ z#=wPu9j#W{*vWJJkPMGqDU65{QYxizYkzeWT5C8T&@C!78;zP|BuW%h8A7;? zB8j^6$`aED58~vLPr{7s!kZs_fY;x61EZ}L{(SNzMw(4@x?Q|~=@K*%9+{az3<39y z?}m?rl}-Vx38E7*D&)CC6(hV4x0g5p7xDzxO<5|d3R4pkxc}aJAq9GCeja~%^;Nud z=6?*{o}Y)(8b6#mgai8~u++)XDLq#63ah!pYEhwEIuu@H@(xQ#BatM&Gbb|1J86wC zuU>_f7Kss`Ei6Fw_qLi%gvbaCxESF$!bL`8CA|sq-lv@3?WkEV4n_#(J)C!mY=fl~ zL2Cmd4JD5VWU75X5MiRIj&m-Jo?(i!1%J5zna+7R7Zbq-RVAG$^W?4}(ZVFr+@h&|X<20T2fy3u&4&qi_}4oi0wF{a12E z+UK#khjDy%HW@O_CcaxD~ee%_pDfMHm)|xbm(v0rhk!tqs&Ber7DSyLKdj-wR z!prPHJ-J9>1z-bGlnenh08L!3ygS^;vWq=e{VIkK#+rs+``zPe&sYRs_fyHmq1|K1w2a0Y zKq8eE5Q*Hpay^kFX5U403LG(E)r9Las;GT!mPL00000 LNkvXXu0mjf4pka5 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/ipad-29@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/ipad-29@2x.png index 33e0f68453fe9bd1f09095de81a318f81ce4c6ce..257a501292df6f9ba18d6aa51744b2bb2364103e 100644 GIT binary patch literal 2578 zcmZ`*4LFl~8-K|1v4dn`s2FF7Y%`)}bBxL7H1gTkHViw=c9=FrAu6AFGlhJGh>9rl znGiY@6U$ITqSQfkqA!l#sou`H-s^pz>$;!&>-W3w|9wB#^}n7ZlB>Ob*+E{`xj))3lQ@O@r5qjT>{HG3q7U3UGXR+zbFrBr! zR6k}U8wZ1}HTv;<*Kh4Sn z`xW@l(BECYp-FTuE!2lVXVAhTBqy>mL7~mQv;I5vKdHX|pZbr~cPbXSHt;_d@NK(a zqmuPnDPWO5K9!Y1`@CfZ0LZc(33!iS(EP=aP>3hwo*+LbU!2GvK-}V8kp7c*T1Dns z_oVtx%`KW6oGSmFt+QA7A_@KDkh+VW)zhCR#_wTGPQi8|P+0 zPGiBBpVmEge|04A0^8el=)r@9C&vV@3yukHe|XXykLJz1>-Ws?Q#|j!=q+RCQtPzq zrS(QLvhL+Vp4X|}k@GusA+^6(ZgVVT^=fAE0-Xo#bOVfidtZJq_s+YoZ~t)A8HsEl zZFjI@$cMny&AgmO?L8yoIzV6En&x=LS2xD7BWy24n6IH(x5LEWq7 z4((fAP2QUD@bEn?YjQLnUhF$&pR1YMp44;BqLf}}U(fYQ*b@ptKlo^FYob=Y%AM?D zca6njGUBfP^oi0NOgw>PF09+Xw`~E%6JBHcbp7m8OIYvWEY1*QP~zg+05w!&w8;9d zaU>EXe6tu`R|=l)hzGeWyf`uxL+$T5E`{Tg ze?sdmQ?AOXE`}y`y*p;09I~Xfq3Ac&lV(p_Hz;Zr*Vj|l$6#r(jd<9m`t(3bw8NPI~* zX#UIac|XkYUHD@sl7@E6MeAUQ8|GD zmVO@?K6O@~F*@L)dez2^8h+-pS1{u+V;6Jq(!|s)W>BhY{^TZAq}9X1+r6HG1IY8p zD?u-&8MvfX3wEiiX~FhO)RM*2T^*PY8G@ z#b>?XQ!;6R9|s*O4w>}GSVWyY1@eD^j3RY$_?bu&#Z8-wHtdjL=#C92)UR9sPRz$aWk5mLWQ>Z`L#!3nC{92>_*%t!p zXX(gIJ?}T&IIc~y|IBtCNQW#fk1|Mic8-V#C-}jfn`g)|VF!dv#Uu5L^~Pi39aG+0 z$!dMH?25jY;fXmxm7bs|d!}rcQwG>)di1K$cPO{zURH;nI0({dX|Q*;+Uz1E<>-Ou zk;9OhN+`yro=j)dTvv!C=7NJ=gfr}!GvfEt4-;i^h6BcI@QjJUy?g8DSCn3-4N=p#Hl{@UlK4^Dj*K4BW$fqV_}7i+qO_Ge^k*}j$teRL9d$3h zn5%%qyr-%%)jqX17YwT#)V51QGeRc9N=>)z6Gik-Djn9kK9#h)%Y3@XGC$_=o!zng zh5S8A)!D5b+g=)S)1h@e30XMKaFHkTU}?G9`{M1&i9>f?J#kM;(grmQ zC$Ed;rE-zQCnh}VNkg=u^hpk{TqJk`@G(&H;=-r{OH}sDFgQ@5 literal 4184 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 delta 2561 zcmV+c3jX!h4~i6!BYz3eNkl2({R-A~>4TYAL4UxOBQ!sU1zSWOoL8Z*XkRtAgyckQY+QYFvH` zBG~z6^B{ma%|O8uq=ff=m61rHTU>B34x6mEqe%$ON`JZXhe*fgn@RK0;KNnjEwAcU zrDQdZ-}c_s6O%m}oU2pLXKCuEXJ?;p+nfd zZ95j`X7Rn3Uc!mfr%^4H;MsjwHcI?I3t%8BQ4nX1vFn7CTd;lGHvIdui&(c|6ZYP5 z2mW&MBx;ok;M@veGAG&)P^(t);`e`q9h)};aRqY=4gB)W-(Yxf2#&_l-n59)%x>0F zjk(}&qcB)Znk5&95Quo9D4HIaqar$OiC0J0<6t$rnMPXSn9IE#Z-dO z^3IKPsHLn%&_Yz zyPNGc>a`m8;YbZYrCdQPwP>XVNoE*qnptGVAvF%|G~Yn0ZTPyT1vzFzK&4b-O-H*M zPzsfDnO%??gPS&N!2S2!gQU^met*;R^Z3atui(`A^X%?JPe0At&!lbaz3Xla*M~6I zOb}}gDI6q8F(DCz!9r@_tjoh7^idKkTb|?;=roz=xYrZ_hXw|aS&MR|f;ZlOA8#Ky z!j^ya@L{}v^eAez8i&cowQI3y{RTAC48{kvtwWMIwkTPWte062(h!akbbqw~djbav zODtvP%=|oRN;7R%TCQj|61yC6(GACxr>s6 zF0yJjcxt>J$$d(YLXdSmT-H}-Sq3Q;@0PCrMf1Tk6;Y)i1FYPFk_uXB&ThwoEH4}k zxCoyPK;kdTGU^-&O7XZb|9|RQU_M*ko8pox3@-X^u-eBG8)J(m+1qInaGcX{06tu_wh20e`3LBdc^8Wv?}8 zB?(GVgs}?~XtY{vm3FIzr}pp1sqt}q^vNf9?%Pk|8+-Pk*=%w(qLO)OYLXKxw{ZT8 zf=lt~PeF3&^Q4;dEM~1sh@C~-WJuFAKk5{_O45|C?nV^SOj?MeA^hXaC-~sQ4{_kZ z2QfQ6jp2a-{QS@%%zrhT7^&Bp$TR0Svq@xJoSejPz0POfWlb(Ac1|C;qLM5sbK^aX zBX%d2H@pC4oQrCtTeZ4Q^CrK+ikG zN{Gek@?||jAb;7gjF!aO`|j-|CfT(bm;abqv&A~Mvq;Tc4u!ypv2J7yrswDK1kyTx zmBGBG5JwUBYb32aq>9rYeaB~_fLwtuXGShBTBtK|9F4WobYDRk?A>k)5@S+a-BgaF zvkRU877SY0HFFYYE=_W_=GL{HOee4^qdih4miRf9Eq{6!Ar?!R0Os2UwbHWE$VEQZ z(K(Zutt;KR0$>Q%*)Qp+dK5`JTYOGC*Gk~o2X4cS^)ifG%09sXovY=3vBjh-1!h|r zes^qw1wp5~4>peVr>(4gf8n)GZmf(!GPi0a$({9T_1#9Ad{a1YeF!?%3SS@Hj7`He zWUg!SqJI@;Mz2QBAmMPinc|(le~Pwo^tTO4>Z*?3OVV@{LQstO?uoi%5Z$p@FV_xR zZ`QPoxsQn4JAU0GqM{TnPNJv^>AbEIHT1gG?NvY40EWNFrnLW(>Jx2Be*a1lvjicyet)mM{%2qc?NJ&{tDnxND?XS^^c3j06 zyL!b~b35}>A8^#JrKlMk&74`gD|2?&N*yK(J|q=F3gucwVi}emZoM9WjDdesc6IY& z_o3U7rt6%m`@bRP!wvVKd9SIEujfqCW3rHo2#SW{Y|*z}=h@=F*7%DaXBGYh{6phE XK1+!~`M|#E00000NkvXXu0mjfDTVm_ diff --git a/swift/Assets.xcassets/AppIcon.appiconset/ipad-40@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/ipad-40@2x.png index 03e3ae1bac4cec0875fd93a3baad93681a36d206..e71c5b528f7c001bd9eb06bfd8859a5dd606082a 100644 GIT binary patch literal 3386 zcmZ`+2UJsAvpx_&I)We=1p|a4Euo2o5JE4~#DJk(1R-!iI-z$g0Y#d01S2S@^h=0> zQ~^Oiiu{O_2vVdMkrJBx!F%7mcfIxAS!gDq!UO<9#Q`AtHUR9=py+u32!I2? zq5}XRvH*bJ=TY4iB+a0M!y3Anm;h2VnHiuXxB(0_iH^3wv;_blA{_vt?R3W&k^XP1 zIT7@ad`y&|G&ZBrKDc49c&v#r!pYlH&e7TX22L*6)907~AcGM!(G!Pvgamtfc=;oO z)kS_W5H$H1hKWFaQSdj_MX)C35N&Ti9OR-LTn;XRVue5;NIz#6goTdYU+y$bUF3H> z-Uk7L1qB7k1u4pT`?mTBUcMO*G@)!Lx$p6IA!TCG+x%uGT zyuBdDaUE}X2jJC3M2-{v{rq`OT(H|enY{e}DvMSi?AQX6mxIIpj!kn#9-|0tZx3(3 zt3HlSIFvl{7xCZFKUw}{o4W<$Jg_=$o;WXm+KEu|a0R8my#BZ8|8%wf|6TuO`pXpw zJ1+QN4fwOWzff9xQLISV-&ciVZCO!!0RXIz40SXy!E`HmVF{Qa!H%f8akYwwA2t~s zT~6BV8APoR5^o8m-~}tGNGqm(aD%Al%-O}|Pe zqCV9S0#-h1g`UWs(xPOy^4o5YJ0^|i9dSJCXq zcQ3wV)*TZqS(NDtJILqVU@_4v&a$%8d^2jI(KSqWb-2JTb}EnTbcEl?b~1ZlRnJBr z9zIz6A|tJ7cym5<&?tPlWfrx`+sSP05>9X#n~3yV>bYF&=<|qwa;GUWG-LXp4J zR~Be@$|TEQxPkuD>+8(Zjn_TAkh!_vxdF$JB60gqqw=;!7}eHN$!OH^Q%+@q4rzV?0+)f)m*7w0 zVv@c@Mdq-p5e$FdirIQLFmq&SHIEexw2%o69ZR_1MX!rd@-I2t+}$U$B*V^L+RV<+ zi|!z=zLhqCd|{5}%MvDe)KUiSh-OYwE}ryeXlCtcHr?)PxRjm*mPc^MsnFl!Qv|8G zL0`la4i)KH)>9k`2;du*Y=L!RJ)sXeegu0g*G=9SYlE#L-RHoWp1t+vbU!@^EW>g7+Eod+7KuW9_l9J|)K%_)WhQ68*W_s?!SVCOt!r(3nETTU z9_fBm%Vxns_Wd6AWxUY0@@9B=ZQB%?b+SNS(?msY{!{uD8xqv$Ve#pU($VfV0#;+{ zJJ$xk7qYlh_=}y^#GmggOe7EKXZelNWyJ^vIWF&JwXR?NsGC*{eeP%#=VgD|auPh} z!r_r%F3hd}n>H`2s}Q^ybcvkrb^nW677-LSjo&zga%_%`zn3+OU~zGf5DJ?dzaXyK z!4>Crv!pzoKF8+z>$uZ(>Hup0 zp(&4rIWGNaQSMvPrlNe^!Z&8i;hBnqeu2ZC2Iyhf4$!b4Xg5?9`RU=E^KMViK+hMl=+3prRvi7kH zCE1;5Rq=wzDz|YG`@9?{gD34L&f2`EyOF4#S6d~CFZ0Eeu%RD$jlG9P_&_x+?KH~W z%gtX|aKxLn^RuK0P1f*8S_ZqsH4+8IjiBLf{6E|mr>o!R+FP4uRBInrF<>)_mC_7= zN`q0lX22nZ;a-9e)`6zd>*{gIzyT~YMx^k>X#qec6`e8wVq*tR8xlL`V;Jp|0E#`M z?xIT3{6fkS#yN^WHu8=^$`M$eedpzxu7LQ zkGU<8wdm^nE`Fa{t!1o86%#uVccF9D^#0!dL0)O!2?iqAWq}>8SdITG6E!$jC`Gfg zobSoW^OSC?PW@mnRFWe-)E^06kKZ}fxYw6<4#GuQ7U1?6WMU$tvg$rC)Sew6DqOIj%25_Zbo{zCA$VX>diADV94o)cgxcA0LAGUEm= zo4{yyUvphVLi<@pI#y*P?^>QX7~i3qFOl7X{?LthVVq_gi@= zbB8hJcj?+E*f&*rns|LgyM1Zyie{dQ$!e&g`2in86!?(600--w479Mu~2}mRp>|84vBs8iW*esNLrrkG>V# zu#?-sHomrj1JZbDQe_Qa>Z;v!-48of7706)kL`Keg5%hRt#`yf0+FSDMj-&_EOW*{ zYn}(MB6Y8ff>nPxd?EbtSI&dk6Ydz5b`B=1+O@}^&5vYzt->p&1o2lwjdj$zQ(Y7S zZm4o;jeo7IU~Ki}({QgQN%HPJr!kgWKesdO5q|LArIyO#$ZsEHRnAN#4$3u-cC{z< z4U#%p$1a!^tK^A3IGgF5Dxejc_{XaVle~*>!QAg;uhq$rU!z91?YQzZJSAU8hUC`` zet1=JlUoQbud;;$to02%F5+uP;haHJm&u2>VIY*L|?_b4d4KwRXfWBG2$Z zarwLoJrsPh-uG$a{qAzMhS~lJbNBBGE)vT6Yt2$F<&4M!laXo4kZlhY^Fc_dZR+M- zjz9(8qQFF7G3v|&=+zU5c4>KZUMW&}g-3OYWOLNFuP%-^Xup>oljkuaYOMdc%>A&Q zR zqI+bcncmoM*o?8FR3zcl$x^G5>}_={y?{zq90%J*LVXD?Ia{}pFT6zxhPDG%>ZaXseeX)%@QYkKDH72O%q<$C1`j(A z>`yftD~Z64IB&J~omq>*M2qDFGm$=2L=nD6MM>F4@%eel9sgz+>YD15YdOUJ7e0mn AKL7v# literal 6002 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/ipad-76@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/ipad-76@1x.png index a8b80ce915b38acec00dab75677273a21095611e..c070e7df12ed62541b1113edd8a97e2afdacb034 100644 GIT binary patch literal 3173 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 literal 12723 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/ipad-83.5@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/ipad-83.5@2x.png index 0c93e1e498a1dd2db2c92e72a63c60f0f990cf57..c79422f6a1ef7eae2bf4d4185b2f327fca023a10 100644 GIT binary patch literal 7147 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 delta 2561 zcmV+c3jX!h4~i6!BYz3eNkl2({R-A~>4TYAL4UxOBQ!sU1zSWOoL8Z*XkRtAgyckQY+QYFvH` zBG~z6^B{ma%|O8uq=ff=m61rHTU>B34x6mEqe%$ON`JZXhe*fgn@RK0;KNnjEwAcU zrDQdZ-}c_s6O%m}oU2pLXKCuEXJ?;p+nfd zZ95j`X7Rn3Uc!mfr%^4H;MsjwHcI?I3t%8BQ4nX1vFn7CTd;lGHvIdui&(c|6ZYP5 z2mW&MBx;ok;M@veGAG&)P^(t);`e`q9h)};aRqY=4gB)W-(Yxf2#&_l-n59)%x>0F zjk(}&qcB)Znk5&95Quo9D4HIaqar$OiC0J0<6t$rnMPXSn9IE#Z-dO z^3IKPsHLn%&_Yz zyPNGc>a`m8;YbZYrCdQPwP>XVNoE*qnptGVAvF%|G~Yn0ZTPyT1vzFzK&4b-O-H*M zPzsfDnO%??gPS&N!2S2!gQU^met*;R^Z3atui(`A^X%?JPe0At&!lbaz3Xla*M~6I zOb}}gDI6q8F(DCz!9r@_tjoh7^idKkTb|?;=roz=xYrZ_hXw|aS&MR|f;ZlOA8#Ky z!j^ya@L{}v^eAez8i&cowQI3y{RTAC48{kvtwWMIwkTPWte062(h!akbbqw~djbav zODtvP%=|oRN;7R%TCQj|61yC6(GACxr>s6 zF0yJjcxt>J$$d(YLXdSmT-H}-Sq3Q;@0PCrMf1Tk6;Y)i1FYPFk_uXB&ThwoEH4}k zxCoyPK;kdTGU^-&O7XZb|9|RQU_M*ko8pox3@-X^u-eBG8)J(m+1qInaGcX{06tu_wh20e`3LBdc^8Wv?}8 zB?(GVgs}?~XtY{vm3FIzr}pp1sqt}q^vNf9?%Pk|8+-Pk*=%w(qLO)OYLXKxw{ZT8 zf=lt~PeF3&^Q4;dEM~1sh@C~-WJuFAKk5{_O45|C?nV^SOj?MeA^hXaC-~sQ4{_kZ z2QfQ6jp2a-{QS@%%zrhT7^&Bp$TR0Svq@xJoSejPz0POfWlb(Ac1|C;qLM5sbK^aX zBX%d2H@pC4oQrCtTeZ4Q^CrK+ikG zN{Gek@?||jAb;7gjF!aO`|j-|CfT(bm;abqv&A~Mvq;Tc4u!ypv2J7yrswDK1kyTx zmBGBG5JwUBYb32aq>9rYeaB~_fLwtuXGShBTBtK|9F4WobYDRk?A>k)5@S+a-BgaF zvkRU877SY0HFFYYE=_W_=GL{HOee4^qdih4miRf9Eq{6!Ar?!R0Os2UwbHWE$VEQZ z(K(Zutt;KR0$>Q%*)Qp+dK5`JTYOGC*Gk~o2X4cS^)ifG%09sXovY=3vBjh-1!h|r zes^qw1wp5~4>peVr>(4gf8n)GZmf(!GPi0a$({9T_1#9Ad{a1YeF!?%3SS@Hj7`He zWUg!SqJI@;Mz2QBAmMPinc|(le~Pwo^tTO4>Z*?3OVV@{LQstO?uoi%5Z$p@FV_xR zZ`QPoxsQn4JAU0GqM{TnPNJv^>AbEIHT1gG?NvY40EWNFrnLW(>Jx2Be*a1lvjicyet)mM{%2qc?NJ&{tDnxND?XS^^c3j06 zyL!b~b35}>A8^#JrKlMk&74`gD|2?&N*yK(J|q=F3gucwVi}emZoM9WjDdesc6IY& z_o3U7rt6%m`@bRP!wvVKd9SIEujfqCW3rHo2#SW{Y|*z}=h@=F*7%DaXBGYh{6phE XK1+!~`M|#E00000NkvXXu0mjfDTVm_ diff --git a/swift/Assets.xcassets/AppIcon.appiconset/iphone-20@3x.png b/swift/Assets.xcassets/AppIcon.appiconset/iphone-20@3x.png index c8a61951db9beb02451653f034e9328be62bd05f..0a1e995780071b988d2413aade8696f89a015321 100644 GIT binary patch literal 2598 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/iphone-29@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/iphone-29@2x.png index 33e0f68453fe9bd1f09095de81a318f81ce4c6ce..257a501292df6f9ba18d6aa51744b2bb2364103e 100644 GIT binary patch literal 2578 zcmZ`*4LFl~8-K|1v4dn`s2FF7Y%`)}bBxL7H1gTkHViw=c9=FrAu6AFGlhJGh>9rl znGiY@6U$ITqSQfkqA!l#sou`H-s^pz>$;!&>-W3w|9wB#^}n7ZlB>Ob*+E{`xj))3lQ@O@r5qjT>{HG3q7U3UGXR+zbFrBr! zR6k}U8wZ1}HTv;<*Kh4Sn z`xW@l(BECYp-FTuE!2lVXVAhTBqy>mL7~mQv;I5vKdHX|pZbr~cPbXSHt;_d@NK(a zqmuPnDPWO5K9!Y1`@CfZ0LZc(33!iS(EP=aP>3hwo*+LbU!2GvK-}V8kp7c*T1Dns z_oVtx%`KW6oGSmFt+QA7A_@KDkh+VW)zhCR#_wTGPQi8|P+0 zPGiBBpVmEge|04A0^8el=)r@9C&vV@3yukHe|XXykLJz1>-Ws?Q#|j!=q+RCQtPzq zrS(QLvhL+Vp4X|}k@GusA+^6(ZgVVT^=fAE0-Xo#bOVfidtZJq_s+YoZ~t)A8HsEl zZFjI@$cMny&AgmO?L8yoIzV6En&x=LS2xD7BWy24n6IH(x5LEWq7 z4((fAP2QUD@bEn?YjQLnUhF$&pR1YMp44;BqLf}}U(fYQ*b@ptKlo^FYob=Y%AM?D zca6njGUBfP^oi0NOgw>PF09+Xw`~E%6JBHcbp7m8OIYvWEY1*QP~zg+05w!&w8;9d zaU>EXe6tu`R|=l)hzGeWyf`uxL+$T5E`{Tg ze?sdmQ?AOXE`}y`y*p;09I~Xfq3Ac&lV(p_Hz;Zr*Vj|l$6#r(jd<9m`t(3bw8NPI~* zX#UIac|XkYUHD@sl7@E6MeAUQ8|GD zmVO@?K6O@~F*@L)dez2^8h+-pS1{u+V;6Jq(!|s)W>BhY{^TZAq}9X1+r6HG1IY8p zD?u-&8MvfX3wEiiX~FhO)RM*2T^*PY8G@ z#b>?XQ!;6R9|s*O4w>}GSVWyY1@eD^j3RY$_?bu&#Z8-wHtdjL=#C92)UR9sPRz$aWk5mLWQ>Z`L#!3nC{92>_*%t!p zXX(gIJ?}T&IIc~y|IBtCNQW#fk1|Mic8-V#C-}jfn`g)|VF!dv#Uu5L^~Pi39aG+0 z$!dMH?25jY;fXmxm7bs|d!}rcQwG>)di1K$cPO{zURH;nI0({dX|Q*;+Uz1E<>-Ou zk;9OhN+`yro=j)dTvv!C=7NJ=gfr}!GvfEt4-;i^h6BcI@QjJUy?g8DSCn3-4N=p#Hl{@UlK4^Dj*K4BW$fqV_}7i+qO_Ge^k*}j$teRL9d$3h zn5%%qyr-%%)jqX17YwT#)V51QGeRc9N=>)z6Gik-Djn9kK9#h)%Y3@XGC$_=o!zng zh5S8A)!D5b+g=)S)1h@e30XMKaFHkTU}?G9`{M1&i9>f?J#kM;(grmQ zC$Ed;rE-zQCnh}VNkg=u^hpk{TqJk`@G(&H;=-r{OH}sDFgQ@5 literal 4184 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 ib4gS`~oUMOrR&3_?Q3yIB960YeCVr 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 AKL7v# literal 6002 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/iphone-40@3x.png b/swift/Assets.xcassets/AppIcon.appiconset/iphone-40@3x.png index 22dfc7b50eca581242da6bbdd12de43fd29e9959..b2a496f58e50f16ad27b401bae309df1bfeff162 100644 GIT binary patch literal 5158 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 literal 9707 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/iphone-60@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/iphone-60@2x.png index 22dfc7b50eca581242da6bbdd12de43fd29e9959..b2a496f58e50f16ad27b401bae309df1bfeff162 100644 GIT binary patch literal 5158 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 literal 9707 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/iphone-60@3x.png b/swift/Assets.xcassets/AppIcon.appiconset/iphone-60@3x.png index 2d7ffde8217e3b2751bf5c6664e988643ced7a64..f1a173ee90163c61a34e638a27e9c2c846cd99bb 100644 GIT binary patch literal 7730 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 X|{b)iGpxtr6! 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 VvR{oM?&tsj002ovPDHLkV1nJPuw?)M diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-128@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-128@1x.png index 1ecb20c67133e16344d5cb03a2f1ec9c79cfb4b3..eb0110d61732fa6d32a0620b60990ce3f25b4dcf 100644 GIT binary patch literal 5544 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 literal 10532 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-16@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-16@1x.png index 65f121aba4184b0de60422d04f06a2a83c224dcb..0764bd04186f55ca52c9fd4ccade5de27b8e3281 100644 GIT binary patch literal 1182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBDB+SC;hE;^%b*2hb1*Qr zXELw=S&Tp|1;h*t%nKM9n1M7SNNfQUTvlKKGlC6LXcAiZ38?IBW=KRygs+cPa(=E} zVoH8es$NBI0Z0LZO@$SZnVVXYs8ErclUHn2VXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO| zi&7QL^bGV2l1AfjnEKjFOT9D}DX)@^Za$W4-*MbbUihOG|wN zBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o3raHc^AtelCMM;Vme?vOfh>Xph&xj& zG7&cA6+^uR^q@XSM&D4+Kp$>4P^%3{)XF(OC%-7TATc@B&d>&|5LpOe3q*B5W<_dF zgiB^_YF;tWMRtY;MkY{Q=u%j3Jtqs?` zWostA@7d>eHe&7D96MuU`T2Q|zTEM6^!L}p!td9ljvdqWo0GL@%8%#$sy%@#{V(-L z&fT2;{MffE*Y~ij{`Fy5_tfvU2FFU-w$8rQ%%v#YJN5MBeZ1YpIo*w`#3ock{#YMz zw4vqdw$smEp1r-oTtrQc`_G?useG#>P1uzeYly_zzJGA?@YgL%kJcq^YAgP{xMKI6 zqvnRs}h?ggeD%pRE~H1L{BoU zSB_WhPh6U*KmV_17xvX+>2)Y z5-Z$dR+_o@oV(|qOP_uFwcsGamxu`OM|faoA#RK~A`l(qdVdz^|FVckM68aYJ^{{q z{vT8))*{Mi&#nui7$S%iLA3-#AkcoI&9C`rB>Tf*3PQ@@DS=E8Asv;&)Ugwz&2J$$ z)P!0cxFKR=qqno7So!AKHI*g_ethv9M>;7yGwPaL+TVPk)z}`NGPIh!?5qS{iF*VYVkvzkeiOetw0^YOFvqrw`V5QsR5 zjloYZUs4jsp??8fP(kVis=)C9fkE&@fou>F`ejYE@*YWt- zGyJu=i8G6fD6K~}wir|m#*U$eqfv`Ku|a#b@=6#E!8zA<#v)LPkR~aTIEFR`D(IID zbM&))WP=>}aM%_`N?~Vr7k_MTj+UtMjr`0mCH6lIB@H#S;UK!_r0fvESzC5ec3K%{DG=RWMsa;!CN z?(Mam96vIR?y=+W-Xkjtshw95sXY)Ji!A71NiXOoCi;EM=$-Crb!ll1j1Q0)0~SVO z9i|eEU;a+$)$46Jmg={)b!S@Pdsi=V@UbGbA8JKv3xXMeB*9^wq| diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-16@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-16@2x.png index f7be521622d72297743832956362d88f366b3443..8a7b5259319cf3271d40ed746738d3faac5c4bc5 100644 GIT binary patch literal 1726 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 IM6N<$f`Ckz<^TWy diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-256@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-256@1x.png index 6bb6d5f32ad0c70633aa2f91643ef6ed74d5f006..935332812b1967b7de825ab08d596466d2d2175f 100644 GIT binary patch literal 11551 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 diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-256@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-256@2x.png index d8d35f2ed796025f6b8962532d3146ed39cfc2f3..5c3dff3f61b58a30dca287c71fd2cbe70d748b75 100644 GIT binary patch literal 25637 zcmeFZbyQT**DyRY3{p}ON{@7dbTb%$lF|)IH%Rv&5|Sd_AWBFHNJtJKEnU*x-Oaog z_4ho_`quaU|Nil?)~va6?>_sSv-|A5FYlEVWpJ^{u|XgZ?sM6vDj*O9xP*W(?*Ly% z?!y#b|Gf3zv;2itwsbeO(RylWYij2NtVrS!HxJ*xQUBjZ|Gz`E z|L;Tp$D@Bk#kg)a{67frm%4xM0_2sz7UTLaR!LwtZHwlEKyc9Wr&4O};O%;>YD)E_ zJ(R}ro2spc^bfJ1m|*SZ$h>e^CS>Qev_Mr~bUSX7cBAYR~RV)iP--mC%KO42?M zt)88i7lIjr*~NIN2=U*#^h_}Lx`ApKsftNi;`G_w-Y71^7HpGMw| z%FT1G1AH;#%!HYPPOD0#$@l`MPpcDEE$q|FET4;tW-WFmg}fx{pH01i9^Yq*WLii# z`l0D(JMGUUdVF2vzi8t~Ilcug>%_n6iQKet^)|0S&`8kwMHpfA)d6g*(q)>MDIsaWyekH+WNQ5d zzT&tj+#ZUt5#<|%y@>{KWE5R+6J9WbFm-HfXZH~1>f2LNNzJ)!C_D|U`o5XnHRd=)eeH3&k?V8urWGTfVsplUK2NgSf!$u*uAiVA|Ij1$M!+Zon< zis?M5HgNS)KBy$g>78($c8O$Vh}ED~u79JG-}ByXb2&jW*?Kdbe+X+T=|V1@zWCQ( zz#O;WhZgngjBK>gWg*4f8>8GceAllMO0K*jmTvM6W6DPfdW7qYY?jpS5XZiIpf6ex;Tle!8k^(&X1~jl$jKJNOYt18nTjq#A^FnJ z`>?`K^*F29(9Dd-R`~LjM(g(mO_r>=6LsGd?h*-2$t5xf0RnymWqt8(re4jmpQPu>GKS7Lw5B4QD%FU`N4r2=S@H$^GjZ{G1z1tZBFx80P zg|lLN#lG7RSBeXes9&xxerr)QgKwzJ7A(28vD*D{UEi?>_i#)g?|r^FE;c+Z*thc| za{6dtA}}euRvFiE=Ih0Nr)TIn>*%UE?{=;EVb+H+Q$DX-sUVQ01FK@&T=J;l5hGac znD)sNrjlH&Vy9tWKgW&PITS;EL5obi9{k9FC-_UmfSDQOg76r5X1(eqj1n4i>m89h zix8>RM2D5god=DX9n~1-v% zvHVanbn4zBX&GrYrz3)cA0!R<%CHNwb=ZkoESA>z`Ni+_XY9(Z2#xh@d~BfTUAu;h z+a`|hwnqrUKw!-9K*Y4JJ`+VT@$dSP({5{*lq1XIHy3degj1rXJ>ll@Q=75vDsIV* z0TAWIwUqu@5%cBu8ys#8JIjWd@x@`zsD_riN03IFVt)S7pRWiIASjHR8nRKw9$A3x zf0OG9t>1Wf96NzGRXh{Xm|WvIv&f8AG4Krhz<)@c#^5jrwpyoK(To3;)bn+l?GQ-# zt3OXSjXx#L6M&>4=}6=VxQ~nY=;o@r!L2|Q+t;xNAJ0?bg7o_inKI}OS#6)*!NhR* zQlCrOoXT{t2=C%bj@mol=Lsj{?KDs_dno{mg@}KBod3r*#y#IvjNXWJ;@yijg3*%rj^z_LSMn}z?G3#a3o&#Xj2E}yRwN+(F1O-3o8$3F6Ukhw{&Uu|Nw#vI@bfkg zg?*P>?w8UV6$e(bW`@EuChSqH9}dPEyjxPe__SWKp1P{$gS_VlT~;mHO9t7F#E!@M zHd>K9e(Zk5eAu^(zs6Fl#5mZHQsx_L5>>k}JdC3-pVmk5w$`?(v4ARvOR!jPbb^=a z$pj1X?G^TNRrbS9)t_(P$_5_-5y&z+VyI8ZJej_0o9wZ@MnY;yptt%Y4>L4UhL17G`yNA)3CU7pGdSopF3#n zW?DU@${4U1(zK+!Ng`>AdWLf6e9(XcNIEPZ%BqWI8y{sHvRVv zV})@>t;sUFw&1Cf$fD$zdtn*O(a))@FVKNundwlz?_P;va7`#R$K@Bls|kfezAmGK z7YiC73BQ5103PjKKg*B~B_TV;5^3sA3Vu)MAH9kuQl@jnJ>DVVpSyIcf3uR&=-D04 zAD!{tpGh_r;;_t6KpK{EeV>0r3t{SqRzjgsj(tkrZO0d>E!{O*`fqEL4t9vESl5V}#x^0B(c{iT6=1N9w?`a>ZEm&qpX$rbT~d zaqPQxvx4N}Ej(vTHyfB2ZUR=`r(2NT5Z_J)@O&7`$5v?iZklDm&vN6fwkDVM!uQW{ z9&)Up4E?K(LcNAJ{wJHe%KLv3A0hi)xMmdmaWb*R8r^Ly{F3r|vO}&x_3D7B}2v%E;_5 z=g@2j)T3uxAmeDXYk%WU8RkXhV520i8Jqox&xDBo4BdDEAHvFK=Seat>oif*FNmrx zi`N48U;DZpmbv)FI8ONu-fgpOnEg1(L5R;Va%&P0@N!J8Jy=>SX&n;PzK&ydoic&` zQ)0_ziv+>NX)r#&T#k~7In|rDzGr@Nnd0K%WblV54vc2p zk@hF%rGSJuby};IE1sl~x1;(-`rkq&dKz?uB>&Lmt{n0nPQHJQE$-Df%2>(kh!nhW zk*)j5XRmBX5Nw?K{F>sNjk$M7SBRV)eL z(w-J8$gtXEnXovfR_e)lhQ^~4YfK!)zea)}j{>Y;PpZJM_l+i&^Ri3f(4bhi)#WR* zD>f1^F5(j|Q@X=FyF%~$(xj8D{>Vlq3sfF!?`m+!s>OAnLa^7jm?h%D!spUAXmtk* zabbMJ3sHnOPr^y<|B_9P@Z0;sPQDmh#>IuVj5QcjZnPaT5`H z_FIWg0)HmAparMwC2#SPS(JU#R_2J)f)2_cO){U=@+Vo8l@373zk=8eC`|rNqgx=uL2n1?f|`FwTr02$;uFB zznAz7$A5*SfQVb$l80B56&2js&wNRg59uE*-(elIt$h%NVh;XL^9LX7IrIVzUEhX> zugmwD8QNZJ_vn@OoQW?Pl;;s<9rGo8`j1@z`9CFeNDUW?+;WEO>TAwA^zUY`>Cv-+ zGH#G%X!Y=hV!}v*o0s9_E|32x_9v|0KgUh-I#puwUpiOrU?cBoFI2j?-jv@F5E?z~ zna%j8DhQ+nR^nZLZ7ZG;lTC|8$-#Y>5{FIGj4Q;V3F;H&olCOyBX7Jv_MHHMREEmO zC(HAXiwr+9_Gv5@0BqS>mvDN3p{l9x(oMk=YhG){Mcq0WUmTkoULwA7hqm%Qo| zY^#STpG-FnjY~HB;j0?_1EzgwL}VNDgVC$q>#buE$a{xwb0!ft)oYlwloylxielGj z&*!f+B4weJ?JGNqO5<3)HxtL@)a2`DSrRmd*tZ8r#!U>r6h|jaRMy&o#2@vBXZAvE znr+L*Oult4lxj$tp&Kb)Zt%7`&OS+=E&a6W^-p+82{BDey5^Kgql&Pd*eQLq%ji2U z(l0f?`sYm=a$jJd-T8|S1Tkhb`h)FtOs8?ag*-MgXSrZ@qk6oG_mT$ZO#|9LN=bra zni#_r7^A*azGMS^wX9A;*3&MUC0$1a3eEmAeZ&56QxaGTZ<0-!$9MI}3mn~q5=r%+ z;!&BB+0T0R|1Is}US7xR)4EU_YW?YK4UqTjrE^xvNY&5qX@D3qhSxO8kG2qF|Y9v=?*sSZ@#34S!h9bXTMs#j=5R z7?R{Enj1B0C^7y5h9n{sIurypPp%lUh1Gkok?J(FBF|I_4W8Da2IiKv{@I2j=;QIN z>idCZHEly9g&^7dUA?g$n)S;sG{5rPV-sC0CsK zim-!OS^9Izzq-?J0+|;;blJpA)A5^Xp=Xx8BhW+6pkyEX2Y>({LXt$K$2};3{DzH8 zoeIyU8WWFSM!DZ*ExHY8Ze8G0*wh{6aa$hmYU5yakXWvFybj8(48l$MSR&vr$j@MS zHEw3vq{*2>5xF!FEpI3}G%Qp6ISbxm=@)^@yQbV7W0!hz2c296Tz!yjz4~6L9YYIM z)f+OT@|Q3OK$PrO&qCR0C_6u3BPgKl<~%===uu>pl)Hb-A_%(h0%=m!=@7I0q{2}a z9eGNnz|6hW{$!;6@~=38F@L^Au#sp>xEtSz+mnljYEO&1XLHitz2TVo=>^P|N)3$ZEzG)DX?Z|H zjF3v)C;iK7*a=iVD7Z||^uj0tfFT$YHIXv zEL%7DL1F)yrRWLL(dABJ{J#y~p))F*GO6i2@sXTW z0(ZpA1q(-t;-evbUhWJ2leh}ZM0UX>yE32I_}yHPECFTKKI+&<0DKbII{QyaM`;Q2 z9%gnq$8BF$dP$W= z$)y1{(wuW#K)sfS0u4F(Kv@UtuO>ct4{wyunC4n^qiINh^fT7t4P5yjvL|r=i*`W% zqf7+1GiQa<^rzJmgZdotf0;~(04G+01%`iH2*gU17aX_a@ih`WQ32^Wk`jO&VAKYG z95HZ;%0P6w#_Xecl_fwji~X49t^^72Oa8cD5Tr;clXfzI=+21=7drA2I_}knvHyqy zeE_n7$F~ad&3(VzV|zgjm-It;`XJ7Kn8ONXE%UKzEX1FkECT)NQW97M^`IdzKw~)n z*bBIJ)5~AJ+BB}VRggK8Ni&g1$`B0r$Dq`Pe?ii4vywPizAdG&>Xx1HTuXD)A4+MF2Se_PN+&bR^c) z^REx&Nt;1V5&t%M?*)7n#k%<tRuW_9fF^8rJn!#PxH)MC!yMf-Xt>G*xMQT-EB` z_>Xd*omGx$*hJf(wnPp!>Wgx!3Kzd2Mgdy%oROf*d)p`vWMP4{e7?i(698AiI%C|c zhqH&tFm86d>n#427#E#X?!;rQD9xzYB|Ap1$tds4kl^$=cQRpy+AsrcysR_ErQk)G zWj#}hV7%#AFTAddgYXjp{jq13Apti;J&A@D)DUZKMvp-T#F*%qi5~=->>+*!YMLvQ zsWIm=OD0Ve6DC17ADQxyWBLurUMlR+!TRn5^^&-yKqj1njWU(I2S>;Gud_x>TwGwo z+*ZZWXb(aDLPXq2_S*pE+a2A^F+!cPEh(UbvdH*#+j#rF^Ex`GmDQ!aKo8-SpRP%w zk_9i2XIpLuwvkJdJUlL*(vhP1`tlEde=BBJLgg!^dwqfxXvBWb>_Qaeb|&(`Z|Rr} zS6|Vz0YQW_zj!@aeE5MIf)?oORZE9K6Q7VBX&qy%WHt2VI`zBTQ>GAwhlyUYoZhLI zJ6L5G#~;OxWi!MIx{wpl?k~65kOS>of=%<_>QO15RBQJ2QM1K)w$~rCG02j z{o$8m|Jd*5ZC%}~Xsl~jk_+w5^{vK%)?Ul)Z|$NpG##O)&pZz1B|PSn9$SbSO%hg; zymCbYj`5lNn0cZ`%!ij%pwH#}$qH-_0mT^+zZM|52;PuKtu0P2RmV)4o=g>*j5u&{ zwrWt>kTg@*x?YrBoqrPBmo2HgvUyo)yWcuy88}XzI1K_UQwSIMIwFWiQVm4!z}mNO z%f%4@|AgtD-Zniv-q7=Hl}d;3B23XXCSYYbnP-TGL+_AP=;r&$Ua3z3Q(wV;=J?&Z z!WU9itQZW}o6+H1n(-#T?3n>WeCcl=}el%}r`E0CDwU1BjqUd(~!&|R4z3U{?c6T-)O&g@%NmCkzi(4`?F4>y4P_H(azb#bLY;Fg#{aj+|A0jsE`ilq` zoA~swjvo0!*&Pyx?8+o-e{ij(ez?!SD+Lajg%5lJlK1>8oBc`Ggfdn6{Uus^N*U2R zEG4$~>_V(G66|yRJiOH2)tUw>i%r`P@GA!y6m^NfnOVG;>v27q{)YzrEK)W0 zDp(IRYx<#(22K~<57fLXqGx;FYh`YAV4O zwy?dM2D2A!lykZldl`Xo$;TumEU)~o9(i_lV2io+kbn_ib+YlXjKE%ifc~|;(-xi# zps^>k%Ex2&yUzUMkve;ugU6-h0e%<$Hc8v)Ulskd=CaRm_)rpv=cnRP?hp zwh;BPdc_Jw$%Eel!ut_5KTA5@7!_U_N*2?3%@u~H9`0}oAJ!@2a;wENQE%V|;3m~0 z(Dj=QV8wJYwXdJRnM42%nF?BTx8|txK_LS~c|l7R*JfcYeyMlXh3CJAZc=x54jh(@ zk=cZ;%(c9kU)&E9KdoW)8wQ@!_5P?%2JOUdSPMIkx0gPPP3c|fQY?ypWB zS*-<(-=-JlDTT_f6m0cfL<;sWU@E_E7mlEstp8cU+wkL%1J5rdHPh>oG%bqZ##x^b z7(Ru?(SYpIlsjPRk=eV7dDbJ7xsT5GHrp1>QQ`Aua%Pn@yaf!Pdoibozh|?MY~cvW z>7THf-C0rPYo2-;#x7zQOc_an@}<)qWe)1IR!Il!qY6Tt_Z{UfW_@km->-&8*4Zl%Y4R2Fn-X zCv6I-c}9@KZWd;AqlEev>tR^4mD281UK_ z_SHOl6File8(#A-b$PK8w}6t1^YJF_j@S?eGeHQNzxW*=TGd?hB@2ZrYu>?g9N8+} zsQuFZABGnNxMix>%W1DjmAuo=;zv{(>Yt$PSRg;E_N{%$R zdDK-Nb>F0A!j}tj7h}kkh5l2c8H#S9 z+qxkJwd*R$O33g#99zY4X{=i}XOq+(S`irLeLX>wkHVZ&jApXdA5m^8r^FCBQ*=>N zj9F)91@muYN@!T7`oAV@X<9KX{cdCe`3lL~a%*r{PyR%mnr^t;VIuSi4E?&}<;q*( zP*?fWuMiu>=`!%?sa)nL2V!35RjBTWL`&P2GF3~=%y99;_(_wl??;w)3?x@<@o`Jh zmtIRhn6S%S!Z^)YvXvdbt|_+6FY#jX1;9Jm^9N6@ZSPq1l1ZluoQhY?`t*gLD{5rD zvNMMoSr*~YJ2MQ629x1U6rKu4)Z0g~n3b2xit{<^ajYroRAT;;Jr2n}oNswUnD}rx z<0h{Zec0h!fBRRswf=OzrEQxA$Qh08JEp8c$-0FxmYR8}z+_d*5=)JrO`D0O<0EVK z?dU#@C=x_guL_klPN}GMq#dD!9=JS5X^2!RF5*W~u~u;bq(=YX*P>6EOU!-NnygLJ zV_5pbelduD5$GFyqz){5l+zFM!L`;zB5JgP%KZJXSPw>lZ;&%!vS+yv&S79W8L@GcAI1Av7yPb$fl&4_eU|F zR^?0h&ia;>ZOM}Qyk%*g(zWvGA0tzIRob1uUr)G&&7t>*8%1?)JabqoO%ByI#-VhS zPthWu<%{i1&f43;safJMcMEz%N?lzm6W^$;CW@^Ny})H3Li$Uzg@Lf)b#2*Sbd9?k z8?gPlktZ6sMV=G7qFO8V>x4y0i%+=T-i#M}5Q;e)mRt;-T5{*U$jo|HqhRD8^eY{< z-fBaus2(sD!kyC+_}b!TGN7X1$oZ zpJ4s{5YNH>nz^U1<^Eh+wZ^-bm&1$e)iD#x;xy^ZTl-9QA=&F66i-f}wR5vH3A$O_@_;_loF<&Q>7SO>uUpeZ})daq$iHCM!7KeX5EbIS{&$A?=ku zFPQhBd-d6j-#WeUVVXX4CqIc21CO3y0%uL4TKoOcG4vodXT@h@py9;>i(^vZ{qK=K zYl(H(16yfQ*xS>7a|-%+)!Ixb$5TqbMdKnekb%Pv+n)JV(7*M}=b4B8>hFuc;<`K< z?ys3GY-A~t$}G(C*{v&oml+JfoKi=RunqMSKVujuR;8FTi2(vN;vD` ztEmZnt{{wGzk&+D)_l9j99)BrPX;ck_|Ovu1mqhR;SF^(ocW5$d`Z<$m?Qj3VBx+H zOar=52)YX;DZYC|ac5_0r(2HPZFXT-^3+5MI}k38ImOL?gxsZ{udoeBe6_@?4iPA1 z$%fLuQZ}Bzs06(h;dZo*-#(vY-&$x)q~z>wt4RCKCJbc_g)?kqvT&8uX~mlM-8Wq@ z!KEvbIAQwwtbQCPG3=E}s4bTFmXqo-o8bhzwMLu+iF_Bbt&oNp^oZg^wP5?F6ra7a z&R5P=)m3pP3{mjByGN5aN3Qta?)P7z$>d`+VST;J-Y@?#zPWlNj72EH$E?hI(Xi@8 zU+=uCV3nt#rJoaKCWtTCOD=t6;f%&ZFD2E{&RniCLz*cJk?qQ)T|x4#On-3~CB?Bu zGx`9H*UYr#r%JnJd^2!d)$u&>?wI!wKGoNMvl$^uKQ=pN5M2tfx)ept;<(#S!LlvPV_8vT`o3b? z%S*ZmTPXgBhb+;lQ^{^Ndkg8~@C{Sho^BcDa5YrQ?LvJ7yWCfQUA z+5*1bO;iCI5**oA$g7oOn3B>0Om#oQGpT`2hz+Sn^DbI-CxPut?{_oy92MnGfhf`^ z9D_q@AUugoSch((%1tGOvXYzYMwg8GTk2j}WuARGnLmcIN*>iQrPf;jrR`>6&VZLh% zU^TKGwf8U4sMG6Ib6@S7a^RnX9tV}WKj3wV%Z&b_5I~_YW*a)DNo-t7JJ8YKRBVCC zcY+<6gFj6E5Nvpg%BA}7zQ|GSoqnzr=DYIi@MqM+qF+4j)#ar_fm0^t5NV&`hlItR z7-3K63gLu=l$)B&vWnWzW?;yl9ux|_?eVInv1kkTuzKBk5>^nd}=D|BUZ9O z1uOWF9@CGGH3hXdN&VwovMQ{#H{{cIm+Bghrh9N=n;|VGY&f}$53x^i4vMN(6Da)W z(;K}R*XX7mi$koAD8fPqizgjBP|O`U<%+}z=g7-E&uxLW21_;D1tZL#(FiQ_LrV9Z zP77ktp}f%zO?$L`k3bga`%3kI6_D1>fy%!!xYi-GzD|t9@0oZ4SZjQoKP9XOg5b&Q z+0yCzhG^I?VFc!Yd^u86P22&pHI)8c0&r8d%w=+=0M%z8beMXJf;o_Qk|x-@hKu2T zdgc#Ly;TYiXA6pd89`cLIHCU+oxge1|9$+wWcgolK>V*7{I44PKd1)%pP-bEl)29) z70ZVn1J<2`PC*i|?m>hO$Gsb7((fsfi#yYB6(45+FW& zIsan4N#IKsPywnS#DsMI#)jL>-n1t-PXvf@U%;k}^AjQN70HSbQWCt3Oke?`Ig|+DXi1L9K#0;8;4WBEA z5?q#k@>gIoDo5${M)zV3OzCtpTyp?1$b}Ho7w~}Im*-heBp)l~yl&DI1sUDajDQ>6 zXyLPkU6D_{1U8%_0QrcY@D}g-Fy$~dlyWROUB4kVR9;l)Rh@;g6V~soy85ALON^(B z=-;e!cUqs#8T{6>O0CxhV$kGg4bOV58-7jKLWmKhWL(MPdXP$W0iZNgL;D-TecHUU z16N}LVkyqsfc5R8A90BgV5QXc`^o?T=CKk>x3+$0JJME{>)b_9>w`mRk^Ou13qzmp zh0O6Nuzo!{>5k`jv!Nqb_ACK;8nA)ONSP+`eF;N$anGhRI`ZV!%xl^YBm{!g@Q@I+uTXYaf0yQw*=Mp&W&&AJaLP4}=To4XH9^f1 zYT8HAYQD;$(q>sii4H5GlMM2$ONlX4chLGZD=FwKr*C z+qxuv4;6*&(6#vtEPIa5J+YG@=P!ohn*?Pqx9xY*&aLkvn{PNp7$(M17Zs*1jTP4@ zll^SLeHa2l5ano*rm^;YHA(XL{W4=N92Nn!*`2+6Fmp45^|9xfb>ivL6QAUOfLR^# zl5*)IGW1NsSR&`h!rrGE#mt?driBoC3$67oX3XELzw^zVI~^d)zf;UD;-4_oB{<_lE{VRyHe&qh>Zp|zvqa%|Gg-%Kw`uFU8{Vr8h;NaXH4^@k5)#qv|``eT@y?lUpU(Zw%icz#!^w4=Q=94sj? zJHwPW`zbl>n} zNrBK2E;)-Qj9QC5- zCU_SGXRV8T3kVvqnyO0fIb8BkOUhtO)|42NJ{r+l>wY*Xvi!@eZ$obo^J7HI7}NVe@5f;IHe9XxTb&ebt&De4p!2j zb}y_-${%P#R|b7zOx?RE-?(QX7hk}y&w>tl{?MoywU>QxP}-*u-CNu?#VF3t_nm{E zrhDSEo^;daH}&ayq{Ss znK)-sk2W~*et59gJaV{y7fcK)_ID)uhJ=%n?P=>b07;2Bti%%3maz7D7?+}TNUL9* zy1g5$@nWBoKhJcxvFqLH8lXc@`-Jw*zo{eMXfLfw{$}wJuZGh5B8euN%64A&B&NkF zU61f3WzG9iXzyH{10|AVog2ZE?-5(HtDz485BUJ^1)D%;c)WpM1@r0kodBc;W#jiM z;nefK?k@8i*W_P=Bnatvb=EUKKg}xgn@5-S^lrTjZy`u^WkCp8kB(~}ms@9zdJQGq zA09@)9nkoMbZL3WPgLE^>U*O!=`7CD3C;G$owNp_sR)Yq=}s(QPGQb~8p3asVA0CU zgRn26t#&rVm_O6tF9T80?G>HNe*EfqLf=Z8XMc-bv`ZX+T5sLs+PVMY@nkUML%+YR zMiu+hy+!=vjgMwZ<;h5ohupN_us!pKZc0KG`Vt7mU#iywu7=)`einpn5T^~&|F>-CvoTRS4pW#_#VxQn&4ph zEx3Ao{wf~Pc%T|6n3h&iFF!eSHScGekgo4p^#u-Ngo-IOGke|lbuRNhi;4MCpDkR4 z6!oo9P51ev^v1&s_2>tm%6RyS-gW-dv|>fwbWk_p-cX8bPQl`lKqd6opkMP-O^IT# zZ?8z>qta`Pfc+^V^z&`5(hHh!++F^7_+pU(`J`m;=u?Op{vJ|%nghHR~0=C@oiluV*Ob=N;c3*2*Omnm$>%MZgOG6Mr}_7T<0{|1Sfl9Uyibp`ObX z+`;51yiXlt|Jy^D5E_oKzr42Ece_YRJMiyj?E2gpA$U>{`7|S^ui<=h(sZ$gM-HXV zEG8HS(gi8BW?aRjSZ9ud^-vK-Wh*WVX!L$R7l&HP7{@HFolN%I8H1nuB(q$JyM*aq z)NgNHwyz#!GQ0o*F&^v4SO`LhfZ;+B(#?~v%QMWWcVoWHPCu-qf8h@o z$4ZRz^9trX_wz3EJ}OrwPwsNd^A$Un&A3_$qRMKb+4l|l^z*WZ7C~rK-jRD$mje|$ zs-<3EbN=aF+9QpC`0o>Z%kyQtx=%gCc;DCNHuX>ayU)C=y5V(+l|F-SX^RcJq)}1lCO*`9<2P|NA#5wTwX28lC>F ztt-Q?EK`7M(qv2#->s26$x&+&P;tI=VRJQzIs?+ozVaTN+L<$KfZ*F^oA)~Y==jYg zR|>to*04ZwiHs+Ev!qI$nt=@9FI?U|SI?$1dV$>CS<{fTjmFO}Abo*cJNt5Mp)`HT z9@3k%yYO;@-& z)?BFklF(ST>U^OgfZ^k;7iTgvQ|jo;D6374_Hy!t)60#GiHN-t3RTw7cu>`(#kqgSS!QdLliqiiUUH}rMMF4sn#-&g$5sk&$?^m_D0P`?UyKI4-$ z50*aQxtp08Gx00$?FG-Cyz_s{c^RH#G4h#%7*oysnsm6`>^e-*E{ZC4c6NkLQe9KB z{KR}*(zWGDK+r>^zUu=a?_n(nF!(6rV#yj+raf9rYvW+N-o9%?+BK#k*SP(b^Sl`) zD(>1m8yhoeH_lRZwOYx20GnaouMM&o*aNJ8&}vIAE~60}xTId?qy5b$smJk`*8zRK z>kDusw4f(vmHK0h()F@hscn`J*##M$^=!}V3}fR>XRpJkeJD0Mq(~aUfzY5RCH_99 z0THlg?ykDoCH=9as%kR8vafrh(8SI6CF~VnqoQW-s5a`yZW=*%Q6^w0r}m0$50>cA zUtbC?v(A4$rUgPbu8+g2nh;V!pRq{z&1J#ll23wstfZG$0>O)l;t*r?q}IJtezBuw zPDz48XK(m@O$xR6d*TbvRz?NAK84!BrauB;XZe=xybZZ#{RiUp@ zuMv+U$@6?-;(6Z3JT`d3rENHe`mU%Xx75rVMRS{ac>0a1l-+r+zH!!F!K|MUYI5Kc37~xPSVUOw{LC zG4fv2Zkokyrc%xc53||to#XQ2=tF`&L%q$t>@N|p%olLZ-Hxz6Vt`|_W z*GMh4_vO?#dxRV&NevsEj!8Y*FPXYLb~6ZS-haV<9OhP;T(=tTRJ)WW;_HaB#!FDL zeK=dl>045u8LICE#1j#KyBL(_o4+n4OI&?_b%h~n+5%KZ_OfG47U;ddEl6xthTF;A z$WW#wocg+dr1Vvj7*+5+YoI>wj1V<#7dW{z7FXu8(*wk)Eij5pFaR-*zBDX*l{I_X z@s)%@fu8Sqq*x?}zgc*z?CSSr-;`se^5ZYifX8Og7%Vx!F-G`K}C#{UWbs(-yKCuw<$ov6o?=*)9(0fcw>=UcVhKi zBJaoiqLo5A@e18BUH`JL({}mUb$s#ZJHa;54>7h%SBktUGsR=dQDz6mjeegAR}Mb| z!K`eTY)&=Jd_2MvOYBf9Ln{*yClPH$5%HPFO!+OQZ+9AaH9(+;Ubp`Xps~C=&S^$m zibkL3;mQeF%Ba`D5Jgq@B0kAu9KZOh7*Er|k|rQUa929;ROch2XUf&)c-d>rE-oQs zGxpTm{WWvAP8l!9s0Hs{`Sp#lqKzh9<9nXnes}2uija|eN*p5$D22`LtdwDhd#w|~#USu~S<%<}QWL*d4`W~{-i=Vr{ubVj4sw%f%k zmTR$Yb@rbwj@mPJos@`&>+ORJed~$I!|(mh^&Lawub>7njZ*OH=+XHX8cYkc)L!1N zb(YH{D857K!CnC7U!XYPHeBRB6FD|?mrto%{q!E_5_G>j(v|sDzndU8Qop-H-F%KG zT;}~j0I=_t6#KEqRW;<_RK%eT$M(8QMZ0Ss4~H3w>gjIEN2+n-I8GB>e)wG!7S>&h z>mTHli|D>SzdFywwpy!tqG9z5(}{?`j}RLQ%k8;q>I}&1IBZ;QP;^U#sV4?k5zycl{X% zXpNrqTi2(GNDVak5bezSy0}7%Q@z~iML&vO-eEG5IB3v0qxsr>bw5uDHPBwwM%qJTkNh~X9Q$@XJ5&5SK&coV@=VW-v@hME;N_FV?rpn_g-Tr zT*eK2W+|?_t|waNSan{ne1285TxD~x6q&L0F?e@#q~2Fj?d;A;7|>Xbqy~uPrM1WU z4EnVxV6@I4-X7IH+V8XNtv`|OYjl-RnN7_YR%r2JaNT_4O=Hao)q_KVhPD`{Qlts%=2Iq@^JOlVroUqT5~jZy*xCTs)lAvH^6K+A{n=mANU}w1L$P|=xE?)w zWs_?&R{CUbY|$z+l9&+4uBh-$IJ>w*1U9SMWAINq3%E#@r%vTDr|%p-QZy9xjtW8z zLmS8Jr|rouXY$uQ&HHR4o;3lL?&V6Ft=Q$h`#*bxFj4ct$x08oANVVS`@d0tY)0>E za^ItdvSz)ibwfXhp>XX04y~QFH+3$Bv({9NA8T5LFA5ADObjBf7{7-TF7;A1OgU~U zdhE>@tZ%kg6q)zhl#iYgbryWmpQ1ix`C8Z(W58S zc5|VDp%_0OM})dpvx16@cIVdlmgg@$m&PO~87M|$pKSV0*4!p3jTz>gMGdQMdKj@% z*GW_nr5Zm^VITB>7UP3_@~ai9-4vL;gf87&z6#v(uD_-sXIBYdW>o9GV3s{r1~VWN z?wD)%omc|qX|S~c&7q!qAAscGmQtn_eYJ54m*mxs>-i9k=kjz7hf(Ps%K+ip%zAg4 z$f6%yoR2+T@`a{zVZN|F(61EM<-6L|Jt|RzjVzVQjQoC^YI+KZV|R~CoKG#n{Qg*L zicpj!8|@d>Kx`r4`xvY>Ew6m_ZD0M6ltz21s*{c|1{(9lVsPny=SY^s?-EcU;Mtgo z@Ul9{>2-~6x=$T}PG5$v8OF=i4Q>$N#RH{%l_WJVty?Ne@Rai*kN^Vi@siTARE~Gx z2k-FgrHmdxMr{3Ub;W)xOI8KHT;n|Jrx!lZx_1{hz_ugGHQxo5MxHzl;VGSxq-T^s zz|$~)f1e%yi0kcFp3?blpnpS+cLWaOhd##f)K}nbJh}~gj!7->tI*9Xy7am_puf7C z7fy5yf{w38ueXk)enrsT{=bCCUL)_m*;HK0@t@d8cjW_pOtrGRp2_^X{KUAtQ;ARB*gjgPyLVb}F!@5@?xHH= z87=|8NabxPo~8|behX*#{EZHX-tO|^Qu|re-XR>Ef?(u&>1OulveCO8cT6`mjJfLsw@p_kpH26 zbX7!COw>_ln&dPCz?gfrlHf4`eW3laQZK(ua#J`-f4zpP;tV-(6;DfGhm$vHq~u0$ zQK9=O%ZdNwCZAmA_Y_u)!LOn|Xrrmtkvfs=lZ+UNoFgtWsQig}d4np!V{1m^r|Zvb zu-;8VJY+^oj+dkrgs=K{J(sTlk53mRXU5l5lv3xAkCNIp?<;=s)!_b>k8Yi1RAuRKE9$+2HuwUyDHi_M19f~u+O94 zZmN+y=nf@<8#zPOR)WiB)zOjo>~y!U1z8Y-b+HAjq=@4CBxab*QzseB8w=z_YIU5R z^sW$8{<81BX0yqdb#d6V9&Y{V0pou0r{S`IFjI5z|8#Zcflz-@|DPFSElX7PD3R>h zBaAkc{o62PnaPrUi;1$#j6EV-_RxZ1LXpTev{|#2EiodyO!jrg^BGIO-}Cs_XYRe9 zbI-l!+&ky>9-)#FW1J-`t7?n0D!{n$Na6|yQESC8TD4Na4@NV&XL@<)IXdgUCx>;v zZ6)z-hHY&-Z(jp0kw>rB+khC<$iDDZ2SJ1z=(1GD9mZdvvGb_65(Cge_YfCE%J^o9 zN1~2UlZ#@*!@Hll7T6?Riv!m1x}=b`)f>K;cbcmkiGfAk)liPkw1_)knbf%s26qb& zj-<`yqFAU;j0}x0hX0|<>Zw_4MfTeY$t~sh4KSu^?FjkIj%Fd}629^;OnM9)iVe?C z!WM%fmmjuJT}v!x+?Il^dw%AZg5$bpaqf*#So+2{JR8Y8lWC0-t6-1n9K!Shos>SA zi{0gCkkvef@`RJR{ie#<@i5d`1Z4rLgVqL0Y?b9&=T}IRmqSmeIfBZM{1#`rtcOBw zVH<_I*TLz?kt7ARm%Lp|Ky}+;uGI@K2wb?wT9{8C4OciKW3g#dP%I5R5jU4Kfjr(bz;=|;)eMnb9aN|Lhja5~Nrjd>@zy%+ z&baq9s?<6#<^fP2YdD)R;EM@z6B@X2%UjL~t;PgcCRqa+=TXo@Va_iPTcDc|NQj2Q z9`mhGR#)BMBW>3_NG+O}({TkyA^Im#${=l$Q()QmRl`<*`>)f=aKc1SrU7*g0KcIC zUV1N^0!fo=exgFuUpiFd5UlsTZ$;dc{DOVC#fq=V;cLr(Q?ZT&4%%HaKx3yVpY;!9 zxAY&&RJgcgbH=l!d5W(V3tOa3*X9Gr`q&TK)#+ada`kB=hPYCY(P!zgfKmd!oDaS{xIi0Jkng$M~)+r z2Drp{)u?aprD@1YCdYWbEOm=M(@}7n6hfSh2SUihk}l@!{R*5)nh~&QuBnubXOJA- zC=Kah!E|=qcTP_wB9;(OSAjRA{;8Nx@^>eR0@r=5zjVfbcZw{^`@1W{j|y0+iBEIx z03eNI^05`;1X_*RmhuYuo0axW9;r}Sz)IJYafNLqu3**ncXqxh!`i|d(84H~dEZiU ztx;S`532Jb%cNos$|0X$f;mv5ZrMp#sPz&D{$~fiv%_>A(#&|79r&^^4r{=0F^yCL zY7(mi!X<#TDMRQ|c3MTJv&RV~kAvQkC!42~Y5~sESu|%2Yc#Ru0bb{Kp`2>e2JpNq zITFhjgr2v@fk}&kalq|@9OdV3+zW)CdA_Gc0eo)sQjWyZCHkDXb&Jt&inoC93G@Se zp#X;#(hwa1mHuNr5Aoc4NGk}p&Vg^)?qq-k8yszEq_`Q;TK*RlK2)k0(vRQAORw4=q{nWeT zBHV7;XcPTUn&6tiE|sT0VKI5}A+qV~k389T=2<8pnWJe70Jaf9$q(DrHV4dF;X#(Z zPj4m&PcdH#6)ovlX4)S;xNPaBxll_$?hy&l)z92SezkwNVoE)1m*0cZkHe0!cI^M#4v7Em!1x2pb*hhHb1cnD zS{fMsH_gbw0RC^ci5EjG^;M&*teX>?a(b|pn+L!nhvR(+r8F=Qz$&-OEWl<}%c;-n z%ATNL(pv34v=IUWd98xGQA#YLlxl9fRzOggg0K;SKPH5D@WR(1xIp`DYZh!F$Z&)u zHS~5K`~CD~H4}Z?k40rap6_ zgirnBNK>%QK8b(C#u!&^Wa)E+xvan0HAotR7*35U?U^%?ak6cYZA_?3o;wd&_(xRNTyL&QN3BFQ8oDSj&`@t_HgNF|(6G68_3 z;{iyTPjQOAL)O)nA0=m3bHLyOA_BjjNeO+Z#Te0}W`aYKXVV*^c_3dfSf`VF_C(1+ zo*hP*pJ-XuX5)c_%}PI=Rp-1ADmfzj$?wpfGjwu7r691saR3ILu8xPG7^~bpQ^whz z@0tv7md+^Xb`ZdG4@SU20gd;&mu}2jEkX_(#QN?V?VKnI0M9F%7oVl8zJ&Z8CwEvE zw9^@?x!=Q+4`dcVkaMSv;)fa%X=FGZ(9#D#(CBtl4JagJ%xZsjESW>AcO*VCF71@O zyU#-pJI!TB?&0~Maa-osjEdhs`1T!C?@q>?GOwnk2mr&IrYLK2uTvFd20K?~4a)V`#18=ePD{wIMa+oC z?Na}j$&c`$e$L>r^$Iol(Ptu0qdN{9D>4p{6KIUL(78pe5c__*2YqN{(%Bf_jB{4I z@S)gv-~B<5kRwbfJ0^gpz=^q~Koa5lbEN;$HaDfdT6Sz=m7;mzgTfqi5V05fz;ng9 z=atTa_>6>`BK>PizJSW%E$0pvf?_hZ*)g$4tjy)Sw>}HZ%($2$Ly~ohLYab{!L9p` z;jSK$8<^Yr%zeckT{QX199%i!f3w2L4rg(V4K8^rc3)vYF&rkI5i*i&WZLJ~l70+( zBao_}h3FrRJNf!*jlh9Xfe!5wzw*7G%NQ8uyX<=OP?@ zI|Z)Fyc+3ck8XfpM_H*X>7$uX%a1sUdrR#(t}p~bDaHhfW$0K?@W-$P5gh@SQ+Vf_ zDmS{aqQ?%biWk8}Nv)FcO%q)vbC2f#wsd9hG!>R9Xj9pkYb=G8?(;tyR}9#fh63SE zGU2PUCuUodF68?SBTBOUJ2)a(H&*co(5pN;wrp?YND3yg`7NvYIiUmZ=MX#)>KK=@ zy#;>FWtB?+X~%st0cD$D-^5L-?{AFfIPq=Np@gxd_Ub!_%P{JHQcXc~(S)suZG*6# z4s&`rJ|GR+4G?2Yp`{3WPx0tRzaQr$LAohw)&pp2&yudjX=Xl=z`A`?@`&Q1#xVtr zG+`3spun|Xwx*z0;U!jDvnNTiq)?rD_pF-TpaN#P3}`YGH(Mt*jGgbQJPK0x>Rs6} z9FTl<=JH>^aNL1%!&N|-q!)N@IR5boYNVGWh^A*`KC+HbcfYr;uyA(I?jXq6sr~1? zOkN^S0O5gks%er~%-3w|O8>}Lb$wqr1?345v(@iSZxh^(?5efkrXNA>xO_2aT%ZbR z{k>rj=o8ho68vI+qL_icm6F~_xad#xz968DL9b3C-`}1up|PUuXESzqC74{`=bplLzvEeH5XuEb6Kcj=Fc96rv<ppoF$y=IpbVgpQBkAGJeRw!mzwBMilA55upioDLH ziY&i8E{FhD7$tb9POVvwU7! zUr?#9CG%TaChd2IH&)1kl`<{!SF3;tu3%d?m`>zta1>ksKNq+$v%A;gOvO<0-GES2 z8$OKa6%|0AqsD`*bGt#|~_c&S92nMiG)55WaWo zsQiPJ(dJtHk;I2${Q6gwOL43wpkx_z&Gg17DXF$jXq30J>Gp)>uDv*PAYzB~#nN3B zc?X)5mF@YcX}Z=K>E4UF}p-1DdV-Z9Z~oBB3OsLrN+u=bl*C%gM2&Fu3g{p$|Cl zW?QqR#1_>=^a{T01X^*30Yx%M)yK|OR@nXg=~c-zuN$$KhU7e9g1@5Z8gAh*#sbL{ z#?t7oEUF9Czujq_1 zB%EJwPvZtR!RaZWW2qt(z9!8$Zm1&JWGH>qrh;DXbr*w-#j;lMbWOgr>*LSQo&9^lt}}+Y*l%G*>Uhg#4_}* zroEC+voDoYj^TfP^35=$zv3$*$nK8~bEb=xib^6Lx7Gd2WA`;28Nku=lUunfqfkV^ z#^!)-MpyWo%(C30pxF^_tRcS5f0;vZaWB8X_*B&!x%dL^o#G$iF`EQ{iyIesKge9S9iwS zyTEL{wM16K$I6vo{qjc}4>~!sYS!iNB6l!t>^CrkY;s$rTZrJ71O2Kh;D~!(U7w*q zYSU4Y1rySpAPJ(=Sy}=_!X!oB%R2nrK2>&zDUw_6K-VS504i`S?Y6QOaXslwt|aln z#~S}xIQnLx(|!7Syw$?Pa)p;i1I~&J7#8y0F^xHw4oOVh4eu~{X8gkYFE0+YWF-+r z&QA&zQ|9MliiW>k760G3cYi_Mu&*;s=&T={GVE9m8*BuedhI`_nSu!4qYdi;lZ1!VVLQzQsic1 z$&ey>^(4FdFLq7>s6W-R&Tr#)K;4)^u`0qz6PK1%ay1w{2$2q`?e?L0K>QKB)S3ln zcHK%HwC`wiEveFd`q!X{`t3wXgSQYP`>oHdrZRs;clv$|wEA4hAv|Y_GsCw;>@EVJ z=z}?+t=!OIdq{%U-7|Ncyc?0b(_UT#FWhQ%S?y0PL3lljY>e%TU`Z_-3i zLns61?y(NnD~i$%uslYUSXW_;-PUt!AU@5@r9QjLMvnrebp-nLe9)8eeFGhjR_f}E zFLtJXVgkOv$bi}vC&Kk};iZ-)KOvk-xT*lT+n)z=x5%i#G5+r`Kn@CqnMml%yK@>- zJPS>kN$5(evQzy0laZ41i2s*x&F(P=Ccu>1>HGB6)ll{`9)pSuZRG9x_g#sjR;0@5 zxFRn{+sq$Wh};K9%avbB9!voGX#!r)v4)>1BwXWfsb}h3=K;bpAlf`9y?ltiR!ggx zJT#LOjI>+|3CZ#>Qn6R`|pxf#m-Q9!6MC3e^g@$b@i$7pB`E*`EPnb*B49peA zctfdEyg;dM)<6)ca^`vYQf($Cb5?yaO4S37NeJUZq6+JJZP8)E%M!1T1;Zbt&oxG? z(6*Vw`t?WpdU)&F7YS=d`ZMoL$a&5++!uaVH&~@5Y%MEQv{|3?5e)cmuOK^SG*wg= z;`=Sy#RTlhUAQuBp~T+Myt%Sb$k5go0L^0yEl)e{5{1(ME+@fEFXORa=kz-V%Z^!e z_o;5L)?D1NeCFG%RiM%vm^DfCsgEy1-YWg{E8Hn(1`bq2L+@5P7gxD{c3n`LApEI6 zG79xzgPgz70~(T#3+ai?8Isv7w8`Pq#vh$pOx7&3krP1B!o{dz{f9p@%1&3BW?dwE z{IljsYtwG?=s@41pygm_yO59Uj(ziTapgq#hRYbKy4U?A3oP*qIWZbxkdf-5ZuW{FMtd6GxJxkL^1Y3|ZHII+=tj0T9t zqV*lBwik80-G<8U6dr$d1FLWygHTY^{(ReAID(KnDaO9i^XvDiE9fI+5%>UptGNB~w-;2g{R- zHeYG3X+It|sp`4pTuyGft6#Gk)o!RfL$Qx24l0)QDYC!}q4NQKqKC{l&u!c8&AyKWYJ`d)X_&IaXOIRCfhX|dg+f%3QUq*^*i<9Q=YqXIlnD95xkQE;IeeyIa$ z5NBde%G2tRd^|%I;y_>_Rpr{%|5;%cLLwAnXTS+rk)TAGD0ZA`SQ5J7EPmC zF|Pgu*!p|{#qHux>W?k-xHqMClW*d}Uss{poX46J^xBMTjSgnAcC)~(jytpd>@3R* z?#RKSjKske>(c9FQU0gG{Ty}*8NsD}f1(jS@&hOOTHV=i48QyE-F&dPx?Q^x0jp>u zii4yT;44m3|L11~YWaOsH<{$MGs0WGA8pQ(IrG~x5J`8UIkcWtj4?>gN-1Qz3gU&W zQ?c@ZeuK-V7T#0mTKUqIt8&ETlw$uoN9iZ$p?xNS;nBB*<>Ii^8a+|p@443$QXYOI zK&pYmiSG=%J3)eK0XOsL}Y@QqtWajf5yjcPK~*(xHGLjdbo((k)7tBHi63jg+KxcX#aWx4ysc zuifi9oPB2InYm}?o*`W0wGuuKH4Xp(_$tcsS^xk>eFXy$Ow`AP=j0s#{2^13m(li2 zKQP8hr?s4eeyCeCS)LTbAdx3#3;+V+#)`9*`Es>2K{BL-74PLVi3k-mNkN(s6KOF2 z;H4jOVAj3s$Jq;csJ9m97gLU}TmCGicv-o-J03fDY~Sw3FLEA#$?!rV^IJx_4?P!h zxCkNWvOzLBeofEoUQQvL%f=9nwsI3vw#!lYHOGJ1di{+e%MLFux7dnS#4)y`B3Y|J zhrTDlu1*YxS(khV42Y+O>|S>He(|(@PDkq=;`drsG-G2LXqAOr3w^c4>t2HNPhB{X z1#`%5iS}vox~ogRPjP=96GDRd!77ejD#eo^){MADDTkzO$#t>(v**~KVyQD8`h24E z+)ID#YK`Jx1K@zMI70oBfNNfJZa&)u7lM3Cx}E;?lqX5nh7@?Y#_&h)^uluGlfU#Z+H+%D0OA^UwyYNt!%yAWCbAT;2a}Qx4L2Tj>Z`Y z;VXxcxn14vEPa1Lc5zN~6^qyNjH~wetxb=dXC#>x(tIgYA#=9p-f9Xa}hsPN4e?^OT8><5aoV4^s-T(4jh2MsR~T zu|M5E{Ryd)GqO9oB#AuB+maq*Vpi1Lpv#*3$f1Xg40*-)mQ4G}{uLb^2XdE|+~^h> z!-K;J!j_A1WBX(qq8RKukFCz}yuyI}_=&dvz!AQHDdlR>*v z!2yRXCS6M(m=Z-_FIK1(BMGcM;ge9?Qm&qUL}8_@A@N2A-<>?(G^U(b{?j zlDW;+5yIwt=BLl?c&VyEIDZ8Uo~CzPk(ed)d}}RM_$!Z?^2r_Emiqw`dc2o9G(ili zgTWk!BV_;SNvly@=qw{C%&PIIwgt_DP*>=Q(d4dS zH03)q!n#A^M`e*U6sl+K6ew|mbYaWp(Lo#V>3eJt4hUtaxHRNu2Wt1OC0U&n&&&oTG#2UH?Y@&! zmq$=r(^inAaL1s^`1F5Xg)X&2b)S4-r8s|i(=?t~6hql6;=XTWJ?6&`dcW!F+~-kJ zP4}vzyw=2Q^B#ip39d`=(E3P7XiOcwLh&WTkZ8>2v;W{h7WcPSRqu-7fG_n6+m?}1 zm#gWo@lRA6K1H7kt3DlhYIb$hYo+7H3bEN{WPWFx;%C>ePyK2!lyNCo@S0s4T<^N^ z!emEfLO21hdTAA(5TSTyLyWS2PA8LKhO1Mhm&-iy$zHJ9u2~o)l)2)tuMugS+I7fP z!Mk1?cu$+|U?G#7OM6Dqn_c=?{(%G(%RcP+ww2!Mh=`mFpV zWy~%H-&Q5fFhw^4>4s;Pe#U>WB9*_UUH2{Y3ShzJK99pHa!%u=azy#JopCP24ca5O zw-#PzC1~RP=e9Wk6-~w~w9>_%1T^0q8;qhUi#vp>!8i-xK7nX{^mbVzhK|EC3b(_n zs|BCCfd2NnR-jHJF-y3ko5if-1n+-9gvWR7@mL|?!eJ6J^vx!;e(QH~yAFoNr(f4< zqmudD=|e_|cp_ghqBp;NJ7G6@d4wz^0d-)5Oo>+hcIy4$W&ID8={tGM_#%fYZd&V~ z#=b+}`TeQm=;}ety*yb$SUe6NRFmRCzfFRtHINauoBt^DBlNi=a8Ju`&=Z6X1V}S_ z25=XxR|X6PdX&4dpU(06EOIkK@F5uTunnp5r*234tWc|!j%wZsbQ18mG)WHjv7Wg< z=O(@r?BDCw)(xCSylQuM8sg=L#uj^7cE+C?=X%nr(f4}%8(fG}JY~JsW~U8>X501X zAyC3wbslkl8&gMECHY_ppY%Uy6yg}H47m{nk~-Eg9`g3PKz8kw{*d@L@D||;iVf6J|6$JlkGebtp|ga-kkmA zd7kA~XSqOhF!T^5?%a1w_u)hXS8`jSfI=NGH2nH)=;(6%>W8c}%9WUiL~u>cgo|#b z*4+Hjw$aD^k-g%7iE0lrvi0`<4n2kvV0oePt}L4DB-7V|*e5nU z{7H8Adv3Q9Z;-X)h`JYGc@=}Qr<;msJGjxo(k`w!&Lc*P9;=rHQ!JmDk-a$hC;!tJ zZ_A>^^4KaUYswNA3$k!?BylkB{R{DmZeo%JeEN=MPdYPrg7K`pj|v?PPkmhGKLZoC zh>E+>_G&lkpk*ldJfsrh6G23NYIty3N4~-%CKP*346U1d?)KIO4@&UkHW(q_Axh+Z>Rsr{Y#KzD|5)T zz?NM5hdZrrG+CxQ{N2Cgjt=&3=RndGBg-y~qRl`~Fe5L~?F?OdyM7$AG~~bdey8#G zj?Z#QOn)Z1p^s0YLj~bWqZq(+{d4Km-&OMK7>o^JBsfI|ul$pc|WRzbvhpbIAIw?#k#vbLFn1RM&pJ10HfSH5tpK zpbZd5f4C()B@y`_PT;rCwkw61hGuH8Ke=N!V!Xh-p*NyUaFXL~_w%Qzy2A$l_jgS7 zh>Rz2GpvLMS?snlbcUNS@OV_ngM-NntY7!&d>W`KTH0Fgi#Bif~ z3%f=0cOC|NvNJ6lrm))eI>cdGggCf!R2NT+0NpVT>mM8tzGO#YxF`5DZU*%tUJXCt z7`~*?NlYOGZ;2>zuonD zD|Ls?@m$@g5x8tHXif1!Jx00!{67U{Zso2A0}2lKJj`ml&T&Lv_yEaX;T8)dMZkYP znZtjyA+>zGB;$Ra*l|bkh=RvWas*R>eH&W~5ghlAYKyWyw)OZt^k@F~FlUO1&*qIGURo5P0s%z2#yQWL# zolPB^=Xr(&(`@=?YEgvV=T(UFT!%3I<1g`_)0w&o;8t;}xp|J#eZFa9d;_9&(T! zh<~}SP|yjCQ5K?pMo{3GPfAwI>kibKJ!;J7n?D4S5{{s@2gqSa4^F98WpolnMJhRJC;UBNPqvRNj+f zVT7nZ8Gb5bWAeP=mSPy6m8(`fs}p*v^?}! zJs*mS864R9U}>zbzV;Oh`6&=g$Vr~$>79*~k7L!>NqY2x9HX`XREKRwCKoS#Zs|HY3GvknVV%JlO+ zzhzhwy@wb3H}rk(Y_rF_`!m!Vahsu|fWgUJTUb+U(kUl}j1_DXA95=s< znI=3Y&;JGp{`slaZeN}9G!uSBF#>g%LLwah$TS~bWwxm|CvKdUR~M=be5lrfJ&Kiv z&@kK1ltmXx22w7kxuKyE^))l^W(E-f$ydXXqczCmCZy0JqGM6%iU9xU>D%GsY|;q2 zPk23|&wC~TFD%FtRA4e{OaB3pT(PRWf9u}{d}0+OjO{VmxBKY#@PliH5vMmvh#ekW zc{Z7w=}()KOSC2WMMqD{{_jP*-E;fi>Tf1a2p8iFF{VG8SC@T8#SIjX+k)@lR_R~SBptutKY!Unxn~Z#JGCihtkFd81R6b z$ZA<^LSDI^&|&LS1XDXB#Y&-v?Pbi8luX>+ciY9F^PT|tK6hThR|x&5kX2=xvd`Ji z9>|w1TlSdA#}hsk)=lz`7l`|IG4)Xe0vLXHt)8~tKI<)%9oH>lNrU_E0vG&-j_21> z4UsoT}XK|2_r=uk8K0`y)wa3Gtd^J<0Z<$dliJtTw-j?v&)!DH$%tw8<8b zcXhdN`1{+W2INpBLc!Fzrqt!tR5?ACSUU$oi3B})>U)$jqovlLpNn;K!*iql$OA|5 z`NhRWtKbVyfsPRDF$kscpLwxE_8FtPo6={+BZFI??pGT*Fo?m?C|Q{p5!zPUmsYgb zh5NB{$1Bf(u@8Fpi-p>i>=`jDW8xBTlk4IUD`RcuA(a_2Ukxf)CVDBFAzA&I8r|S* z*N5fE;YAYADYzr$LD(O}sB*N4$f)Kj=r6^agQz-*(A|lH(Cd4rau&)>gI8wXt%SPA$${Nz}5!D-85a$1G6)leX`7 zSXkHeL$QbN6a3@tO~wYJCdQa#5BvVv#IG9ZXM_Bf20vaH^%E7rnW=2}0-WjRSY0d4 z^_v7x-YgQ7`RfrN-KcNDi-kw;)tlG@S#Y!lNMkmbn8sF6VI{jZQ|jk>Dx7hZ5%~x) zdWS!BH{r)FEhHF?Pry9EKA8km%p*x21L^bgv71@&V@_bu1$l3j$gZ7F+2PT`nX0!m zK7BfwFX=yNoF#gY3|%Gcc4b@qEQg~43C3at_Mo&-blX5IR)6h>AZWvJTkONF<2Btg zexU}d=TdbHAE<5R0w%!)MXF_fvU+RCzrw#=>wg}WmH~u^!jjj}9^<+fN2U?|#KkB2 z+IK(IUoAcad^8?4_1NWO=(3+karGf&g5h&1^l%8P!WHNO(WU(YFZH!}xC%o8MZdfJ zCCi7N-O#)uM2^u7F=YB2nmS1EE-pi<1ZMto1E&sGFSo9Opmb;Gz zDO`6+i{!g;VEH7+asuwqhHU;q;tQ;s9Jn3oeBL6{U}9FX+zPdR$?6*d98G5I9SvCs zX7u^qesK}La=hbF)(SNc>IEe-Y4S0GG^EVhNt%uczzYg(U+gQFoYIbQC1gL)4yz_xIA?U4HWFO@u`WcM(7 z)*y-HlLu zx!u2v%OxH%lumUz>-KGi5L~|c6%>`czrf9nrGYol= zk2Gwowdy_`7x8W5^t3v0nKJv!$~7Z@AEx(slpL1i*?3L2D1psX_Op;CgLm68WDD@) z@sSM(D9)TnpObWos&H2~-RnX{nBM*5oy4wd6Injn^cmVj{E;@7)iovuT}1AhGRV&# zO_nzRU0O|+_a)JDsq!YXq1*h0i=d&S?NWcZLbpXbLicUif#`PCF+$LggZ39!JQ*2E z5^HqnU36&^fO5K}ZdhR_X%d+=dDEVqF%VoNXq!1jqnQIO=B*Pyj+H{-56KxcyW6wB zRv7j{dt0J6?sXOW;-w!dgaZZdHWZ~5w?778&L0w z-CYqC0s}b8ndp`smRh2JHn&T`^>q@&W}PI{2VT7o@qq;2bq7ZQgxJ6~c~Rt-;>W;E zg$yT%QB{i22uX^jo*kALz8=m_JkVFS{64K1dJE5zj2p0Mx*=X)ES$6!&3K*ZG`_oS zr|KxGo{$%2@FPz8pF!}O9uiMyS=5(rz9m-5AEz!Yk+NOq{rRZx0l&_48|VpbxjLTO zjwQqO;kp%vb^SbMU1OhowxHshw}!lmUIce6GMfJAqZifi!+?n(_;9GS>5+WAfK5^H zhrh346j<{#v_Jg#Y3jAj=WwSWm_pm35<=@Y4OPGWo5Egp*A6u*>Mu?CdOp>@e%*j7s<-8qc)Dq#6A4ruw#R7lWA)EW?#%7%lO#&4Og)_cLV#>xAMl{4hA%Cb1}S3U9=nS8IRqnE(YI0|8+ z1@BxD&qe^w4nBUixQ z?=kME+vPuP?$i0Yh~pwDv%ka~JRad^;Ge(-D4BX?zC=0PQ=BMV^6o&bo*{O+1(BOQ zB$e4X@2nd-V$zx#XJ*9L#m_<+sS6+8nt#R5)j zfX#Q@#uNnY{5LVMv?23LphnV(g?fJ;&cMU!ghMTcs_ICr4|Y^WJ_2FKZfku=aa7w@ zyb(FMtj64r#*eYl{+ry8`F8p83}uOcU$MoNu->&&a>O#{a>L0^{Sy58vZyF-D2tHV zdhRx_p7@mM4|>@me4e|nsod4N%}F5tlO27i=;jTKDd2sXi2IlcyZ^)6nzQ(eXrkAY zSHDiS6QOter>DvX0<0vZ_S^Pi2W_&B zKq?%RiaA}R3E6+(d=baZEqLx8us(NmQn2-0ELrc>;{Ff0Bf&GUQ!q&cfCqhlsYMJ* zBp?Rf$Rp0ThpAp!O~h*phM3VQjq3K;rjXXBkhDLvsr=+>(k2((}lwgbH^bv-239jN&&bq z6H6eWU_s*aPhk%iIbcqa#OXDD_coby0yE_!4ILf*(_;?@(L-A+It6Ak8yRpmWCe`{d zO2)u=#!hG>rKrKD8C($#%XB5!Qc!7s7}3cO!Z9a|XAug}xJ0FEZ;q8;k^*t`&BsNy z(60j)&;MN?E$TFl^6XBLH@sj}%I?W@ZTi^kb&gp-_kL-Y*!ouI$4n6#>f8W>FS+pr zlEurXdb526N8eulbh2hZy(`W5g%j*VoO49#4W8f?Ho4jtBlq=0a3=f`2X2&@&C(e` z{0;>QoW#+;Hu@v~p^vlj(XOiKNYYI-(JcvzEc9YtnT%|65_%o=Aq=KtJL7JQT(><+ zzs`yEHR;j-l)n)0zm5Ya8MNapO6av_-|gE&A%Na|YEPNd`z#B=+pO*piS-uog8QOd zus0Y5AHk^@jSsep=s>?Ca(QpLtFYcwU%^iT7LD+a#yt1@|3L;-D* zvjq?ibB3XJG%%7q){hxke(26eZlx_lN!jc8e_r(H!(SurFxY>Fejee7*{tj*_)tUq zZ#@46!oj5w$B5`T&bT)eszDjA(N&ap^e8zxc=>9B7b+piHNf{0g-7zznik25GDm#Kj$s{ zT5{FA{yj%+VWCRT*k0?-XCpKwPLHxN{FYk0Psa_i9};9!0cp z6=*cSDI6EpZJ%#DL%v16)nNkTaGS_%s54HAhsoLCB(N5n_f!gS9C>U|sEZTG6%|jH zJUNLePlFy`!Mq3C-^5-49OmV-;E{rp&G=HFdmdFzkQN0{hxquiQ+Q}GtqM70WYWl;T> z@+{EyO?KU--+ge+l+26Y=jtyB@T-1E@w|I6W%Y`YP&&3lh0IQdDS$cvz2`j?L&(E)qKXdoAb1DAjU|{4| z2EJ_G#UkO;45n^Yq8SdIgW9OdEt(AJ&3VL7a{tAW%4ybtl{i4QatC1^LfpCV8O5Rc zPM(}=b?3kJxCM{~Zii{dRlWc#v`{Kd;R#KyhO`%|R~)|Nvn@jojbCQTqiW+f4#JL0 zy-%Ms-VlDDCFp@KhV}ntd8Y21`m5xCpgJad5LtNhE7o+LN=pLLVfhpyow2a-!9lo-QF&utYc{PCNX#BPWM};>xHqGf_^SJjs<*Qx~dnu zd8~+G;6u)fc$mESBe9Vzg2=5=EDchT_s6YF^pOF%91Um%5#UpKu!-Njy{FryjpE(4 z}{*U#^>1);lB#*< zE$ItP)_LpNePo{u~AQr!*VCXCdRB$zXb(Z87YyXiieV~GvEb=i`B#S9v#a|iMu z<|%j;5zCmaL@-&Im#jd9!p{DFP^B#B$n!$8VgI!6ojFv>qOUi(4_3(M50y0z^6~^f zWVUE%(8=$S19c%}5FmOd1l+-fIY3i;;*HMCT=IR4OhY3^m^~Wo_4|IjF8=XhL%G^=OpLg4rLJkfl zmF6Q?X!y9eYJ!SBFYQ}3>?l?1C(q4cXNjLki@eYBGka^r{%g&d4KnsusT_uyN?Hep z0~q-z4@!18{ce>FwT3J`T(_@&zCQ}uUiMAg#AbajaE2)~dET8epU4A5UH$}C>Im3? z5`rl*;IZy!DpVC6{=-1b|7y(5!`FW5Z*AIYu#AYahDVW)XE}+ayKPyVl*W`OHZce_ zTRTydiBb4oxK+oEM9fPy(3dT~mfV^)%JIxL;Q5SL?FyE_8+sRo%(fg_na|I9^i)*r z9Z#C2vv190NU$l`pszqs1{NIq4v4e7nXex0@+fa5$5c|v$!nZbrDvTKFmmwa`>u`) zvR)QBtMhu`9lRn2zRL5{nA?Y;14z>Wm5t|h9ue4`7%%FdJ_$wd5Q!3c(fp@Nf!)aE zlkslUGP1ml5XDkO)kj95aA6elErFY}^t8LeZO;CHHy^bFLasQLJO z8Q$AwuD}dMCq7^4hisgCHQeP!u2`Ag;?z8U*1596$O8RJpaHsNNj6kS(31or!s5p@ zDe0&J(7y2mV3oH~U+K3{E}6DxD&hv?->KWPukY39t0`}mkS&7Ol97+(k7iAX~|{-Ic$6kq?^|0S{a4Q3~k$)w$mu$)|u%o91V6w zhJu}dqBT~j)km@{xA~!;&1UTDLzYc^1$j?jDRi0f|!NS_g%?2vsT4-8Y%P5goXDB(lDNdro{% z)RWYeW=tKe`0h^!aL|4};xx|ynEM&nGYFNL_Ms== zgqJV$!xY5=8j;<%P4BIQ`Ni>u$e#okx83PzT)dY^R6&SWJnt|Q#lPn@#?ejpd14_* z#r6o|hO?aYn$C*lD95|Y&z{@Oc1h+=`39$eKY?m0(hy(Twuxuj%;&}?Ll4}+ie6KcDLxE27BUAgbDFO_Oz z|Fi_D&jH}=OD!%V_5H^5IZB}iC1bha3g4Zsock&t;jN#(Q9$^Lyf0{HxH4@beYD`F z>$%goZD!yjCZ;RP^4;PxJ7M1XJ1Fkr@&GDXZF((8$y;&qwW#A{2V#bBR5Ik|F>XPx zoAF2Lcf-}6|p;*NB0Y2 zDZ&5FNIq3dSx=D-R4Vs5I>6yp1j|TsigFst283| zJPO6;MUEmS972y9p{8t!;kzM^rx`rAIKTY}4IR6&Ju(!0CU<+oTY~8Z>cHo; zSY_i8%A&G-bv5UOeb8biCSo>F#_#jjHLSiSwWn0W^?7}5x0(kW<7(lf)$CeOnjG6V zOF6wfPjI#dEMS$%6MmR<(v?=;y`1HPvvlakV33x^L>(Q_g-L#EDwQM8P}bEk)9%!X zQUobr$bhIErE^j7wpj6fY>H>kaD*NLfO`=sm$6g+ayIaF4e^>Q0+TwtE8{Bk&!L}f zK0n}VaqKOH^U?b7q}fWR$)*SUuXki#=py)R^L=fp)Jv}3rWBj%=miuny3b#5D2lcFblE$z+U)U3G~;@)8NUx2=7Kh z0DB9#7%`F*L)6f4wcqb5K=!%epSRC4`Cc4S6@id&-2LDb z3^8=TF4P|6IW`eYNO7#6PS76QZAbjvs5*w3Uph|@pnZK3l4X4H zjH7~@qMJl=qKAWWvb~Vv%D9f*=yEFZH!YYLl!S^^zacl2AH}0a^RHQnmG9ITQsDvY zIw5K+{Qsb z6pS0KxdvaDiC)l$OL{HVLoZOQ>(RmMya>8*^wg+uL_nvXcF5(U9KZVtw60t>!_f@f zTf4ds=E&D(v&_`7-48EZ7~ibF!<7w*E2@7Z&*xO@+I+ZDRPK*9wjb(Zpc>-zD-Om6 zz6u^{KYKS`2fGX)(lV0Lyo<-wI#dDKiO@Da6wfYSuS0CMe7wUD+NFFO!`KSbn zMl@{PziHMPDuq{gb=3qhCS>CyiVI~m4=4uH$a+sZ_f@OH3txBri7?E2x18799q`J- zDl@$BNrR4u*;5SJgWpq*#$lLr-oOa~V9@40t-vRz*~1iY!!o1Z_tr94AFv*P-sXO~ zK`^v30HXZ2eBXwcURf*~FIRtKt(K1;!;I6vf8|8%FB^+518 zN-zQG;J4G}71S-K#2LbTMet^sM3t$cyHlhf!dbcCsaaprd9?!f#(Sf1)6mRX?TZ}NJ^^@E0QrOlbd$ol5cawV<$^2Sz@2h-=BYe55{ee6F5$IMFs@*j4sXU#(bVURYYR1f(E3E2}NxJO3>p1hX8SW0r3>%MUnzbB{ zDIs26fsof1;Rk53hjA!8o0!Q$sET%fYPqrKz*_rsp%ShSSyjdSB4>1~{x!k|Dg0V$ z+Y+$u36?|Fw7tmh`81t1xEVZc{5se}uV5`or=h?P*crUGa8F1u(%t8_8NB(*iMCUDd z=Eq}xj~Y#>xMlUY(LTqo%noN3wY$1uNdJm2@el1-yi(o#w0vS(xppr#kGxTtM{ zgA4V{o8_PKYbvzZvS3E-xtyMU40h;|g3yE4HFSBU!@npn9J+x}s(45E%!Ud>p*0K2 z!IVUVS@6S4<@15wBljhD!(>T6gWrZzo(?vZkXICkz+tI<$;<5LfzgCDY%ngBjOCWK z`DUtjFprsX)Z)V8#KKt-Y5Zw8jxoJ7B#SW$Yaq@#LaN=VxKz-SplYr}{s<~uVXN?p zB}I8MkH&b2t$g{M;Mrioo^E*7qs6_(1F?T0C-0RQ!kDij>rnMMQM! z)N&ix;OUWa42FU})Yh-7*`-LhY}wk#a27Dpo<0t(zKQ+u+IC<58u=47Y}b@vVpThW z;wmR=>VKFTH}Su>Cub>TC+=~HR$%5A6#q5S&KWT9=F$Zb40|ZY)Zf&EtH(@E5$c*- z;ARR-3?zkuCQ>e3@z8{xJzKT6L(J9l`N?W^>ys)!dUqu?^6>4&RfpU$2JEBWm4|~a z1u^2HEe8P~fIEV)Yfvq#iQhI|*fdi>?)7_D3v?6xS{!0GHZw?P&R2bc4#tT&yRiK> zH-TR|V%q}A0_NnjO{4xoC2q9uVCQYf=vI&!sYE*pCWVqzFWqYDm)Vr&;CMQej9=8_ z@c5f9(_gTpf6OlNzh3-l8m)>rulx6t!tnRS2!T zI3|F)Tsmm6YRM;w^la-r?Ko@X9bjF!|3!it0yEJ^Pvgh0HL|Cstp?<023`w0uo7wH zC-3k}OGuKexv&vw;83pXM&d+8#T-C@>VE|447x+HH!v(mD&QWICZ><70JoxjQ4!W@Q9L{rDDYU!Wo<>9$|x^$b!wfVgRB)SbBR5)r1$` ztnZ&9<)5c5%5fuKIT8^lXl54{VjuZGI8##5f2QP4E1hn;Z_mS^_d0r^_veq?5i~Gn zz_+%Lrcg%Nn_l|OXzwK@CZ#Mvh2#qjbm`7jvYb7Rjfx)R8+-eD`kHx%(7#Z@8LOw0kW(l{WS2Z@eGm=|Z>k8GF^5JNwdehu`F|KNUr0)n1rH57< zXbZj@M1v#((gpF#zGFAeoCs4zdTB|5_V#O&uUN2UTQZTd=Gs~^#Az>0#Y5h=?ApeZ z1tdP~%-j6>oGM~zLH@8Ut2P-6px)qpzRZJ0Y{4WS*DZuFBE_sn`Sh>MhBq@QA z3R*)Vq`~%%9|N{^OJGQ^D}805X9BsU&$9Dkb?C8_lvX{i7rJTvC&@nJ=7rN|g^5DB zs8@)8lJ4wA5B6|F&m;3h9s{2Po#kgI=)Scr&rRRv^G~5cA^|fE9cA~rniCyF1cBtK zyw&q>^NDN7yaBR(knjCp+c^u?WD3|V=$RGVLp3z*s5w?2Nmr^TSX(y|&)+!!`#_oP zY-$;V3|b@zMB_Pr6``zlTz=2T29DV(QDMa4Az+lRe?kkE)~S5p6Y5zXrLDSNf~V(| zU&ThrKgM=?4amZVz0;-OhBHQJ-_6a3yULPoM2Y>X8mZ|0wy+yc1F+0KaAAaiZ6v@< zdTKE5=C}!6&Fz^NtJfNe+zjjRxG~YHt=}K~R$kN=MC~r<(PYe{Go#K+m_?VSvp-Y^ zNiY9f6!nH9JEbH~zLET}u1VTMVzKB)6)vCuB01^1Ken2FK9c*EL?3x75@jKH^4k<1 zF~w_Eov(HoPV^H!I8qT~Tu4k_6)#d0mD6`>!-fAYKW3B-Y+EI(q=e6=*KS2W#(@e*TTnwOz%Qb<>EMHzdWhw)@BkcC*ja(D_bW0@@s)$olw3yOvBA{6dHf zhzzOx{lViq7Gq(v4pGd)wu&~Z8| zoL-2N0Z9wjqlm$34q$9C$RR7=1PTxG3kqWA!k`9eJR)tCWn{z1^ts(Usn5^){PipO zmSsxGIEX_!H7(UlBrW8;ya7z_wTeN0UEVW}9c-Y6Sz>x6RO8-pOTd0*u}6^Hq8<1C z(-8jkf-m@Upa5%B&O1D!`dT;fZgd#yvzBfSS}?#gu=j8O*cUl2EJCRx^9%<}H0ai< z#5@c~ZHjN zHIP0pBawNPv7yUTm-a0GfyXBcX^ygeHM_%Nuv_p{SkL!l{=YW1w&o#WWr#n~CsW1c zAHt!iuB8z!_gRtY^fXryb9IvUeSAN^yX9R?2P6a=7Ppf}2my2iJ_GdC%l>H^tGh0M zMH{@B+dU{O9U@m^l?&U5+7K&krOPy|1dkvF)K_%t7x2*Jh@1>5&KD$)F5b{Q8`t2L>*Bj~_VpJ7~$H9{#-vr4tblwsD_Cy2>Rauttp%~+(hV&}JD7f#q$i-b+G zl@fob-v*KAZE5{VC55SlNoX0>(;AKLAEun|1kI*Ca8}Y?>$CDWtC){N;hA1)G6@!> zz}(vGkq1w^s5m8*YkGWYZni3z4BMIVkf~ELY@+Mt`z1wu_;>Hehet!>3-*P{QCoy5c=~il3yg) zo`)G8D@h(p??U{RmMa2kXTGXd)j838eIuP)DmgT>N1{^Lgarv`heFxDRCkbYUneEPxq z$X@~v-P~N2gLVD1V~M`7k!nQbNW@UAarK=t0lti2O0e#-H?E0sYic~ARb8@EG4|p+ zrM;PB0@+zbFYa^6yd+$mJ^1lGwjR2OTFYYyEA}l|4ul_V&G8d7LZSHj?w7MLnzYz! zwDgyGXNp9O@TqKO=|uGJ-Mp6L!k_vU3Vy_XMWEP75{I3xW&6|j$?ZMl6>wCG9$B|U zolr^1I{&v45RTe)fc_fmfc-9ve&YAx_FKw!JRN0)pVBv}2m;bCK71y4_Xl+}z4iQ#Mxnek1<2gIsik5$~nrKk#6>9`wcDAf%rN+h*4bS8nG% zMyl1iAqu6Qdd4JJ(dl%bS#+Bu;}aJ!+^t~Q)5FH&iS%`*H>DgB%0bsUW2+p8@Lt0%Jy!4#+Sj;S`jb1 zoWGO4U}iC$d=|L#*9ih-oMa5~dxRaRf|*3(IHHq%yq)4KmyWB?M=FK_F-|mtF4EH8 z*|~o4@~YaE{FD1lT-iH!^cy_#7IG&@%B-Lhvapg}e?!U6)@C~1PlvSP^Ec{Mp_0w^ zEuGScLvJ*@OlC9*XWo1L$(8tw2oDxmpun^)C26DSvZ@LPm=1n&>-V2_F@p4dIkxi~ zE(4&}ekfvolZWu^T;yEdRlQWf#J%ejn^`QQ<`MWIHePrj`^}LB=%3mvf=FZYo$SWr zn|F1(r3%q{$(N4?t3yA$cnYcU)gYXN9;PZxME#R;)^H9MX@%L@e_q@6gNBuK4buaa z9u%5(-v8p&TPm%Vmj6!|#uu9U{G^6#Nl7caqd`|8@2%DFt4FFgKJY@Yu5uw$ycIuU z2)>sIz{tl5C$>lI{y3*7$Zar4!nO>ku9>^6JymZgtsfDXn6QTRdaKueA;Z3otLHtR z;Q+smI7zlIod2AHSq#*G<(n;#+52*3a%f5F)?1_QM-5pUB;n9V=g!%#1JCBMi!%G| z$hjLV93UerZ_*FnX+Jxv=_-ck zW{A`wgR+P0P@}D9cIPzQb?+gpNL596Qdn51I|b?ZA60U!kHg3ytPo{2W&ZTGUU^Iu zqiTrInH-z+3{ea9OH6I#vy*lnB`gcJ$(ZAR!gE&Gff)w8LA=?MC+9@{*Na8i3y07{ctSq!~E(v6OMEHi@+-bB-z%ZusbY@m^tk-WVZjq^Jl~k$$Bme9iSiy0dw$~m<`BvucK!%!~ zs zAg&d(jgcL&bWl^pd!nC!;6j`Snn~{mm!Da)-jA6Rn`S<_82e){a>T6tnU(IN5hAo` z2;|The`(Yw)%pOD!Yn|u%E0`sT2!oisl$Gnqwv5~s8NXLhN z?+e2~{R}^Ls@&I%+CcB-Qu6`*N7Z3vJ{-0T zyr#{b|K9c0Dqc}fi!_)r<1&f=>)*c(>20vDEOd%>VVDE{4$3mdVoj2o^4&&+(Z!|4 z`EwrZ`to?}M=bl<;s>I)%Dl`=me2KB@->iO-4I08RhC0t$Xi`GZ2ECW@t2jYb-(BH zqu>g9LdzkY8Er-u{;WLRY`n)>t4qd0aoxP*`)oep1Aka_a0TB`U}f}IQUsDztoKu6 z$rAX zifYjzE&Vc7pUXjw7;UY7p?0AYZh!LX%S$6 z{x6M#??=vhqYzq%i^uC{Bk5~P?x+F4F{`Mpe||UC@UAqj$K32{wiD5pwS@3T%3$b> z2#fQ_T{*6D{@)i3gw%*Ledo5Io|9HlI0|_);wDR7wSIDo5zCfanx2(c2V)bP|9m5t z%U)8FG@2fjHmQ{?l`W*Ncc1jwDaJ=>^v^85mF%7W#bi5fXG7SnQ{#C&H|*?W%UK2= z&mjW;nC~E;{ZfKEGp*!%8xg_aS?`ABsXHaX@;iFPQwILR4d^@GArGwZE`XUKn<`S= zgX8;i0SFgK`JvmWz-KX=d3^1M6YC&U)$u}B_w8;q-l^W+|<%)8CP;pGy&j^iCL{=w<~;su}84a z4!IIx%uP#wW>VayE=Uh@gyfHV+rv7iZOO{jWg{b#ZmNH7vhmNEH*|4hZJw!X`7K%a zye##?y0hsTkXj0$dsL2<0Lk3& ztFK&yTk}0U`x&`DJbZg0*g}Jfj^3dw=YViAl)pR3i`s9Y?vXRNsAQP7XLs6Hqvde9 zQJZ~~a)4c0eJe2U)+I$cBk~tYcaaxJpxoURDSZDQvjIQ)0qyIUtbJIR!fvzo19Ol4 zCOTk@Dxh$*eH1qaHY~j_c_xToBZOC2)8YA>e&1?fyB^YALr3(ehEFY$Llh0K(`I*0 zl++eR5~; zdcN)DGxA!$3Boz4d;);>gT8KmCLj6J%h=lmuq)7gyB5y|SXkV=Q`yh_(>Q7G1;xd2|Wi zutWT(8$L^xt?B~0OWjj1;0vra>^I+^EN%VW_%++AFpb0g*u040*JhI3QnhnMk{&iHqebYfwYv?Mpq$+LR$;<2n}(1W?FrSOM0x?}hBEO)gTfEq!?MlrNCHJxjaFZoy4()^&*R#ioN3JYuyzJJ1`Qx|Q{E)+^jkau2}G9oEC_8# zhSIvC3NT~qoy||&IllJH2d|h1q<@MIxWQWrSpT%4_7Msw(w4Z+z$U-|ztbE|#hke# zcGm4#X3FO$TYOUA^uPZ-lpdWec&pj&H!O*D)HGijpn_M2yQn!C12hFYd!MKg1Kb>r zUX=WL2FsAm=0+wGB*J&+B)j2qbGd#WWh#6^KFT>S%W}sGxmVGk3vhE^y44=!y$A)2 zZ!~KsBll=;?92uaf_9WRzL!2njF%TiM_>;F(U91Q9voA}tl z$<01LK}{2SP=(el-23&)CkSgX#-Uu{(UK zv9J-U?%P7M{E*^Ew)Bbv`m+UVN=Kl>C#FC0DDd%3_4Y)HOvt)r6nc5lFQbj0xs$i5 zT12z}=2&}@escQ3?Jl&(%UYfwMVe&2)<#aE@sn_%dPfvFZx(7H05jN9OE#NwHl46Z zA5tG3o9*xEpWbfD5<6lmh#j&UjcTf^DGnb<3Ig&!)s~&} zxC_RBdx}LdPW!b&iWqEtuz+NbpT9yHR$_dwaff+(w6Q5%d`wj2S@zTCH5s}3`fQ*R zX08t7tqAj17C952$;=<{R`8wXiKI`H?AvIjg<6I1n<{C_f%3WfVobq6r zDl1QBU3)L{E}W5>;G*@Qzy#dN() zy;HQD@y0NAw=mP}_n-%=^x& z*Q_CBRdfKf){2$o#K3UxY3Vd)?7NsZWM6k2_WpxeOUjZJM80Q#W?Wiuv7fs42S*_cj!4A0iq%E(dG|6D6JA*mtf~eFb*5y4AVuIr+&ncLUtE-*@gc zs>;uSAFt!a@}P+O@;;p|tcwfY>-v}rlC1EHJbA-ymU2LJ_%c+ymGR6Rzn0z;LhF=s zmhN{bqat8g>UOt2d`kS?FP`QI(_oca(;Zv$s>xs8l1Ev>$Mhw)$YVQV?MCc4i^iIE z_E7-|WJ!^J#{ItZQ;q>Us(mDTD}7HK-b()+T1Nzrzqf$S$kF~}j;#HgjCJ@Ic}Wdc zI(q;Mhsno`kO~(#Z_ve}c}8t%k8Q@MTey73I;r&^aUbb-m%1%---SxIN~d@=bODnw z_ByX;uL>r9Q@-9=a^$C_%Bd6~Dx!w@8d2v4Z(0kzAIRxc+N*NUZ(MjO@ck2M3yqLH z?y9(WTrM?Mm8xvmCKKGO~Uf|)ttl#a(%nSV_pzE@~xI540XW~1W(%IQRHRh52 zga`YMcg;_LEi5%n)r|YEZ?P1f*YHm)(Qb(QQbv*ccX;E2P?e6cJnnc{`@usBvAm01 zt_)#nx4>?wI@{g!von{7X9|u*(IcewPqycMQ7TuK9wA1Js)|=<%Tcb&%PpaI4ebha z*orKZEC-K!JbR1-zRjRkM>MSTXSxhDE)HLkDW)j8`o}#*52|^UJv57*WBtP}bSD=w zD+<>DPhu$aJ!;7bU*6{jj(=JepqQyc3xzT9g>7+eI=e&{e`u=XbKfb!`(QjSay_(W ztkr4!>4+Uz;T%?<%CYrl=SsYh|2kFpY21DeDjJVIybxcV`CaeE$ifV<$f^bRuthek zseQ-NEoGY=JgOR@)R?goO8YI;=}lx?fr>WE)`t>?T-uv;2t*5dkWV!&ef{8o{?C5$ zUb*VE$NfJu!Pnl4(IM1=G5@$?--)*G?5p%2Tlc-^XJix-e+1f@aP&vDT`RtQ72@!XMSm;|(OOxS?p4Hp)8b-SZ@@9^GlpKBa^?%i^n@IwO)ioD z64ZYw<4`jAa)P^KqPms1n@wkU4Q9rD>G{%u7;hpLd=$jmH&?HY5fWkfhYb~l$I#T6 zl+Fh3(M&<*Ez@{<4zZURyqM2l@GY^I|P5n1?dQCW!Q*0JAjcNOIiS1?O;**I9 z7SIoEQdE(uX7nvfa|9%EN01xaZhZgCJU~fPES#d^ug;cTkNStwr!a~QSk6UIWBn|u=C{w{x8hbD=MNbWff;x7oHb^p7pOpM z_J}G`FtbIi@XEJG@n1M!l*`k9OUu|&n;xc&dWo(-a{0_p^A*hzq6OcqBg+*CT9FI} zu_AO}Yfdi4yoRYR^k1x4p>+0((e?H3^Zkkpgp3e;DnaVF6=nz~SHuQWkRky(Kd;-&r>@cNq%mRa|Ky#kk-Bp15*kM}CyqD;;VcRXhwkdHtiI zzQchF3(r~HNN?wr(*u=b<=-x zp#?HWkeQG}0ij1}cGnX99GbH&)Yvoj8{O^;3w}!a++h-ok|-92&X3h0_1ABn{#@Y? z%rqaAj{Nk;)udVN4(P_Hl_i8)xsHiNLh*8W6yI4A3H0m*=z``Y=I#>w>3z9}to?f8 zf0EztMxmdjR}+p;PaU2$H+&ok!&kl-{{3&fO6PqqxZoRNyiO0ZO_?bE$!&(1h3r-~70@jyGQW8|6m8Nzx6K zuh_nIl-w@ zoIN%uR?hdDmn88LvB#Ei<+rkjFZEt@WcRMw?$tj?I33!1>|XI6tEWbx{;L;+r6Kt? z)v5PVLER!MqZ1G=lXW*_x!Y?IF)izMoI^2^-`qmU{WPj9p51up zF8B22vhL=t_}dv*lT=S>A~?Kq9j-+)L&74@-QE{u-lCM2(0ix0fEC&0@-eaLxITGp zgCa|VCC9Xr%MfFTIiKqJ#L9a}hqT=&jsxT0ISCmJ?7X-TH**H|WlecBcYh{Zhsv77 z919>A?yd$!Mn7?%A9`HBX6U{8dj)fie3_bc?;uWK)w27@_-_7~k3)aRE2msY(V7pp z*}0jYgA8x|wC1`e&qBfKY+8w^h0?NLgyprBV*e+a(J3G8mx2b$|K<9_{RrVh z7lj*Zp4IO@dw0FVRS$Ba5<|~K{4XvytnD5?r}RS{(^S2ZpMx2*kS0bl#3OUEE%8SX zhd81QQw^h!S{Ty(Bi52%_6j*p8n1*^w>q}#ICq2uw}4`3gyJTergV>=l2<5f>fHrq4q`;C|}T z@a?$6JSs5H2nkJb*?TZ!y(mjV$7r2Ty%7vxQ(k5*CQ7W4qz$Y(q z6&m+N&|EG^9*j2MdH^*{tPy*8s<8On4I!>CBi`X>UY2>Xa1OtAi`UcUEJe#2Z7Bak zEQmP0t+`XW!*W%Yx07$I{8xx1&-;0cICCgcYMH1Xa)i00_y0na)KTUK?ukjFzYnm) ze~jIs*?jOY=@ksad=~rmRuD3<8pmf%>gGR&r|>7O#>M{nOztVKscL!0inKCF+=In) zYbWd@*Znu$ccu8~FMqu(i)jIu*DU>%HM3;g+&Fb-TIrz=I{cVoF>sY0`!{oj{FtdQ zUY!F2zNtK1fQ-tIPv1cCtoh@vdPEF>%ZB>iGdN z(Y)mXhFo}j)i#*?6Ep>5sGp`9k-RM{xPrwVRepO$9lS8(isHt`oZH{oaQ zZ&mX1!5qdLi@kEMYQD#d#`P(QhAB3LBQ`r)gKO2mXd*_rHnl5oF{y-G8((^pUx2hxgnbD_@3=c& zGfb%Erd-HQXK2wF_quOLfUj%${2Nk{#AfMC=`4pV!5f!Kk4s0w$agnx*ya^zw!da$ z9uF8KMe=KKD`UYu>voN|VRx}_&%6Izafz-dILt52&unuNnJN`(I67)}RHn*ytaB+U z=~Y_-o@C@um*ncHN!hTxGg5?gUo&Kftm|}~nYf4A3`lMk&?HRzTysFL@W>E5L~2(y zf2kKvG&KtT;gLl+@H`0ny>yiI?Mg+cYQue8Shn*VInWDYo7{CVnr ztU{th(K|l<1ps(%4JtH1>%&-4-wLQ*;(w)cd+XB+e5ZJM(aaaz`z_)wpgr`dZ^uR| zx&ebT?zwzjGr4}w62kPa$~?e4f=Pzm76t9&O?=k1Uxo*20$xsqIq}LK&3hfVx(TvR zzBUQJG)^`;{L= z;89HYlIDh3WhydW(-ySO9$RdP%~!J_01hv!Q#~lwSS0U>G-r#i|IT(Bi6$|tnf+Js zjsTP7hsUd#w2aZzFDlB)2`pw(FqWV`iD$1pm~#GHDSPLzZ@FoFUhaO&%lZNn=mm0H z?TG=Z1*5?q1S;KFk`It0k)uCOf^u9r(|d zR1AJq5|UV&E_;1-g~E_WVqU)e^=$QwWdBMc5EkmxO!>NM;=X%15v#NF;KZpq-25>~ z&r2+H>ymfx3Mp7A3XXVOY4$s1FmO!CnW`asM;^&saAPkxH;~+Y{((?K^^A$P6Wt8)S{dpG=7Kat!x4E&mx}r)v$(7l}N5`3K4PbqJ z0O>;nahdS=h7yM3@J<=Vo&3bXSkzt^AO20)irRIk>7JbwL#vH2GOCRD?=2V4EEVwn?@E>j5LRv}`d2Mr<7+&@zjrrelf?n(D1hB$i7jm$E$y9d; zM>6WwJ;gB`-nUf3=@p)jWte_oL_db-kclzHz}v0b=|0*B&m$X_kL?RA^fJ)qUz zGi5&^Gk(!>NwReL{@Q_v?ig|0EB4dNB%`S5fpCtup->Dd*1HTA zIr^-h74VS?F$u$dU@5g=u}S)s{naf^u^%AoWcnILyb^s){qKng`a0z%prheojR_-7 z!CRLbbwdpIq%`@o{*$vue&pF0_a}NA!|TvD{9Kc>(&w+mWTi%OR)f6%Te^Y%L;cam zcNuY6myL*!UBtwxTUzrT#wIbmiSY@5i99{WAYPr-!L=hQJ(QBJKzf{-Ip-gJq>Sju zuhEeIZ&vVZ4L3k~+G*v^#f&cYFNuv?>_wPC;fu|^f{Frl%6yYG^@59IV$XAqIR#90 z04pb_Bj)m|C6L{_dwoGI(QYN)AB1WOaF?iwzga9D z`Om8zb1lUCaS5Kw9g&4E#f=KO_e|ktpQ({tbQjhUVEUFO)$;G9@8++or=EOh-}e#v z|8Zc^X1qKW2pm)X%IcJ??vM1*jvSRUzn|p_1{KPXunrz@S`h~}n_mfKz|7{OluIg?RDRYCM(%saf zAPABR-~3|;ziv41^^&kC{2b)ZC_@N6(&TScNivA4$A;7$ag}>pJ}l@!vANxqeXO{Q zZ#aAWUw)QjiPxDPH2vN^^M!)y`2zXLP}*4DKL$8Y<2^wZ&p`CkdT6A%(0(;5i#K3W z@u<-7wbldwj{Ip(ZIm0$>9gijaj^&CitmDHd{frHhz+ulyqkBfUfpoIJbrsSh!qfp zFWZ5$9}KkSDhgGaME|a)fkydq5oClS0qiHB28s5AQ-GwE8W|W2YRCIb&?lrYFXhH^991h^tU|O`3zZ)@G_UEca!hPBdI9|P z6>Tsiutt`LH6>X}cRJbCi}}20-FJizZl*l)4;wj@*W5q#JYTyb$XOHsZ~FPNZwDFm zuX?Slv9n^*R&})+^Ql}%>r?*5$*~WK>V$EB@%B?YL{)7P@M6xe5{zx;RV~y)k^ZAR zsTz}kQVR;WAEGDfYP?HUDKRTv%u?{rK%@;)e*IOwO@B_!McVjl(N<(Xmmd4h2f+2+ z{;WT!R)K`grmDD7Kq}1b2`u=%<7gmDV_=N>z>WOuq9_gPPl)|@MFocqT<`M#J!yjQ`!l_vMw*n3nWy$JZC zluyYEMqRGRl-P|ob_4K$prUWfPs;^NP))5(gRA%+*=C+Jg|JrifxQF3unAgNbNjHK zo%XT!;A{WqrAAeb1Dzsw1n*i*2)Nk6EE@UH;~&S^nf+8)9AHRPPgJchLaxfPXC`d! zQB^&F7uVtKd2RQBmOrqobfmyZ&Tq|!I0c`OIXt}l%Dyz76!dVCTUHHtfG7P?HQe+Y z4QwUo2^eFl4zvylxs6;HJ>Uv+soO5VLe*B*J{1lSeTfX4=lM;pJ6q|=apWOy-y4v$ zlGLai?73EXFqC|r^a=cm5Nq|Z(gR@@2)Vzk#VQdCv_tc*BW8XN{|ZMUk3bgm7Zw?N z`NGYjftv7{_LL{EoCb>r@$sQv9n04OYVe9&gyE~%FA{EwKVIT1KDL41n=n`c$v|Lb z6?Vx>f?t+zu=Lu;^hTb!NV=SlBc3DI2N%9Rz$rgfoy>#?ZGeR0XYH#ZV9TIE zMal|pOzw!vK4iUTS-I$r51kj!m9SF1JF8bM2mm=2f{|bL)k56LMP}Xh3R6T3_2h(E zev{^9r`}Ut;zu4rKqSH_L0!>zb3gqR8lh!Aq);)OnFEz`ZJDKG zCfYWMI%Q!NGSHRhzxXe-ucuI_Bj}QDlA-YA^2j%LLz1$Eh)Edq0>RE#AFAgmAMTnCG+bs1RxdK0ERcK>UD~ zJtswG0G@w-_V|7?xRS$5O@Or1%o;Sr3#;248VhCmFJ&y+V{d+wQ8jtxojt#=Ld^A; z1|e46*Kl`VnZ)kS*HZ;;;tS_U0Y0*nEmi?$_naowSBe zISP+=H-7LSV2nU=;+QXkp4J`rMc(~CDHl2>*3jnbzNcni84O)hfso4J&(UrQoCwz! zu+-lM)#gvn?+txo#nIo+pEQPk&e#vNPh3j`p5LUc711dxR<0>4-V8XFy-qY1`)>dB z(2Cu)WMq346LJOdCPhrrIj}fbyzX8_zaF~#Gw_#szw;?Q%xxfDW7FBLd}WOsfY5rF z4exhVFE?kH3AIfvt2H9XzYb)0b}Fr&lZY8C@6b8&;O0Y~vNP0kns-gEc=CaC%3 zIoS%k!kG)Je=5uaozFU%ee`M0DeswxxzOf_5UKC`m zjMwo+1U&ZW_fKsFYm{wL5Sjyu-DU|AD|ADu6aHFn-~#+I-7yX=r0_q}_y#>_IR9)4 zafpUj?9voTOF$O12oH)tD&I=d++%TfnZgZ}F(huWZHRW=FdOEra^0!tHxQaG*U+@t zER%v>L=3Km9fCSz9Dh{-ueEpmP8F7^)|B`&kx9^RoBl15JP!y7M?A4vv1}0;*I>A{ z#tSZR1Sj5=n{YZSAhW_p+}9tNc-yO!7ua94Gse+CPJ1RsGxf#7mdI!yEV z9XsbhqIf4Tu(X_h_-I@w^M;VBBR$dtE)mY2*yQ)yUi@s zXMCk67cxX`QPxBQlhVT%&vi;P!kQN-@ye9k;9P)%xCGjkhIwCyEsTIVb9IjiWZ#H9 zA*2y3ts*mir|7wkr)}VXl=bkC`Ggzgi4A!Mwr{=u87*aJrFf#$b1gFm%I8dCYMBh$ zR=JP|!wg<^dSe+7F{+;~3_KtlEEw*526NIU3&Pcm2fC(7`&&ewl?4#stmqT6fnSU9 zLF*X93%Vkyv18PP*zfjVD$SAD#X$IWES)lR=`a+Z8!d|zD391QJfKU_FAWXHbWkoV zBBd+hBMIfO71l5Wx?<^&@214fRtC3qFtuQ(JzOo|I>Z3blYGQvfyi_x5I(k2rwLc6 zG2|E4D~Cc&Gs>Uq78$S#E#3fpid6u!*xSUxatuhF0rw4B?S5Arcm#(a4@YNXLz)UUTk2QQLHJ`F9+Hn zKAu{TQ-h$i7M2HLyCIBst^)-MHR`_<8B=MXN~2RY}c)<568h~U71tg(2PrjB~i_Ar8K(h*Hj*LI3%Sct0+%hyHip!brAO;n_% z^j{ZkcPZ_u@j8#N!+Q#*d<~um!#JRUlMmi#4N{UCLkd~y3TkU}z7P_qQm&{u+O-By zCB>Z*)PTcpr#+IBSC2s#UD6{5aK9Az@+)XGP7((a$r>w?a7k0dIcmJeZM1_IyX48$Nu1AAt`_ z_k)LcN8vk1@xGN5>%_AxMvnSNAq``&cWZ&)37#vFmNN|}yTyU?R+Gb$U(Np68o11? zRD}4);!Hl`W_mb=ReQgkkA3(32__jMPOx>Y*o$6fg*`ah(7HMTTlNUI^xia^iCkT& zodNyl##ZLky%D(4x=Vpza$G$pV4vE|rg+SU9Roz&2i{0-Dj`BK_u! z0~^^WxBGsC$7>Z5$BL-3y=D253BED42Z%D4dBh@OvU%q*-~q}R9{!X2+s2&jvmgcZ zZ=cztizJr;GVB;rmSYXP=hs{X&~){x$sauRh)^ss zeM(rP8$*qB7~{n)WMhT3d@9z*0F&tj^N5Rh)$Qaikz`cqCoB>XBlu?tl`iB)L)|8Y-b2>|zl%X@}RYn_1 z#>lJlbWscdiVr7SMK7wa@{e5s<_zjoLD@mI?p**b@`xaZr)(RgcE61%FvP-sQmh^W z#3Ml4OD02zWH-;!2{;=2BILF{$yB0m3(q|cw9mCUSzi5Z9Vbh1ECGA#MT^JN9v&dO zAhOX@K1xp$LX&wV84c&sGbB;&w#;HyqXA<&`5cx-Pmu;xo4;r6j!66B?0NE|sbF(f zfK@iapP8O8gNpX9ctO=N8t0zzHC>8p%ITJTu_6yd7B}n-FOF=XQ4MxDC6g*-QqvgO zgz(xa8@O}Vt}pC<>Ycb`ZkP7sjNGvpY!$pR?(@N7e3~}dOSMuu7JBs8j0L>=Bqj@r z!cG)FQdAI}b2Hx>VA3XZDCpYum5qS!=@b_}r17hmexeu3TN#H%#jdm;t~U%YyyR{P5Ve&#%-t+ zsL9*~M96UJOaV7*TWsNi^t(_H&em6XW%!bgTi4BHY`d>FqI)flDBP>&P}t-! z3GZi427(18aj1iTLWNa+%)%hV2b(<{E^o+W13zRG=UL=dd;r@)+;snOrU|EpTY$|5 zp8`tJsXG+eo?g0~ySX8HM3&;YO~`;z=&nn{PE0`oH_)S2bE%7`H5lGTOq!^H4M zU|>Tz!^N=H)4#AI$kNpEn`u%ybfQ>{rHi&M(%<6lhJdXsN3UL{0F5&5&EXr*)zCf@ zdn27?8lr^aK@XVqD0RbE9VX7xLRIj3*}zem|D_%>@PR`rG|wmCzoYQ91g-%uo~f_GkxxrW<}P&lG`#3d;6e z?&H+?tMF0;_gS`dHO*c+;mB7!eAsGnKX3Kmkp7ykM%r^M=I%O6x?Wc#3NPC5)~cgZ zhJ_3(CVX>Q3mYw}*qru=$k2EDh2TC1ESVmAk(>07(F49h3A8bC$*=Cj958InAX`NL zikwIoc1~z)?-bl{CgLX^OH>{n1rHVRK2OvSM{Z5oGo~)$2!c;ar1s;;KUsCO4a)W& zb;Esi*1Ml`K%y)`h=F&oBE9K}-*l_5$*LV90Yms2}@KT#FW=dzPe()G$#sv$2fs^an@F;V|ZSD*5QXqRM3Ji4Ky{| z0GcSY`?EscMSdJYiPpBtzLr2UwTwam!X&Vgkt7_WAitCWNwz>oiQ9*i%lxEcSlr7W z*~)aUWZQ+jT??(*&rGEmm8Z=po+sj2`3M6S6MbZyAy%qMpc z;?+O-MB*y7^CGokhEt0=Y~r&uNsj^h={|eT)vr1WQd_y1s-b1Fe6YO4-jB@(|=^vCjQ$Bs0s zb-1;h&D5>Hc}H?kLfEdKQPKvsme$pe4aut0tlt|h>KT1&$3h|N+LFHaSTM;rVwGjJweU zz8&`?S#q_z7Xf?E{i*6LA}BQ1tpi;7TWuBEe*dUTcOh8hU3N7M77xU-w0C4IKWRPq zX=_Rh|Mj%jWM|Df=H~hUa zkH#gfJBpM*z_1y=2^$MlyrNvEe+t)?BmQ`3pH*f-$Mk$3D#mk!4OQETW{a;@J`1q< zSjYslFNSe00zyKzp2TPdfpd*)c)_c)QPkMP!Z7owLxVrj@WP`@x+9D(YxL0Cev&m~!+C%MF^_o&i@m zEfQ7U_u?}f3(L7E1YICsQ!bRnJg#)83O)NAHZ{_>|7b(nTtF5XORZX?3{Elo$V@^J zQu%82!!#+MA&OK$??;-_D{HJn;V49`NGa?tfN`?PdLef zESFn^yYk0?5}Ry{=frsi;HPj#!;$fX3uhZ!L-f*|ILoDh(R=6}Fn|j%UweKjXBNst zw?}l=#2hY~L$@oP@OZ}Qb6(-cI--Pbo1ruZDC$idv1m$s+*n-;ctT8Tg>@?ksgMi~FT2R<;- ziT{yE6#Vxy`Z?+NX#tK#9rLj`Bhkxh58)RZF7Y@!X>_D8nR&d~eSATjq*4Lli|evR zPl&&g-U0)MW$quZ2RHXODzijNXMs113Cr2)7x`@CvRNfAcfGHyd=hvc^5t8)F#&d8 zj{bFab&HM65{PWK*593q5IB|7_o4B zbIMSHy`?fTU)!PXSNad@kRUQ~`zJH=Y7Zfl@CmwgSsWW)9crv#b;}MJlpsWr1#%;Y z{hJc!BP`Qa&yOc@mzO=*%o~2r!~^Q^ixW7ZdZ)}sQ}CN(2D)HFdS?6s@}3M&&pFHf za@8%n{H$t{5d7lsvEunZwoKysP;8Ef{Uc$$RB!^a?VIIDE1Qx~x{cx^jU}DI_GtJV zJHWM;>L`tZZ29PysS@@l~hu-yQKJ7>C?|wmQ!FWp) z)x_4n+D0m1#kpv6!+f4^Z zNfxv&aCOHQZevRlt4z>$O=w~{BF{sh#hd&M>aKqsTB7pWxbqx7FBAuXOc9+dy$C(Qk;$N|-KD0UAI`egnhpboNhSuxXL zJ=;d})g_^KnVHw9aJ>(U3W7l}$ zhe25VWT1!;EsIvOD@=uJpczGALqW52xXT{Rk_-3qOj#1hbP-r(gETg;EYjq_(gOGp zU^~tdd6Q>@+@eKw;IpCOwV4u6BA&Ay9YEg|BlGmO;#x1@_w5({wPq|1`;I}2N>AEh zxoUFf+&3c2+A}L%IbK0eEgn*mw>2e4wp@&09C*9`9(44-6%rLfCTuG*1_B>-b|$F` zrwhnQ{)!Wgv)AMp&tuFUP%%m%l5JR%$Qaa{Gf`)Dc|l*PUiK5`V3+{se4I>ZxU2GGYA$@2=)#Kr^65z@v-&J|ED~6swMO?woCR=w8D{@kyA;2jhClA=7PUsBR9QhNoomMd&i!p|j~;SQ=yMio~6%)x_lLAX0ZmNeYVLoW+4miPh+=jIp>A%sj7 z5KT%YNJq;QWxwQ)^`6Y5wsEqwB&G!~G`7B+G(!CWOll_n!v{(8Q}TBlG+pedEwuX$ z7w1})9-(_KiW5A~!XcXE6tvlmFc$oLr@&B%7~wyr#Am5wTvZgHaOQf#u=G~W zH(6e9lY=V|BaM1H7YtA6?g@^)gqa^A-tWD4C<~T*`dZA~GYfe&X-<*AU;G1yoxkv} zKs-tDiia9IX)l{E2T6kCM#!~KfJIEO!rl8(^Ebb4(qeGYtD(gC05q(pr^jUVRV$>G zF$0P4D61Kfl8%V6XNMrFaLDdBYkjEBtniP@O zU8Aif&=6o}3VB*KBJ4TlRVFZ+s@`t&A11wyhcj&`-Shid*X^IWo4UKuJX<-Yh(%K7 zWny3k2#$g{>~^OwMsSE3ZN&1M{ESQ5we+uTzO*lbm=A8CA?__;TEY;}tNg-}#VH|u zJkEB^!|%a|0xjQ`IQ%`>wMeF0A;EkPn(idUUq7&9@ew&Ck$H+(!=v^iP+5OK!U&C? zR8{8<52;74(h*37=+Dm5yKM4m@8ane`j}qI&78sK#XYR}SF#E?_e`su@T#Tz8E?cV z>Er$nc(=k}V57*l&x5?yAt-;ow2;lsH&@qq^fd#$L?PQ76deM)&toQ%1iZ3%4ws5e zNG4roaeMcXub%n)Vr?N>KK* z0asqOh9f-AIQkKjTzl}f;8P(wNO=^+^8D4LBTCG|4`Q(xvLLiPRxLA`MaQ{!Tz3@s zrr}9xkM|pi;6?B-7fmFIoJvSSpe7UtRvE%83f#KcpIYgvc^R&PUiLG4;R7yHdh2%Z z9+JFyYIyX6&N3sxvOUgum9-yu=c@YZ?)d4*y8C|Rq9EjP$YQ*O6fptN_B4N-b5ynZ z7^q8rKxv%{Gt5I@2a{{C9UaZ)vdMUk$glV;U6ToQID1!lkp%_=i2l7#SFNHEk8tz1 z2z@KgVfV^fst{JZPih~DxFVK)dAkuQIQsX6DxEo(x5He_AB7{v9K{puU7RAwRe&Jy zx2a5#_9zgIn);KZ4fo&96yY=J2mzPy!4#MXR5Lb|sx$wC%<;|3m)Gd({a=La`mz19JypQ5g{Ku+Y zveLfb9X1zyO8w%V+gLk7qem)f5jPp>$Cd)6Hu|+6V4q8f#N13}mIzyw@Ot(>$y_5zitpTIhcC zhf&Gl{?y#&t-Fg{jyKP6?C3@MrOv;;zk3!gln{9b+rgXOS=%lNeG>Kg-+i%-Io>2r zzWHY?3E|wfe_l=g@U!vf3Vokq5wOo5v|ZrMSg(3PtbdS~^Wp*gyDmM|9N)BlXVcGn z@wYA%jf?l1q7L5{u=g^s27SB;cobC|1N6dbbOy~(+oDx(9(&XEjG9~qIE{RKFE_}^ zz`*z>?XM(cbd{ZjC0rhOiD=co1lgmH364i4MijZ|?E4+nU*w9x*>Pj&82Y1R#w&}y z;spnH;JJ-15_I;p;|tIb2^;2S=&t4&9%)H&S^g(4v9)HIs6?r<^-j`vQ zbbreI_goHYqGrEwDH2ZRE7sRAw8Y#?@}b9{J8g+h>K}H{jbdv|N!-~*x5gAKp{xvu zDKm9`jpMR*aDWnB%grAz9CcjK!?T87L@k0yNSFPyB8-6e#&-^$U>+Y~4LKP(685Da zAK#lE=9TuZS~gXc4dG4=Y-`x>$IB9W5=YNka@VjAH))ew(gPG=9bFK#_({<=E!}Y+ z`SBT%488keNIP$@v+Aj@9K^ylQXqvzO*GHSyHG04sv-IM;ORT!2IF>AlXjTJ^Eb2N zIyIS>neTrT^Mh~~!FPRBsqq^cqQZ)8{}`~Tv#q%EjWc?QXLQ@xmHWDjPVGU`Ozwb> zTrxcIZ5HLzXuAvYPFXYQFuk1p?rDPBq!&J3`88FqD*1F|=H#XY=f-6$&ag38sSC&U zACk_yQxE~5!aB}e+xi{%w$xNP4AfBb#AZf{w5n>V%gOSWh@6H6I?UB_*l{lsL%Rqx zG!jBcLR1RHwW3vIVg}3JQx2|nFFhj{%75)T__S(dShj0NjeSUvS}+0vpcI`mUU7#+ zNUN$X_fJ{cj_8*5!Kqpxsd{OPAGuvxL)_|WtH=YogId7O=CCBhV)O*Tqsd1=2O8!5 zPcttqm?;8Fc1g&63BhNP8M%&aW3=G}zM+#wiGPQPMq<1UC#&zbJ-l2mXJ>kyo1taA z6iH69#~+p>^Ua`-7$R?%Pnq~$)X;a94oJOFh_-dM-y@69THTks&gv${3ueC^sy@sr z-TF=dJgoeqd%Udn=Nt;CY;j|&Es(}HM~+eTiBBny!(==2hekI^&KQJ-;B{Up>NNO~ z1j{kTmLYfEORWWuJ-Zy0J_XvFGh4XLzIFS@8P%>st^jSo+__eXEf8ektL7KgP4Gzb zJTy%;E#UdN`<~ICr0SS-kvUt5(Y*T^LBy*Rot!Pm7>S_D5 zZcwmGjv_QeZe!!VTR6dB&u{y_=GBCMU4w)O>DhU8L$UuajsF$)lsdvc#VvnpCx!VS-c~=M-b-)!W$b3eui6JQDdKwns~TOHP~{F@yj%J=4*u-{0f)2J%G>fh|s1smZF}N1j;N#qPI)jJwLoaD>?g&l3e<>$bzrC(h{ z->hI(Y0l>ouk1o0q1U_j`#YL98u#I2VI00!DmkHVb^O=Wrz>>of|Wt_oGF91Hk8#D z#Eh1d1M)}lgXW}WBiYIt+YP;a8*b~ipTGMpDBp?|{)Lj9lXs<6wm=9D8|h1TMI{A~ zO_jNXUe#mzpwx=OxcTL7%RicH_NIPUlZd8wW!ciY8XGZ;E!;X>lNH|%az-ZbWwgv= znQw2VY1-E@d4Zf9ItXdRUDpQS?Klje$I5;5rlua1Cz%sXg=jTruj#t~|9%eaN z-6s9MFJb$S_mCLd%J!XjY*+d|T+6}q5mQgSu4@8j=*N{a@j^p5oU)E0X%lg;GTES@ zRMFl^Xdd;O+O6lWTGyaqY~vvFJ(6WyOGds^&bqa_)r5hh#87eZSMS1Nf+k(dI;u`d zlax#lM{YbR2y@IOl!Sz|Iy*L!6$_&*UH!%bj8Ab5!*LCM$C=M++>(Ijg5$^KYBmu` z@tCPrq5KDJ;NmBzR?-m!%L2Cxevl;9W)zIc5^U>k z?bEHY$G94ma%zLS*0yaW7iBOz*RW)Zdbx#MyNvNAd4WVd007o&6@yM0k9}+py*xw=ujyPI1wQNT6D(khi(N)#5Cn<=VWJ@~=bmlyFceDro= zwEmlJa>ei3EwwJp?Fnm9vsgeDgj2uM!^N|8*mmZzyRKu#?W6u@{OWPmSK2{`OrEbs z-(b8bV0ukb-?B;wiz-CbG_z$!6CHGqY^gcW7Y<4wnd){z{O6J;X-tfe!o&O}y0ZtL zQS($my5gIJ^EdL^4>x@kevi;keOB%}js1(so<)8e1$(@KwL6Uz6kJ*cz7RZxu#s0z{siVsJtl;)MEDvFbfhG7k ziTc+>9tz^NSM7)1(q_vU?e3g&O8B~{8k=9l^X+8By;Re+mww4Zhxj?e#~j zxO-90D^g}Szm2rF3}(#ry{1hUoe_9l)OA3ri0g}N4OcXM)$Ul@6x^*r1NjR4-Pw9` z&r7m7phb9Zl=Z~c16K5?_q~b@PKdFI0Fm!rDoSR$!jr!YnmAzIt()2)`-AnTVI|r% zKvmm{z~^Q5)bAZux5k@;MP}(34+1Gn+4)EX;V5Ll%AYbf@Z{+!gu;Z2=S_^2$5ajv z5kHfGmpg9xA?dQzS=MzDYhgG;Mn?OpOnAGBA6`q6qffv$Hc}ZGb6;l#+~so$8M)re zs*q15ipzgRyF#WiYHU!^CZ}_eF^7i2jvm8u~sr)am>F(gm^eeE88m$YK-&1VPU9~jJxfm&Z@SH(;Mx@fR6g*w~ZpSr-aa!y?I{tKUmeG&Zq%a&g6 z;K`!}e_IhkxnY&!wRUR%sIqyLhZ@)La%vN6(Sj-#E zA#H}krjFLe;#$=W=8Wovu@syV-99#q*1aegm}LnmDhe} z$VS@%#osR(7Xm6)=nA@*7UxNlkZ5ta<7szwo-|-26iNrAZiz=C?9W9&B+);faX z3qdvg2{Z{q#h-=ZI3zEPa^=JJOHC zdW3r>ZMY)O#|CWN9HMpbm3gfR!+TKp>LGH$8*w4ClpsriTKG3QQ=?thCBbnLA)M(6|bf1;N7aHnI*b)w`^a(YAQUN9UaZqLRCTF9B ze2^TZ*o2}G5=yTiy@<5RpZn%mfY>bNnZLVQJ6>K(Qf?`W5$vFZl5Ubhxp4o;#y_Xf zR^e^$SIV?7JW${9#S4Ko-X{C!-{Cp0@=Atcj5O4B@X#-@&T;K1@xJunz{7VsRUzM4 zQ4*1r56JLt|LKW@t)x(@^QGnMD*z3jvdQIhAF3WHLqFWd7alJGm5Lf$7wV^T9Mj@i zI%)cnKzIdTD48ZcFIUUhItUtCYmueRN%dN<5ee_UTdQUuAtCRYfi=;nx<8s^{G}R7 z0S%8l#{b})NDVRQB1Q;y9J2gi(`*_Zpup?c*FzO@tRQNVp7{tO8j7?m0(kx3W;=Gs zNX&T{I9g2*;aT6CHfQ(44L;j~DLeIQGtmM)(Oh44rMG~HpC7(vbZ8F+$dWBY{K~Pg zLjL;!=;VBP-jeUV?2kTMuVhih))VBxF8@G_4_hDvH6%n7XuT=?>t+NViB!0RexugA z{;%a$>GQ8QT4r|&h52H*2x{~~X%%&@`n%Ct@(erU+!dH^is+2+qYi$_=(qY_W-VYTjE{v$9fD9q zR0ZIm6(Nf2++{T!r4jFbJ^t&W^soi|l}PA?f8|*OWKi?#@*;m;I8xz+=ciZkv^cQe z*OH4>p~)bMCp`E}`ZN@d^p2)U31$HE2pt$PHB z5G29?3;pDiPb92ch**vjXNLxAiygAZsBmx%xczGoiB!uCq?#?!39Amw&8@@-M|dlN z-nxf_2od?mnq?K@VbcCm7(3e*ZjSN*EdQGEhiNE?g^(gaW#vnpNMuy5FXVBFPgd;{ zs$J??5q@P4t|v%a6AqmU20-t6EfmrFo7&K}U>2p~S;@b-s72d|^~;AwKP}=I5YIjd zV{cD_qlCP3B~_{vLc-bORIKfMDFDg=1jrqp;)atNTmU0L^wZ%|Uk&TFJ!Q6x4p%&u z*HV@t&KQ|HGUI;B#le;kDhLkT`)t+02t$KQYXE#Q4UwT()ghuF=kJQmRqvmVqcllr z^c)q*$GcexoAT(^I^~`q0GS?y##o4 zaZ;5lpG@q90L3+RIUiIVq|JB5E>J2^8iHbB?b+6R_s+3AF0nWMBOgC1kpFCWdLBEx zrS1+N-Z*oPUbe~$qDyRDhWMUN7#Fk_h4~Tgu1J&0R<(E(e*Nz`de7H&;jwx$l;eYK zpg$DQ-M%=s)%hx7l_XzGfWMMCWfkSnQcs;+VX^}P8c_F=E1FHpu5=zQU>DCq(w%v& zggbv;di(Cy8L#|`dk_u?5I{bgo15ymeO4)LYPZ+@UULhRcnr~Ny=2NFYD!;vqLiT2 zF2MuZ)nSPC_ZG``wcE8O>6Q@%7w2- z%!G%z6dT|`@Zq=Zdzp>ZxRr5W;T?qWU0hs}N49!{4smtDUll8mbsK);bv$7OdcFw} z)85~aVc|Ex;;B*-1dHW!gamiwm7CZOR3FOe@|*7U(Gn$BXh^@kMh%NxlNq+xiz9eg zNC78bpVLtz-#E8ADBOtWLyC-nA+3X!RF?}p09Q2%Kl7o%H`Zi2As1WfwTgqCGGG>u z^j4e}0!nayebQw5D?|k3y8sEglE6K4x0$2L*PZ#_TXXzyc6Zt)h%)K`JT9@2u@ZKa zf>3E;09OhK3 zP6uN^n~lpm>$ZWf`N~zXyfuLm>jS?vmsweL1xDD?*#hi*k$&VRv9GlFZKJ_ za(WbdD9Yb|SNzM<(w6}2`9owm<=*nKsNCi007cBi8-BarnzuJn)#2T$(H|eDVKp~E znopwe+?dGisZ>%LW-3gN*M%zE?=9W%Sp;_-W#G*LY7U3@2t)eyAiwps|I<7PUOhVg zCVObz$SeSbhC2d{vYZrEYaL|UKYG)ZM{coY8hd7OAEhLW-@NU<5$**nAaS7}{3MOE`TcuwqnX)3^DR@E!c~1Gq(J?e7h4Si@_LH*IC!9v2 zYoNCd=wuC7Y)>T6z{0U-?7uK=w+w&jKF(^;Nxb^nDu2{kf&HzIvLPwSo2E2EqrW^$AN82}t)o%KSn# z99|BzWflm3`_lR~f^uJRiO)e-YD&B0OSfi8R|5GwxziFH{^!-#kVFBUY!0aN-K}KU z6aqI%1y)p>Mv3IZ9iEhje5MfXDUvQUXR0JV>ac??`N~y{M^9q5+OYEfi40|Cd`)2l zw2lFo@ik*V5Y%J@F5bvm)1C*g87PDKsJxbzNlBhNt@&CmLuRYz$j@oOIO z%238@_))-d`*XdHinn8q$EJLeL`vMCn#_s=Gu!G6L5+$(_X|j@36}oO5;efiDJ(qZ zTt;Wbh)*Lr$9pxSqE_Oy;LuEqL|$RtI)O4K^y#%=6-KB`$(n*YbyfQ%6n)jhY=e{- z38!wmxS!7O`5ukQTN|E1^_*yM*z~~{SVGKa(j7^Q%iF!>75m(f;!Pg)8aW#e{wfav znta}wL6wW0Pl0(K(N9nF{`d$9C-e08}{RmJcur8tjGT2UYFLyJ$_^S@J zg2okvtCN|;? zxBsVsjpGhs74B#2agkAywv{pj29-s`_-g?az;J6xy7n z|Eq+u{yS-|tR+X*U$2X(CRy+48SIa_l0qLo)t_!rD7~TW&L*Xd;Civ4{M+2@7#ymT zCG~_aD*%$q5Hb*($uhTHUC}~P&60Vggw%q z$rGma&ThD{KWsUjl6p6N86Ea+fbKNF$+X&_%U!uB0K}tT0HwUwwt0v0AwV>{8~m`H zm^G>fB-AVQygcP3n%=H0?jP`ez}q(wvyAyMpck~Z*94s=kNlUF;U$?u$JUkx;ED&Z z;gxV;7FWeGU^}7d*UbkUFe&`nH^WM_{g$oOf1f3=cu|H~;s^c+=U>J7xjhu* zHm>=cT2XG8E2nYg$%`q_T-(}@W@}$h+{3_qG1Xy*>$Pj{9lgD6>#b18nA^1;P{UPX z1<$!VXay$KZ&0kNtK~XbNkpwW`bE(_$Kx5vPWB%A7P`S48(K+lMz4*t9m9VdF&8+N zdH#Gk%sCP^__9M2u7XL!)kx)~bvF(Ks9uoek)_|KR<5l_Z96l8-ad4kpT0z1Qc5?0 zL@8rb2PqV}Qmj4ZX^5VB-cgi`TI`H1q4Cix0ZUQJs2KwBqN0j53E>}(9i`8c-fx~C zL$j~Dw3ZKhoubg+@LWSL=L>#bi2T4?Uvgj+eYNw8nQCGG?bx&rPcI+@0+~O%T8p<3 zv!NJRV{5>IDH2qt&%*MqDe=ncr5tjla1^^QA-PfIojs(?KOu4gy3~X(R085aN;+$zd0DD*53;tAa-0snCJN2jZ zGsP4ClLO

L?j;#JU>@$(%#jZ`%w+S!5*N+vLe`mR1+KYO@%2rHfU)wCZg_M)-_ zP|U%Re(6s56CiE)mI=C@ykHRmRG_}v(#icobKc*CiFeLpE_5-$Ec`z)LteBj10I#9 z7TA#A2+SNe=~#gP)P!j6i3m-q6LyrNFLlt-gyXvCW1`(afJi70igC`nzP{${aN%c)-=lYd z$6%>4s@TuAsHMDC;%XBXON&M-%*A3r#b6CfLg#?ciwwwm>ji+OOAuS_?bK>%2ob$@ z(ByNG1H87s9`mE=@NHZ~^nO?B&ZEEWWF)c{`|C$$7y%M8@(w@#9Fp6k8kM9^Z!$J) zJqN$0whx-Tt?m=QsWW*iaem%HEw*wn3V z0y8nXN@@W!G&C%nQn{$;4Gmdd91=i3F=N>zeGEZ<~o z_ZU?ZFeFk~xAA=>3^c?XOqc)J)z4qHncG{+1Tiv)W#-(oO2Vae5UF}*E%{%#f*ezV8E(iCuHBY`fM2%mh;?U}2Tc*bxe{eBX;)bWj2 zdH#gQnV7ar@QlH_qs)DUMZ}e)(nC1h5rJ}ND8!FaXHpDR6MHp3D~&z^a3ujb&HLTPmvfqM!-q} zMDS^}H>U2F`#z^`IlkG8KmPmr#?n>916x#=R~}|k#!rB+`;UHT#r(YoZGLBZ44Tj@ zHk#-4-zQ!74ZK|63*_zs8dp3w^@-lO^5dkfd#?;h99FHh>B5!so9qXz#hz&oDp{P~ z?lJ6~MV6F1R2#4mb-(&r_8}8A4L!ufred#-)}rqSYB4!Z01ZI($-Vl=UF|i(Q$8== zGeSu(Y&uT@j!=BR*ky0Zx)NtTIBUvara^pj1(I3?Q)sl^5UOlKdG%O&{135ALU_Sg{m z93&8s5Qcs{dK_H~TXchfNXXXl?S%1hK|6*4ThE&aRZT#cbl{X13T%@m zzLJ^Fz&A?zy;&(=-F=h@e)o;Sf zLL>p47;itE3{QVXg9@5JOw02~koM!?R^rw95NLEUMP1-*Yp~JC5{Gg|pvCjCO zlS%k0*Tsp+(}!H$OM3@1lmkhX>=v$ezU6-%Jd;Q{Lz%oK*-C|R} zOU;RQz0W`0+?~*waegP=YT+r6dtLLEC6aGa$ z+6j_AVaD)qkj-unhG5rQlOG#1cW*!*2z~*PITgEY=YwBfM_*;zki`wsxkGPGUiSr} zq+#ZQPuICh9p&lS?-6rSfjA0k2JC7B7Vl65?Y@E zeDJ31*3ox$gJw1?`H&Ok129L3aG9W;N8?wKO5aEQ9}(lHAiKAou_MX){23%DBwY4z z9cfKXWaRdsV26y5l-%fkk8L%$tIr(PR~*g0GxPHuL3E!3IzkYavm22HT#J;dq+krGiH@Pb{f)YfoajQv)`g=y=MuZTtFMP5=vJG5aMg1Sye z7GxltJ$!sF)jMp~QS+9`ASqPq4(mn?Vl6L}s`TBCf zqkCbuR@et7R{iISug94Ih(Xt#l|cJ50ycjb$kV+GyI%dO4d=_T9VY4}sA>h_sG?~J zUs{O5QDln3*(FzY{x&3CBnn6i;A*rHPY;K`#!_cdcOGI~{Wn{v_0W|om?PbL+14f}sN3uT9pNbtWM&s*gw3#_7tFeY43OWY3({n&#Q zdXF`h6w|9)zc)gsV|<}SC-SuPjyhW;=>+UF~ok8TH^#R}_@+g<|JKm=;# zLvU$)=g)>?*cix_MA{V-8zbE%9+$}fKrMeD0AOvthS)516f9(vp?w-D9QHVHXT}Q7 z2r`q+`bzxqcjnR`(8T8S^IKW$bB`6#1XzRWG5hM_y)Hyz|jF z3~W>y2rFoHYZK7-ciS$VV{bxrc{Fdnd4KYG@nOse>si@E*=2pR0AuoU!tQW~Jt>wr z&;-lVN%asXT7xV0Qb|>;M>_ySt42H~hL6?}`@_KNu5)+~Qz%^eXl^0=A@ILCFChrS%1vb#- z-?ipzM&*XM0?A*xGrKb1X z=g;~4Ift5unk)^#z2do5Z5*L|UtNzn?w4|8XPHL_JR6*;sSk{3odk}UG#Iit#sFJ!I4dY5)0 z-rCTE(=V`{<|xd;+JDif$cv?g1^HhGE9`epFYfLCsi3ColXj^9Ov|4CH+Vys{v-qFxF{a~*)#(wwkh8@z(p$!?Njny{<2Ya3;R*j%%M)Ue> zeZ+nqH(gzoY@G=usX?bR0Ix&J=SFee`a|=@SUFjxqW$$A@{mSXuC-DJz zmmAqDn?pBfxEZwjo*?>aI>-7`lXH_;h}_7pp5{q zr9QU-kFzCcP=RgOkr2*srq%#UfrW_HDc1B-%2Y>_lpMD4-b#Ncg7n=~LU}-c&LHin zPve4x%l?%f5^q(J3#UItd7cJ!fl#zeaHqsN?Sn?!sZ zyhSI-CGQ!df$C^xQ*4JKB%eg2y}a(*)_zd~|Vwo_uR=?ez=VB>4hR!f7`J(+JGogSK;FQ1rux56kTC2yh4y z)|QC2hpkS9?4K_R(++$=Bs{m zX+9*YR>?#8nSfY?CTf%lkf#p23@%^MM5l4PE2Uaq^?pa8X+Q?GvX7^$kcNT}J^LQz z!KBRl(k_mGq!eZX9LLCu+zaIC<|K#5S2puPafL z-=pUNX~u${&WMh}|9Dik{F85RdMB0EuWs76ibK2b`t~50tLz^%OSd#c9_(wAaRL*4 zj9=N-oZ=;3Feu4K;YhQMVISOFNx+^fL%Ki-m|*cet8~$mqsct?1%#JE40DiZ46`Q5%emvV8lpI|ELa0W@u8Wj8Ue*IYsr^&$ zv8*huHhS*eVoL&l(3((`Gs`wCjWi16es>#!tN3=g-Rw0_p8PRlOi%9dN6m!gs&*i* zxh0XQJ@u!Vy{$zfv9(n7OC%kbL3K~PXC*~?$(A}af+tjUamNKQPt&TWi^$Qt4L-$VJ1WU%M6q7r$^O!D0Rpi6;)RnjEBU6i^fNu<*Mw>MOq0Zj zJ547pqNJ8<_N&vO5v30kJfFJcfnkf{wM&x;fmVePNv&hVOTYFW_6ZR!2URnQ6 z^rg@nFJAPWI2LYJcd+9z5R&M zgQWkoCROnHdYGrVOLl+2r)_V$d*{!)@)X*Dr&mM_e8$?Y4wfz(%AhBBq_|zHADXTlp^kr z=r?&ncB^wvDcrJWkGXEix9%h~e@vv_rqMX(919q<-xFvwU1qv0AQn6R?ikyDd=v22 z_hLbk8gl=nbo0_R-gtQKf;~<(HD$X<=qPx78`z?{6}_E*?ure%qVfVZIfXEFH&f;1 zJx`37n?}A%se=q5v_y`=R0obn=$Y7NcFZ5(G~OJ}lYl$x9DSai|Ix@yj-J=(ZM!)# zn$n7moxou>ODKdYc8<`~Ffa;98mjTofG*+ZBk=_~eeQGulnD7H5B~l z=W(%H&pj+_`&CdwXaCLU^Otn$p!lL)zP{6G-LnQvCpYrCD@@@UB=ZIV&Y;mvtuf;p7vgv7! zkc8NBB9I3q_CJ#DGFU2;yp1AGp=PMe2aEn3Fm-;Z>+}1ra$4rGCtLipd8EOpX!{?| zCzP$AWSRBsT6k8!-RF3_cEB67V-G^D@FzLN)^I&Z0VFTRqZy=OL>AW{*(0VuQ%I@H zEW&E6kBQkj;hjprT?1Ce{uppz9AHacrUoqAZi)*u*|7QCc_@&Ye#|?itu_L(9U6L_D-XAMc z+3W{D^IRqkYDJ%JI}ab*GOO%e#hh`KwQFz1W}@Rf0D zdJzjW1~8UY-~q8Yb^c?gWvv8h);554(S7z1B^(0^C0)&R3az~^Yvvi3yjCmHNtw3& z&nU-0qmP?yrH0!DeSCb9R`7e_2UkOU3Tq5 z(bh;N@)Kkq*gCfm&uMu zVbpVQYk7um>p=>^(&u~YsHnnF4UzR5c79-y2{OKwtCtgr{P4de@3ru~3#M<^rVuan^Dg2PlGXaQ^*(%1n_-{1);o@if*B$S&9N0m~JDdsX~6Qg#s(|{IkK+ zUYm&zCsq%WL8aabiqG!9A-;a8;CXBb@8D?%b^t#m;Os(Qr@_cj=05A6MjrcbVDD~y z5M5;&}HOBUqT8 zr2zXpSoF^t;~~U<^2XL&19zMzx|lG$eEc#=m8;(Yozid^%n*mBxYiTf-qbCCw*N~9 zEUp)BFMpZ^Lthkpt6aLrs3%vfYDWV$xrn8B!>TwD1WkB#;Z%E5Hs|u_=)*@J`S5i3 zIK!6SI?OA72EWECpi4kox;IBN#OaFcs6-273%gfyk`;Vn48VXJrHa?U?51=m;;B!LmLAd*DK5 zJn8i<^|hYhHlN-{{^g>8#mm!JS{EQ@kdn)$is=TH4zI z)qyD;r#JlAh^9Wd8f$h%ZkIO0gAe2Z!#dd2{Td56L7i{MfbS3K8j(Mnp2A*SCIFd6 z@>7sDX{<>vlPyMecxf|RE%+>I4!B+>B33}z=Sq1mu8;&det%*r0h4t!ityH_5r%8f zR_!j}w7Uw;e8UICHb-S1z%@dnh54yt)Ltx}jP`?)&Bx}l{uQ5ho8C?TR`?TIq;MIf zt>8mJLwoA23s!%tL&}w3`jqGL(~{rqO;U~*lP<@2oDC=kJpowju-F-dDrUn`ICecr zgpg1QD3P0c05?so$M&Jqj2Amr@5JKJW6$KrW2kTEQ}4yI;^IktW2e2&gd~G91l482 z^2^op|A@5Jt@eZs%WX^_8lpf=-IM1(V*WeBD)<-1YJ68ZJEmNlk0fZQ94L-Y6TYw% zyw8995`#kTPx+v}jIm~FtLDy47`59W4-Fl0mGkD<{El7be=8U+`ot=7BFYFB;YJ^M z8^7MW?wgIu9bI_sWB}|ux_QnJpWuRW$0#--oFRxclNg(4m%~MJyu-*+>s1~L*dd-t1?{F4|YC7BY7@73}uIz-+ z<;h-7R$9NBAtO%TAhSM)c`EQkd~7Js!x*DtXUb%9wQ^lTWPwQmws6N67+tk`)O_WTu7zr-U@U-0>0S|ZS| zu$y;J&{H!57G?wXFW{TR$%ki4k|Pv)lRRL5{Za@JqA~j5(cL7K6I0C|sw4~4clO}- zGrF>0$96o4?SKB>9Lbb82dtHq|7Bo@YptUVj6q1h#)=g1mcBpXcJF7T@&#_$ow=bb z>GXa(9>cLRL&vMh+r#a)bMmRY+2;3M#^ce#8c!oSAx5FM_>W^2uKrUl6#r%gVSGiY zuCl6k`11mtw-mTzq-SlDm+RR?7`2fz+k1Ls4mJU4bUKE5DI(9kaTGm+q zrS-9Ve-W0cUHlC;C$jethYJXc_<^R~#;>i=zqMSE?}r`unnm{JXzTI=a7w>bJ_B3- zSW`#?ag58Htc@yYyqE~tDceE9(GBnx!Axzk^YimBz+)igctYB^GSOAqb+JdAZ>;)= zksto{u7`B1`gC(}L$5!$4xb9-MM0HJV|4IY>?{_J-Wj%9CPo3yv;>K3J905Vq<*2r z@9menq+Gv$DQ`>^jod~#2t$aT0EMKYYv}kZ)==QwQyKnld>tm#}^+J0SG?7Np71Xm3U)4_TioSch zHxxowC-?Zhkfo4%}GVJ_HhlS=kGJJ0iLFRHNTq zz%jo?z8}q<(?+ZC2+;jiX3W~v;`9x}RlMV<{9`bkdx7~;v+E)7 zTMr3C2q{3r7joB+fl~6rBVN$YdO;e{qrpx|jCK=iT2eyHz~}a3nZ>EQGbDP&u;ykDxXX7b%gyw;#hF9LsI(N^=aPco{9ZQ$ zyoI+!e7J5rDU+vYm6@M7MM<$CJ zhHtGWf4)UxH_NPkVV*~^*5iX_10&i= zrvkl|;WsKzjoy@-=&3Wyt6%&Qq6HPoA!`2D(v`*<)i!EYoDPg7|G_t?RGBL)U zHA`6{TcskU1({)n5tWc4E!M>REP0hJOU6=TD}*+TDO%`-p8FM`yeirca|uv_HroQUKbK|7FwJ^r+yV^m*fv$SA063vj^s!LqB&EQIW2SN zc%=36P_4$iqs)8T=aka|72|>V6K?l-oZJ=cF_V}1FqRDM(P=1-d|UlDmh{<4yVCoj zlj@`Pq!znRO5EfT#wT|KvVR)2^3EOir;#8~^|?%}@RoYsXGk z?{-@2P&0rNRCDYik=R%gMW)ombq)jTH`I=j3{Do5gl}$cMgXW#)j2T)VSZU+^uWaF zkGxs^-S5e28l`%Ok$wy0{!x^*u8tR+@v7`23A&~Me4d$M+OWd$at%-i`ZY~#tRCb2 zu|E-W66DCyORxtHsw|My_TG~x)ln&{;O1qHA^L&{6HX)$9qD6Z-nx6pNLZ>uCp$U5 zZ<9UJxOt*4rZH^V9$iAwv&RUg=$Ko$b=Cu$O7eYZKF9PR7rUe`z^tXJKG_eN7^6+N z6U@<=r7GrNh`3@$GgKnJ28L4IlTRn>7dtmb z&z8T<<^8U#jIo`w{1j~QOO~KZA!5|N7rpeo#1zv_cPeqqgDHmmNbBYrDHXVDLa6noU`c&u&&kx38L?|diOlx%t`SGg#b7@mbk-BmQ@};}Y zbe5;3lJQLTMELq>0JD6;jyJaW`w9Bt0a1%Mf0C2xUG;BC&l)FEHN#2l)F*3#Ysox7ba46lwWUV@q9Cq)m-Wa@a5DJX$=_!~CeS>#d6y zveIbQ0?v4xn$)zq1VamQ`S9uAsF^lU*t=T!=w<|idJyZNa5>_j{l#CrY2w2I&yLW| zYFt;9<$u;(Py76Qann16Jo{&YH>pAzjdlzVhezsL;v1GZ<1c-EuiI!xj*%ltlW!Wi z5$@w`2J0m$R!%lQvH8B?gnj%QvmDHvG2MgCvTG@p(az1p4@$B zV1dn;eL#w>Dxz<@iLeVy5D&u^M&TpJJnnp@*4n#4=a$8zJyq*-X>-b_ zW+v`6gkjqbvh3eAr-_gyd#8+k&ZGaWy}H?Oa_W_%n!04PyfXQ%PZG<#6edLkP0^kc z+<|@h1D&>dJ9sv@;nh*0;y%)P7TS*!jLU3$SJD|HBqieUJ!wZ^J!A%o#Ec3m*l&FM@W|};(d|Q$|Kd}gd9^HFov&Sft~ZBA)#l5c z(TG;%j!2#rl%k_<97aDjn90;=SsOd;cYO8iB~VQyC}4`;3?)R4Z?@N~zH!Vj=FeM)eXiy6?%phY7t9iAHlOPam$I@wjGSN2>68Nik!i+rP#U!20$<^)k!k)|C8>k{( zxHmrNM%4;Ri|KTDdB;wUBWvykmYQop^z_FsJ1V??H}1mUbLRS z^FuL8cX)tXURYYCjgEVtSNkRORxiu`{?e~W)?}?`bpX7{kS$@5zB`04A{&mNvbX1s zu71x>?uq+&cL}wk6rjkBzY}wb>-?&5J#O7#mOgolv%p}K$he%|naRzL$&)mVx6NY< zg2w7UN07qrOc+RNX{s&s@v_zS?2{ei-v*k5 zZVO4lkh+E%tRCf4`|qM-f9yI`a>@cMn0S{n_FK(wCTupQ$^JD_w|a^wlnk?fed>Es zp}$-J2>{Tj%axb4Qf>3UMFso6kP6I!(cC-IsrQZs@5@Sg?dMbziFezNbKIHFB3Xab zXyJZ&-3RtF{(kG&rFxX6vZFowXDq4rZmtdSiG^N7;B4FyM;u^xO#XF!ZdABYQliaS zU*~R26&7~vb&-8aS9x!NP^06nkGOkfDr<&@Yo0q1=hNA(<_^C9XlG^jwf15wun){9 zu9py!w8RBvWU--0DD|3KK&bWUpPJ7Vx~Qdr@}x0*+OzsZWl?QgEGG7KYj!>1N0xi8 zaOa#e-HMLs8c4=}F*B@>d6s^nml(F9{Cs0~>g0C+4Zm?W?b<}2Ksfs3tn?cJAn^u; zSoa;$_k`pF7XUg}7plXhLO5g#H4`huUYG-7SQ+;MU~9k=)%0lhHao ztPMS{5}Oc`|Bi!Hm$02VGJk5^+u6)&6ow7V;ut=CUhbI?8earrQ2NM(reJNrd@(4}@s*HWvm z)-u(~C}9uKoeysn^7!ekjXf4^$LOoazk0E!0^|{z!2Ly_V>>!3D*xtBOh?6cS%J}R z1RqjQ$~`e?W;OkIcita@ck~;mA}i)RD67+4_=ra?2Hh#+_s4Klu$ls&oTV?%Sopbk^`)1RUQ*Al{QAg2WcT4D1wSHr0VDFWW`8DQU&yleb4*F&=_b*?dSjqO8vOI`Y&F zs6$92ntjp1*b;-1m*-!XcPB#qV)=Y|bl^p>a^4y;?nGRO{V)$D{}MqGzw@OJ1t}32 zIuth==wu*Zz@{z&#$DuT)L@(+<$W}inFLE75JAT8=JVUvJ+v&1TxxFafxGdE-M0bp zZOFomf~cp#?M3baD!%3bc!qC)1Nz#O3s}mb}er!eWjiGZDydhq8Ikl_Og!>+*RA$SrjKGde#8ADU# z8_`Y-A#61I0+;W7#Djr32l^Zc81S}375^8Rk3<%&TtH z)cAg&Bj8k&0iRZN8>|ez=Ji_((IPh9T<>ctM&R?`#pf?#{y=~Ec90Yt5+E!{#RT<5VUUvnO&^VQ&wHW(wnu8q;pPvb zp}nQcnar=2DVsJsW}=Hy7$J1+sw?$x!rUD zS1|x!#Aoi3Fo?J>g?w6{d%}5Q69khmZ=9vL2(ByuTIBIA`=!{~D!(^!uI-JQ9+|ZuG_oj?$%cO${Ohk)gk9aq~-U+o?Z9TcK-v zAV!+Fpm*gaGe|YkADm4P-DH=`^ZWakp)+uZ)H&5fdEoq6QTHN38c5hC8!LqWqJdc+ q+b_r9i9ml2Se0-)luIGTg%D(jwl%I-;I1eH4m&F+%V$LY`2PWBi-?c_ diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-32@1x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-32@1x.png index f7be521622d72297743832956362d88f366b3443..8a7b5259319cf3271d40ed746738d3faac5c4bc5 100644 GIT binary patch literal 1726 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 IM6N<$f`Ckz<^TWy diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-32@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-32@2x.png index d1b8c58b856cfda50eb41d8f11fcf8badea21920..fd3e87f71eb142a53ebd2ad21572e75127ca1f66 100644 GIT binary patch literal 2794 zcmZ`*c{r478-Hg8IpdH{_9#o18fGjVS;l0TNkrB(qiDv&%w!qNU@BWumM|qsnPh8( zY(-fPrm`kvEoDMwZ754PoN`9>bQ-bz^-vb3KAGEoVB-|9k5#vivplnDj+0?Kmt<`7yv-BKmbJGK^s^W z_-EEU3-V9ALEP_XQ6`{uP+f2goSm%+iRK32?8^U$rx~eFsva&KV=!Cb46K4MpxnO0c zN?|YpOc03B&`@}&0h|^@M(7zE8zXe}5&HT%0)`I#ls|*W)bXdQeJ}E#Iv6iHDTo@t zpwj%6H|i2SX~7ILRn?6~KcDaW^kP!~>EuuUF_vIJ#6||82iHaXtSyitH&7ExnlCNL zIeK&EQ{Ah*s)hC$s^c7K8l5L-)8Y)Kw8>XTV)|k@`)ryXC$kvh3 zs%U?}pREfmnaG%#nSEeRUG~W1W#-kf>geNPM(R!8Qi-A_Dm9`4*yYYkH3bsacn&9oxI>yzfK}>s9he4d~v1k|G;6 zjNJVqmNon$tbD7!Y!Ft={fM2~wPsQ3h1*m$D-9CBwKX@e5uw=IqVDmQL3>dFe9Grn8ixWR&*#>IB%0R;coA?Ru>NbXjqj z;n}XG48kHsYL{i>UhUFwhw2c&$F_A9Av1Y>Q%^HpK}A=$vpr)Tmu}n7fV;`)Amx6M z0Ur!x_dQHb!{gW9G&Y=hJ9#_GYSz?6E%DQ7YK-RVrGm`i%}>d_iI;=)*W5MlGdoPT zhP*$g<-jGiyJ^6t{Jo3q?%nKlvyB);2h$WBR|+6b@vo0F&n!mRuiTY=m#zs*-the+OJfRwAnc7KOPkO8CoZU4CZ>_a+(4fF z^L2q}FVj>7mr~bp zS#uiw2TBK2+UThOlh- zlA5#c;q8LYam8QCsq>FD%)J1EGWzd@L$ndy!1TR{R!X0oGb9rQv$^K6eS8o{^t*f~ z3s!n@vY|6Cry<1qPW`OZ%;0qnCZk7&Xf7{&WyxYYBpe*l8$9N_6bBh|bm%mgOQ^~# zFv!_MKa^Nt3 z?mR!63kI#u0nfN_*WqEd=eq2a)u6|%lljfw9^v>n?>ADpALNDH>Jh6SSikn8cu%ix z$(g#J>tb-FJ!#f`_BrTc#Fx2L*XDAWqoMir%v-%5hagSUW3hvTO(-yce0I8f-iXKW z!8gRbUL#-d2rEo$dC#W+?bUCmbzzXJTUC$~&hvRWh0tv0MH zK0&?eci{c zdYDMpSS$=^@4HZUHF-pYD15!5{p_XmPPM3Ybn<3Z)^mdz~Kt`m4V~G;`yWE$)9!HWb)HkiTtIn;%nNc zmn$E5lB()30`5q{o+HlZu%$>kTVn6hzU~~RGP>w^=a!LvdzWscMD%IvOT32sseUrc zIi;>)xkNSvRR2k(Bs?MhKCRyH*xqB`&K=x0gT)|isA zu?2}&pFEZmQ3GJmHu45G?I3HP@Iukr8RHet79X0Q0a);It8(7eKd- z3~hUP?2O`Qw*QwJA-{ebMKHliZfY`v^6rH^WF?;93_a!?{`O z%qOe+npZVThS`fmsMyPDos^_M&Q_f7;;p#13%4UK99Hc4 osgJnbi_Kq18{utkdbh9+diyY$537jl*tiy2V-I0UEC|tm17L>Y3IG5A literal 4575 zcmV<55g_h~P)1 z3yfUVdH&D2cXl58u$SGny?%jrv9U1*JGMhx+BgtM0}U$S5mJLxsYQXRL5Ps320<#t zi6|{~q)H(~sVXHQDHTFaX+nWGB8pLJ(*{$5YfNmfjo)6|`<&N(oKt=OIp@yodS-WL z*RiR3q`Nb7ckVgo|Ni&?pAl<5d#k1o>Cjs9rBqCD9FvM;(mE#6iliX&aCwqEDM$)I zLQFQFnNw*^vBJEXeEJX%0gALHL54u4S_vW{NsuNf%`GwI`Rpstr}^OzH2_S!5F|k* zZ`%-0qzHfcuI2n>+^-CLAK*z6`u~UofKty&fY!`EmH-1lBgEV9Vh*86ix0a55Qx_# zVWk|k+JaJbtI=VeVR@qS0RT*ks+t8F zLPq8*kky$DLlGFRNN8nX)yfOwpru$W^%P5m^~%?mF+7n15XM^m)&S7V1|j{F=S#7x zb9Vby-)|}ojSgQqG&*v99LMvOQmsZ&r$5ZYSjt?`Fu{yguv>Xw`o}Vv^zQCC-Onhk z{r-W|e;kSETEq#YfY#Kd!JqQ3v{nL92T`eO*6c0mbko4e(`W7uqHvv%(uzJS!i?0C zRlVxfiM~++*hJkHsHi(EMr(%)qtxX2|J~Km`Miqae?M`y{}B?@s^eIZV1GIJdTXW< z34(Z^mHlY%f<<3FcKXyG7RsgDIZ}(1X7(5}HC}zE1%P?A+-LDO(Vsz>p)esL93^i{ zP&S=;c|qs=tp|?vZBk10s%UB;$jON(4bFr3Ws4R+e(?CwFBF3E?JA059Xq{at0bim zLh|1ktADciIE(5)mIO;ENNT0D3Zu9fly2!e*7sMv3wypMrQFZbs@Z_d2mozaQ3U7r zA36M`NU2pSj3P%gCDE9mLa9Wfg#sz1IMO;V!_x28s4?&lPla(5D|Pw)!+l@rU2y4> zf@qlIZ_?Km0~bB zexKohcw-jKAB5pV!1^jykrHajp<_qyo!im1MS5(U^mL7&f~)gLzuT0~oGpzEf4Ua& z$kMWz41Mi^2k7H#*YdqXCr;2~-~1-Mvu_{eG8vYLX%R0Z1!0*aDO$2%A(es>9XWoS zGU=vz(%?f9f)st6gm~R2Z)fQ1Ypsiv4N8DUCPJO<9WR{hKXtD*et69H!Qp(VM1OI| z9dzUGZ=hnSMEPQodKN9B&G+BW#2Yg)_2JkB0?T1Yb1&(jZ$I%>`p3WiI{o0uEwt&+ z@8>xu7@m%mK6R%5Pv>-YZJlgAS$7}O^F*wVr98hBX|+m6@i_osBQ4o1UAuB6g@qA< zJM=w|Muvy!((Z0rx@ZxV%4NRa_z)DUm>&DH`)K{@^}LoRJ-X*J8|luQZl;k!oJvvq?kHkKBih8y{)}dcP*Rq++&ViBPtC#@elg6$j1O-t_HPdh(?T{kfap(zBd}j z(fq3HbIedy1zy{+gTC<8Q*`%DH&Hg7reEyZMc;qZgygihwo-Rz zCxcdiJJrayTs+v&5O^-uYM%6Dk&Un*uMsaGVDmg75a%_!d$qm@t~F;ewC&9|>F2-t z6~S*n?;!~ji9fiGZ~~nEovW^*+cs>VYnCphj#;xP<@>Bc1H;4AoXytoA~rvq2o==+ zNauuREFw{ZR;{O$3m~zX*p6c#Ab7M`Bozewo^3)M?t^%M)Y{xkn;&?9{^+{v$n$*) zgMbOgjse2_t}gxz01#VLuZMyr2w>*cuL{}HM@4|RFv@p)H^YGw)WS*@0w3q^0RX^oX#iY1E~uEP zmKi>or^f+eiLO+IUB#JZ1^_k}#xaZSvyVPXE0!%IietL(w%h38EnCi{;!bF+JL{xeO9XyxF1A{!pKOAv;Y_oOd*x4X>ip<1U<$LJcsr9 zvJxa`0suCMzz4=}#j-1C@XQ$+92{g7_{+QQVl}AVIP3#lRROnoKgy_}*_*Ko@_YbL z%K+DinwZEdmn`9+$@wsBKAX+bKfn4ay|8T?8`HL2GlTF?FTF%BZret==H_!e$~DWD zu@OXo4jnfluUXWCSS2b^R(KEbw<>{WAO%(eBweUsrKEHAY}@Q`)>@E`W7_%dyVRV^ zF?XOUu3N2mEQQETG)1=W$M3oSX8;1hj%Zg`*XOA((9o!r z#wO98b!*U77%mqB)QWg&&chymtl>D?vViCh&L7Bn%~Fv;6>m;T)Jdbz+}T*%(O<1?FLmZo@8 zGd*?y*~V%@JYsz2aGg{S`{K)e#(rE&l`yN=oNv1_y1FR&jj@j5e%YOT(ji1`M@6ycWv= z-LP)G{jM``2JFF+5nCCmbVS`z8WR!&7$9g>+evrzC4_NK0O(P|( zinFUP?ICChYgc`c&H_}M(z^b^?*046_;us}g?ygwx%p<=)7MAOzxFEc2O;mn8#mJJ zpZEm--xWaJ!GJvn`;4U2=?CKo5ZgA_ThM|ugeeJy&E+Th1G@=CIcX3ik#C2Piol#i zs6y4Dt~`&qnuMvAJI>{VA(|P+#_(dEN88`tMg6BwbKL+EVl1>-`{{=sqI*8|DLUHU zPmAZx;|dWPEU+Qwe1xVZKShHB1GIhD+gyIDTXL%cg%yB5WB+EYq~1v5#MZPR5lWi4 z*{BE7NvjHcnJ!HbK~;itgB43u5Jr5lYDFOf@S6_~(+fY_MwymYQ{ZsPlTzGcSaZb{ zbnAupr8QKKQKV|ZQjg=tgW?`L2w`@#>z?* zyUwa~8*95d!n8mT;|wM>I2<63T=;DiJz&Wp(f|bi!+UTF1XaY;s8(BZ3%#}XJ-Y3S z57Vx_d#SCxohv|26s46)@D;p z!ZZK1XAd1Yb&7ioZMhbD{Xe$TcYgFEYDMZidDGST&bmnXbsrQ$Xr(+UWIiUY>=f503+y4Yx@EYAAelWTPM$+{u8c-*6F7D_0|AeBB2&5r95AHdm|k$tEUEVZy&j= zlX6Wy*WAvX%vEqIarpT1^;8EQDMyO-92=_V1Q5#$Pt)O4$}dJLUT(6i+Uo01xEK+g zIDPu|g zCx~}M9WO9uO(8{oRqy3r{GYzQMpwb7iuy;()Wio@tBChJPYQ8-<&xgVcOTgQl+vohT4FI>05I?a9qCK&z^b0hH~+eC z-{YZDy;c%ni8x9H_v^VPCZ1iO$0aOd18k9HTIc-*r94yTv;HDRe_aZ3bj9M!o_PQ8 zp+~|vUTIHgO&IKnDFDDAXengM^Y>l3c*)=FJ9gx=`JnVkcnWJ6VRkEJqnZHNqQuMr zFztPJ3RDV+6lML?FM8)K`rh8-haL)}XcbNIsH~VG02n->5MpTYym?RK#acX2Pxqd51%^mh|;>t78<6MF^L8Mz+jQmLQ=M= z>5ciFbN&r(^6bdq>SC#URUAj%O6lhDWL1J7&&C1M1^|Lske)n|NoRJq&uZJ{Nw0kB zO#jV=Ah^Nwz4%=Hlye->AOO4x8*1_*h!I+Hxt-0K+@X~37oB0Y9qnWo|4)Pxgp@wN zZ)l*D!xIS+MRB@N%wL)>mDY!Gw34M_nm?Ej(*VE?qk}?7RD4+lxCu`%j^`fnhWK;b zZ!0lLTdR>J`R861J@|Lq?>0=ikUyE>VHVU{3ls(1y?Vby_sSv-|A5FYlEVWpJ^{u|XgZ?sM6vDj*O9xP*W(?*Ly% z?!y#b|Gf3zv;2itwsbeO(RylWYij2NtVrS!HxJ*xQUBjZ|Gz`E z|L;Tp$D@Bk#kg)a{67frm%4xM0_2sz7UTLaR!LwtZHwlEKyc9Wr&4O};O%;>YD)E_ zJ(R}ro2spc^bfJ1m|*SZ$h>e^CS>Qev_Mr~bUSX7cBAYR~RV)iP--mC%KO42?M zt)88i7lIjr*~NIN2=U*#^h_}Lx`ApKsftNi;`G_w-Y71^7HpGMw| z%FT1G1AH;#%!HYPPOD0#$@l`MPpcDEE$q|FET4;tW-WFmg}fx{pH01i9^Yq*WLii# z`l0D(JMGUUdVF2vzi8t~Ilcug>%_n6iQKet^)|0S&`8kwMHpfA)d6g*(q)>MDIsaWyekH+WNQ5d zzT&tj+#ZUt5#<|%y@>{KWE5R+6J9WbFm-HfXZH~1>f2LNNzJ)!C_D|U`o5XnHRd=)eeH3&k?V8urWGTfVsplUK2NgSf!$u*uAiVA|Ij1$M!+Zon< zis?M5HgNS)KBy$g>78($c8O$Vh}ED~u79JG-}ByXb2&jW*?Kdbe+X+T=|V1@zWCQ( zz#O;WhZgngjBK>gWg*4f8>8GceAllMO0K*jmTvM6W6DPfdW7qYY?jpS5XZiIpf6ex;Tle!8k^(&X1~jl$jKJNOYt18nTjq#A^FnJ z`>?`K^*F29(9Dd-R`~LjM(g(mO_r>=6LsGd?h*-2$t5xf0RnymWqt8(re4jmpQPu>GKS7Lw5B4QD%FU`N4r2=S@H$^GjZ{G1z1tZBFx80P zg|lLN#lG7RSBeXes9&xxerr)QgKwzJ7A(28vD*D{UEi?>_i#)g?|r^FE;c+Z*thc| za{6dtA}}euRvFiE=Ih0Nr)TIn>*%UE?{=;EVb+H+Q$DX-sUVQ01FK@&T=J;l5hGac znD)sNrjlH&Vy9tWKgW&PITS;EL5obi9{k9FC-_UmfSDQOg76r5X1(eqj1n4i>m89h zix8>RM2D5god=DX9n~1-v% zvHVanbn4zBX&GrYrz3)cA0!R<%CHNwb=ZkoESA>z`Ni+_XY9(Z2#xh@d~BfTUAu;h z+a`|hwnqrUKw!-9K*Y4JJ`+VT@$dSP({5{*lq1XIHy3degj1rXJ>ll@Q=75vDsIV* z0TAWIwUqu@5%cBu8ys#8JIjWd@x@`zsD_riN03IFVt)S7pRWiIASjHR8nRKw9$A3x zf0OG9t>1Wf96NzGRXh{Xm|WvIv&f8AG4Krhz<)@c#^5jrwpyoK(To3;)bn+l?GQ-# zt3OXSjXx#L6M&>4=}6=VxQ~nY=;o@r!L2|Q+t;xNAJ0?bg7o_inKI}OS#6)*!NhR* zQlCrOoXT{t2=C%bj@mol=Lsj{?KDs_dno{mg@}KBod3r*#y#IvjNXWJ;@yijg3*%rj^z_LSMn}z?G3#a3o&#Xj2E}yRwN+(F1O-3o8$3F6Ukhw{&Uu|Nw#vI@bfkg zg?*P>?w8UV6$e(bW`@EuChSqH9}dPEyjxPe__SWKp1P{$gS_VlT~;mHO9t7F#E!@M zHd>K9e(Zk5eAu^(zs6Fl#5mZHQsx_L5>>k}JdC3-pVmk5w$`?(v4ARvOR!jPbb^=a z$pj1X?G^TNRrbS9)t_(P$_5_-5y&z+VyI8ZJej_0o9wZ@MnY;yptt%Y4>L4UhL17G`yNA)3CU7pGdSopF3#n zW?DU@${4U1(zK+!Ng`>AdWLf6e9(XcNIEPZ%BqWI8y{sHvRVv zV})@>t;sUFw&1Cf$fD$zdtn*O(a))@FVKNundwlz?_P;va7`#R$K@Bls|kfezAmGK z7YiC73BQ5103PjKKg*B~B_TV;5^3sA3Vu)MAH9kuQl@jnJ>DVVpSyIcf3uR&=-D04 zAD!{tpGh_r;;_t6KpK{EeV>0r3t{SqRzjgsj(tkrZO0d>E!{O*`fqEL4t9vESl5V}#x^0B(c{iT6=1N9w?`a>ZEm&qpX$rbT~d zaqPQxvx4N}Ej(vTHyfB2ZUR=`r(2NT5Z_J)@O&7`$5v?iZklDm&vN6fwkDVM!uQW{ z9&)Up4E?K(LcNAJ{wJHe%KLv3A0hi)xMmdmaWb*R8r^Ly{F3r|vO}&x_3D7B}2v%E;_5 z=g@2j)T3uxAmeDXYk%WU8RkXhV520i8Jqox&xDBo4BdDEAHvFK=Seat>oif*FNmrx zi`N48U;DZpmbv)FI8ONu-fgpOnEg1(L5R;Va%&P0@N!J8Jy=>SX&n;PzK&ydoic&` zQ)0_ziv+>NX)r#&T#k~7In|rDzGr@Nnd0K%WblV54vc2p zk@hF%rGSJuby};IE1sl~x1;(-`rkq&dKz?uB>&Lmt{n0nPQHJQE$-Df%2>(kh!nhW zk*)j5XRmBX5Nw?K{F>sNjk$M7SBRV)eL z(w-J8$gtXEnXovfR_e)lhQ^~4YfK!)zea)}j{>Y;PpZJM_l+i&^Ri3f(4bhi)#WR* zD>f1^F5(j|Q@X=FyF%~$(xj8D{>Vlq3sfF!?`m+!s>OAnLa^7jm?h%D!spUAXmtk* zabbMJ3sHnOPr^y<|B_9P@Z0;sPQDmh#>IuVj5QcjZnPaT5`H z_FIWg0)HmAparMwC2#SPS(JU#R_2J)f)2_cO){U=@+Vo8l@373zk=8eC`|rNqgx=uL2n1?f|`FwTr02$;uFB zznAz7$A5*SfQVb$l80B56&2js&wNRg59uE*-(elIt$h%NVh;XL^9LX7IrIVzUEhX> zugmwD8QNZJ_vn@OoQW?Pl;;s<9rGo8`j1@z`9CFeNDUW?+;WEO>TAwA^zUY`>Cv-+ zGH#G%X!Y=hV!}v*o0s9_E|32x_9v|0KgUh-I#puwUpiOrU?cBoFI2j?-jv@F5E?z~ zna%j8DhQ+nR^nZLZ7ZG;lTC|8$-#Y>5{FIGj4Q;V3F;H&olCOyBX7Jv_MHHMREEmO zC(HAXiwr+9_Gv5@0BqS>mvDN3p{l9x(oMk=YhG){Mcq0WUmTkoULwA7hqm%Qo| zY^#STpG-FnjY~HB;j0?_1EzgwL}VNDgVC$q>#buE$a{xwb0!ft)oYlwloylxielGj z&*!f+B4weJ?JGNqO5<3)HxtL@)a2`DSrRmd*tZ8r#!U>r6h|jaRMy&o#2@vBXZAvE znr+L*Oult4lxj$tp&Kb)Zt%7`&OS+=E&a6W^-p+82{BDey5^Kgql&Pd*eQLq%ji2U z(l0f?`sYm=a$jJd-T8|S1Tkhb`h)FtOs8?ag*-MgXSrZ@qk6oG_mT$ZO#|9LN=bra zni#_r7^A*azGMS^wX9A;*3&MUC0$1a3eEmAeZ&56QxaGTZ<0-!$9MI}3mn~q5=r%+ z;!&BB+0T0R|1Is}US7xR)4EU_YW?YK4UqTjrE^xvNY&5qX@D3qhSxO8kG2qF|Y9v=?*sSZ@#34S!h9bXTMs#j=5R z7?R{Enj1B0C^7y5h9n{sIurypPp%lUh1Gkok?J(FBF|I_4W8Da2IiKv{@I2j=;QIN z>idCZHEly9g&^7dUA?g$n)S;sG{5rPV-sC0CsK zim-!OS^9Izzq-?J0+|;;blJpA)A5^Xp=Xx8BhW+6pkyEX2Y>({LXt$K$2};3{DzH8 zoeIyU8WWFSM!DZ*ExHY8Ze8G0*wh{6aa$hmYU5yakXWvFybj8(48l$MSR&vr$j@MS zHEw3vq{*2>5xF!FEpI3}G%Qp6ISbxm=@)^@yQbV7W0!hz2c296Tz!yjz4~6L9YYIM z)f+OT@|Q3OK$PrO&qCR0C_6u3BPgKl<~%===uu>pl)Hb-A_%(h0%=m!=@7I0q{2}a z9eGNnz|6hW{$!;6@~=38F@L^Au#sp>xEtSz+mnljYEO&1XLHitz2TVo=>^P|N)3$ZEzG)DX?Z|H zjF3v)C;iK7*a=iVD7Z||^uj0tfFT$YHIXv zEL%7DL1F)yrRWLL(dABJ{J#y~p))F*GO6i2@sXTW z0(ZpA1q(-t;-evbUhWJ2leh}ZM0UX>yE32I_}yHPECFTKKI+&<0DKbII{QyaM`;Q2 z9%gnq$8BF$dP$W= z$)y1{(wuW#K)sfS0u4F(Kv@UtuO>ct4{wyunC4n^qiINh^fT7t4P5yjvL|r=i*`W% zqf7+1GiQa<^rzJmgZdotf0;~(04G+01%`iH2*gU17aX_a@ih`WQ32^Wk`jO&VAKYG z95HZ;%0P6w#_Xecl_fwji~X49t^^72Oa8cD5Tr;clXfzI=+21=7drA2I_}knvHyqy zeE_n7$F~ad&3(VzV|zgjm-It;`XJ7Kn8ONXE%UKzEX1FkECT)NQW97M^`IdzKw~)n z*bBIJ)5~AJ+BB}VRggK8Ni&g1$`B0r$Dq`Pe?ii4vywPizAdG&>Xx1HTuXD)A4+MF2Se_PN+&bR^c) z^REx&Nt;1V5&t%M?*)7n#k%<tRuW_9fF^8rJn!#PxH)MC!yMf-Xt>G*xMQT-EB` z_>Xd*omGx$*hJf(wnPp!>Wgx!3Kzd2Mgdy%oROf*d)p`vWMP4{e7?i(698AiI%C|c zhqH&tFm86d>n#427#E#X?!;rQD9xzYB|Ap1$tds4kl^$=cQRpy+AsrcysR_ErQk)G zWj#}hV7%#AFTAddgYXjp{jq13Apti;J&A@D)DUZKMvp-T#F*%qi5~=->>+*!YMLvQ zsWIm=OD0Ve6DC17ADQxyWBLurUMlR+!TRn5^^&-yKqj1njWU(I2S>;Gud_x>TwGwo z+*ZZWXb(aDLPXq2_S*pE+a2A^F+!cPEh(UbvdH*#+j#rF^Ex`GmDQ!aKo8-SpRP%w zk_9i2XIpLuwvkJdJUlL*(vhP1`tlEde=BBJLgg!^dwqfxXvBWb>_Qaeb|&(`Z|Rr} zS6|Vz0YQW_zj!@aeE5MIf)?oORZE9K6Q7VBX&qy%WHt2VI`zBTQ>GAwhlyUYoZhLI zJ6L5G#~;OxWi!MIx{wpl?k~65kOS>of=%<_>QO15RBQJ2QM1K)w$~rCG02j z{o$8m|Jd*5ZC%}~Xsl~jk_+w5^{vK%)?Ul)Z|$NpG##O)&pZz1B|PSn9$SbSO%hg; zymCbYj`5lNn0cZ`%!ij%pwH#}$qH-_0mT^+zZM|52;PuKtu0P2RmV)4o=g>*j5u&{ zwrWt>kTg@*x?YrBoqrPBmo2HgvUyo)yWcuy88}XzI1K_UQwSIMIwFWiQVm4!z}mNO z%f%4@|AgtD-Zniv-q7=Hl}d;3B23XXCSYYbnP-TGL+_AP=;r&$Ua3z3Q(wV;=J?&Z z!WU9itQZW}o6+H1n(-#T?3n>WeCcl=}el%}r`E0CDwU1BjqUd(~!&|R4z3U{?c6T-)O&g@%NmCkzi(4`?F4>y4P_H(azb#bLY;Fg#{aj+|A0jsE`ilq` zoA~swjvo0!*&Pyx?8+o-e{ij(ez?!SD+Lajg%5lJlK1>8oBc`Ggfdn6{Uus^N*U2R zEG4$~>_V(G66|yRJiOH2)tUw>i%r`P@GA!y6m^NfnOVG;>v27q{)YzrEK)W0 zDp(IRYx<#(22K~<57fLXqGx;FYh`YAV4O zwy?dM2D2A!lykZldl`Xo$;TumEU)~o9(i_lV2io+kbn_ib+YlXjKE%ifc~|;(-xi# zps^>k%Ex2&yUzUMkve;ugU6-h0e%<$Hc8v)Ulskd=CaRm_)rpv=cnRP?hp zwh;BPdc_Jw$%Eel!ut_5KTA5@7!_U_N*2?3%@u~H9`0}oAJ!@2a;wENQE%V|;3m~0 z(Dj=QV8wJYwXdJRnM42%nF?BTx8|txK_LS~c|l7R*JfcYeyMlXh3CJAZc=x54jh(@ zk=cZ;%(c9kU)&E9KdoW)8wQ@!_5P?%2JOUdSPMIkx0gPPP3c|fQY?ypWB zS*-<(-=-JlDTT_f6m0cfL<;sWU@E_E7mlEstp8cU+wkL%1J5rdHPh>oG%bqZ##x^b z7(Ru?(SYpIlsjPRk=eV7dDbJ7xsT5GHrp1>QQ`Aua%Pn@yaf!Pdoibozh|?MY~cvW z>7THf-C0rPYo2-;#x7zQOc_an@}<)qWe)1IR!Il!qY6Tt_Z{UfW_@km->-&8*4Zl%Y4R2Fn-X zCv6I-c}9@KZWd;AqlEev>tR^4mD281UK_ z_SHOl6File8(#A-b$PK8w}6t1^YJF_j@S?eGeHQNzxW*=TGd?hB@2ZrYu>?g9N8+} zsQuFZABGnNxMix>%W1DjmAuo=;zv{(>Yt$PSRg;E_N{%$R zdDK-Nb>F0A!j}tj7h}kkh5l2c8H#S9 z+qxkJwd*R$O33g#99zY4X{=i}XOq+(S`irLeLX>wkHVZ&jApXdA5m^8r^FCBQ*=>N zj9F)91@muYN@!T7`oAV@X<9KX{cdCe`3lL~a%*r{PyR%mnr^t;VIuSi4E?&}<;q*( zP*?fWuMiu>=`!%?sa)nL2V!35RjBTWL`&P2GF3~=%y99;_(_wl??;w)3?x@<@o`Jh zmtIRhn6S%S!Z^)YvXvdbt|_+6FY#jX1;9Jm^9N6@ZSPq1l1ZluoQhY?`t*gLD{5rD zvNMMoSr*~YJ2MQ629x1U6rKu4)Z0g~n3b2xit{<^ajYroRAT;;Jr2n}oNswUnD}rx z<0h{Zec0h!fBRRswf=OzrEQxA$Qh08JEp8c$-0FxmYR8}z+_d*5=)JrO`D0O<0EVK z?dU#@C=x_guL_klPN}GMq#dD!9=JS5X^2!RF5*W~u~u;bq(=YX*P>6EOU!-NnygLJ zV_5pbelduD5$GFyqz){5l+zFM!L`;zB5JgP%KZJXSPw>lZ;&%!vS+yv&S79W8L@GcAI1Av7yPb$fl&4_eU|F zR^?0h&ia;>ZOM}Qyk%*g(zWvGA0tzIRob1uUr)G&&7t>*8%1?)JabqoO%ByI#-VhS zPthWu<%{i1&f43;safJMcMEz%N?lzm6W^$;CW@^Ny})H3Li$Uzg@Lf)b#2*Sbd9?k z8?gPlktZ6sMV=G7qFO8V>x4y0i%+=T-i#M}5Q;e)mRt;-T5{*U$jo|HqhRD8^eY{< z-fBaus2(sD!kyC+_}b!TGN7X1$oZ zpJ4s{5YNH>nz^U1<^Eh+wZ^-bm&1$e)iD#x;xy^ZTl-9QA=&F66i-f}wR5vH3A$O_@_;_loF<&Q>7SO>uUpeZ})daq$iHCM!7KeX5EbIS{&$A?=ku zFPQhBd-d6j-#WeUVVXX4CqIc21CO3y0%uL4TKoOcG4vodXT@h@py9;>i(^vZ{qK=K zYl(H(16yfQ*xS>7a|-%+)!Ixb$5TqbMdKnekb%Pv+n)JV(7*M}=b4B8>hFuc;<`K< z?ys3GY-A~t$}G(C*{v&oml+JfoKi=RunqMSKVujuR;8FTi2(vN;vD` ztEmZnt{{wGzk&+D)_l9j99)BrPX;ck_|Ovu1mqhR;SF^(ocW5$d`Z<$m?Qj3VBx+H zOar=52)YX;DZYC|ac5_0r(2HPZFXT-^3+5MI}k38ImOL?gxsZ{udoeBe6_@?4iPA1 z$%fLuQZ}Bzs06(h;dZo*-#(vY-&$x)q~z>wt4RCKCJbc_g)?kqvT&8uX~mlM-8Wq@ z!KEvbIAQwwtbQCPG3=E}s4bTFmXqo-o8bhzwMLu+iF_Bbt&oNp^oZg^wP5?F6ra7a z&R5P=)m3pP3{mjByGN5aN3Qta?)P7z$>d`+VST;J-Y@?#zPWlNj72EH$E?hI(Xi@8 zU+=uCV3nt#rJoaKCWtTCOD=t6;f%&ZFD2E{&RniCLz*cJk?qQ)T|x4#On-3~CB?Bu zGx`9H*UYr#r%JnJd^2!d)$u&>?wI!wKGoNMvl$^uKQ=pN5M2tfx)ept;<(#S!LlvPV_8vT`o3b? z%S*ZmTPXgBhb+;lQ^{^Ndkg8~@C{Sho^BcDa5YrQ?LvJ7yWCfQUA z+5*1bO;iCI5**oA$g7oOn3B>0Om#oQGpT`2hz+Sn^DbI-CxPut?{_oy92MnGfhf`^ z9D_q@AUugoSch((%1tGOvXYzYMwg8GTk2j}WuARGnLmcIN*>iQrPf;jrR`>6&VZLh% zU^TKGwf8U4sMG6Ib6@S7a^RnX9tV}WKj3wV%Z&b_5I~_YW*a)DNo-t7JJ8YKRBVCC zcY+<6gFj6E5Nvpg%BA}7zQ|GSoqnzr=DYIi@MqM+qF+4j)#ar_fm0^t5NV&`hlItR z7-3K63gLu=l$)B&vWnWzW?;yl9ux|_?eVInv1kkTuzKBk5>^nd}=D|BUZ9O z1uOWF9@CGGH3hXdN&VwovMQ{#H{{cIm+Bghrh9N=n;|VGY&f}$53x^i4vMN(6Da)W z(;K}R*XX7mi$koAD8fPqizgjBP|O`U<%+}z=g7-E&uxLW21_;D1tZL#(FiQ_LrV9Z zP77ktp}f%zO?$L`k3bga`%3kI6_D1>fy%!!xYi-GzD|t9@0oZ4SZjQoKP9XOg5b&Q z+0yCzhG^I?VFc!Yd^u86P22&pHI)8c0&r8d%w=+=0M%z8beMXJf;o_Qk|x-@hKu2T zdgc#Ly;TYiXA6pd89`cLIHCU+oxge1|9$+wWcgolK>V*7{I44PKd1)%pP-bEl)29) z70ZVn1J<2`PC*i|?m>hO$Gsb7((fsfi#yYB6(45+FW& zIsan4N#IKsPywnS#DsMI#)jL>-n1t-PXvf@U%;k}^AjQN70HSbQWCt3Oke?`Ig|+DXi1L9K#0;8;4WBEA z5?q#k@>gIoDo5${M)zV3OzCtpTyp?1$b}Ho7w~}Im*-heBp)l~yl&DI1sUDajDQ>6 zXyLPkU6D_{1U8%_0QrcY@D}g-Fy$~dlyWROUB4kVR9;l)Rh@;g6V~soy85ALON^(B z=-;e!cUqs#8T{6>O0CxhV$kGg4bOV58-7jKLWmKhWL(MPdXP$W0iZNgL;D-TecHUU z16N}LVkyqsfc5R8A90BgV5QXc`^o?T=CKk>x3+$0JJME{>)b_9>w`mRk^Ou13qzmp zh0O6Nuzo!{>5k`jv!Nqb_ACK;8nA)ONSP+`eF;N$anGhRI`ZV!%xl^YBm{!g@Q@I+uTXYaf0yQw*=Mp&W&&AJaLP4}=To4XH9^f1 zYT8HAYQD;$(q>sii4H5GlMM2$ONlX4chLGZD=FwKr*C z+qxuv4;6*&(6#vtEPIa5J+YG@=P!ohn*?Pqx9xY*&aLkvn{PNp7$(M17Zs*1jTP4@ zll^SLeHa2l5ano*rm^;YHA(XL{W4=N92Nn!*`2+6Fmp45^|9xfb>ivL6QAUOfLR^# zl5*)IGW1NsSR&`h!rrGE#mt?driBoC3$67oX3XELzw^zVI~^d)zf;UD;-4_oB{<_lE{VRyHe&qh>Zp|zvqa%|Gg-%Kw`uFU8{Vr8h;NaXH4^@k5)#qv|``eT@y?lUpU(Zw%icz#!^w4=Q=94sj? zJHwPW`zbl>n} zNrBK2E;)-Qj9QC5- zCU_SGXRV8T3kVvqnyO0fIb8BkOUhtO)|42NJ{r+l>wY*Xvi!@eZ$obo^J7HI7}NVe@5f;IHe9XxTb&ebt&De4p!2j zb}y_-${%P#R|b7zOx?RE-?(QX7hk}y&w>tl{?MoywU>QxP}-*u-CNu?#VF3t_nm{E zrhDSEo^;daH}&ayq{Ss znK)-sk2W~*et59gJaV{y7fcK)_ID)uhJ=%n?P=>b07;2Bti%%3maz7D7?+}TNUL9* zy1g5$@nWBoKhJcxvFqLH8lXc@`-Jw*zo{eMXfLfw{$}wJuZGh5B8euN%64A&B&NkF zU61f3WzG9iXzyH{10|AVog2ZE?-5(HtDz485BUJ^1)D%;c)WpM1@r0kodBc;W#jiM z;nefK?k@8i*W_P=Bnatvb=EUKKg}xgn@5-S^lrTjZy`u^WkCp8kB(~}ms@9zdJQGq zA09@)9nkoMbZL3WPgLE^>U*O!=`7CD3C;G$owNp_sR)Yq=}s(QPGQb~8p3asVA0CU zgRn26t#&rVm_O6tF9T80?G>HNe*EfqLf=Z8XMc-bv`ZX+T5sLs+PVMY@nkUML%+YR zMiu+hy+!=vjgMwZ<;h5ohupN_us!pKZc0KG`Vt7mU#iywu7=)`einpn5T^~&|F>-CvoTRS4pW#_#VxQn&4ph zEx3Ao{wf~Pc%T|6n3h&iFF!eSHScGekgo4p^#u-Ngo-IOGke|lbuRNhi;4MCpDkR4 z6!oo9P51ev^v1&s_2>tm%6RyS-gW-dv|>fwbWk_p-cX8bPQl`lKqd6opkMP-O^IT# zZ?8z>qta`Pfc+^V^z&`5(hHh!++F^7_+pU(`J`m;=u?Op{vJ|%nghHR~0=C@oiluV*Ob=N;c3*2*Omnm$>%MZgOG6Mr}_7T<0{|1Sfl9Uyibp`ObX z+`;51yiXlt|Jy^D5E_oKzr42Ece_YRJMiyj?E2gpA$U>{`7|S^ui<=h(sZ$gM-HXV zEG8HS(gi8BW?aRjSZ9ud^-vK-Wh*WVX!L$R7l&HP7{@HFolN%I8H1nuB(q$JyM*aq z)NgNHwyz#!GQ0o*F&^v4SO`LhfZ;+B(#?~v%QMWWcVoWHPCu-qf8h@o z$4ZRz^9trX_wz3EJ}OrwPwsNd^A$Un&A3_$qRMKb+4l|l^z*WZ7C~rK-jRD$mje|$ zs-<3EbN=aF+9QpC`0o>Z%kyQtx=%gCc;DCNHuX>ayU)C=y5V(+l|F-SX^RcJq)}1lCO*`9<2P|NA#5wTwX28lC>F ztt-Q?EK`7M(qv2#->s26$x&+&P;tI=VRJQzIs?+ozVaTN+L<$KfZ*F^oA)~Y==jYg zR|>to*04ZwiHs+Ev!qI$nt=@9FI?U|SI?$1dV$>CS<{fTjmFO}Abo*cJNt5Mp)`HT z9@3k%yYO;@-& z)?BFklF(ST>U^OgfZ^k;7iTgvQ|jo;D6374_Hy!t)60#GiHN-t3RTw7cu>`(#kqgSS!QdLliqiiUUH}rMMF4sn#-&g$5sk&$?^m_D0P`?UyKI4-$ z50*aQxtp08Gx00$?FG-Cyz_s{c^RH#G4h#%7*oysnsm6`>^e-*E{ZC4c6NkLQe9KB z{KR}*(zWGDK+r>^zUu=a?_n(nF!(6rV#yj+raf9rYvW+N-o9%?+BK#k*SP(b^Sl`) zD(>1m8yhoeH_lRZwOYx20GnaouMM&o*aNJ8&}vIAE~60}xTId?qy5b$smJk`*8zRK z>kDusw4f(vmHK0h()F@hscn`J*##M$^=!}V3}fR>XRpJkeJD0Mq(~aUfzY5RCH_99 z0THlg?ykDoCH=9as%kR8vafrh(8SI6CF~VnqoQW-s5a`yZW=*%Q6^w0r}m0$50>cA zUtbC?v(A4$rUgPbu8+g2nh;V!pRq{z&1J#ll23wstfZG$0>O)l;t*r?q}IJtezBuw zPDz48XK(m@O$xR6d*TbvRz?NAK84!BrauB;XZe=xybZZ#{RiUp@ zuMv+U$@6?-;(6Z3JT`d3rENHe`mU%Xx75rVMRS{ac>0a1l-+r+zH!!F!K|MUYI5Kc37~xPSVUOw{LC zG4fv2Zkokyrc%xc53||to#XQ2=tF`&L%q$t>@N|p%olLZ-Hxz6Vt`|_W z*GMh4_vO?#dxRV&NevsEj!8Y*FPXYLb~6ZS-haV<9OhP;T(=tTRJ)WW;_HaB#!FDL zeK=dl>045u8LICE#1j#KyBL(_o4+n4OI&?_b%h~n+5%KZ_OfG47U;ddEl6xthTF;A z$WW#wocg+dr1Vvj7*+5+YoI>wj1V<#7dW{z7FXu8(*wk)Eij5pFaR-*zBDX*l{I_X z@s)%@fu8Sqq*x?}zgc*z?CSSr-;`se^5ZYifX8Og7%Vx!F-G`K}C#{UWbs(-yKCuw<$ov6o?=*)9(0fcw>=UcVhKi zBJaoiqLo5A@e18BUH`JL({}mUb$s#ZJHa;54>7h%SBktUGsR=dQDz6mjeegAR}Mb| z!K`eTY)&=Jd_2MvOYBf9Ln{*yClPH$5%HPFO!+OQZ+9AaH9(+;Ubp`Xps~C=&S^$m zibkL3;mQeF%Ba`D5Jgq@B0kAu9KZOh7*Er|k|rQUa929;ROch2XUf&)c-d>rE-oQs zGxpTm{WWvAP8l!9s0Hs{`Sp#lqKzh9<9nXnes}2uija|eN*p5$D22`LtdwDhd#w|~#USu~S<%<}QWL*d4`W~{-i=Vr{ubVj4sw%f%k zmTR$Yb@rbwj@mPJos@`&>+ORJed~$I!|(mh^&Lawub>7njZ*OH=+XHX8cYkc)L!1N zb(YH{D857K!CnC7U!XYPHeBRB6FD|?mrto%{q!E_5_G>j(v|sDzndU8Qop-H-F%KG zT;}~j0I=_t6#KEqRW;<_RK%eT$M(8QMZ0Ss4~H3w>gjIEN2+n-I8GB>e)wG!7S>&h z>mTHli|D>SzdFywwpy!tqG9z5(}{?`j}RLQ%k8;q>I}&1IBZ;QP;^U#sV4?k5zycl{X% zXpNrqTi2(GNDVak5bezSy0}7%Q@z~iML&vO-eEG5IB3v0qxsr>bw5uDHPBwwM%qJTkNh~X9Q$@XJ5&5SK&coV@=VW-v@hME;N_FV?rpn_g-Tr zT*eK2W+|?_t|waNSan{ne1285TxD~x6q&L0F?e@#q~2Fj?d;A;7|>Xbqy~uPrM1WU z4EnVxV6@I4-X7IH+V8XNtv`|OYjl-RnN7_YR%r2JaNT_4O=Hao)q_KVhPD`{Qlts%=2Iq@^JOlVroUqT5~jZy*xCTs)lAvH^6K+A{n=mANU}w1L$P|=xE?)w zWs_?&R{CUbY|$z+l9&+4uBh-$IJ>w*1U9SMWAINq3%E#@r%vTDr|%p-QZy9xjtW8z zLmS8Jr|rouXY$uQ&HHR4o;3lL?&V6Ft=Q$h`#*bxFj4ct$x08oANVVS`@d0tY)0>E za^ItdvSz)ibwfXhp>XX04y~QFH+3$Bv({9NA8T5LFA5ADObjBf7{7-TF7;A1OgU~U zdhE>@tZ%kg6q)zhl#iYgbryWmpQ1ix`C8Z(W58S zc5|VDp%_0OM})dpvx16@cIVdlmgg@$m&PO~87M|$pKSV0*4!p3jTz>gMGdQMdKj@% z*GW_nr5Zm^VITB>7UP3_@~ai9-4vL;gf87&z6#v(uD_-sXIBYdW>o9GV3s{r1~VWN z?wD)%omc|qX|S~c&7q!qAAscGmQtn_eYJ54m*mxs>-i9k=kjz7hf(Ps%K+ip%zAg4 z$f6%yoR2+T@`a{zVZN|F(61EM<-6L|Jt|RzjVzVQjQoC^YI+KZV|R~CoKG#n{Qg*L zicpj!8|@d>Kx`r4`xvY>Ew6m_ZD0M6ltz21s*{c|1{(9lVsPny=SY^s?-EcU;Mtgo z@Ul9{>2-~6x=$T}PG5$v8OF=i4Q>$N#RH{%l_WJVty?Ne@Rai*kN^Vi@siTARE~Gx z2k-FgrHmdxMr{3Ub;W)xOI8KHT;n|Jrx!lZx_1{hz_ugGHQxo5MxHzl;VGSxq-T^s zz|$~)f1e%yi0kcFp3?blpnpS+cLWaOhd##f)K}nbJh}~gj!7->tI*9Xy7am_puf7C z7fy5yf{w38ueXk)enrsT{=bCCUL)_m*;HK0@t@d8cjW_pOtrGRp2_^X{KUAtQ;ARB*gjgPyLVb}F!@5@?xHH= z87=|8NabxPo~8|behX*#{EZHX-tO|^Qu|re-XR>Ef?(u&>1OulveCO8cT6`mjJfLsw@p_kpH26 zbX7!COw>_ln&dPCz?gfrlHf4`eW3laQZK(ua#J`-f4zpP;tV-(6;DfGhm$vHq~u0$ zQK9=O%ZdNwCZAmA_Y_u)!LOn|Xrrmtkvfs=lZ+UNoFgtWsQig}d4np!V{1m^r|Zvb zu-;8VJY+^oj+dkrgs=K{J(sTlk53mRXU5l5lv3xAkCNIp?<;=s)!_b>k8Yi1RAuRKE9$+2HuwUyDHi_M19f~u+O94 zZmN+y=nf@<8#zPOR)WiB)zOjo>~y!U1z8Y-b+HAjq=@4CBxab*QzseB8w=z_YIU5R z^sW$8{<81BX0yqdb#d6V9&Y{V0pou0r{S`IFjI5z|8#Zcflz-@|DPFSElX7PD3R>h zBaAkc{o62PnaPrUi;1$#j6EV-_RxZ1LXpTev{|#2EiodyO!jrg^BGIO-}Cs_XYRe9 zbI-l!+&ky>9-)#FW1J-`t7?n0D!{n$Na6|yQESC8TD4Na4@NV&XL@<)IXdgUCx>;v zZ6)z-hHY&-Z(jp0kw>rB+khC<$iDDZ2SJ1z=(1GD9mZdvvGb_65(Cge_YfCE%J^o9 zN1~2UlZ#@*!@Hll7T6?Riv!m1x}=b`)f>K;cbcmkiGfAk)liPkw1_)knbf%s26qb& zj-<`yqFAU;j0}x0hX0|<>Zw_4MfTeY$t~sh4KSu^?FjkIj%Fd}629^;OnM9)iVe?C z!WM%fmmjuJT}v!x+?Il^dw%AZg5$bpaqf*#So+2{JR8Y8lWC0-t6-1n9K!Shos>SA zi{0gCkkvef@`RJR{ie#<@i5d`1Z4rLgVqL0Y?b9&=T}IRmqSmeIfBZM{1#`rtcOBw zVH<_I*TLz?kt7ARm%Lp|Ky}+;uGI@K2wb?wT9{8C4OciKW3g#dP%I5R5jU4Kfjr(bz;=|;)eMnb9aN|Lhja5~Nrjd>@zy%+ z&baq9s?<6#<^fP2YdD)R;EM@z6B@X2%UjL~t;PgcCRqa+=TXo@Va_iPTcDc|NQj2Q z9`mhGR#)BMBW>3_NG+O}({TkyA^Im#${=l$Q()QmRl`<*`>)f=aKc1SrU7*g0KcIC zUV1N^0!fo=exgFuUpiFd5UlsTZ$;dc{DOVC#fq=V;cLr(Q?ZT&4%%HaKx3yVpY;!9 zxAY&&RJgcgbH=l!d5W(V3tOa3*X9Gr`q&TK)#+ada`kB=hPYCY(P!zgfKmd!oDaS{xIi0Jkng$M~)+r z2Drp{)u?aprD@1YCdYWbEOm=M(@}7n6hfSh2SUihk}l@!{R*5)nh~&QuBnubXOJA- zC=Kah!E|=qcTP_wB9;(OSAjRA{;8Nx@^>eR0@r=5zjVfbcZw{^`@1W{j|y0+iBEIx z03eNI^05`;1X_*RmhuYuo0axW9;r}Sz)IJYafNLqu3**ncXqxh!`i|d(84H~dEZiU ztx;S`532Jb%cNos$|0X$f;mv5ZrMp#sPz&D{$~fiv%_>A(#&|79r&^^4r{=0F^yCL zY7(mi!X<#TDMRQ|c3MTJv&RV~kAvQkC!42~Y5~sESu|%2Yc#Ru0bb{Kp`2>e2JpNq zITFhjgr2v@fk}&kalq|@9OdV3+zW)CdA_Gc0eo)sQjWyZCHkDXb&Jt&inoC93G@Se zp#X;#(hwa1mHuNr5Aoc4NGk}p&Vg^)?qq-k8yszEq_`Q;TK*RlK2)k0(vRQAORw4=q{nWeT zBHV7;XcPTUn&6tiE|sT0VKI5}A+qV~k389T=2<8pnWJe70Jaf9$q(DrHV4dF;X#(Z zPj4m&PcdH#6)ovlX4)S;xNPaBxll_$?hy&l)z92SezkwNVoE)1m*0cZkHe0!cI^M#4v7Em!1x2pb*hhHb1cnD zS{fMsH_gbw0RC^ci5EjG^;M&*teX>?a(b|pn+L!nhvR(+r8F=Qz$&-OEWl<}%c;-n z%ATNL(pv34v=IUWd98xGQA#YLlxl9fRzOggg0K;SKPH5D@WR(1xIp`DYZh!F$Z&)u zHS~5K`~CD~H4}Z?k40rap6_ zgirnBNK>%QK8b(C#u!&^Wa)E+xvan0HAotR7*35U?U^%?ak6cYZA_?3o;wd&_(xRNTyL&QN3BFQ8oDSj&`@t_HgNF|(6G68_3 z;{iyTPjQOAL)O)nA0=m3bHLyOA_BjjNeO+Z#Te0}W`aYKXVV*^c_3dfSf`VF_C(1+ zo*hP*pJ-XuX5)c_%}PI=Rp-1ADmfzj$?wpfGjwu7r691saR3ILu8xPG7^~bpQ^whz z@0tv7md+^Xb`ZdG4@SU20gd;&mu}2jEkX_(#QN?V?VKnI0M9F%7oVl8zJ&Z8CwEvE zw9^@?x!=Q+4`dcVkaMSv;)fa%X=FGZ(9#D#(CBtl4JagJ%xZsjESW>AcO*VCF71@O zyU#-pJI!TB?&0~Maa-osjEdhs`1T!C?@q>?GOwnk2mr&IrYLK2uTvFd20K?~4a)V`#18=ePD{wIMa+oC z?Na}j$&c`$e$L>r^$Iol(Ptu0qdN{9D>4p{6KIUL(78pe5c__*2YqN{(%Bf_jB{4I z@S)gv-~B<5kRwbfJ0^gpz=^q~Koa5lbEN;$HaDfdT6Sz=m7;mzgTfqi5V05fz;ng9 z=atTa_>6>`BK>PizJSW%E$0pvf?_hZ*)g$4tjy)Sw>}HZ%($2$Ly~ohLYab{!L9p` z;jSK$8<^Yr%zeckT{QX199%i!f3w2L4rg(V4K8^rc3)vYF&rkI5i*i&WZLJ~l70+( zBao_}h3FrRJNf!*jlh9Xfe!5wzw*7G%NQ8uyX<=OP?@ zI|Z)Fyc+3ck8XfpM_H*X>7$uX%a1sUdrR#(t}p~bDaHhfW$0K?@W-$P5gh@SQ+Vf_ zDmS{aqQ?%biWk8}Nv)FcO%q)vbC2f#wsd9hG!>R9Xj9pkYb=G8?(;tyR}9#fh63SE zGU2PUCuUodF68?SBTBOUJ2)a(H&*co(5pN;wrp?YND3yg`7NvYIiUmZ=MX#)>KK=@ zy#;>FWtB?+X~%st0cD$D-^5L-?{AFfIPq=Np@gxd_Ub!_%P{JHQcXc~(S)suZG*6# z4s&`rJ|GR+4G?2Yp`{3WPx0tRzaQr$LAohw)&pp2&yudjX=Xl=z`A`?@`&Q1#xVtr zG+`3spun|Xwx*z0;U!jDvnNTiq)?rD_pF-TpaN#P3}`YGH(Mt*jGgbQJPK0x>Rs6} z9FTl<=JH>^aNL1%!&N|-q!)N@IR5boYNVGWh^A*`KC+HbcfYr;uyA(I?jXq6sr~1? zOkN^S0O5gks%er~%-3w|O8>}Lb$wqr1?345v(@iSZxh^(?5efkrXNA>xO_2aT%ZbR z{k>rj=o8ho68vI+qL_icm6F~_xad#xz968DL9b3C-`}1up|PUuXESzqC74{`=bplLzvEeH5XuEb6Kcj=Fc96rv<ppoF$y=IpbVgpQBkAGJeRw!mzwBMilA55upioDLH ziY&i8E{FhD7$tb9POVvwU7! zUr?#9CG%TaChd2IH&)1kl`<{!SF3;tu3%d?m`>zta1>ksKNq+$v%A;gOvO<0-GES2 z8$OKa6%|0AqsD`*bGt#|~_c&S92nMiG)55WaWo zsQiPJ(dJtHk;I2${Q6gwOL43wpkx_z&Gg17DXF$jXq30J>Gp)>uDv*PAYzB~#nN3B zc?X)5mF@YcX}Z=K>E4UF}p-1DdV-Z9Z~oBB3OsLrN+u=bl*C%gM2&Fu3g{p$|Cl zW?QqR#1_>=^a{T01X^*30Yx%M)yK|OR@nXg=~c-zuN$$KhU7e9g1@5Z8gAh*#sbL{ z#?t7oEUF9Czujq_1 zB%EJwPvZtR!RaZWW2qt(z9!8$Zm1&JWGH>qrh;DXbr*w-#j;lMbWOgr>*LSQo&9^lt}}+Y*l%G*>Uhg#4_}* zroEC+voDoYj^TfP^35=$zv3$*$nK8~bEb=xib^6Lx7Gd2WA`;28Nku=lUunfqfkV^ z#^!)-MpyWo%(C30pxF^_tRcS5f0;vZaWB8X_*B&!x%dL^o#G$iF`EQ{iyIesKge9S9iwS zyTEL{wM16K$I6vo{qjc}4>~!sYS!iNB6l!t>^CrkY;s$rTZrJ71O2Kh;D~!(U7w*q zYSU4Y1rySpAPJ(=Sy}=_!X!oB%R2nrK2>&zDUw_6K-VS504i`S?Y6QOaXslwt|aln z#~S}xIQnLx(|!7Syw$?Pa)p;i1I~&J7#8y0F^xHw4oOVh4eu~{X8gkYFE0+YWF-+r z&QA&zQ|9MliiW>k760G3cYi_Mu&*;s=&T={GVE9m8*BuedhI`_nSu!4qYdi;lZ1!VVLQzQsic1 z$&ey>^(4FdFLq7>s6W-R&Tr#)K;4)^u`0qz6PK1%ay1w{2$2q`?e?L0K>QKB)S3ln zcHK%HwC`wiEveFd`q!X{`t3wXgSQYP`>oHdrZRs;clv$|wEA4hAv|Y_GsCw;>@EVJ z=z}?+t=!OIdq{%U-7|Ncyc?0b(_UT#FWhQ%S?y0PL3lljY>e%TU`Z_-3i zLns61?y(NnD~i$%uslYUSXW_;-PUt!AU@5@r9QjLMvnrebp-nLe9)8eeFGhjR_f}E zFLtJXVgkOv$bi}vC&Kk};iZ-)KOvk-xT*lT+n)z=x5%i#G5+r`Kn@CqnMml%yK@>- zJPS>kN$5(evQzy0laZ41i2s*x&F(P=Ccu>1>HGB6)ll{`9)pSuZRG9x_g#sjR;0@5 zxFRn{+sq$Wh};K9%avbB9!voGX#!r)v4)>1BwXWfsb}h3=K;bpAlf`9y?ltiR!ggx zJT#LOjI>+|3CZ#>Qn6R`|pxf#m-Q9!6MC3e^g@$b@i$7pB`E*`EPnb*B49peA zctfdEyg;dM)<6)ca^`vYQf($Cb5?yaO4S37NeJUZq6+JJZP8)E%M!1T1;Zbt&oxG? z(6*Vw`t?WpdU)&F7YS=d`ZMoL$a&5++!uaVH&~@5Y%MEQv{|3?5e)cmuOK^SG*wg= z;`=Sy#RTlhUAQuBp~T+Myt%Sb$k5go0L^0yEl)e{5{1(ME+@fEFXORa=kz-V%Z^!e z_o;5L)?D1NeCFG%RiM%vm^DfCsgEy1-YWg{E8Hn(1`bq2L+@5P7gxD{c3n`LApEI6 zG79xzgPgz70~(T#3+ai?8Isv7w8`Pq#vh$pOx7&3krP1B!o{dz{f9p@%1&3BW?dwE z{IljsYtwG?=s@41pygm_yO59Uj(ziTapgq#hRYbKy4U?A3oP*qIWZbxkdf-5ZuW{FMtd6GxJxkL^1Y3|ZHII+=tj0T9t zqV*lBwik80-G<8U6dr$d1FLWygHTY^{(ReAID(KnDaO9i^XvDiE9fI+5%>UptGNB~w-;2g{R- zHeYG3X+It|sp`4pTuyGft6#Gk)o!RfL$Qx24l0)QDYC!}q4NQKqKC{l&u!c8&AyKWYJ`d)X_&IaXOIRCfhX|dg+f%3QUq*^*i<9Q=YqXIlnD95xkQE;IeeyIa$ z5NBde%G2tRd^|%I;y_>_Rpr{%|5;%cLLwAnXTS+rk)TAGD0ZA`SQ5J7EPmC zF|Pgu*!p|{#qHux>W?k-xHqMClW*d}Uss{poX46J^xBMTjSgnAcC)~(jytpd>@3R* z?#RKSjKske>(c9FQU0gG{Ty}*8NsD}f1(jS@&hOOTHV=i48QyE-F&dPx?Q^x0jp>u zii4yT;44m3|L11~YWaOsH<{$MGs0WGA8pQ(IrG~x5J`8UIkcWtj4?>gN-1Qz3gU&W zQ?c@ZeuK-V7T#0mTKUqIt8&ETlw$uoN9iZ$p?xNS;nBB*<>Ii^8a+|p@443$QXYOI zK&pYmiSG=%J3)eK0XOsL}Y@QqtWajf5yjcPK~*(xHGLjdbo((k)7tBHi63jg+KxcX#aWx4ysc zuifi9oPB2InYm}?o*`W0wGuuKH4Xp(_$tcsS^xk>eFXy$Ow`AP=j0s#{2^13m(li2 zKQP8hr?s4eeyCeCS)LTbAdx3#3;+V+#)`9*`Es>2K{BL-74PLVi3k-mNkN(s6KOF2 z;H4jOVAj3s$Jq;csJ9m97gLU}TmCGicv-o-J03fDY~Sw3FLEA#$?!rV^IJx_4?P!h zxCkNWvOzLBeofEoUQQvL%f=9nwsI3vw#!lYHOGJ1di{+e%MLFux7dnS#4)y`B3Y|J zhrTDlu1*YxS(khV42Y+O>|S>He(|(@PDkq=;`drsG-G2LXqAOr3w^c4>t2HNPhB{X z1#`%5iS}vox~ogRPjP=96GDRd!77ejD#eo^){MADDTkzO$#t>(v**~KVyQD8`h24E z+)ID#YK`Jx1K@zMI70oBfNNfJZa&)u7lM3Cx}E;?lqX5nh7@?Y#_&h)^uluGlfU#Z+H+%D0OA^UwyYNt!%yAWCbAT;2a}Qx4L2Tj>Z`Y z;VXxcxn14vEPa1Lc5zN~6^qyNjH~wetxb=dXC#>x(tIgYA#=9p-f9Xa}hsPN4e?^OT8><5aoV4^s-T(4jh2MsR~T zu|M5E{Ryd)GqO9oB#AuB+maq*Vpi1Lpv#*3$f1Xg40*-)mQ4G}{uLb^2XdE|+~^h> z!-K;J!j_A1WBX(qq8RKukFCz}yuyI}_=&dvz!AQHDdlR>*v z!2yRXCS6M(m=Z-_FIK1(BMGcM;ge9?Qm&qUL}8_@A@N2A-<>?(G^U(b{?j zlDW;+5yIwt=BLl?c&VyEIDZ8Uo~CzPk(ed)d}}RM_$!Z?^2r_Emiqw`dc2o9G(ili zgTWk!BV_;SNvly@=qw{C%&PIIwgt_DP*>=Q(d4dS zH03)q!n#A^M`e*U6sl+K6ew|mbYaWp(Lo#V>3eJt4hUtaxHRNu2Wt1OC0U&n&&&oTG#2UH?Y@&! zmq$=r(^inAaL1s^`1F5Xg)X&2b)S4-r8s|i(=?t~6hql6;=XTWJ?6&`dcW!F+~-kJ zP4}vzyw=2Q^B#ip39d`=(E3P7XiOcwLh&WTkZ8>2v;W{h7WcPSRqu-7fG_n6+m?}1 zm#gWo@lRA6K1H7kt3DlhYIb$hYo+7H3bEN{WPWFx;%C>ePyK2!lyNCo@S0s4T<^N^ z!emEfLO21hdTAA(5TSTyLyWS2PA8LKhO1Mhm&-iy$zHJ9u2~o)l)2)tuMugS+I7fP z!Mk1?cu$+|U?G#7OM6Dqn_c=?{(%G(%RcP+ww2!Mh=`mFpV zWy~%H-&Q5fFhw^4>4s;Pe#U>WB9*_UUH2{Y3ShzJK99pHa!%u=azy#JopCP24ca5O zw-#PzC1~RP=e9Wk6-~w~w9>_%1T^0q8;qhUi#vp>!8i-xK7nX{^mbVzhK|EC3b(_n zs|BCCfd2NnR-jHJF-y3ko5if-1n+-9gvWR7@mL|?!eJ6J^vx!;e(QH~yAFoNr(f4< zqmudD=|e_|cp_ghqBp;NJ7G6@d4wz^0d-)5Oo>+hcIy4$W&ID8={tGM_#%fYZd&V~ z#=b+}`TeQm=;}ety*yb$SUe6NRFmRCzfFRtHINauoBt^DBlNi=a8Ju`&=Z6X1V}S_ z25=XxR|X6PdX&4dpU(06EOIkK@F5uTunnp5r*234tWc|!j%wZsbQ18mG)WHjv7Wg< z=O(@r?BDCw)(xCSylQuM8sg=L#uj^7cE+C?=X%nr(f4}%8(fG}JY~JsW~U8>X501X zAyC3wbslkl8&gMECHY_ppY%Uy6yg}H47m{nk~-Eg9`g3PKz8kw{*d@L@D||;iVf6J|6$JlkGebtp|ga-kkmA zd7kA~XSqOhF!T^5?%a1w_u)hXS8`jSfI=NGH2nH)=;(6%>W8c}%9WUiL~u>cgo|#b z*4+Hjw$aD^k-g%7iE0lrvi0`<4n2kvV0oePt}L4DB-7V|*e5nU z{7H8Adv3Q9Z;-X)h`JYGc@=}Qr<;msJGjxo(k`w!&Lc*P9;=rHQ!JmDk-a$hC;!tJ zZ_A>^^4KaUYswNA3$k!?BylkB{R{DmZeo%JeEN=MPdYPrg7K`pj|v?PPkmhGKLZoC zh>E+>_G&lkpk*ldJfsrh6G23NYIty3N4~-%CKP*346U1d?)KIO4@&UkHW(q_Axh+Z>Rsr{Y#KzD|5)T zz?NM5hdZrrG+CxQ{N2Cgjt=&3=RndGBg-y~qRl`~Fe5L~?F?OdyM7$AG~~bdey8#G zj?Z#QOn)Z1p^s0YLj~bWqZq(+{d4Km-&OMK7>o^JBsfI|ul$pc|WRzbvhpbIAIw?#k#vbLFn1RM&pJ10HfSH5tpK zpbZd5f4C()B@y`_PT;rCwkw61hGuH8Ke=N!V!Xh-p*NyUaFXL~_w%Qzy2A$l_jgS7 zh>Rz2GpvLMS?snlbcUNS@OV_ngM-NntY7!&d>W`KTH0Fgi#Bif~ z3%f=0cOC|NvNJ6lrm))eI>cdGggCf!R2NT+0NpVT>mM8tzGO#YxF`5DZU*%tUJXCt z7`~*?NlYOGZ;2>zuonD zD|Ls?@m$@g5x8tHXif1!Jx00!{67U{Zso2A0}2lKJj`ml&T&Lv_yEaX;T8)dMZkYP znZtjyA+>zGB;$Ra*l|bkh=RvWas*R>eH&W~5ghlAYKyWyw)OZt^k@F~FlUO1&*qIGURo5P0s%z2#yQWL# zolPB^=Xr(&(`@=?YEgvV=T(UFT!%3I<1g`_)0w&o;8t;}xp|J#eZFa9d;_9&(T! zh<~}SP|yjCQ5K?pMo{3GPfAwI>kibKJ!;J7n?D4S5{{s@2gqSa4^F98WpolnMJhRJC;UBNPqvRNj+f zVT7nZ8Gb5bWAeP=mSPy6m8(`fs}p*v^?}! zJs*mS864R9U}>zbzV;Oh`6&=g$Vr~$>79*~k7L!>NqY2x9HX`XREKRwCKoS#Zs|HY3GvknVV%JlO+ zzhzhwy@wb3H}rk(Y_rF_`!m!Vahsu|fWgUJTUb+U(kUl}j1_DXA95=s< znI=3Y&;JGp{`slaZeN}9G!uSBF#>g%LLwah$TS~bWwxm|CvKdUR~M=be5lrfJ&Kiv z&@kK1ltmXx22w7kxuKyE^))l^W(E-f$ydXXqczCmCZy0JqGM6%iU9xU>D%GsY|;q2 zPk23|&wC~TFD%FtRA4e{OaB3pT(PRWf9u}{d}0+OjO{VmxBKY#@PliH5vMmvh#ekW zc{Z7w=}()KOSC2WMMqD{{_jP*-E;fi>Tf1a2p8iFF{VG8SC@T8#SIjX+k)@lR_R~SBptutKY!Unxn~Z#JGCihtkFd81R6b z$ZA<^LSDI^&|&LS1XDXB#Y&-v?Pbi8luX>+ciY9F^PT|tK6hThR|x&5kX2=xvd`Ji z9>|w1TlSdA#}hsk)=lz`7l`|IG4)Xe0vLXHt)8~tKI<)%9oH>lNrU_E0vG&-j_21> z4UsoT}XK|2_r=uk8K0`y)wa3Gtd^J<0Z<$dliJtTw-j?v&)!DH$%tw8<8b zcXhdN`1{+W2INpBLc!Fzrqt!tR5?ACSUU$oi3B})>U)$jqovlLpNn;K!*iql$OA|5 z`NhRWtKbVyfsPRDF$kscpLwxE_8FtPo6={+BZFI??pGT*Fo?m?C|Q{p5!zPUmsYgb zh5NB{$1Bf(u@8Fpi-p>i>=`jDW8xBTlk4IUD`RcuA(a_2Ukxf)CVDBFAzA&I8r|S* z*N5fE;YAYADYzr$LD(O}sB*N4$f)Kj=r6^agQz-*(A|lH(Cd4rau&)>gI8wXt%SPA$${Nz}5!D-85a$1G6)leX`7 zSXkHeL$QbN6a3@tO~wYJCdQa#5BvVv#IG9ZXM_Bf20vaH^%E7rnW=2}0-WjRSY0d4 z^_v7x-YgQ7`RfrN-KcNDi-kw;)tlG@S#Y!lNMkmbn8sF6VI{jZQ|jk>Dx7hZ5%~x) zdWS!BH{r)FEhHF?Pry9EKA8km%p*x21L^bgv71@&V@_bu1$l3j$gZ7F+2PT`nX0!m zK7BfwFX=yNoF#gY3|%Gcc4b@qEQg~43C3at_Mo&-blX5IR)6h>AZWvJTkONF<2Btg zexU}d=TdbHAE<5R0w%!)MXF_fvU+RCzrw#=>wg}WmH~u^!jjj}9^<+fN2U?|#KkB2 z+IK(IUoAcad^8?4_1NWO=(3+karGf&g5h&1^l%8P!WHNO(WU(YFZH!}xC%o8MZdfJ zCCi7N-O#)uM2^u7F=YB2nmS1EE-pi<1ZMto1E&sGFSo9Opmb;Gz zDO`6+i{!g;VEH7+asuwqhHU;q;tQ;s9Jn3oeBL6{U}9FX+zPdR$?6*d98G5I9SvCs zX7u^qesK}La=hbF)(SNc>IEe-Y4S0GG^EVhNt%uczzYg(U+gQFoYIbQC1gL)4yz_xIA?U4HWFO@u`WcM(7 z)*y-HlLu zx!u2v%OxH%lumUz>-KGi5L~|c6%>`czrf9nrGYol= zk2Gwowdy_`7x8W5^t3v0nKJv!$~7Z@AEx(slpL1i*?3L2D1psX_Op;CgLm68WDD@) z@sSM(D9)TnpObWos&H2~-RnX{nBM*5oy4wd6Injn^cmVj{E;@7)iovuT}1AhGRV&# zO_nzRU0O|+_a)JDsq!YXq1*h0i=d&S?NWcZLbpXbLicUif#`PCF+$LggZ39!JQ*2E z5^HqnU36&^fO5K}ZdhR_X%d+=dDEVqF%VoNXq!1jqnQIO=B*Pyj+H{-56KxcyW6wB zRv7j{dt0J6?sXOW;-w!dgaZZdHWZ~5w?778&L0w z-CYqC0s}b8ndp`smRh2JHn&T`^>q@&W}PI{2VT7o@qq;2bq7ZQgxJ6~c~Rt-;>W;E zg$yT%QB{i22uX^jo*kALz8=m_JkVFS{64K1dJE5zj2p0Mx*=X)ES$6!&3K*ZG`_oS zr|KxGo{$%2@FPz8pF!}O9uiMyS=5(rz9m-5AEz!Yk+NOq{rRZx0l&_48|VpbxjLTO zjwQqO;kp%vb^SbMU1OhowxHshw}!lmUIce6GMfJAqZifi!+?n(_;9GS>5+WAfK5^H zhrh346j<{#v_Jg#Y3jAj=WwSWm_pm35<=@Y4OPGWo5Egp*A6u*>Mu?CdOp>@e%*j7s<-8qc)Dq#6A4ruw#R7lWA)EW?#%7%lO#&4Og)_cLV#>xAMl{4hA%Cb1}S3U9=nS8IRqnE(YI0|8+ z1@BxD&qe^w4nBUixQ z?=kME+vPuP?$i0Yh~pwDv%ka~JRad^;Ge(-D4BX?zC=0PQ=BMV^6o&bo*{O+1(BOQ zB$e4X@2nd-V$zx#XJ*9L#m_<+sS6+8nt#R5)j zfX#Q@#uNnY{5LVMv?23LphnV(g?fJ;&cMU!ghMTcs_ICr4|Y^WJ_2FKZfku=aa7w@ zyb(FMtj64r#*eYl{+ry8`F8p83}uOcU$MoNu->&&a>O#{a>L0^{Sy58vZyF-D2tHV zdhRx_p7@mM4|>@me4e|nsod4N%}F5tlO27i=;jTKDd2sXi2IlcyZ^)6nzQ(eXrkAY zSHDiS6QOter>DvX0<0vZ_S^Pi2W_&B zKq?%RiaA}R3E6+(d=baZEqLx8us(NmQn2-0ELrc>;{Ff0Bf&GUQ!q&cfCqhlsYMJ* zBp?Rf$Rp0ThpAp!O~h*phM3VQjq3K;rjXXBkhDLvsr=+>(k2((}lwgbH^bv-239jN&&bq z6H6eWU_s*aPhk%iIbcqa#OXDD_coby0yE_!4ILf*(_;?@(L-A+It6Ak8yRpmWCe`{d zO2)u=#!hG>rKrKD8C($#%XB5!Qc!7s7}3cO!Z9a|XAug}xJ0FEZ;q8;k^*t`&BsNy z(60j)&;MN?E$TFl^6XBLH@sj}%I?W@ZTi^kb&gp-_kL-Y*!ouI$4n6#>f8W>FS+pr zlEurXdb526N8eulbh2hZy(`W5g%j*VoO49#4W8f?Ho4jtBlq=0a3=f`2X2&@&C(e` z{0;>QoW#+;Hu@v~p^vlj(XOiKNYYI-(JcvzEc9YtnT%|65_%o=Aq=KtJL7JQT(><+ zzs`yEHR;j-l)n)0zm5Ya8MNapO6av_-|gE&A%Na|YEPNd`z#B=+pO*piS-uog8QOd zus0Y5AHk^@jSsep=s>?Ca(QpLtFYcwU%^iT7LD+a#yt1@|3L;-D* zvjq?ibB3XJG%%7q){hxke(26eZlx_lN!jc8e_r(H!(SurFxY>Fejee7*{tj*_)tUq zZ#@46!oj5w$B5`T&bT)eszDjA(N&ap^e8zxc=>9B7b+piHNf{0g-7zznik25GDm#Kj$s{ zT5{FA{yj%+VWCRT*k0?-XCpKwPLHxN{FYk0Psa_i9};9!0cp z6=*cSDI6EpZJ%#DL%v16)nNkTaGS_%s54HAhsoLCB(N5n_f!gS9C>U|sEZTG6%|jH zJUNLePlFy`!Mq3C-^5-49OmV-;E{rp&G=HFdmdFzkQN0{hxquiQ+Q}GtqM70WYWl;T> z@+{EyO?KU--+ge+l+26Y=jtyB@T-1E@w|I6W%Y`YP&&3lh0IQdDS$cvz2`j?L&(E)qKXdoAb1DAjU|{4| z2EJ_G#UkO;45n^Yq8SdIgW9OdEt(AJ&3VL7a{tAW%4ybtl{i4QatC1^LfpCV8O5Rc zPM(}=b?3kJxCM{~Zii{dRlWc#v`{Kd;R#KyhO`%|R~)|Nvn@jojbCQTqiW+f4#JL0 zy-%Ms-VlDDCFp@KhV}ntd8Y21`m5xCpgJad5LtNhE7o+LN=pLLVfhpyow2a-!9lo-QF&utYc{PCNX#BPWM};>xHqGf_^SJjs<*Qx~dnu zd8~+G;6u)fc$mESBe9Vzg2=5=EDchT_s6YF^pOF%91Um%5#UpKu!-Njy{FryjpE(4 z}{*U#^>1);lB#*< zE$ItP)_LpNePo{u~AQr!*VCXCdRB$zXb(Z87YyXiieV~GvEb=i`B#S9v#a|iMu z<|%j;5zCmaL@-&Im#jd9!p{DFP^B#B$n!$8VgI!6ojFv>qOUi(4_3(M50y0z^6~^f zWVUE%(8=$S19c%}5FmOd1l+-fIY3i;;*HMCT=IR4OhY3^m^~Wo_4|IjF8=XhL%G^=OpLg4rLJkfl zmF6Q?X!y9eYJ!SBFYQ}3>?l?1C(q4cXNjLki@eYBGka^r{%g&d4KnsusT_uyN?Hep z0~q-z4@!18{ce>FwT3J`T(_@&zCQ}uUiMAg#AbajaE2)~dET8epU4A5UH$}C>Im3? z5`rl*;IZy!DpVC6{=-1b|7y(5!`FW5Z*AIYu#AYahDVW)XE}+ayKPyVl*W`OHZce_ zTRTydiBb4oxK+oEM9fPy(3dT~mfV^)%JIxL;Q5SL?FyE_8+sRo%(fg_na|I9^i)*r z9Z#C2vv190NU$l`pszqs1{NIq4v4e7nXex0@+fa5$5c|v$!nZbrDvTKFmmwa`>u`) zvR)QBtMhu`9lRn2zRL5{nA?Y;14z>Wm5t|h9ue4`7%%FdJ_$wd5Q!3c(fp@Nf!)aE zlkslUGP1ml5XDkO)kj95aA6elErFY}^t8LeZO;CHHy^bFLasQLJO z8Q$AwuD}dMCq7^4hisgCHQeP!u2`Ag;?z8U*1596$O8RJpaHsNNj6kS(31or!s5p@ zDe0&J(7y2mV3oH~U+K3{E}6DxD&hv?->KWPukY39t0`}mkS&7Ol97+(k7iAX~|{-Ic$6kq?^|0S{a4Q3~k$)w$mu$)|u%o91V6w zhJu}dqBT~j)km@{xA~!;&1UTDLzYc^1$j?jDRi0f|!NS_g%?2vsT4-8Y%P5goXDB(lDNdro{% z)RWYeW=tKe`0h^!aL|4};xx|ynEM&nGYFNL_Ms== zgqJV$!xY5=8j;<%P4BIQ`Ni>u$e#okx83PzT)dY^R6&SWJnt|Q#lPn@#?ejpd14_* z#r6o|hO?aYn$C*lD95|Y&z{@Oc1h+=`39$eKY?m0(hy(Twuxuj%;&}?Ll4}+ie6KcDLxE27BUAgbDFO_Oz z|Fi_D&jH}=OD!%V_5H^5IZB}iC1bha3g4Zsock&t;jN#(Q9$^Lyf0{HxH4@beYD`F z>$%goZD!yjCZ;RP^4;PxJ7M1XJ1Fkr@&GDXZF((8$y;&qwW#A{2V#bBR5Ik|F>XPx zoAF2Lcf-}6|p;*NB0Y2 zDZ&5FNIq3dSx=D-R4Vs5I>6yp1j|TsigFst283| zJPO6;MUEmS972y9p{8t!;kzM^rx`rAIKTY}4IR6&Ju(!0CU<+oTY~8Z>cHo; zSY_i8%A&G-bv5UOeb8biCSo>F#_#jjHLSiSwWn0W^?7}5x0(kW<7(lf)$CeOnjG6V zOF6wfPjI#dEMS$%6MmR<(v?=;y`1HPvvlakV33x^L>(Q_g-L#EDwQM8P}bEk)9%!X zQUobr$bhIErE^j7wpj6fY>H>kaD*NLfO`=sm$6g+ayIaF4e^>Q0+TwtE8{Bk&!L}f zK0n}VaqKOH^U?b7q}fWR$)*SUuXki#=py)R^L=fp)Jv}3rWBj%=miuny3b#5D2lcFblE$z+U)U3G~;@)8NUx2=7Kh z0DB9#7%`F*L)6f4wcqb5K=!%epSRC4`Cc4S6@id&-2LDb z3^8=TF4P|6IW`eYNO7#6PS76QZAbjvs5*w3Uph|@pnZK3l4X4H zjH7~@qMJl=qKAWWvb~Vv%D9f*=yEFZH!YYLl!S^^zacl2AH}0a^RHQnmG9ITQsDvY zIw5K+{Qsb z6pS0KxdvaDiC)l$OL{HVLoZOQ>(RmMya>8*^wg+uL_nvXcF5(U9KZVtw60t>!_f@f zTf4ds=E&D(v&_`7-48EZ7~ibF!<7w*E2@7Z&*xO@+I+ZDRPK*9wjb(Zpc>-zD-Om6 zz6u^{KYKS`2fGX)(lV0Lyo<-wI#dDKiO@Da6wfYSuS0CMe7wUD+NFFO!`KSbn zMl@{PziHMPDuq{gb=3qhCS>CyiVI~m4=4uH$a+sZ_f@OH3txBri7?E2x18799q`J- zDl@$BNrR4u*;5SJgWpq*#$lLr-oOa~V9@40t-vRz*~1iY!!o1Z_tr94AFv*P-sXO~ zK`^v30HXZ2eBXwcURf*~FIRtKt(K1;!;I6vf8|8%FB^+518 zN-zQG;J4G}71S-K#2LbTMet^sM3t$cyHlhf!dbcCsaaprd9?!f#(Sf1)6mRX?TZ}NJ^^@E0QrOlbd$ol5cawV<$^2Sz@2h-=BYe55{ee6F5$IMFs@*j4sXU#(bVURYYR1f(E3E2}NxJO3>p1hX8SW0r3>%MUnzbB{ zDIs26fsof1;Rk53hjA!8o0!Q$sET%fYPqrKz*_rsp%ShSSyjdSB4>1~{x!k|Dg0V$ z+Y+$u36?|Fw7tmh`81t1xEVZc{5se}uV5`or=h?P*crUGa8F1u(%t8_8NB(*iMCUDd z=Eq}xj~Y#>xMlUY(LTqo%noN3wY$1uNdJm2@el1-yi(o#w0vS(xppr#kGxTtM{ zgA4V{o8_PKYbvzZvS3E-xtyMU40h;|g3yE4HFSBU!@npn9J+x}s(45E%!Ud>p*0K2 z!IVUVS@6S4<@15wBljhD!(>T6gWrZzo(?vZkXICkz+tI<$;<5LfzgCDY%ngBjOCWK z`DUtjFprsX)Z)V8#KKt-Y5Zw8jxoJ7B#SW$Yaq@#LaN=VxKz-SplYr}{s<~uVXN?p zB}I8MkH&b2t$g{M;Mrioo^E*7qs6_(1F?T0C-0RQ!kDij>rnMMQM! z)N&ix;OUWa42FU})Yh-7*`-LhY}wk#a27Dpo<0t(zKQ+u+IC<58u=47Y}b@vVpThW z;wmR=>VKFTH}Su>Cub>TC+=~HR$%5A6#q5S&KWT9=F$Zb40|ZY)Zf&EtH(@E5$c*- z;ARR-3?zkuCQ>e3@z8{xJzKT6L(J9l`N?W^>ys)!dUqu?^6>4&RfpU$2JEBWm4|~a z1u^2HEe8P~fIEV)Yfvq#iQhI|*fdi>?)7_D3v?6xS{!0GHZw?P&R2bc4#tT&yRiK> zH-TR|V%q}A0_NnjO{4xoC2q9uVCQYf=vI&!sYE*pCWVqzFWqYDm)Vr&;CMQej9=8_ z@c5f9(_gTpf6OlNzh3-l8m)>rulx6t!tnRS2!T zI3|F)Tsmm6YRM;w^la-r?Ko@X9bjF!|3!it0yEJ^Pvgh0HL|Cstp?<023`w0uo7wH zC-3k}OGuKexv&vw;83pXM&d+8#T-C@>VE|447x+HH!v(mD&QWICZ><70JoxjQ4!W@Q9L{rDDYU!Wo<>9$|x^$b!wfVgRB)SbBR5)r1$` ztnZ&9<)5c5%5fuKIT8^lXl54{VjuZGI8##5f2QP4E1hn;Z_mS^_d0r^_veq?5i~Gn zz_+%Lrcg%Nn_l|OXzwK@CZ#Mvh2#qjbm`7jvYb7Rjfx)R8+-eD`kHx%(7#Z@8LOw0kW(l{WS2Z@eGm=|Z>k8GF^5JNwdehu`F|KNUr0)n1rH57< zXbZj@M1v#((gpF#zGFAeoCs4zdTB|5_V#O&uUN2UTQZTd=Gs~^#Az>0#Y5h=?ApeZ z1tdP~%-j6>oGM~zLH@8Ut2P-6px)qpzRZJ0Y{4WS*DZuFBE_sn`Sh>MhBq@QA z3R*)Vq`~%%9|N{^OJGQ^D}805X9BsU&$9Dkb?C8_lvX{i7rJTvC&@nJ=7rN|g^5DB zs8@)8lJ4wA5B6|F&m;3h9s{2Po#kgI=)Scr&rRRv^G~5cA^|fE9cA~rniCyF1cBtK zyw&q>^NDN7yaBR(knjCp+c^u?WD3|V=$RGVLp3z*s5w?2Nmr^TSX(y|&)+!!`#_oP zY-$;V3|b@zMB_Pr6``zlTz=2T29DV(QDMa4Az+lRe?kkE)~S5p6Y5zXrLDSNf~V(| zU&ThrKgM=?4amZVz0;-OhBHQJ-_6a3yULPoM2Y>X8mZ|0wy+yc1F+0KaAAaiZ6v@< zdTKE5=C}!6&Fz^NtJfNe+zjjRxG~YHt=}K~R$kN=MC~r<(PYe{Go#K+m_?VSvp-Y^ zNiY9f6!nH9JEbH~zLET}u1VTMVzKB)6)vCuB01^1Ken2FK9c*EL?3x75@jKH^4k<1 zF~w_Eov(HoPV^H!I8qT~Tu4k_6)#d0mD6`>!-fAYKW3B-Y+EI(q=e6=*KS2W#(@e*TTnwOz%Qb<>EMHzdWhw)@BkcC*ja(D_bW0@@s)$olw3yOvBA{6dHf zhzzOx{lViq7Gq(v4pGd)wu&~Z8| zoL-2N0Z9wjqlm$34q$9C$RR7=1PTxG3kqWA!k`9eJR)tCWn{z1^ts(Usn5^){PipO zmSsxGIEX_!H7(UlBrW8;ya7z_wTeN0UEVW}9c-Y6Sz>x6RO8-pOTd0*u}6^Hq8<1C z(-8jkf-m@Upa5%B&O1D!`dT;fZgd#yvzBfSS}?#gu=j8O*cUl2EJCRx^9%<}H0ai< z#5@c~ZHjN zHIP0pBawNPv7yUTm-a0GfyXBcX^ygeHM_%Nuv_p{SkL!l{=YW1w&o#WWr#n~CsW1c zAHt!iuB8z!_gRtY^fXryb9IvUeSAN^yX9R?2P6a=7Ppf}2my2iJ_GdC%l>H^tGh0M zMH{@B+dU{O9U@m^l?&U5+7K&krOPy|1dkvF)K_%t7x2*Jh@1>5&KD$)F5b{Q8`t2L>*Bj~_VpJ7~$H9{#-vr4tblwsD_Cy2>Rauttp%~+(hV&}JD7f#q$i-b+G zl@fob-v*KAZE5{VC55SlNoX0>(;AKLAEun|1kI*Ca8}Y?>$CDWtC){N;hA1)G6@!> zz}(vGkq1w^s5m8*YkGWYZni3z4BMIVkf~ELY@+Mt`z1wu_;>Hehet!>3-*P{QCoy5c=~il3yg) zo`)G8D@h(p??U{RmMa2kXTGXd)j838eIuP)DmgT>N1{^Lgarv`heFxDRCkbYUneEPxq z$X@~v-P~N2gLVD1V~M`7k!nQbNW@UAarK=t0lti2O0e#-H?E0sYic~ARb8@EG4|p+ zrM;PB0@+zbFYa^6yd+$mJ^1lGwjR2OTFYYyEA}l|4ul_V&G8d7LZSHj?w7MLnzYz! zwDgyGXNp9O@TqKO=|uGJ-Mp6L!k_vU3Vy_XMWEP75{I3xW&6|j$?ZMl6>wCG9$B|U zolr^1I{&v45RTe)fc_fmfc-9ve&YAx_FKw!JRN0)pVBv}2m;bCK71y4_Xl+}z4iQ#Mxnek1<2gIsik5$~nrKk#6>9`wcDAf%rN+h*4bS8nG% zMyl1iAqu6Qdd4JJ(dl%bS#+Bu;}aJ!+^t~Q)5FH&iS%`*H>DgB%0bsUW2+p8@Lt0%Jy!4#+Sj;S`jb1 zoWGO4U}iC$d=|L#*9ih-oMa5~dxRaRf|*3(IHHq%yq)4KmyWB?M=FK_F-|mtF4EH8 z*|~o4@~YaE{FD1lT-iH!^cy_#7IG&@%B-Lhvapg}e?!U6)@C~1PlvSP^Ec{Mp_0w^ zEuGScLvJ*@OlC9*XWo1L$(8tw2oDxmpun^)C26DSvZ@LPm=1n&>-V2_F@p4dIkxi~ zE(4&}ekfvolZWu^T;yEdRlQWf#J%ejn^`QQ<`MWIHePrj`^}LB=%3mvf=FZYo$SWr zn|F1(r3%q{$(N4?t3yA$cnYcU)gYXN9;PZxME#R;)^H9MX@%L@e_q@6gNBuK4buaa z9u%5(-v8p&TPm%Vmj6!|#uu9U{G^6#Nl7caqd`|8@2%DFt4FFgKJY@Yu5uw$ycIuU z2)>sIz{tl5C$>lI{y3*7$Zar4!nO>ku9>^6JymZgtsfDXn6QTRdaKueA;Z3otLHtR z;Q+smI7zlIod2AHSq#*G<(n;#+52*3a%f5F)?1_QM-5pUB;n9V=g!%#1JCBMi!%G| z$hjLV93UerZ_*FnX+Jxv=_-ck zW{A`wgR+P0P@}D9cIPzQb?+gpNL596Qdn51I|b?ZA60U!kHg3ytPo{2W&ZTGUU^Iu zqiTrInH-z+3{ea9OH6I#vy*lnB`gcJ$(ZAR!gE&Gff)w8LA=?MC+9@{*Na8i3y07{ctSq!~E(v6OMEHi@+-bB-z%ZusbY@m^tk-WVZjq^Jl~k$$Bme9iSiy0dw$~m<`BvucK!%!~ zs zAg&d(jgcL&bWl^pd!nC!;6j`Snn~{mm!Da)-jA6Rn`S<_82e){a>T6tnU(IN5hAo` z2;|The`(Yw)%pOD!Yn|u%E0`sT2!oisl$Gnqwv5~s8NXLhN z?+e2~{R}^Ls@&I%+CcB-Qu6`*N7Z3vJ{-0T zyr#{b|K9c0Dqc}fi!_)r<1&f=>)*c(>20vDEOd%>VVDE{4$3mdVoj2o^4&&+(Z!|4 z`EwrZ`to?}M=bl<;s>I)%Dl`=me2KB@->iO-4I08RhC0t$Xi`GZ2ECW@t2jYb-(BH zqu>g9LdzkY8Er-u{;WLRY`n)>t4qd0aoxP*`)oep1Aka_a0TB`U}f}IQUsDztoKu6 z$rAX zifYjzE&Vc7pUXjw7;UY7p?0AYZh!LX%S$6 z{x6M#??=vhqYzq%i^uC{Bk5~P?x+F4F{`Mpe||UC@UAqj$K32{wiD5pwS@3T%3$b> z2#fQ_T{*6D{@)i3gw%*Ledo5Io|9HlI0|_);wDR7wSIDo5zCfanx2(c2V)bP|9m5t z%U)8FG@2fjHmQ{?l`W*Ncc1jwDaJ=>^v^85mF%7W#bi5fXG7SnQ{#C&H|*?W%UK2= z&mjW;nC~E;{ZfKEGp*!%8xg_aS?`ABsXHaX@;iFPQwILR4d^@GArGwZE`XUKn<`S= zgX8;i0SFgK`JvmWz-KX=d3^1M6YC&U)$u}B_w8;q-l^W+|<%)8CP;pGy&j^iCL{=w<~;su}84a z4!IIx%uP#wW>VayE=Uh@gyfHV+rv7iZOO{jWg{b#ZmNH7vhmNEH*|4hZJw!X`7K%a zye##?y0hsTkXj0$dsL2<0Lk3& ztFK&yTk}0U`x&`DJbZg0*g}Jfj^3dw=YViAl)pR3i`s9Y?vXRNsAQP7XLs6Hqvde9 zQJZ~~a)4c0eJe2U)+I$cBk~tYcaaxJpxoURDSZDQvjIQ)0qyIUtbJIR!fvzo19Ol4 zCOTk@Dxh$*eH1qaHY~j_c_xToBZOC2)8YA>e&1?fyB^YALr3(ehEFY$Llh0K(`I*0 zl++eR5~; zdcN)DGxA!$3Boz4d;);>gT8KmCLj6J%h=lmuq)7gyB5y|SXkV=Q`yh_(>Q7G1;xd2|Wi zutWT(8$L^xt?B~0OWjj1;0vra>^I+^EN%VW_%++AFpb0g*u040*JhI3QnhnMk{&iHqebYfwYv?Mpq$+LR$;<2n}(1W?FrSOM0x?}hBEO)gTfEq!?MlrNCHJxjaFZoy4()^&*R#ioN3JYuyzJJ1`Qx|Q{E)+^jkau2}G9oEC_8# zhSIvC3NT~qoy||&IllJH2d|h1q<@MIxWQWrSpT%4_7Msw(w4Z+z$U-|ztbE|#hke# zcGm4#X3FO$TYOUA^uPZ-lpdWec&pj&H!O*D)HGijpn_M2yQn!C12hFYd!MKg1Kb>r zUX=WL2FsAm=0+wGB*J&+B)j2qbGd#WWh#6^KFT>S%W}sGxmVGk3vhE^y44=!y$A)2 zZ!~KsBll=;?92uaf_9WRzL!2njF%TiM_>;F(U91Q9voA}tl z$<01LK}{2SP=(el-23&)CkSgX#-Uu{(UK zv9J-U?%P7M{E*^Ew)Bbv`m+UVN=Kl>C#FC0DDd%3_4Y)HOvt)r6nc5lFQbj0xs$i5 zT12z}=2&}@escQ3?Jl&(%UYfwMVe&2)<#aE@sn_%dPfvFZx(7H05jN9OE#NwHl46Z zA5tG3o9*xEpWbfD5<6lmh#j&UjcTf^DGnb<3Ig&!)s~&} zxC_RBdx}LdPW!b&iWqEtuz+NbpT9yHR$_dwaff+(w6Q5%d`wj2S@zTCH5s}3`fQ*R zX08t7tqAj17C952$;=<{R`8wXiKI`H?AvIjg<6I1n<{C_f%3WfVobq6r zDl1QBU3)L{E}W5>;G*@Qzy#dN() zy;HQD@y0NAw=mP}_n-%=^x& z*Q_CBRdfKf){2$o#K3UxY3Vd)?7NsZWM6k2_WpxeOUjZJM80Q#W?Wiuv7fs42S*_cj!4A0iq%E(dG|6D6JA*mtf~eFb*5y4AVuIr+&ncLUtE-*@gc zs>;uSAFt!a@}P+O@;;p|tcwfY>-v}rlC1EHJbA-ymU2LJ_%c+ymGR6Rzn0z;LhF=s zmhN{bqat8g>UOt2d`kS?FP`QI(_oca(;Zv$s>xs8l1Ev>$Mhw)$YVQV?MCc4i^iIE z_E7-|WJ!^J#{ItZQ;q>Us(mDTD}7HK-b()+T1Nzrzqf$S$kF~}j;#HgjCJ@Ic}Wdc zI(q;Mhsno`kO~(#Z_ve}c}8t%k8Q@MTey73I;r&^aUbb-m%1%---SxIN~d@=bODnw z_ByX;uL>r9Q@-9=a^$C_%Bd6~Dx!w@8d2v4Z(0kzAIRxc+N*NUZ(MjO@ck2M3yqLH z?y9(WTrM?Mm8xvmCKKGO~Uf|)ttl#a(%nSV_pzE@~xI540XW~1W(%IQRHRh52 zga`YMcg;_LEi5%n)r|YEZ?P1f*YHm)(Qb(QQbv*ccX;E2P?e6cJnnc{`@usBvAm01 zt_)#nx4>?wI@{g!von{7X9|u*(IcewPqycMQ7TuK9wA1Js)|=<%Tcb&%PpaI4ebha z*orKZEC-K!JbR1-zRjRkM>MSTXSxhDE)HLkDW)j8`o}#*52|^UJv57*WBtP}bSD=w zD+<>DPhu$aJ!;7bU*6{jj(=JepqQyc3xzT9g>7+eI=e&{e`u=XbKfb!`(QjSay_(W ztkr4!>4+Uz;T%?<%CYrl=SsYh|2kFpY21DeDjJVIybxcV`CaeE$ifV<$f^bRuthek zseQ-NEoGY=JgOR@)R?goO8YI;=}lx?fr>WE)`t>?T-uv;2t*5dkWV!&ef{8o{?C5$ zUb*VE$NfJu!Pnl4(IM1=G5@$?--)*G?5p%2Tlc-^XJix-e+1f@aP&vDT`RtQ72@!XMSm;|(OOxS?p4Hp)8b-SZ@@9^GlpKBa^?%i^n@IwO)ioD z64ZYw<4`jAa)P^KqPms1n@wkU4Q9rD>G{%u7;hpLd=$jmH&?HY5fWkfhYb~l$I#T6 zl+Fh3(M&<*Ez@{<4zZURyqM2l@GY^I|P5n1?dQCW!Q*0JAjcNOIiS1?O;**I9 z7SIoEQdE(uX7nvfa|9%EN01xaZhZgCJU~fPES#d^ug;cTkNStwr!a~QSk6UIWBn|u=C{w{x8hbD=MNbWff;x7oHb^p7pOpM z_J}G`FtbIi@XEJG@n1M!l*`k9OUu|&n;xc&dWo(-a{0_p^A*hzq6OcqBg+*CT9FI} zu_AO}Yfdi4yoRYR^k1x4p>+0((e?H3^Zkkpgp3e;DnaVF6=nz~SHuQWkRky(Kd;-&r>@cNq%mRa|Ky#kk-Bp15*kM}CyqD;;VcRXhwkdHtiI zzQchF3(r~HNN?wr(*u=b<=-x zp#?HWkeQG}0ij1}cGnX99GbH&)Yvoj8{O^;3w}!a++h-ok|-92&X3h0_1ABn{#@Y? z%rqaAj{Nk;)udVN4(P_Hl_i8)xsHiNLh*8W6yI4A3H0m*=z``Y=I#>w>3z9}to?f8 zf0EztMxmdjR}+p;PaU2$H+&ok!&kl-{{3&fO6PqqxZoRNyiO0ZO_?bE$!&(1h3r-~70@jyGQW8|6m8Nzx6K zuh_nIl-w@ zoIN%uR?hdDmn88LvB#Ei<+rkjFZEt@WcRMw?$tj?I33!1>|XI6tEWbx{;L;+r6Kt? z)v5PVLER!MqZ1G=lXW*_x!Y?IF)izMoI^2^-`qmU{WPj9p51up zF8B22vhL=t_}dv*lT=S>A~?Kq9j-+)L&74@-QE{u-lCM2(0ix0fEC&0@-eaLxITGp zgCa|VCC9Xr%MfFTIiKqJ#L9a}hqT=&jsxT0ISCmJ?7X-TH**H|WlecBcYh{Zhsv77 z919>A?yd$!Mn7?%A9`HBX6U{8dj)fie3_bc?;uWK)w27@_-_7~k3)aRE2msY(V7pp z*}0jYgA8x|wC1`e&qBfKY+8w^h0?NLgyprBV*e+a(J3G8mx2b$|K<9_{RrVh z7lj*Zp4IO@dw0FVRS$Ba5<|~K{4XvytnD5?r}RS{(^S2ZpMx2*kS0bl#3OUEE%8SX zhd81QQw^h!S{Ty(Bi52%_6j*p8n1*^w>q}#ICq2uw}4`3gyJTergV>=l2<5f>fHrq4q`;C|}T z@a?$6JSs5H2nkJb*?TZ!y(mjV$7r2Ty%7vxQ(k5*CQ7W4qz$Y(q z6&m+N&|EG^9*j2MdH^*{tPy*8s<8On4I!>CBi`X>UY2>Xa1OtAi`UcUEJe#2Z7Bak zEQmP0t+`XW!*W%Yx07$I{8xx1&-;0cICCgcYMH1Xa)i00_y0na)KTUK?ukjFzYnm) ze~jIs*?jOY=@ksad=~rmRuD3<8pmf%>gGR&r|>7O#>M{nOztVKscL!0inKCF+=In) zYbWd@*Znu$ccu8~FMqu(i)jIu*DU>%HM3;g+&Fb-TIrz=I{cVoF>sY0`!{oj{FtdQ zUY!F2zNtK1fQ-tIPv1cCtoh@vdPEF>%ZB>iGdN z(Y)mXhFo}j)i#*?6Ep>5sGp`9k-RM{xPrwVRepO$9lS8(isHt`oZH{oaQ zZ&mX1!5qdLi@kEMYQD#d#`P(QhAB3LBQ`r)gKO2mXd*_rHnl5oF{y-G8((^pUx2hxgnbD_@3=c& zGfb%Erd-HQXK2wF_quOLfUj%${2Nk{#AfMC=`4pV!5f!Kk4s0w$agnx*ya^zw!da$ z9uF8KMe=KKD`UYu>voN|VRx}_&%6Izafz-dILt52&unuNnJN`(I67)}RHn*ytaB+U z=~Y_-o@C@um*ncHN!hTxGg5?gUo&Kftm|}~nYf4A3`lMk&?HRzTysFL@W>E5L~2(y zf2kKvG&KtT;gLl+@H`0ny>yiI?Mg+cYQue8Shn*VInWDYo7{CVnr ztU{th(K|l<1ps(%4JtH1>%&-4-wLQ*;(w)cd+XB+e5ZJM(aaaz`z_)wpgr`dZ^uR| zx&ebT?zwzjGr4}w62kPa$~?e4f=Pzm76t9&O?=k1Uxo*20$xsqIq}LK&3hfVx(TvR zzBUQJG)^`;{L= z;89HYlIDh3WhydW(-ySO9$RdP%~!J_01hv!Q#~lwSS0U>G-r#i|IT(Bi6$|tnf+Js zjsTP7hsUd#w2aZzFDlB)2`pw(FqWV`iD$1pm~#GHDSPLzZ@FoFUhaO&%lZNn=mm0H z?TG=Z1*5?q1S;KFk`It0k)uCOf^u9r(|d zR1AJq5|UV&E_;1-g~E_WVqU)e^=$QwWdBMc5EkmxO!>NM;=X%15v#NF;KZpq-25>~ z&r2+H>ymfx3Mp7A3XXVOY4$s1FmO!CnW`asM;^&saAPkxH;~+Y{((?K^^A$P6Wt8)S{dpG=7Kat!x4E&mx}r)v$(7l}N5`3K4PbqJ z0O>;nahdS=h7yM3@J<=Vo&3bXSkzt^AO20)irRIk>7JbwL#vH2GOCRD?=2V4EEVwn?@E>j5LRv}`d2Mr<7+&@zjrrelf?n(D1hB$i7jm$E$y9d; zM>6WwJ;gB`-nUf3=@p)jWte_oL_db-kclzHz}v0b=|0*B&m$X_kL?RA^fJ)qUz zGi5&^Gk(!>NwReL{@Q_v?ig|0EB4dNB%`S5fpCtup->Dd*1HTA zIr^-h74VS?F$u$dU@5g=u}S)s{naf^u^%AoWcnILyb^s){qKng`a0z%prheojR_-7 z!CRLbbwdpIq%`@o{*$vue&pF0_a}NA!|TvD{9Kc>(&w+mWTi%OR)f6%Te^Y%L;cam zcNuY6myL*!UBtwxTUzrT#wIbmiSY@5i99{WAYPr-!L=hQJ(QBJKzf{-Ip-gJq>Sju zuhEeIZ&vVZ4L3k~+G*v^#f&cYFNuv?>_wPC;fu|^f{Frl%6yYG^@59IV$XAqIR#90 z04pb_Bj)m|C6L{_dwoGI(QYN)AB1WOaF?iwzga9D z`Om8zb1lUCaS5Kw9g&4E#f=KO_e|ktpQ({tbQjhUVEUFO)$;G9@8++or=EOh-}e#v z|8Zc^X1qKW2pm)X%IcJ??vM1*jvSRUzn|p_1{KPXunrz@S`h~}n_mfKz|7{OluIg?RDRYCM(%saf zAPABR-~3|;ziv41^^&kC{2b)ZC_@N6(&TScNivA4$A;7$ag}>pJ}l@!vANxqeXO{Q zZ#aAWUw)QjiPxDPH2vN^^M!)y`2zXLP}*4DKL$8Y<2^wZ&p`CkdT6A%(0(;5i#K3W z@u<-7wbldwj{Ip(ZIm0$>9gijaj^&CitmDHd{frHhz+ulyqkBfUfpoIJbrsSh!qfp zFWZ5$9}KkSDhgGaME|a)fkydq5oClS0qiHB28s5AQ-GwE8W|W2YRCIb&?lrYFXhH^991h^tU|O`3zZ)@G_UEca!hPBdI9|P z6>Tsiutt`LH6>X}cRJbCi}}20-FJizZl*l)4;wj@*W5q#JYTyb$XOHsZ~FPNZwDFm zuX?Slv9n^*R&})+^Ql}%>r?*5$*~WK>V$EB@%B?YL{)7P@M6xe5{zx;RV~y)k^ZAR zsTz}kQVR;WAEGDfYP?HUDKRTv%u?{rK%@;)e*IOwO@B_!McVjl(N<(Xmmd4h2f+2+ z{;WT!R)K`grmDD7Kq}1b2`u=%<7gmDV_=N>z>WOuq9_gPPl)|@MFocqT<`M#J!yjQ`!l_vMw*n3nWy$JZC zluyYEMqRGRl-P|ob_4K$prUWfPs;^NP))5(gRA%+*=C+Jg|JrifxQF3unAgNbNjHK zo%XT!;A{WqrAAeb1Dzsw1n*i*2)Nk6EE@UH;~&S^nf+8)9AHRPPgJchLaxfPXC`d! zQB^&F7uVtKd2RQBmOrqobfmyZ&Tq|!I0c`OIXt}l%Dyz76!dVCTUHHtfG7P?HQe+Y z4QwUo2^eFl4zvylxs6;HJ>Uv+soO5VLe*B*J{1lSeTfX4=lM;pJ6q|=apWOy-y4v$ zlGLai?73EXFqC|r^a=cm5Nq|Z(gR@@2)Vzk#VQdCv_tc*BW8XN{|ZMUk3bgm7Zw?N z`NGYjftv7{_LL{EoCb>r@$sQv9n04OYVe9&gyE~%FA{EwKVIT1KDL41n=n`c$v|Lb z6?Vx>f?t+zu=Lu;^hTb!NV=SlBc3DI2N%9Rz$rgfoy>#?ZGeR0XYH#ZV9TIE zMal|pOzw!vK4iUTS-I$r51kj!m9SF1JF8bM2mm=2f{|bL)k56LMP}Xh3R6T3_2h(E zev{^9r`}Ut;zu4rKqSH_L0!>zb3gqR8lh!Aq);)OnFEz`ZJDKG zCfYWMI%Q!NGSHRhzxXe-ucuI_Bj}QDlA-YA^2j%LLz1$Eh)Edq0>RE#AFAgmAMTnCG+bs1RxdK0ERcK>UD~ zJtswG0G@w-_V|7?xRS$5O@Or1%o;Sr3#;248VhCmFJ&y+V{d+wQ8jtxojt#=Ld^A; z1|e46*Kl`VnZ)kS*HZ;;;tS_U0Y0*nEmi?$_naowSBe zISP+=H-7LSV2nU=;+QXkp4J`rMc(~CDHl2>*3jnbzNcni84O)hfso4J&(UrQoCwz! zu+-lM)#gvn?+txo#nIo+pEQPk&e#vNPh3j`p5LUc711dxR<0>4-V8XFy-qY1`)>dB z(2Cu)WMq346LJOdCPhrrIj}fbyzX8_zaF~#Gw_#szw;?Q%xxfDW7FBLd}WOsfY5rF z4exhVFE?kH3AIfvt2H9XzYb)0b}Fr&lZY8C@6b8&;O0Y~vNP0kns-gEc=CaC%3 zIoS%k!kG)Je=5uaozFU%ee`M0DeswxxzOf_5UKC`m zjMwo+1U&ZW_fKsFYm{wL5Sjyu-DU|AD|ADu6aHFn-~#+I-7yX=r0_q}_y#>_IR9)4 zafpUj?9voTOF$O12oH)tD&I=d++%TfnZgZ}F(huWZHRW=FdOEra^0!tHxQaG*U+@t zER%v>L=3Km9fCSz9Dh{-ueEpmP8F7^)|B`&kx9^RoBl15JP!y7M?A4vv1}0;*I>A{ z#tSZR1Sj5=n{YZSAhW_p+}9tNc-yO!7ua94Gse+CPJ1RsGxf#7mdI!yEV z9XsbhqIf4Tu(X_h_-I@w^M;VBBR$dtE)mY2*yQ)yUi@s zXMCk67cxX`QPxBQlhVT%&vi;P!kQN-@ye9k;9P)%xCGjkhIwCyEsTIVb9IjiWZ#H9 zA*2y3ts*mir|7wkr)}VXl=bkC`Ggzgi4A!Mwr{=u87*aJrFf#$b1gFm%I8dCYMBh$ zR=JP|!wg<^dSe+7F{+;~3_KtlEEw*526NIU3&Pcm2fC(7`&&ewl?4#stmqT6fnSU9 zLF*X93%Vkyv18PP*zfjVD$SAD#X$IWES)lR=`a+Z8!d|zD391QJfKU_FAWXHbWkoV zBBd+hBMIfO71l5Wx?<^&@214fRtC3qFtuQ(JzOo|I>Z3blYGQvfyi_x5I(k2rwLc6 zG2|E4D~Cc&Gs>Uq78$S#E#3fpid6u!*xSUxatuhF0rw4B?S5Arcm#(a4@YNXLz)UUTk2QQLHJ`F9+Hn zKAu{TQ-h$i7M2HLyCIBst^)-MHR`_<8B=MXN~2RY}c)<568h~U71tg(2PrjB~i_Ar8K(h*Hj*LI3%Sct0+%hyHip!brAO;n_% z^j{ZkcPZ_u@j8#N!+Q#*d<~um!#JRUlMmi#4N{UCLkd~y3TkU}z7P_qQm&{u+O-By zCB>Z*)PTcpr#+IBSC2s#UD6{5aK9Az@+)XGP7((a$r>w?a7k0dIcmJeZM1_IyX48$Nu1AAt`_ z_k)LcN8vk1@xGN5>%_AxMvnSNAq``&cWZ&)37#vFmNN|}yTyU?R+Gb$U(Np68o11? zRD}4);!Hl`W_mb=ReQgkkA3(32__jMPOx>Y*o$6fg*`ah(7HMTTlNUI^xia^iCkT& zodNyl##ZLky%D(4x=Vpza$G$pV4vE|rg+SU9Roz&2i{0-Dj`BK_u! z0~^^WxBGsC$7>Z5$BL-3y=D253BED42Z%D4dBh@OvU%q*-~q}R9{!X2+s2&jvmgcZ zZ=cztizJr;GVB;rmSYXP=hs{X&~){x$sauRh)^ss zeM(rP8$*qB7~{n)WMhT3d@9z*0F&tj^N5Rh)$Qaikz`cqCoB>XBlu?tl`iB)L)|8Y-b2>|zl%X@}RYn_1 z#>lJlbWscdiVr7SMK7wa@{e5s<_zjoLD@mI?p**b@`xaZr)(RgcE61%FvP-sQmh^W z#3Ml4OD02zWH-;!2{;=2BILF{$yB0m3(q|cw9mCUSzi5Z9Vbh1ECGA#MT^JN9v&dO zAhOX@K1xp$LX&wV84c&sGbB;&w#;HyqXA<&`5cx-Pmu;xo4;r6j!66B?0NE|sbF(f zfK@iapP8O8gNpX9ctO=N8t0zzHC>8p%ITJTu_6yd7B}n-FOF=XQ4MxDC6g*-QqvgO zgz(xa8@O}Vt}pC<>Ycb`ZkP7sjNGvpY!$pR?(@N7e3~}dOSMuu7JBs8j0L>=Bqj@r z!cG)FQdAI}b2Hx>VA3XZDCpYum5qS!=@b_}r17hmexeu3TN#H%#jdm;t~U%YyyR{P5Ve&#%-t+ zsL9*~M96UJOaV7*TWsNi^t(_H&em6XW%!bgTi4BHY`d>FqI)flDBP>&P}t-! z3GZi427(18aj1iTLWNa+%)%hV2b(<{E^o+W13zRG=UL=dd;r@)+;snOrU|EpTY$|5 zp8`tJsXG+eo?g0~ySX8HM3&;YO~`;z=&nn{PE0`oH_)S2bE%7`H5lGTOq!^H4M zU|>Tz!^N=H)4#AI$kNpEn`u%ybfQ>{rHi&M(%<6lhJdXsN3UL{0F5&5&EXr*)zCf@ zdn27?8lr^aK@XVqD0RbE9VX7xLRIj3*}zem|D_%>@PR`rG|wmCzoYQ91g-%uo~f_GkxxrW<}P&lG`#3d;6e z?&H+?tMF0;_gS`dHO*c+;mB7!eAsGnKX3Kmkp7ykM%r^M=I%O6x?Wc#3NPC5)~cgZ zhJ_3(CVX>Q3mYw}*qru=$k2EDh2TC1ESVmAk(>07(F49h3A8bC$*=Cj958InAX`NL zikwIoc1~z)?-bl{CgLX^OH>{n1rHVRK2OvSM{Z5oGo~)$2!c;ar1s;;KUsCO4a)W& zb;Esi*1Ml`K%y)`h=F&oBE9K}-*l_5$*LV90Yms2}@KT#FW=dzPe()G$#sv$2fs^an@F;V|ZSD*5QXqRM3Ji4Ky{| z0GcSY`?EscMSdJYiPpBtzLr2UwTwam!X&Vgkt7_WAitCWNwz>oiQ9*i%lxEcSlr7W z*~)aUWZQ+jT??(*&rGEmm8Z=po+sj2`3M6S6MbZyAy%qMpc z;?+O-MB*y7^CGokhEt0=Y~r&uNsj^h={|eT)vr1WQd_y1s-b1Fe6YO4-jB@(|=^vCjQ$Bs0s zb-1;h&D5>Hc}H?kLfEdKQPKvsme$pe4aut0tlt|h>KT1&$3h|N+LFHaSTM;rVwGjJweU zz8&`?S#q_z7Xf?E{i*6LA}BQ1tpi;7TWuBEe*dUTcOh8hU3N7M77xU-w0C4IKWRPq zX=_Rh|Mj%jWM|Df=H~hUa zkH#gfJBpM*z_1y=2^$MlyrNvEe+t)?BmQ`3pH*f-$Mk$3D#mk!4OQETW{a;@J`1q< zSjYslFNSe00zyKzp2TPdfpd*)c)_c)QPkMP!Z7owLxVrj@WP`@x+9D(YxL0Cev&m~!+C%MF^_o&i@m zEfQ7U_u?}f3(L7E1YICsQ!bRnJg#)83O)NAHZ{_>|7b(nTtF5XORZX?3{Elo$V@^J zQu%82!!#+MA&OK$??;-_D{HJn;V49`NGa?tfN`?PdLef zESFn^yYk0?5}Ry{=frsi;HPj#!;$fX3uhZ!L-f*|ILoDh(R=6}Fn|j%UweKjXBNst zw?}l=#2hY~L$@oP@OZ}Qb6(-cI--Pbo1ruZDC$idv1m$s+*n-;ctT8Tg>@?ksgMi~FT2R<;- ziT{yE6#Vxy`Z?+NX#tK#9rLj`Bhkxh58)RZF7Y@!X>_D8nR&d~eSATjq*4Lli|evR zPl&&g-U0)MW$quZ2RHXODzijNXMs113Cr2)7x`@CvRNfAcfGHyd=hvc^5t8)F#&d8 zj{bFab&HM65{PWK*593q5IB|7_o4B zbIMSHy`?fTU)!PXSNad@kRUQ~`zJH=Y7Zfl@CmwgSsWW)9crv#b;}MJlpsWr1#%;Y z{hJc!BP`Qa&yOc@mzO=*%o~2r!~^Q^ixW7ZdZ)}sQ}CN(2D)HFdS?6s@}3M&&pFHf za@8%n{H$t{5d7lsvEunZwoKysP;8Ef{Uc$$RB!^a?VIIDE1Qx~x{cx^jU}DI_GtJV zJHWM;>L`tZZ29PysS@@l~hu-yQKJ7>C?|wmQ!FWp) z)x_4n+D0m1#kpv6!+f4^Z zNfxv&aCOHQZevRlt4z>$O=w~{BF{sh#hd&M>aKqsTB7pWxbqx7FBAuXOc9+dy$C(Qk;$N|-KD0UAI`egnhpboNhSuxXL zJ=;d})g_^KnVHw9aJ>(U3W7l}$ zhe25VWT1!;EsIvOD@=uJpczGALqW52xXT{Rk_-3qOj#1hbP-r(gETg;EYjq_(gOGp zU^~tdd6Q>@+@eKw;IpCOwV4u6BA&Ay9YEg|BlGmO;#x1@_w5({wPq|1`;I}2N>AEh zxoUFf+&3c2+A}L%IbK0eEgn*mw>2e4wp@&09C*9`9(44-6%rLfCTuG*1_B>-b|$F` zrwhnQ{)!Wgv)AMp&tuFUP%%m%l5JR%$Qaa{Gf`)Dc|l*PUiK5`V3+{se4I>ZxU2GGYA$@2=)#Kr^65z@v-&J|ED~6swMO?woCR=w8D{@kyA;2jhClA=7PUsBR9QhNoomMd&i!p|j~;SQ=yMio~6%)x_lLAX0ZmNeYVLoW+4miPh+=jIp>A%sj7 z5KT%YNJq;QWxwQ)^`6Y5wsEqwB&G!~G`7B+G(!CWOll_n!v{(8Q}TBlG+pedEwuX$ z7w1})9-(_KiW5A~!XcXE6tvlmFc$oLr@&B%7~wyr#Am5wTvZgHaOQf#u=G~W zH(6e9lY=V|BaM1H7YtA6?g@^)gqa^A-tWD4C<~T*`dZA~GYfe&X-<*AU;G1yoxkv} zKs-tDiia9IX)l{E2T6kCM#!~KfJIEO!rl8(^Ebb4(qeGYtD(gC05q(pr^jUVRV$>G zF$0P4D61Kfl8%V6XNMrFaLDdBYkjEBtniP@O zU8Aif&=6o}3VB*KBJ4TlRVFZ+s@`t&A11wyhcj&`-Shid*X^IWo4UKuJX<-Yh(%K7 zWny3k2#$g{>~^OwMsSE3ZN&1M{ESQ5we+uTzO*lbm=A8CA?__;TEY;}tNg-}#VH|u zJkEB^!|%a|0xjQ`IQ%`>wMeF0A;EkPn(idUUq7&9@ew&Ck$H+(!=v^iP+5OK!U&C? zR8{8<52;74(h*37=+Dm5yKM4m@8ane`j}qI&78sK#XYR}SF#E?_e`su@T#Tz8E?cV z>Er$nc(=k}V57*l&x5?yAt-;ow2;lsH&@qq^fd#$L?PQ76deM)&toQ%1iZ3%4ws5e zNG4roaeMcXub%n)Vr?N>KK* z0asqOh9f-AIQkKjTzl}f;8P(wNO=^+^8D4LBTCG|4`Q(xvLLiPRxLA`MaQ{!Tz3@s zrr}9xkM|pi;6?B-7fmFIoJvSSpe7UtRvE%83f#KcpIYgvc^R&PUiLG4;R7yHdh2%Z z9+JFyYIyX6&N3sxvOUgum9-yu=c@YZ?)d4*y8C|Rq9EjP$YQ*O6fptN_B4N-b5ynZ z7^q8rKxv%{Gt5I@2a{{C9UaZ)vdMUk$glV;U6ToQID1!lkp%_=i2l7#SFNHEk8tz1 z2z@KgVfV^fst{JZPih~DxFVK)dAkuQIQsX6DxEo(x5He_AB7{v9K{puU7RAwRe&Jy zx2a5#_9zgIn);KZ4fo&96yY=J2mzPy!4#MXR5Lb|sx$wC%<;|3m)Gd({a=La`mz19JypQ5g{Ku+Y zveLfb9X1zyO8w%V+gLk7qem)f5jPp>$Cd)6Hu|+6V4q8f#N13}mIzyw@Ot(>$y_5zitpTIhcC zhf&Gl{?y#&t-Fg{jyKP6?C3@MrOv;;zk3!gln{9b+rgXOS=%lNeG>Kg-+i%-Io>2r zzWHY?3E|wfe_l=g@U!vf3Vokq5wOo5v|ZrMSg(3PtbdS~^Wp*gyDmM|9N)BlXVcGn z@wYA%jf?l1q7L5{u=g^s27SB;cobC|1N6dbbOy~(+oDx(9(&XEjG9~qIE{RKFE_}^ zz`*z>?XM(cbd{ZjC0rhOiD=co1lgmH364i4MijZ|?E4+nU*w9x*>Pj&82Y1R#w&}y z;spnH;JJ-15_I;p;|tIb2^;2S=&t4&9%)H&S^g(4v9)HIs6?r<^-j`vQ zbbreI_goHYqGrEwDH2ZRE7sRAw8Y#?@}b9{J8g+h>K}H{jbdv|N!-~*x5gAKp{xvu zDKm9`jpMR*aDWnB%grAz9CcjK!?T87L@k0yNSFPyB8-6e#&-^$U>+Y~4LKP(685Da zAK#lE=9TuZS~gXc4dG4=Y-`x>$IB9W5=YNka@VjAH))ew(gPG=9bFK#_({<=E!}Y+ z`SBT%488keNIP$@v+Aj@9K^ylQXqvzO*GHSyHG04sv-IM;ORT!2IF>AlXjTJ^Eb2N zIyIS>neTrT^Mh~~!FPRBsqq^cqQZ)8{}`~Tv#q%EjWc?QXLQ@xmHWDjPVGU`Ozwb> zTrxcIZ5HLzXuAvYPFXYQFuk1p?rDPBq!&J3`88FqD*1F|=H#XY=f-6$&ag38sSC&U zACk_yQxE~5!aB}e+xi{%w$xNP4AfBb#AZf{w5n>V%gOSWh@6H6I?UB_*l{lsL%Rqx zG!jBcLR1RHwW3vIVg}3JQx2|nFFhj{%75)T__S(dShj0NjeSUvS}+0vpcI`mUU7#+ zNUN$X_fJ{cj_8*5!Kqpxsd{OPAGuvxL)_|WtH=YogId7O=CCBhV)O*Tqsd1=2O8!5 zPcttqm?;8Fc1g&63BhNP8M%&aW3=G}zM+#wiGPQPMq<1UC#&zbJ-l2mXJ>kyo1taA z6iH69#~+p>^Ua`-7$R?%Pnq~$)X;a94oJOFh_-dM-y@69THTks&gv${3ueC^sy@sr z-TF=dJgoeqd%Udn=Nt;CY;j|&Es(}HM~+eTiBBny!(==2hekI^&KQJ-;B{Up>NNO~ z1j{kTmLYfEORWWuJ-Zy0J_XvFGh4XLzIFS@8P%>st^jSo+__eXEf8ektL7KgP4Gzb zJTy%;E#UdN`<~ICr0SS-kvUt5(Y*T^LBy*Rot!Pm7>S_D5 zZcwmGjv_QeZe!!VTR6dB&u{y_=GBCMU4w)O>DhU8L$UuajsF$)lsdvc#VvnpCx!VS-c~=M-b-)!W$b3eui6JQDdKwns~TOHP~{F@yj%J=4*u-{0f)2J%G>fh|s1smZF}N1j;N#qPI)jJwLoaD>?g&l3e<>$bzrC(h{ z->hI(Y0l>ouk1o0q1U_j`#YL98u#I2VI00!DmkHVb^O=Wrz>>of|Wt_oGF91Hk8#D z#Eh1d1M)}lgXW}WBiYIt+YP;a8*b~ipTGMpDBp?|{)Lj9lXs<6wm=9D8|h1TMI{A~ zO_jNXUe#mzpwx=OxcTL7%RicH_NIPUlZd8wW!ciY8XGZ;E!;X>lNH|%az-ZbWwgv= znQw2VY1-E@d4Zf9ItXdRUDpQS?Klje$I5;5rlua1Cz%sXg=jTruj#t~|9%eaN z-6s9MFJb$S_mCLd%J!XjY*+d|T+6}q5mQgSu4@8j=*N{a@j^p5oU)E0X%lg;GTES@ zRMFl^Xdd;O+O6lWTGyaqY~vvFJ(6WyOGds^&bqa_)r5hh#87eZSMS1Nf+k(dI;u`d zlax#lM{YbR2y@IOl!Sz|Iy*L!6$_&*UH!%bj8Ab5!*LCM$C=M++>(Ijg5$^KYBmu` z@tCPrq5KDJ;NmBzR?-m!%L2Cxevl;9W)zIc5^U>k z?bEHY$G94ma%zLS*0yaW7iBOz*RW)Zdbx#MyNvNAd4WVd007o&6@yM0k9}+py*xw=ujyPI1wQNT6D(khi(N)#5Cn<=VWJ@~=bmlyFceDro= zwEmlJa>ei3EwwJp?Fnm9vsgeDgj2uM!^N|8*mmZzyRKu#?W6u@{OWPmSK2{`OrEbs z-(b8bV0ukb-?B;wiz-CbG_z$!6CHGqY^gcW7Y<4wnd){z{O6J;X-tfe!o&O}y0ZtL zQS($my5gIJ^EdL^4>x@kevi;keOB%}js1(so<)8e1$(@KwL6Uz6kJ*cz7RZxu#s0z{siVsJtl;)MEDvFbfhG7k ziTc+>9tz^NSM7)1(q_vU?e3g&O8B~{8k=9l^X+8By;Re+mww4Zhxj?e#~j zxO-90D^g}Szm2rF3}(#ry{1hUoe_9l)OA3ri0g}N4OcXM)$Ul@6x^*r1NjR4-Pw9` z&r7m7phb9Zl=Z~c16K5?_q~b@PKdFI0Fm!rDoSR$!jr!YnmAzIt()2)`-AnTVI|r% zKvmm{z~^Q5)bAZux5k@;MP}(34+1Gn+4)EX;V5Ll%AYbf@Z{+!gu;Z2=S_^2$5ajv z5kHfGmpg9xA?dQzS=MzDYhgG;Mn?OpOnAGBA6`q6qffv$Hc}ZGb6;l#+~so$8M)re zs*q15ipzgRyF#WiYHU!^CZ}_eF^7i2jvm8u~sr)am>F(gm^eeE88m$YK-&1VPU9~jJxfm&Z@SH(;Mx@fR6g*w~ZpSr-aa!y?I{tKUmeG&Zq%a&g6 z;K`!}e_IhkxnY&!wRUR%sIqyLhZ@)La%vN6(Sj-#E zA#H}krjFLe;#$=W=8Wovu@syV-99#q*1aegm}LnmDhe} z$VS@%#osR(7Xm6)=nA@*7UxNlkZ5ta<7szwo-|-26iNrAZiz=C?9W9&B+);faX z3qdvg2{Z{q#h-=ZI3zEPa^=JJOHC zdW3r>ZMY)O#|CWN9HMpbm3gfR!+TKp>LGH$8*w4ClpsriTKG3QQ=?thCBbnLA)M(6|bf1;N7aHnI*b)w`^a(YAQUN9UaZqLRCTF9B ze2^TZ*o2}G5=yTiy@<5RpZn%mfY>bNnZLVQJ6>K(Qf?`W5$vFZl5Ubhxp4o;#y_Xf zR^e^$SIV?7JW${9#S4Ko-X{C!-{Cp0@=Atcj5O4B@X#-@&T;K1@xJunz{7VsRUzM4 zQ4*1r56JLt|LKW@t)x(@^QGnMD*z3jvdQIhAF3WHLqFWd7alJGm5Lf$7wV^T9Mj@i zI%)cnKzIdTD48ZcFIUUhItUtCYmueRN%dN<5ee_UTdQUuAtCRYfi=;nx<8s^{G}R7 z0S%8l#{b})NDVRQB1Q;y9J2gi(`*_Zpup?c*FzO@tRQNVp7{tO8j7?m0(kx3W;=Gs zNX&T{I9g2*;aT6CHfQ(44L;j~DLeIQGtmM)(Oh44rMG~HpC7(vbZ8F+$dWBY{K~Pg zLjL;!=;VBP-jeUV?2kTMuVhih))VBxF8@G_4_hDvH6%n7XuT=?>t+NViB!0RexugA z{;%a$>GQ8QT4r|&h52H*2x{~~X%%&@`n%Ct@(erU+!dH^is+2+qYi$_=(qY_W-VYTjE{v$9fD9q zR0ZIm6(Nf2++{T!r4jFbJ^t&W^soi|l}PA?f8|*OWKi?#@*;m;I8xz+=ciZkv^cQe z*OH4>p~)bMCp`E}`ZN@d^p2)U31$HE2pt$PHB z5G29?3;pDiPb92ch**vjXNLxAiygAZsBmx%xczGoiB!uCq?#?!39Amw&8@@-M|dlN z-nxf_2od?mnq?K@VbcCm7(3e*ZjSN*EdQGEhiNE?g^(gaW#vnpNMuy5FXVBFPgd;{ zs$J??5q@P4t|v%a6AqmU20-t6EfmrFo7&K}U>2p~S;@b-s72d|^~;AwKP}=I5YIjd zV{cD_qlCP3B~_{vLc-bORIKfMDFDg=1jrqp;)atNTmU0L^wZ%|Uk&TFJ!Q6x4p%&u z*HV@t&KQ|HGUI;B#le;kDhLkT`)t+02t$KQYXE#Q4UwT()ghuF=kJQmRqvmVqcllr z^c)q*$GcexoAT(^I^~`q0GS?y##o4 zaZ;5lpG@q90L3+RIUiIVq|JB5E>J2^8iHbB?b+6R_s+3AF0nWMBOgC1kpFCWdLBEx zrS1+N-Z*oPUbe~$qDyRDhWMUN7#Fk_h4~Tgu1J&0R<(E(e*Nz`de7H&;jwx$l;eYK zpg$DQ-M%=s)%hx7l_XzGfWMMCWfkSnQcs;+VX^}P8c_F=E1FHpu5=zQU>DCq(w%v& zggbv;di(Cy8L#|`dk_u?5I{bgo15ymeO4)LYPZ+@UULhRcnr~Ny=2NFYD!;vqLiT2 zF2MuZ)nSPC_ZG``wcE8O>6Q@%7w2- z%!G%z6dT|`@Zq=Zdzp>ZxRr5W;T?qWU0hs}N49!{4smtDUll8mbsK);bv$7OdcFw} z)85~aVc|Ex;;B*-1dHW!gamiwm7CZOR3FOe@|*7U(Gn$BXh^@kMh%NxlNq+xiz9eg zNC78bpVLtz-#E8ADBOtWLyC-nA+3X!RF?}p09Q2%Kl7o%H`Zi2As1WfwTgqCGGG>u z^j4e}0!nayebQw5D?|k3y8sEglE6K4x0$2L*PZ#_TXXzyc6Zt)h%)K`JT9@2u@ZKa zf>3E;09OhK3 zP6uN^n~lpm>$ZWf`N~zXyfuLm>jS?vmsweL1xDD?*#hi*k$&VRv9GlFZKJ_ za(WbdD9Yb|SNzM<(w6}2`9owm<=*nKsNCi007cBi8-BarnzuJn)#2T$(H|eDVKp~E znopwe+?dGisZ>%LW-3gN*M%zE?=9W%Sp;_-W#G*LY7U3@2t)eyAiwps|I<7PUOhVg zCVObz$SeSbhC2d{vYZrEYaL|UKYG)ZM{coY8hd7OAEhLW-@NU<5$**nAaS7}{3MOE`TcuwqnX)3^DR@E!c~1Gq(J?e7h4Si@_LH*IC!9v2 zYoNCd=wuC7Y)>T6z{0U-?7uK=w+w&jKF(^;Nxb^nDu2{kf&HzIvLPwSo2E2EqrW^$AN82}t)o%KSn# z99|BzWflm3`_lR~f^uJRiO)e-YD&B0OSfi8R|5GwxziFH{^!-#kVFBUY!0aN-K}KU z6aqI%1y)p>Mv3IZ9iEhje5MfXDUvQUXR0JV>ac??`N~y{M^9q5+OYEfi40|Cd`)2l zw2lFo@ik*V5Y%J@F5bvm)1C*g87PDKsJxbzNlBhNt@&CmLuRYz$j@oOIO z%238@_))-d`*XdHinn8q$EJLeL`vMCn#_s=Gu!G6L5+$(_X|j@36}oO5;efiDJ(qZ zTt;Wbh)*Lr$9pxSqE_Oy;LuEqL|$RtI)O4K^y#%=6-KB`$(n*YbyfQ%6n)jhY=e{- z38!wmxS!7O`5ukQTN|E1^_*yM*z~~{SVGKa(j7^Q%iF!>75m(f;!Pg)8aW#e{wfav znta}wL6wW0Pl0(K(N9nF{`d$9C-e08}{RmJcur8tjGT2UYFLyJ$_^S@J zg2okvtCN|;? zxBsVsjpGhs74B#2agkAywv{pj29-s`_-g?az;J6xy7n z|Eq+u{yS-|tR+X*U$2X(CRy+48SIa_l0qLo)t_!rD7~TW&L*Xd;Civ4{M+2@7#ymT zCG~_aD*%$q5Hb*($uhTHUC}~P&60Vggw%q z$rGma&ThD{KWsUjl6p6N86Ea+fbKNF$+X&_%U!uB0K}tT0HwUwwt0v0AwV>{8~m`H zm^G>fB-AVQygcP3n%=H0?jP`ez}q(wvyAyMpck~Z*94s=kNlUF;U$?u$JUkx;ED&Z z;gxV;7FWeGU^}7d*UbkUFe&`nH^WM_{g$oOf1f3=cu|H~;s^c+=U>J7xjhu* zHm>=cT2XG8E2nYg$%`q_T-(}@W@}$h+{3_qG1Xy*>$Pj{9lgD6>#b18nA^1;P{UPX z1<$!VXay$KZ&0kNtK~XbNkpwW`bE(_$Kx5vPWB%A7P`S48(K+lMz4*t9m9VdF&8+N zdH#Gk%sCP^__9M2u7XL!)kx)~bvF(Ks9uoek)_|KR<5l_Z96l8-ad4kpT0z1Qc5?0 zL@8rb2PqV}Qmj4ZX^5VB-cgi`TI`H1q4Cix0ZUQJs2KwBqN0j53E>}(9i`8c-fx~C zL$j~Dw3ZKhoubg+@LWSL=L>#bi2T4?Uvgj+eYNw8nQCGG?bx&rPcI+@0+~O%T8p<3 zv!NJRV{5>IDH2qt&%*MqDe=ncr5tjla1^^QA-PfIojs(?KOu4gy3~X(R085aN;+$zd0DD*53;tAa-0snCJN2jZ zGsP4ClLO
L?j;#JU>@$(%#jZ`%w+S!5*N+vLe`mR1+KYO@%2rHfU)wCZg_M)-_ zP|U%Re(6s56CiE)mI=C@ykHRmRG_}v(#icobKc*CiFeLpE_5-$Ec`z)LteBj10I#9 z7TA#A2+SNe=~#gP)P!j6i3m-q6LyrNFLlt-gyXvCW1`(afJi70igC`nzP{${aN%c)-=lYd z$6%>4s@TuAsHMDC;%XBXON&M-%*A3r#b6CfLg#?ciwwwm>ji+OOAuS_?bK>%2ob$@ z(ByNG1H87s9`mE=@NHZ~^nO?B&ZEEWWF)c{`|C$$7y%M8@(w@#9Fp6k8kM9^Z!$J) zJqN$0whx-Tt?m=QsWW*iaem%HEw*wn3V z0y8nXN@@W!G&C%nQn{$;4Gmdd91=i3F=N>zeGEZ<~o z_ZU?ZFeFk~xAA=>3^c?XOqc)J)z4qHncG{+1Tiv)W#-(oO2Vae5UF}*E%{%#f*ezV8E(iCuHBY`fM2%mh;?U}2Tc*bxe{eBX;)bWj2 zdH#gQnV7ar@QlH_qs)DUMZ}e)(nC1h5rJ}ND8!FaXHpDR6MHp3D~&z^a3ujb&HLTPmvfqM!-q} zMDS^}H>U2F`#z^`IlkG8KmPmr#?n>916x#=R~}|k#!rB+`;UHT#r(YoZGLBZ44Tj@ zHk#-4-zQ!74ZK|63*_zs8dp3w^@-lO^5dkfd#?;h99FHh>B5!so9qXz#hz&oDp{P~ z?lJ6~MV6F1R2#4mb-(&r_8}8A4L!ufred#-)}rqSYB4!Z01ZI($-Vl=UF|i(Q$8== zGeSu(Y&uT@j!=BR*ky0Zx)NtTIBUvara^pj1(I3?Q)sl^5UOlKdG%O&{135ALU_Sg{m z93&8s5Qcs{dK_H~TXchfNXXXl?S%1hK|6*4ThE&aRZT#cbl{X13T%@m zzLJ^Fz&A?zy;&(=-F=h@e)o;Sf zLL>p47;itE3{QVXg9@5JOw02~koM!?R^rw95NLEUMP1-*Yp~JC5{Gg|pvCjCO zlS%k0*Tsp+(}!H$OM3@1lmkhX>=v$ezU6-%Jd;Q{Lz%oK*-C|R} zOU;RQz0W`0+?~*waegP=YT+r6dtLLEC6aGa$ z+6j_AVaD)qkj-unhG5rQlOG#1cW*!*2z~*PITgEY=YwBfM_*;zki`wsxkGPGUiSr} zq+#ZQPuICh9p&lS?-6rSfjA0k2JC7B7Vl65?Y@E zeDJ31*3ox$gJw1?`H&Ok129L3aG9W;N8?wKO5aEQ9}(lHAiKAou_MX){23%DBwY4z z9cfKXWaRdsV26y5l-%fkk8L%$tIr(PR~*g0GxPHuL3E!3IzkYavm22HT#J;dq+krGiH@Pb{f)YfoajQv)`g=y=MuZTtFMP5=vJG5aMg1Sye z7GxltJ$!sF)jMp~QS+9`ASqPq4(mn?Vl6L}s`TBCf zqkCbuR@et7R{iISug94Ih(Xt#l|cJ50ycjb$kV+GyI%dO4d=_T9VY4}sA>h_sG?~J zUs{O5QDln3*(FzY{x&3CBnn6i;A*rHPY;K`#!_cdcOGI~{Wn{v_0W|om?PbL+14f}sN3uT9pNbtWM&s*gw3#_7tFeY43OWY3({n&#Q zdXF`h6w|9)zc)gsV|<}SC-SuPjyhW;=>+UF~ok8TH^#R}_@+g<|JKm=;# zLvU$)=g)>?*cix_MA{V-8zbE%9+$}fKrMeD0AOvthS)516f9(vp?w-D9QHVHXT}Q7 z2r`q+`bzxqcjnR`(8T8S^IKW$bB`6#1XzRWG5hM_y)Hyz|jF z3~W>y2rFoHYZK7-ciS$VV{bxrc{Fdnd4KYG@nOse>si@E*=2pR0AuoU!tQW~Jt>wr z&;-lVN%asXT7xV0Qb|>;M>_ySt42H~hL6?}`@_KNu5)+~Qz%^eXl^0=A@ILCFChrS%1vb#- z-?ipzM&*XM0?A*xGrKb1X z=g;~4Ift5unk)^#z2do5Z5*L|UtNzn?w4|8XPHL_JR6*;sSk{3odk}UG#Iit#sFJ!I4dY5)0 z-rCTE(=V`{<|xd;+JDif$cv?g1^HhGE9`epFYfLCsi3ColXj^9Ov|4CH+Vys{v-qFxF{a~*)#(wwkh8@z(p$!?Njny{<2Ya3;R*j%%M)Ue> zeZ+nqH(gzoY@G=usX?bR0Ix&J=SFee`a|=@SUFjxqW$$A@{mSXuC-DJz zmmAqDn?pBfxEZwjo*?>aI>-7`lXH_;h}_7pp5{q zr9QU-kFzCcP=RgOkr2*srq%#UfrW_HDc1B-%2Y>_lpMD4-b#Ncg7n=~LU}-c&LHin zPve4x%l?%f5^q(J3#UItd7cJ!fl#zeaHqsN?Sn?!sZ zyhSI-CGQ!df$C^xQ*4JKB%eg2y}a(*)_zd~|Vwo_uR=?ez=VB>4hR!f7`J(+JGogSK;FQ1rux56kTC2yh4y z)|QC2hpkS9?4K_R(++$=Bs{m zX+9*YR>?#8nSfY?CTf%lkf#p23@%^MM5l4PE2Uaq^?pa8X+Q?GvX7^$kcNT}J^LQz z!KBRl(k_mGq!eZX9LLCu+zaIC<|K#5S2puPafL z-=pUNX~u${&WMh}|9Dik{F85RdMB0EuWs76ibK2b`t~50tLz^%OSd#c9_(wAaRL*4 zj9=N-oZ=;3Feu4K;YhQMVISOFNx+^fL%Ki-m|*cet8~$mqsct?1%#JE40DiZ46`Q5%emvV8lpI|ELa0W@u8Wj8Ue*IYsr^&$ zv8*huHhS*eVoL&l(3((`Gs`wCjWi16es>#!tN3=g-Rw0_p8PRlOi%9dN6m!gs&*i* zxh0XQJ@u!Vy{$zfv9(n7OC%kbL3K~PXC*~?$(A}af+tjUamNKQPt&TWi^$Qt4L-$VJ1WU%M6q7r$^O!D0Rpi6;)RnjEBU6i^fNu<*Mw>MOq0Zj zJ547pqNJ8<_N&vO5v30kJfFJcfnkf{wM&x;fmVePNv&hVOTYFW_6ZR!2URnQ6 z^rg@nFJAPWI2LYJcd+9z5R&M zgQWkoCROnHdYGrVOLl+2r)_V$d*{!)@)X*Dr&mM_e8$?Y4wfz(%AhBBq_|zHADXTlp^kr z=r?&ncB^wvDcrJWkGXEix9%h~e@vv_rqMX(919q<-xFvwU1qv0AQn6R?ikyDd=v22 z_hLbk8gl=nbo0_R-gtQKf;~<(HD$X<=qPx78`z?{6}_E*?ure%qVfVZIfXEFH&f;1 zJx`37n?}A%se=q5v_y`=R0obn=$Y7NcFZ5(G~OJ}lYl$x9DSai|Ix@yj-J=(ZM!)# zn$n7moxou>ODKdYc8<`~Ffa;98mjTofG*+ZBk=_~eeQGulnD7H5B~l z=W(%H&pj+_`&CdwXaCLU^Otn$p!lL)zP{6G-LnQvCpYrCD@@@UB=ZIV&Y;mvtuf;p7vgv7! zkc8NBB9I3q_CJ#DGFU2;yp1AGp=PMe2aEn3Fm-;Z>+}1ra$4rGCtLipd8EOpX!{?| zCzP$AWSRBsT6k8!-RF3_cEB67V-G^D@FzLN)^I&Z0VFTRqZy=OL>AW{*(0VuQ%I@H zEW&E6kBQkj;hjprT?1Ce{uppz9AHacrUoqAZi)*u*|7QCc_@&Ye#|?itu_L(9U6L_D-XAMc z+3W{D^IRqkYDJ%JI}ab*GOO%e#hh`KwQFz1W}@Rf0D zdJzjW1~8UY-~q8Yb^c?gWvv8h);554(S7z1B^(0^C0)&R3az~^Yvvi3yjCmHNtw3& z&nU-0qmP?yrH0!DeSCb9R`7e_2UkOU3Tq5 z(bh;N@)Kkq*gCfm&uMu zVbpVQYk7um>p=>^(&u~YsHnnF4UzR5c79-y2{OKwtCtgr{P4de@3ru~3#M<^rVuan^Dg2PlGXaQ^*(%1n_-{1);o@if*B$S&9N0m~JDdsX~6Qg#s(|{IkK+ zUYm&zCsq%WL8aabiqG!9A-;a8;CXBb@8D?%b^t#m;Os(Qr@_cj=05A6MjrcbVDD~y z5M5;&}HOBUqT8 zr2zXpSoF^t;~~U<^2XL&19zMzx|lG$eEc#=m8;(Yozid^%n*mBxYiTf-qbCCw*N~9 zEUp)BFMpZ^Lthkpt6aLrs3%vfYDWV$xrn8B!>TwD1WkB#;Z%E5Hs|u_=)*@J`S5i3 zIK!6SI?OA72EWECpi4kox;IBN#OaFcs6-273%gfyk`;Vn48VXJrHa?U?51=m;;B!LmLAd*DK5 zJn8i<^|hYhHlN-{{^g>8#mm!JS{EQ@kdn)$is=TH4zI z)qyD;r#JlAh^9Wd8f$h%ZkIO0gAe2Z!#dd2{Td56L7i{MfbS3K8j(Mnp2A*SCIFd6 z@>7sDX{<>vlPyMecxf|RE%+>I4!B+>B33}z=Sq1mu8;&det%*r0h4t!ityH_5r%8f zR_!j}w7Uw;e8UICHb-S1z%@dnh54yt)Ltx}jP`?)&Bx}l{uQ5ho8C?TR`?TIq;MIf zt>8mJLwoA23s!%tL&}w3`jqGL(~{rqO;U~*lP<@2oDC=kJpowju-F-dDrUn`ICecr zgpg1QD3P0c05?so$M&Jqj2Amr@5JKJW6$KrW2kTEQ}4yI;^IktW2e2&gd~G91l482 z^2^op|A@5Jt@eZs%WX^_8lpf=-IM1(V*WeBD)<-1YJ68ZJEmNlk0fZQ94L-Y6TYw% zyw8995`#kTPx+v}jIm~FtLDy47`59W4-Fl0mGkD<{El7be=8U+`ot=7BFYFB;YJ^M z8^7MW?wgIu9bI_sWB}|ux_QnJpWuRW$0#--oFRxclNg(4m%~MJyu-*+>s1~L*dd-t1?{F4|YC7BY7@73}uIz-+ z<;h-7R$9NBAtO%TAhSM)c`EQkd~7Js!x*DtXUb%9wQ^lTWPwQmws6N67+tk`)O_WTu7zr-U@U-0>0S|ZS| zu$y;J&{H!57G?wXFW{TR$%ki4k|Pv)lRRL5{Za@JqA~j5(cL7K6I0C|sw4~4clO}- zGrF>0$96o4?SKB>9Lbb82dtHq|7Bo@YptUVj6q1h#)=g1mcBpXcJF7T@&#_$ow=bb z>GXa(9>cLRL&vMh+r#a)bMmRY+2;3M#^ce#8c!oSAx5FM_>W^2uKrUl6#r%gVSGiY zuCl6k`11mtw-mTzq-SlDm+RR?7`2fz+k1Ls4mJU4bUKE5DI(9kaTGm+q zrS-9Ve-W0cUHlC;C$jethYJXc_<^R~#;>i=zqMSE?}r`unnm{JXzTI=a7w>bJ_B3- zSW`#?ag58Htc@yYyqE~tDceE9(GBnx!Axzk^YimBz+)igctYB^GSOAqb+JdAZ>;)= zksto{u7`B1`gC(}L$5!$4xb9-MM0HJV|4IY>?{_J-Wj%9CPo3yv;>K3J905Vq<*2r z@9menq+Gv$DQ`>^jod~#2t$aT0EMKYYv}kZ)==QwQyKnld>tm#}^+J0SG?7Np71Xm3U)4_TioSch zHxxowC-?Zhkfo4%}GVJ_HhlS=kGJJ0iLFRHNTq zz%jo?z8}q<(?+ZC2+;jiX3W~v;`9x}RlMV<{9`bkdx7~;v+E)7 zTMr3C2q{3r7joB+fl~6rBVN$YdO;e{qrpx|jCK=iT2eyHz~}a3nZ>EQGbDP&u;ykDxXX7b%gyw;#hF9LsI(N^=aPco{9ZQ$ zyoI+!e7J5rDU+vYm6@M7MM<$CJ zhHtGWf4)UxH_NPkVV*~^*5iX_10&i= zrvkl|;WsKzjoy@-=&3Wyt6%&Qq6HPoA!`2D(v`*<)i!EYoDPg7|G_t?RGBL)U zHA`6{TcskU1({)n5tWc4E!M>REP0hJOU6=TD}*+TDO%`-p8FM`yeirca|uv_HroQUKbK|7FwJ^r+yV^m*fv$SA063vj^s!LqB&EQIW2SN zc%=36P_4$iqs)8T=aka|72|>V6K?l-oZJ=cF_V}1FqRDM(P=1-d|UlDmh{<4yVCoj zlj@`Pq!znRO5EfT#wT|KvVR)2^3EOir;#8~^|?%}@RoYsXGk z?{-@2P&0rNRCDYik=R%gMW)ombq)jTH`I=j3{Do5gl}$cMgXW#)j2T)VSZU+^uWaF zkGxs^-S5e28l`%Ok$wy0{!x^*u8tR+@v7`23A&~Me4d$M+OWd$at%-i`ZY~#tRCb2 zu|E-W66DCyORxtHsw|My_TG~x)ln&{;O1qHA^L&{6HX)$9qD6Z-nx6pNLZ>uCp$U5 zZ<9UJxOt*4rZH^V9$iAwv&RUg=$Ko$b=Cu$O7eYZKF9PR7rUe`z^tXJKG_eN7^6+N z6U@<=r7GrNh`3@$GgKnJ28L4IlTRn>7dtmb z&z8T<<^8U#jIo`w{1j~QOO~KZA!5|N7rpeo#1zv_cPeqqgDHmmNbBYrDHXVDLa6noU`c&u&&kx38L?|diOlx%t`SGg#b7@mbk-BmQ@};}Y zbe5;3lJQLTMELq>0JD6;jyJaW`w9Bt0a1%Mf0C2xUG;BC&l)FEHN#2l)F*3#Ysox7ba46lwWUV@q9Cq)m-Wa@a5DJX$=_!~CeS>#d6y zveIbQ0?v4xn$)zq1VamQ`S9uAsF^lU*t=T!=w<|idJyZNa5>_j{l#CrY2w2I&yLW| zYFt;9<$u;(Py76Qann16Jo{&YH>pAzjdlzVhezsL;v1GZ<1c-EuiI!xj*%ltlW!Wi z5$@w`2J0m$R!%lQvH8B?gnj%QvmDHvG2MgCvTG@p(az1p4@$B zV1dn;eL#w>Dxz<@iLeVy5D&u^M&TpJJnnp@*4n#4=a$8zJyq*-X>-b_ zW+v`6gkjqbvh3eAr-_gyd#8+k&ZGaWy}H?Oa_W_%n!04PyfXQ%PZG<#6edLkP0^kc z+<|@h1D&>dJ9sv@;nh*0;y%)P7TS*!jLU3$SJD|HBqieUJ!wZ^J!A%o#Ec3m*l&FM@W|};(d|Q$|Kd}gd9^HFov&Sft~ZBA)#l5c z(TG;%j!2#rl%k_<97aDjn90;=SsOd;cYO8iB~VQyC}4`;3?)R4Z?@N~zH!Vj=FeM)eXiy6?%phY7t9iAHlOPam$I@wjGSN2>68Nik!i+rP#U!20$<^)k!k)|C8>k{( zxHmrNM%4;Ri|KTDdB;wUBWvykmYQop^z_FsJ1V??H}1mUbLRS z^FuL8cX)tXURYYCjgEVtSNkRORxiu`{?e~W)?}?`bpX7{kS$@5zB`04A{&mNvbX1s zu71x>?uq+&cL}wk6rjkBzY}wb>-?&5J#O7#mOgolv%p}K$he%|naRzL$&)mVx6NY< zg2w7UN07qrOc+RNX{s&s@v_zS?2{ei-v*k5 zZVO4lkh+E%tRCf4`|qM-f9yI`a>@cMn0S{n_FK(wCTupQ$^JD_w|a^wlnk?fed>Es zp}$-J2>{Tj%axb4Qf>3UMFso6kP6I!(cC-IsrQZs@5@Sg?dMbziFezNbKIHFB3Xab zXyJZ&-3RtF{(kG&rFxX6vZFowXDq4rZmtdSiG^N7;B4FyM;u^xO#XF!ZdABYQliaS zU*~R26&7~vb&-8aS9x!NP^06nkGOkfDr<&@Yo0q1=hNA(<_^C9XlG^jwf15wun){9 zu9py!w8RBvWU--0DD|3KK&bWUpPJ7Vx~Qdr@}x0*+OzsZWl?QgEGG7KYj!>1N0xi8 zaOa#e-HMLs8c4=}F*B@>d6s^nml(F9{Cs0~>g0C+4Zm?W?b<}2Ksfs3tn?cJAn^u; zSoa;$_k`pF7XUg}7plXhLO5g#H4`huUYG-7SQ+;MU~9k=)%0lhHao ztPMS{5}Oc`|Bi!Hm$02VGJk5^+u6)&6ow7V;ut=CUhbI?8earrQ2NM(reJNrd@(4}@s*HWvm z)-u(~C}9uKoeysn^7!ekjXf4^$LOoazk0E!0^|{z!2Ly_V>>!3D*xtBOh?6cS%J}R z1RqjQ$~`e?W;OkIcita@ck~;mA}i)RD67+4_=ra?2Hh#+_s4Klu$ls&oTV?%Sopbk^`)1RUQ*Al{QAg2WcT4D1wSHr0VDFWW`8DQU&yleb4*F&=_b*?dSjqO8vOI`Y&F zs6$92ntjp1*b;-1m*-!XcPB#qV)=Y|bl^p>a^4y;?nGRO{V)$D{}MqGzw@OJ1t}32 zIuth==wu*Zz@{z&#$DuT)L@(+<$W}inFLE75JAT8=JVUvJ+v&1TxxFafxGdE-M0bp zZOFomf~cp#?M3baD!%3bc!qC)1Nz#O3s}mb}er!eWjiGZDydhq8Ikl_Og!>+*RA$SrjKGde#8ADU# z8_`Y-A#61I0+;W7#Djr32l^Zc81S}375^8Rk3<%&TtH z)cAg&Bj8k&0iRZN8>|ez=Ji_((IPh9T<>ctM&R?`#pf?#{y=~Ec90Yt5+E!{#RT<5VUUvnO&^VQ&wHW(wnu8q;pPvb zp}nQcnar=2DVsJsW}=Hy7$J1+sw?$x!rUD zS1|x!#Aoi3Fo?J>g?w6{d%}5Q69khmZ=9vL2(ByuTIBIA`=!{~D!(^!uI-JQ9+|ZuG_oj?$%cO${Ohk)gk9aq~-U+o?Z9TcK-v zAV!+Fpm*gaGe|YkADm4P-DH=`^ZWakp)+uZ)H&5fdEoq6QTHN38c5hC8!LqWqJdc+ q+b_r9i9ml2Se0-)luIGTg%D(jwl%I-;I1eH4m&F+%V$LY`2PWBi-?c_ diff --git a/swift/Assets.xcassets/AppIcon.appiconset/mac-512@2x.png b/swift/Assets.xcassets/AppIcon.appiconset/mac-512@2x.png index 0b0e8250be0657aaa7cda2cdb84d9cc06a1e1654..20077d942038a6afd9a54be59c4ec6f6c773f68e 100644 GIT binary patch literal 49200 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 Q`)vX)ixY6u5}14BzYenGn*aa+ literal 57018 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

d_K8TV&zJZl>6X@~E)(xjo`_4kWdqN$7 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 diff --git a/swift/Assets.xcassets/AppMonogram.imageset/AppMonogram.png b/swift/Assets.xcassets/AppMonogram.imageset/AppMonogram.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2c355691fab0e616608236ef5e58613d7fa411 GIT binary patch literal 8025 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 z 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 literal 0 HcmV?d00001 diff --git a/swift/Assets.xcassets/AppMonogram.imageset/Contents.json b/swift/Assets.xcassets/AppMonogram.imageset/Contents.json new file mode 100644 index 0000000..027853a --- /dev/null +++ b/swift/Assets.xcassets/AppMonogram.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "AppMonogram.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/swift/Assets.xcassets/IdPTint.colorset/Contents.json b/swift/Assets.xcassets/IdPTint.colorset/Contents.json new file mode 100644 index 0000000..2a10cc3 --- /dev/null +++ b/swift/Assets.xcassets/IdPTint.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.902", + "green" : "0.357", + "red" : "0.431" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.941", + "green" : "0.478", + "red" : "0.545" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/swift/IDPGlobal.entitlements b/swift/IDPGlobal.entitlements index 5f7b942..e5e920c 100644 --- a/swift/IDPGlobal.entitlements +++ b/swift/IDPGlobal.entitlements @@ -2,6 +2,16 @@ + com.apple.developer.activitykit + + com.apple.security.application-groups + + group.global.idp.app + + com.apple.developer.icloud-services + + CloudKit + com.apple.developer.nfc.readersession.formats NDEF diff --git a/swift/IDPGlobal.xcodeproj/project.pbxproj b/swift/IDPGlobal.xcodeproj/project.pbxproj index 112482c..4ef7ed4 100644 --- a/swift/IDPGlobal.xcodeproj/project.pbxproj +++ b/swift/IDPGlobal.xcodeproj/project.pbxproj @@ -40,6 +40,29 @@ B1000000000000000000001F /* OneTimePasscodeGeneratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000018 /* OneTimePasscodeGeneratorTests.swift */; }; B10000000000000000000020 /* AppViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000019 /* AppViewModelTests.swift */; }; B10000000000000000000021 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2000000000000000000001B /* XCTest.framework */; }; + B10000000000000000000022 /* IdPTokens.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2000000000000000000001C /* IdPTokens.swift */; }; + B10000000000000000000023 /* ButtonStyles.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2000000000000000000001D /* ButtonStyles.swift */; }; + B10000000000000000000024 /* GlassChrome.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2000000000000000000001E /* GlassChrome.swift */; }; + B10000000000000000000025 /* Cards.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2000000000000000000001F /* Cards.swift */; }; + B10000000000000000000026 /* StatusDot.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000020 /* StatusDot.swift */; }; + B10000000000000000000027 /* Haptics.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000021 /* Haptics.swift */; }; + B10000000000000000000028 /* IdPTokens.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000022 /* IdPTokens.swift */; }; + B10000000000000000000029 /* ButtonStyles.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000023 /* ButtonStyles.swift */; }; + B1000000000000000000002A /* GlassChrome.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000024 /* GlassChrome.swift */; }; + B1000000000000000000002B /* Cards.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000025 /* Cards.swift */; }; + B1000000000000000000002C /* StatusDot.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000026 /* StatusDot.swift */; }; + B1000000000000000000002D /* Haptics.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000027 /* Haptics.swift */; }; + B1000000000000000000002E /* ApprovalActivityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000028 /* ApprovalActivityController.swift */; }; + B1000000000000000000002F /* ApprovalActivityController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000028 /* ApprovalActivityController.swift */; }; + B10000000000000000000030 /* ApprovalActivityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000029 /* ApprovalActivityModels.swift */; }; + B10000000000000000000031 /* ApprovalActivityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000029 /* ApprovalActivityModels.swift */; }; + B10000000000000000000032 /* IDPGlobalWidgetsBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2000000000000000000002A /* IDPGlobalWidgetsBundle.swift */; }; + B10000000000000000000033 /* IDPGlobalWidgets.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = B2000000000000000000002C /* IDPGlobalWidgets.appex */; platformFilter = ios; }; + B10000000000000000000034 /* IDPGlobalWidgets.appex in Embed Widget Extensions */ = {isa = PBXBuildFile; fileRef = B2000000000000000000002C /* IDPGlobalWidgets.appex */; platformFilter = watchos; }; + B10000000000000000000035 /* AppModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000003 /* AppModels.swift */; }; + B10000000000000000000036 /* AppStateStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000011 /* AppStateStore.swift */; }; + B10000000000000000000037 /* MockIDPService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000004 /* MockIDPService.swift */; }; + B10000000000000000000038 /* PairingPayloadParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B20000000000000000000013 /* PairingPayloadParser.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -57,6 +80,13 @@ remoteGlobalIDString = B50000000000000000000001; remoteInfo = IDPGlobal; }; + B90000000000000000000005 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B60000000000000000000001 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B50000000000000000000004; + remoteInfo = IDPGlobalWidgets; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -71,6 +101,28 @@ name = "Embed Watch Content"; runOnlyForDeploymentPostprocessing = 0; }; + B3000000000000000000000B /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + B10000000000000000000033 /* IDPGlobalWidgets.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; + B3000000000000000000000F /* Embed Widget Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + B10000000000000000000034 /* IDPGlobalWidgets.appex in Embed Widget Extensions */, + ); + name = "Embed Widget Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ @@ -101,6 +153,23 @@ B20000000000000000000019 /* AppViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppViewModelTests.swift; sourceTree = ""; }; B2000000000000000000001A /* IDPGlobalTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IDPGlobalTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B2000000000000000000001B /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/MacOSX.platform/Developer/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + B2000000000000000000001C /* IdPTokens.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdPTokens.swift; sourceTree = ""; }; + B2000000000000000000001D /* ButtonStyles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonStyles.swift; sourceTree = ""; }; + B2000000000000000000001E /* GlassChrome.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlassChrome.swift; sourceTree = ""; }; + B2000000000000000000001F /* Cards.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cards.swift; sourceTree = ""; }; + B20000000000000000000020 /* StatusDot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusDot.swift; sourceTree = ""; }; + B20000000000000000000021 /* Haptics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Haptics.swift; sourceTree = ""; }; + B20000000000000000000022 /* IdPTokens.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IdPTokens.swift; sourceTree = ""; }; + B20000000000000000000023 /* ButtonStyles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonStyles.swift; sourceTree = ""; }; + B20000000000000000000024 /* GlassChrome.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlassChrome.swift; sourceTree = ""; }; + B20000000000000000000025 /* Cards.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cards.swift; sourceTree = ""; }; + B20000000000000000000026 /* StatusDot.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusDot.swift; sourceTree = ""; }; + B20000000000000000000027 /* Haptics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Haptics.swift; sourceTree = ""; }; + B20000000000000000000028 /* ApprovalActivityController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApprovalActivityController.swift; sourceTree = ""; }; + B20000000000000000000029 /* ApprovalActivityModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApprovalActivityModels.swift; sourceTree = ""; }; + B2000000000000000000002A /* IDPGlobalWidgetsBundle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IDPGlobalWidgetsBundle.swift; sourceTree = ""; }; + B2000000000000000000002B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B2000000000000000000002C /* IDPGlobalWidgets.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = IDPGlobalWidgets.appex; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -126,6 +195,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B3000000000000000000000C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -163,6 +239,7 @@ children = ( B20000000000000000000010 /* AppTheme.swift */, B2000000000000000000000F /* AppComponents.swift */, + B20000000000000000000028 /* ApprovalActivityController.swift */, B20000000000000000000001 /* IDPGlobalApp.swift */, B20000000000000000000002 /* AppViewModel.swift */, ); @@ -172,6 +249,7 @@ B40000000000000000000005 /* Core */ = { isa = PBXGroup; children = ( + B40000000000000000000010 /* Design */, B40000000000000000000006 /* Models */, B40000000000000000000007 /* Services */, ); @@ -182,6 +260,7 @@ isa = PBXGroup; children = ( B20000000000000000000003 /* AppModels.swift */, + B20000000000000000000029 /* ApprovalActivityModels.swift */, ); path = Models; sourceTree = ""; @@ -212,6 +291,7 @@ children = ( B20000000000000000000009 /* IDPGlobal.app */, B2000000000000000000000A /* IDPGlobalWatch.app */, + B2000000000000000000002C /* IDPGlobalWidgets.appex */, B2000000000000000000001A /* IDPGlobalTests.xctest */, ); name = Products; @@ -242,7 +322,9 @@ isa = PBXGroup; children = ( B4000000000000000000000D /* App */, + B40000000000000000000011 /* Design */, B4000000000000000000000E /* Features */, + B40000000000000000000012 /* Widgets */, ); path = WatchApp; sourceTree = ""; @@ -273,6 +355,41 @@ path = Tests; sourceTree = ""; }; + B40000000000000000000010 /* Design */ = { + isa = PBXGroup; + children = ( + B2000000000000000000001D /* ButtonStyles.swift */, + B2000000000000000000001F /* Cards.swift */, + B2000000000000000000001E /* GlassChrome.swift */, + B20000000000000000000021 /* Haptics.swift */, + B2000000000000000000001C /* IdPTokens.swift */, + B20000000000000000000020 /* StatusDot.swift */, + ); + path = Design; + sourceTree = ""; + }; + B40000000000000000000011 /* Design */ = { + isa = PBXGroup; + children = ( + B20000000000000000000023 /* ButtonStyles.swift */, + B20000000000000000000025 /* Cards.swift */, + B20000000000000000000024 /* GlassChrome.swift */, + B20000000000000000000027 /* Haptics.swift */, + B20000000000000000000022 /* IdPTokens.swift */, + B20000000000000000000026 /* StatusDot.swift */, + ); + path = Design; + sourceTree = ""; + }; + B40000000000000000000012 /* Widgets */ = { + isa = PBXGroup; + children = ( + B2000000000000000000002A /* IDPGlobalWidgetsBundle.swift */, + B2000000000000000000002B /* Info.plist */, + ); + path = Widgets; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -284,11 +401,13 @@ B30000000000000000000001 /* Frameworks */, B30000000000000000000003 /* Resources */, B30000000000000000000004 /* Embed Watch Content */, + B3000000000000000000000B /* Embed App Extensions */, ); buildRules = ( ); dependencies = ( B90000000000000000000002 /* PBXTargetDependency */, + B90000000000000000000006 /* PBXTargetDependency */, ); name = IDPGlobal; productName = IDPGlobal; @@ -302,10 +421,12 @@ B30000000000000000000007 /* Sources */, B30000000000000000000005 /* Frameworks */, B30000000000000000000006 /* Resources */, + B3000000000000000000000F /* Embed Widget Extensions */, ); buildRules = ( ); dependencies = ( + B90000000000000000000007 /* PBXTargetDependency */, ); name = IDPGlobalWatch; productName = IDPGlobalWatch; @@ -330,6 +451,23 @@ productReference = B2000000000000000000001A /* IDPGlobalTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; + B50000000000000000000004 /* IDPGlobalWidgets */ = { + isa = PBXNativeTarget; + buildConfigurationList = B70000000000000000000005 /* Build configuration list for PBXNativeTarget "IDPGlobalWidgets" */; + buildPhases = ( + B3000000000000000000000E /* Sources */, + B3000000000000000000000C /* Frameworks */, + B3000000000000000000000D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = IDPGlobalWidgets; + productName = IDPGlobalWidgets; + productReference = B2000000000000000000002C /* IDPGlobalWidgets.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -350,6 +488,9 @@ CreatedOnToolsVersion = 26.0; TestTargetID = B50000000000000000000001; }; + B50000000000000000000004 = { + CreatedOnToolsVersion = 26.0; + }; }; }; buildConfigurationList = B70000000000000000000001 /* Build configuration list for PBXProject "IDPGlobal" */; @@ -368,6 +509,7 @@ B50000000000000000000001 /* IDPGlobal */, B50000000000000000000002 /* IDPGlobalWatch */, B50000000000000000000003 /* IDPGlobalTests */, + B50000000000000000000004 /* IDPGlobalWidgets */, ); }; /* End PBXProject section */ @@ -395,6 +537,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B3000000000000000000000D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -402,15 +551,22 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B1000000000000000000002E /* ApprovalActivityController.swift in Sources */, + B10000000000000000000030 /* ApprovalActivityModels.swift in Sources */, B10000000000000000000015 /* AppStateStore.swift in Sources */, B10000000000000000000012 /* AppComponents.swift in Sources */, B10000000000000000000014 /* AppTheme.swift in Sources */, B10000000000000000000002 /* AppViewModel.swift in Sources */, + B10000000000000000000023 /* ButtonStyles.swift in Sources */, + B10000000000000000000025 /* Cards.swift in Sources */, + B10000000000000000000024 /* GlassChrome.swift in Sources */, + B10000000000000000000027 /* Haptics.swift in Sources */, B10000000000000000000019 /* HomeCards.swift in Sources */, B10000000000000000000018 /* HomePanels.swift in Sources */, B10000000000000000000008 /* HomeRootView.swift in Sources */, B1000000000000000000001A /* HomeSheets.swift in Sources */, B10000000000000000000001 /* IDPGlobalApp.swift in Sources */, + B10000000000000000000022 /* IdPTokens.swift in Sources */, B10000000000000000000006 /* LoginRootView.swift in Sources */, B10000000000000000000004 /* MockIDPService.swift in Sources */, B10000000000000000000010 /* NFCPairingView.swift in Sources */, @@ -419,6 +575,7 @@ B10000000000000000000003 /* AppModels.swift in Sources */, B10000000000000000000017 /* PairingPayloadParser.swift in Sources */, B10000000000000000000007 /* QRScannerView.swift in Sources */, + B10000000000000000000026 /* StatusDot.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -426,15 +583,22 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B1000000000000000000002F /* ApprovalActivityController.swift in Sources */, B1000000000000000000001C /* AppStateStore.swift in Sources */, B10000000000000000000013 /* AppComponents.swift in Sources */, B1000000000000000000001B /* AppTheme.swift in Sources */, B10000000000000000000009 /* AppViewModel.swift in Sources */, B1000000000000000000000A /* AppModels.swift in Sources */, + B10000000000000000000029 /* ButtonStyles.swift in Sources */, + B1000000000000000000002B /* Cards.swift in Sources */, + B1000000000000000000002A /* GlassChrome.swift in Sources */, + B1000000000000000000002D /* Haptics.swift in Sources */, B1000000000000000000000D /* IDPGlobalWatchApp.swift in Sources */, + B10000000000000000000028 /* IdPTokens.swift in Sources */, B1000000000000000000000B /* MockIDPService.swift in Sources */, B1000000000000000000000C /* NotificationCoordinator.swift in Sources */, B1000000000000000000001D /* PairingPayloadParser.swift in Sources */, + B1000000000000000000002C /* StatusDot.swift in Sources */, B1000000000000000000000E /* WatchRootView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -449,6 +613,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B3000000000000000000000E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B10000000000000000000031 /* ApprovalActivityModels.swift in Sources */, + B10000000000000000000035 /* AppModels.swift in Sources */, + B10000000000000000000036 /* AppStateStore.swift in Sources */, + B10000000000000000000032 /* IDPGlobalWidgetsBundle.swift in Sources */, + B10000000000000000000037 /* MockIDPService.swift in Sources */, + B10000000000000000000038 /* PairingPayloadParser.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -463,6 +640,18 @@ target = B50000000000000000000001 /* IDPGlobal */; targetProxy = B90000000000000000000003 /* PBXContainerItemProxy */; }; + B90000000000000000000006 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + platformFilter = ios; + target = B50000000000000000000004 /* IDPGlobalWidgets */; + targetProxy = B90000000000000000000005 /* PBXContainerItemProxy */; + }; + B90000000000000000000007 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + platformFilter = watchos; + target = B50000000000000000000004 /* IDPGlobalWidgets */; + targetProxy = B90000000000000000000005 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -485,8 +674,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - MACOSX_DEPLOYMENT_TARGET = 14.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 26.0; SDKROOT = auto; SWIFT_VERSION = 5.0; }; @@ -512,8 +701,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - MACOSX_DEPLOYMENT_TARGET = 14.0; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 26.0; SDKROOT = auto; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; @@ -533,11 +722,23 @@ ENABLE_TESTABILITY = YES; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleURLTypes = ( + { + CFBundleTypeRole = Editor; + CFBundleURLName = idpglobal; + CFBundleURLSchemes = ( + idpglobal, + ); + }, + ); INFOPLIST_KEY_CFBundleDisplayName = "idp.global"; + INFOPLIST_KEY_LSUIElement = YES; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; INFOPLIST_KEY_NSCameraUsageDescription = "Scan pairing QR codes from the idp.global web portal."; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Attach a signed GPS position to NFC authentication before binding this device."; INFOPLIST_KEY_NFCReaderUsageDescription = "Read an idp.global pairing tag to bind this device."; + INFOPLIST_KEY_NSSupportsLiveActivities = YES; + INFOPLIST_KEY_NSSupportsLiveActivitiesFrequentUpdates = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; LD_RUNPATH_SEARCH_PATHS = ( @@ -554,6 +755,8 @@ SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 26.0; }; name = Debug; }; @@ -568,11 +771,23 @@ DEVELOPMENT_ASSET_PATHS = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleURLTypes = ( + { + CFBundleTypeRole = Editor; + CFBundleURLName = idpglobal; + CFBundleURLSchemes = ( + idpglobal, + ); + }, + ); INFOPLIST_KEY_CFBundleDisplayName = "idp.global"; + INFOPLIST_KEY_LSUIElement = YES; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; INFOPLIST_KEY_NSCameraUsageDescription = "Scan pairing QR codes from the idp.global web portal."; INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Attach a signed GPS position to NFC authentication before binding this device."; INFOPLIST_KEY_NFCReaderUsageDescription = "Read an idp.global pairing tag to bind this device."; + INFOPLIST_KEY_NSSupportsLiveActivities = YES; + INFOPLIST_KEY_NSSupportsLiveActivitiesFrequentUpdates = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; LD_RUNPATH_SEARCH_PATHS = ( @@ -588,6 +803,8 @@ SWIFT_OBSERVATION_ENABLED = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + MACOSX_DEPLOYMENT_TARGET = 26.0; }; name = Release; }; @@ -595,11 +812,21 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CODE_SIGN_ENTITLEMENTS = IDPGlobalShared.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleURLTypes = ( + { + CFBundleTypeRole = Editor; + CFBundleURLName = idpglobal; + CFBundleURLSchemes = ( + idpglobal, + ); + }, + ); INFOPLIST_KEY_CFBundleDisplayName = "idp.global Watch"; INFOPLIST_KEY_WKCompanionAppBundleIdentifier = global.idp.app; LD_RUNPATH_SEARCH_PATHS = ( @@ -616,7 +843,7 @@ SWIFT_OBSERVATION_ENABLED = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 10.0; + WATCHOS_DEPLOYMENT_TARGET = 11.0; }; name = Debug; }; @@ -624,11 +851,21 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CODE_SIGN_ENTITLEMENTS = IDPGlobalShared.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = ""; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_CFBundleURLTypes = ( + { + CFBundleTypeRole = Editor; + CFBundleURLName = idpglobal; + CFBundleURLSchemes = ( + idpglobal, + ); + }, + ); INFOPLIST_KEY_CFBundleDisplayName = "idp.global Watch"; INFOPLIST_KEY_WKCompanionAppBundleIdentifier = global.idp.app; LD_RUNPATH_SEARCH_PATHS = ( @@ -645,18 +882,23 @@ SWIFT_OBSERVATION_ENABLED = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 10.0; + WATCHOS_DEPLOYMENT_TARGET = 11.0; }; name = Release; }; B80000000000000000000007 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/IDPGlobal.app/Contents/MacOS/IDPGlobal.debug.dylib"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@loader_path/../Frameworks", + "@loader_path/../../../IDPGlobal.app/Contents/MacOS", + ); + MACOSX_DEPLOYMENT_TARGET = 26.0; MARKETING_VERSION = 0.1.0; PRODUCT_BUNDLE_IDENTIFIER = global.idp.app.tests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -664,7 +906,6 @@ SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = macosx; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IDPGlobal.app/Contents/MacOS/IDPGlobal"; TEST_TARGET_NAME = IDPGlobal; }; name = Debug; @@ -672,11 +913,16 @@ B80000000000000000000008 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/IDPGlobal.app/Contents/MacOS/IDPGlobal.debug.dylib"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@loader_path/../Frameworks", + "@loader_path/../../../IDPGlobal.app/Contents/MacOS", + ); + MACOSX_DEPLOYMENT_TARGET = 26.0; MARKETING_VERSION = 0.1.0; PRODUCT_BUNDLE_IDENTIFIER = global.idp.app.tests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -684,11 +930,68 @@ SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = macosx; SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IDPGlobal.app/Contents/MacOS/IDPGlobal"; TEST_TARGET_NAME = IDPGlobal; }; name = Release; }; + B80000000000000000000009 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_ENTITLEMENTS = IDPGlobalShared.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = WatchApp/Widgets/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 0.1.0; + PRODUCT_BUNDLE_IDENTIFIER = global.idp.app.watchkitapp.widgets; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator watchos watchsimulator"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + WATCHOS_DEPLOYMENT_TARGET = 11.0; + }; + name = Debug; + }; + B8000000000000000000000A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_ENTITLEMENTS = IDPGlobalShared.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = WatchApp/Widgets/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 26.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 0.1.0; + PRODUCT_BUNDLE_IDENTIFIER = global.idp.app.watchkitapp.widgets; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SKIP_INSTALL = YES; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator watchos watchsimulator"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + WATCHOS_DEPLOYMENT_TARGET = 11.0; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -728,6 +1031,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B70000000000000000000005 /* Build configuration list for PBXNativeTarget "IDPGlobalWidgets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B80000000000000000000009 /* Debug */, + B8000000000000000000000A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = B60000000000000000000001 /* Project object */; diff --git a/swift/IDPGlobalShared.entitlements b/swift/IDPGlobalShared.entitlements new file mode 100644 index 0000000..3b2d55a --- /dev/null +++ b/swift/IDPGlobalShared.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.global.idp.app + + + diff --git a/swift/Sources/App/AppViewModel.swift b/swift/Sources/App/AppViewModel.swift index a0c40cc..a6611cc 100644 --- a/swift/Sources/App/AppViewModel.swift +++ b/swift/Sources/App/AppViewModel.swift @@ -1,5 +1,10 @@ import Combine import Foundation +import SwiftUI + +#if canImport(WidgetKit) +import WidgetKit +#endif @MainActor final class AppViewModel: ObservableObject { @@ -10,12 +15,13 @@ final class AppViewModel: ObservableObject { @Published var requests: [ApprovalRequest] = [] @Published var notifications: [AppNotification] = [] @Published var notificationPermission: NotificationPermissionState = .unknown - @Published var selectedSection: AppSection = .overview + @Published var selectedSection: AppSection = .inbox @Published var isBootstrapping = false @Published var isAuthenticating = false @Published var isIdentifying = false @Published var isRefreshing = false @Published var isNotificationCenterPresented = false + @Published var isShowingPairingSuccess = false @Published var activeRequestID: ApprovalRequest.ID? @Published var isScannerPresented = false @Published var errorMessage: String? @@ -32,14 +38,25 @@ final class AppViewModel: ObservableObject { } let rawValue = String(argument.dropFirst("--mock-section=".count)) - if rawValue == "notifications" { - return .activity + + switch rawValue { + case "requests", "inbox": + return .inbox + case "notifications", "activity": + return .notifications + case "devices", "account": + return .devices + case "identity", "overview": + return .identity + case "settings": + return .settings + default: + return AppSection(rawValue: rawValue) } - return AppSection(rawValue: rawValue) } init( - service: IDPServicing = MockIDPService(), + service: IDPServicing = MockIDPService.shared, notificationCoordinator: NotificationCoordinating = NotificationCoordinator(), appStateStore: AppStateStoring = UserDefaultsAppStateStore(), launchArguments: [String] = ProcessInfo.processInfo.arguments @@ -148,15 +165,28 @@ final class AppViewModel: ObservableObject { isAuthenticating = true defer { isAuthenticating = false } + let wasSignedOut = session == nil + do { let result = try await service.signIn(with: normalizedRequest) session = result.session apply(snapshot: result.snapshot) persistCurrentState() notificationPermission = await notificationCoordinator.authorizationStatus() - selectedSection = .overview + selectedSection = .inbox errorMessage = nil isScannerPresented = false + + if wasSignedOut { + isShowingPairingSuccess = true + Haptics.success() + + Task { @MainActor [weak self] in + try? await Task.sleep(for: .milliseconds(1200)) + guard let self, self.session != nil else { return } + self.isShowingPairingSuccess = false + } + } } catch let error as AppError { errorMessage = error.errorDescription } catch { @@ -250,7 +280,7 @@ final class AppViewModel: ObservableObject { let snapshot = try await service.simulateIncomingRequest() apply(snapshot: snapshot) persistCurrentState() - selectedSection = .requests + selectedSection = .inbox errorMessage = nil } catch { errorMessage = "Unable to create a mock identity check right now." @@ -296,9 +326,36 @@ final class AppViewModel: ObservableObject { profile = nil requests = [] notifications = [] - selectedSection = .overview + selectedSection = .inbox manualPairingPayload = suggestedPairingPayload + isShowingPairingSuccess = false errorMessage = nil + + Task { + await ApprovalActivityController.endAll() + #if canImport(WidgetKit) + WidgetCenter.shared.reloadAllTimelines() + #endif + } + } + + func openDeepLink(_ url: URL) { + let destination = (url.host ?? url.lastPathComponent).lowercased() + + switch destination { + case "inbox": + selectedSection = .inbox + case "notifications": + selectedSection = .notifications + case "devices": + selectedSection = .devices + case "identity": + selectedSection = .identity + case "settings": + selectedSection = .settings + default: + break + } } private func mutateRequest(_ request: ApprovalRequest, approve: Bool) async { @@ -352,8 +409,20 @@ final class AppViewModel: ObservableObject { } private func apply(snapshot: DashboardSnapshot) { - profile = snapshot.profile - requests = snapshot.requests.sorted { $0.createdAt > $1.createdAt } - notifications = snapshot.notifications.sorted { $0.sentAt > $1.sentAt } + withAnimation(.spring(response: 0.35, dampingFraction: 0.9)) { + self.profile = snapshot.profile + self.requests = snapshot.requests.sorted { $0.createdAt > $1.createdAt } + self.notifications = snapshot.notifications.sorted { $0.sentAt > $1.sentAt } + } + + let profileValue = snapshot.profile + let requestsValue = snapshot.requests.sorted { $0.createdAt > $1.createdAt } + + Task { + await ApprovalActivityController.sync(requests: requestsValue, profile: profileValue) + #if canImport(WidgetKit) + WidgetCenter.shared.reloadAllTimelines() + #endif + } } } diff --git a/swift/Sources/App/ApprovalActivityController.swift b/swift/Sources/App/ApprovalActivityController.swift new file mode 100644 index 0000000..d89e0d9 --- /dev/null +++ b/swift/Sources/App/ApprovalActivityController.swift @@ -0,0 +1,63 @@ +import Foundation + +#if canImport(ActivityKit) && os(iOS) +import ActivityKit + +enum ApprovalActivityController { + static func sync(requests: [ApprovalRequest], profile: MemberProfile) async { + let pendingRequest = requests.first(where: { $0.status == .pending }) + + guard let pendingRequest else { + await endAll() + return + } + + let payload = pendingRequest.activityPayload(handle: profile.handle) + let contentState = ApprovalActivityAttributes.ContentState( + requestID: payload.requestID, + title: payload.title, + appName: payload.appName, + source: payload.source, + handle: payload.handle, + location: payload.location + ) + let content = ActivityContent(state: contentState, staleDate: pendingRequest.activityExpiryDate) + + if let currentActivity = Activity.activities.first(where: { $0.attributes.requestID == payload.requestID }) { + await currentActivity.update(content) + } else { + do { + _ = try Activity.request( + attributes: ApprovalActivityAttributes(requestID: payload.requestID, createdAt: payload.createdAt), + content: content + ) + } catch { + } + } + + for activity in Activity.activities where activity.attributes.requestID != payload.requestID { + await activity.end(nil, dismissalPolicy: .immediate) + } + } + + static func sync(requests: [ApprovalRequest], profile: MemberProfile?) async { + guard let profile else { + await endAll() + return + } + + await sync(requests: requests, profile: profile) + } + + static func endAll() async { + for activity in Activity.activities { + await activity.end(nil, dismissalPolicy: .immediate) + } + } +} +#else +enum ApprovalActivityController { + static func sync(requests: [ApprovalRequest], profile: MemberProfile?) async {} + static func endAll() async {} +} +#endif diff --git a/swift/Sources/App/IDPGlobalApp.swift b/swift/Sources/App/IDPGlobalApp.swift index 306b11a..6b01534 100644 --- a/swift/Sources/App/IDPGlobalApp.swift +++ b/swift/Sources/App/IDPGlobalApp.swift @@ -5,9 +5,27 @@ struct IDPGlobalApp: App { @StateObject private var model = AppViewModel() var body: some Scene { - WindowGroup { - RootView(model: model) - .tint(AppTheme.accent) + #if os(macOS) + MenuBarExtra("idp.global", systemImage: "shield.lefthalf.filled") { + RootSceneContent(model: model) + .frame(minWidth: 400, minHeight: 560) + .tint(IdP.tint) + .task { + await model.bootstrap() + } + .alert("Something went wrong", isPresented: errorPresented) { + Button("OK") { + model.errorMessage = nil + } + } message: { + Text(model.errorMessage ?? "") + } + } + .menuBarExtraStyle(.window) + #else + WindowGroup { + RootSceneContent(model: model) + .tint(IdP.tint) .task { await model.bootstrap() } @@ -19,8 +37,6 @@ struct IDPGlobalApp: App { Text(model.errorMessage ?? "") } } - #if os(macOS) - .defaultSize(width: 1380, height: 920) #endif } @@ -36,19 +52,47 @@ struct IDPGlobalApp: App { } } -private struct RootView: View { +private struct RootSceneContent: View { @ObservedObject var model: AppViewModel var body: some View { Group { if model.session == nil { LoginRootView(model: model) + } else if model.isShowingPairingSuccess { + PairingSuccessView() } else { + #if os(macOS) + MenuBarPopover(model: model) + #else HomeRootView(model: model) + #endif } } .background { - AppBackground() + Color.idpGroupedBackground.ignoresSafeArea() + } + .onOpenURL { url in + model.openDeepLink(url) } } } + +private struct PairingSuccessView: View { + var body: some View { + VStack(spacing: 18) { + Image(systemName: "checkmark.circle.fill") + .font(.system(size: 72, weight: .semibold)) + .foregroundStyle(.green) + + Text("Passport linked") + .font(.title2.weight(.semibold)) + + Text("Your device is ready to approve sign-ins.") + .font(.subheadline) + .foregroundStyle(.secondary) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .padding(32) + } +} diff --git a/swift/Sources/Core/Design/ButtonStyles.swift b/swift/Sources/Core/Design/ButtonStyles.swift new file mode 100644 index 0000000..ccd2eb3 --- /dev/null +++ b/swift/Sources/Core/Design/ButtonStyles.swift @@ -0,0 +1,72 @@ +import SwiftUI + +struct PrimaryActionStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + PrimaryActionBody(configuration: configuration) + } + + private struct PrimaryActionBody: View { + let configuration: Configuration + @Environment(\.isEnabled) private var isEnabled + + var body: some View { + configuration.label + .font(.headline) + .frame(maxWidth: .infinity) + .padding(.horizontal, 18) + .padding(.vertical, 14) + .foregroundStyle(.white) + .background( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(isEnabled ? IdP.tint : Color.secondary.opacity(0.25)) + ) + .opacity(configuration.isPressed ? 0.92 : 1) + .scaleEffect(configuration.isPressed ? 0.985 : 1) + .animation(.easeOut(duration: 0.16), value: configuration.isPressed) + } + } +} + +struct SecondaryActionStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .font(.headline) + .frame(maxWidth: .infinity) + .padding(.horizontal, 18) + .padding(.vertical, 14) + .foregroundStyle(.primary) + .background( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(Color.idpSecondaryGroupedBackground) + ) + .overlay( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .stroke(Color.idpSeparator.opacity(0.55), lineWidth: 1) + ) + .opacity(configuration.isPressed ? 0.9 : 1) + .scaleEffect(configuration.isPressed ? 0.985 : 1) + .animation(.easeOut(duration: 0.16), value: configuration.isPressed) + } +} + +struct DestructiveStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .font(.headline) + .frame(maxWidth: .infinity) + .padding(.horizontal, 18) + .padding(.vertical, 14) + .foregroundStyle(.red) + .background( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(Color.red.opacity(0.10)) + ) + .overlay( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .stroke(Color.red.opacity(0.18), lineWidth: 1) + ) + .opacity(configuration.isPressed ? 0.9 : 1) + .scaleEffect(configuration.isPressed ? 0.985 : 1) + .animation(.easeOut(duration: 0.16), value: configuration.isPressed) + } +} diff --git a/swift/Sources/Core/Design/Cards.swift b/swift/Sources/Core/Design/Cards.swift new file mode 100644 index 0000000..9532eef --- /dev/null +++ b/swift/Sources/Core/Design/Cards.swift @@ -0,0 +1,100 @@ +import SwiftUI + +struct ApprovalCardModifier: ViewModifier { + var highlighted = false + + func body(content: Content) -> some View { + content + .padding(18) + .background( + RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous) + .fill(Color.idpSecondaryGroupedBackground) + ) + .overlay( + RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous) + .stroke(highlighted ? IdP.tint.opacity(0.7) : Color.idpSeparator.opacity(0.55), lineWidth: highlighted ? 1.5 : 1) + ) + .overlay { + if highlighted { + RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous) + .stroke(IdP.tint.opacity(0.12), lineWidth: 6) + .padding(-2) + } + } + } +} + +extension View { + func approvalCard(highlighted: Bool = false) -> some View { + modifier(ApprovalCardModifier(highlighted: highlighted)) + } + + func deviceRowStyle() -> some View { + modifier(DeviceRowStyle()) + } +} + +struct RequestHeroCard: View { + let request: ApprovalRequest + let handle: String + + var body: some View { + HStack(alignment: .top, spacing: 16) { + MonogramAvatar(title: request.source, size: 64) + + VStack(alignment: .leading, spacing: 8) { + Text("\(request.source) wants to sign in as you") + .font(.title3.weight(.semibold)) + .fixedSize(horizontal: false, vertical: true) + + Text("Continue as \(Text(handle).foregroundStyle(IdP.tint))") + .font(.subheadline) + .foregroundStyle(.secondary) + + HStack(spacing: 8) { + Label(request.kind.title, systemImage: request.kind.systemImage) + Text(request.createdAt, style: .relative) + } + .font(.caption.weight(.medium)) + .foregroundStyle(.secondary) + } + } + .approvalCard(highlighted: true) + } +} + +struct MonogramAvatar: View { + let title: String + var size: CGFloat = 40 + var tint: Color = IdP.tint + + private var monogram: String { + String(title.trimmingCharacters(in: .whitespacesAndNewlines).first ?? "I").uppercased() + } + + var body: some View { + ZStack { + RoundedRectangle(cornerRadius: size * 0.34, style: .continuous) + .fill(tint.opacity(0.14)) + + Image("AppMonogram") + .resizable() + .scaledToFit() + .frame(width: size * 0.44, height: size * 0.44) + .opacity(0.18) + + Text(monogram) + .font(.system(size: size * 0.42, weight: .semibold, design: .rounded)) + .foregroundStyle(tint) + } + .frame(width: size, height: size) + .accessibilityHidden(true) + } +} + +struct DeviceRowStyle: ViewModifier { + func body(content: Content) -> some View { + content + .padding(.vertical, 4) + } +} diff --git a/swift/Sources/Core/Design/GlassChrome.swift b/swift/Sources/Core/Design/GlassChrome.swift new file mode 100644 index 0000000..8a250a4 --- /dev/null +++ b/swift/Sources/Core/Design/GlassChrome.swift @@ -0,0 +1,39 @@ +import SwiftUI + +public extension View { + @ViewBuilder + func idpGlassChrome() -> some View { + if #available(iOS 26, macOS 26, *) { + self.glassEffect(.regular) + } else { + self.background(.regularMaterial) + } + } +} + +struct IdPGlassCapsule: View { + let padding: EdgeInsets + let content: Content + + init( + padding: EdgeInsets = EdgeInsets(top: 12, leading: 16, bottom: 12, trailing: 16), + @ViewBuilder content: () -> Content + ) { + self.padding = padding + self.content = content() + } + + var body: some View { + content + .padding(padding) + .background( + Capsule(style: .continuous) + .fill(.clear) + .idpGlassChrome() + ) + .overlay( + Capsule(style: .continuous) + .stroke(Color.white.opacity(0.16), lineWidth: 1) + ) + } +} diff --git a/swift/Sources/Core/Design/Haptics.swift b/swift/Sources/Core/Design/Haptics.swift new file mode 100644 index 0000000..ddb09b8 --- /dev/null +++ b/swift/Sources/Core/Design/Haptics.swift @@ -0,0 +1,33 @@ +import SwiftUI + +#if os(iOS) +import UIKit +#elseif os(macOS) +import AppKit +#endif + +enum Haptics { + static func success() { + #if os(iOS) + UINotificationFeedbackGenerator().notificationOccurred(.success) + #elseif os(macOS) + NSHapticFeedbackManager.defaultPerformer.perform(.levelChange, performanceTime: .now) + #endif + } + + static func warning() { + #if os(iOS) + UINotificationFeedbackGenerator().notificationOccurred(.warning) + #elseif os(macOS) + NSHapticFeedbackManager.defaultPerformer.perform(.alignment, performanceTime: .now) + #endif + } + + static func selection() { + #if os(iOS) + UISelectionFeedbackGenerator().selectionChanged() + #elseif os(macOS) + NSHapticFeedbackManager.defaultPerformer.perform(.alignment, performanceTime: .now) + #endif + } +} diff --git a/swift/Sources/Core/Design/IdPTokens.swift b/swift/Sources/Core/Design/IdPTokens.swift new file mode 100644 index 0000000..94eb332 --- /dev/null +++ b/swift/Sources/Core/Design/IdPTokens.swift @@ -0,0 +1,109 @@ +import SwiftUI + +#if os(macOS) +import AppKit +#elseif canImport(UIKit) +import UIKit +#endif + +public enum IdP { + public static let tint = Color("IdPTint") + public static let cardRadius: CGFloat = 22 + public static let controlRadius: CGFloat = 14 + public static let badgeRadius: CGFloat = 8 + + static func horizontalPadding(compact: Bool) -> CGFloat { + compact ? 16 : 24 + } + + static func verticalPadding(compact: Bool) -> CGFloat { + compact ? 16 : 24 + } +} + +extension Color { + static var idpGroupedBackground: Color { + #if os(macOS) + Color(nsColor: .windowBackgroundColor) + #elseif os(watchOS) + .black + #else + Color(uiColor: .systemGroupedBackground) + #endif + } + + static var idpSecondaryGroupedBackground: Color { + #if os(macOS) + Color(nsColor: .controlBackgroundColor) + #elseif os(watchOS) + Color.white.opacity(0.08) + #else + Color(uiColor: .secondarySystemGroupedBackground) + #endif + } + + static var idpTertiaryFill: Color { + #if os(macOS) + Color(nsColor: .quaternaryLabelColor).opacity(0.08) + #elseif os(watchOS) + Color.white.opacity(0.12) + #else + Color(uiColor: .tertiarySystemFill) + #endif + } + + static var idpSeparator: Color { + #if os(macOS) + Color(nsColor: .separatorColor) + #elseif os(watchOS) + Color.white.opacity(0.14) + #else + Color(uiColor: .separator) + #endif + } +} + +extension View { + func idpScreenPadding(compact: Bool) -> some View { + padding(.horizontal, IdP.horizontalPadding(compact: compact)) + .padding(.vertical, IdP.verticalPadding(compact: compact)) + } + + @ViewBuilder + func idpInlineNavigationTitle() -> some View { + #if os(macOS) + self + #else + navigationBarTitleDisplayMode(.inline) + #endif + } + + @ViewBuilder + func idpTabBarChrome() -> some View { + #if os(macOS) + self + #else + toolbarBackground(.visible, for: .tabBar) + .toolbarBackground(.regularMaterial, for: .tabBar) + #endif + } + + @ViewBuilder + func idpSearchable(text: Binding, isPresented: Binding) -> some View { + #if os(macOS) + searchable(text: text, isPresented: isPresented) + #else + searchable(text: text, isPresented: isPresented, placement: .navigationBarDrawer(displayMode: .always)) + #endif + } +} + +extension ToolbarItemPlacement { + static var idpTrailingToolbar: ToolbarItemPlacement { + #if os(macOS) + .primaryAction + #else + .topBarTrailing + #endif + } +} diff --git a/swift/Sources/Core/Design/StatusDot.swift b/swift/Sources/Core/Design/StatusDot.swift new file mode 100644 index 0000000..0b0ec5d --- /dev/null +++ b/swift/Sources/Core/Design/StatusDot.swift @@ -0,0 +1,16 @@ +import SwiftUI + +struct StatusDot: View { + let color: Color + + var body: some View { + Circle() + .fill(color) + .frame(width: 10, height: 10) + .overlay( + Circle() + .stroke(Color.white.opacity(0.65), lineWidth: 1) + ) + .accessibilityHidden(true) + } +} diff --git a/swift/Sources/Core/Models/AppModels.swift b/swift/Sources/Core/Models/AppModels.swift index c1304b9..3f2d69d 100644 --- a/swift/Sources/Core/Models/AppModels.swift +++ b/swift/Sources/Core/Models/AppModels.swift @@ -2,28 +2,31 @@ import CryptoKit import Foundation enum AppSection: String, CaseIterable, Identifiable, Hashable, Codable { - case overview - case requests - case activity - case account + case inbox + case notifications + case devices + case identity + case settings var id: String { rawValue } var title: String { switch self { - case .overview: "Passport" - case .requests: "Requests" - case .activity: "Activity" - case .account: "Account" + case .inbox: "Inbox" + case .notifications: "Notifications" + case .devices: "Devices" + case .identity: "Identity" + case .settings: "Settings" } } var systemImage: String { switch self { - case .overview: "person.crop.square.fill" - case .requests: "checklist.checked" - case .activity: "clock.arrow.trianglehead.counterclockwise.rotate.90" - case .account: "person.crop.circle.fill" + case .inbox: "tray.full.fill" + case .notifications: "bell.badge.fill" + case .devices: "desktopcomputer" + case .identity: "person.crop.rectangle.stack.fill" + case .settings: "gearshape.fill" } } } @@ -301,8 +304,8 @@ enum ApprovalStatus: String, Hashable, Codable { var title: String { switch self { case .pending: "Pending" - case .approved: "Verified" - case .rejected: "Declined" + case .approved: "Approved" + case .rejected: "Denied" } } diff --git a/swift/Sources/Core/Models/ApprovalActivityModels.swift b/swift/Sources/Core/Models/ApprovalActivityModels.swift new file mode 100644 index 0000000..48f2e52 --- /dev/null +++ b/swift/Sources/Core/Models/ApprovalActivityModels.swift @@ -0,0 +1,59 @@ +import Foundation + +#if canImport(ActivityKit) && os(iOS) +import ActivityKit +#endif + +struct ApprovalActivityPayload: Codable, Hashable { + let requestID: String + let title: String + let appName: String + let source: String + let handle: String + let location: String + let createdAt: Date +} + +extension ApprovalRequest { + var activityAppName: String { + source + .replacingOccurrences(of: "auth.", with: "") + .replacingOccurrences(of: ".idp.global", with: ".idp.global") + } + + var activityLocation: String { + "Berlin, DE" + } + + var activityExpiryDate: Date { + createdAt.addingTimeInterval(risk == .elevated ? 180 : 300) + } + + func activityPayload(handle: String) -> ApprovalActivityPayload { + ApprovalActivityPayload( + requestID: id.uuidString, + title: title, + appName: activityAppName, + source: source, + handle: handle, + location: activityLocation, + createdAt: createdAt + ) + } +} + +#if canImport(ActivityKit) && os(iOS) +struct ApprovalActivityAttributes: ActivityAttributes { + struct ContentState: Codable, Hashable { + let requestID: String + let title: String + let appName: String + let source: String + let handle: String + let location: String + } + + let requestID: String + let createdAt: Date +} +#endif diff --git a/swift/Sources/Core/Services/AppStateStore.swift b/swift/Sources/Core/Services/AppStateStore.swift index f6a592e..fd9716b 100644 --- a/swift/Sources/Core/Services/AppStateStore.swift +++ b/swift/Sources/Core/Services/AppStateStore.swift @@ -1,5 +1,13 @@ import Foundation +enum SharedDefaults { + static let appGroupIdentifier = "group.global.idp.app" + + static var userDefaults: UserDefaults { + UserDefaults(suiteName: appGroupIdentifier) ?? .standard + } +} + struct PersistedAppState: Codable, Equatable { let session: AuthSession let profile: MemberProfile @@ -19,7 +27,7 @@ final class UserDefaultsAppStateStore: AppStateStoring { private let encoder = JSONEncoder() private let decoder = JSONDecoder() - init(defaults: UserDefaults = .standard, storageKey: String = "persisted-app-state") { + init(defaults: UserDefaults = SharedDefaults.userDefaults, storageKey: String = "persisted-app-state") { self.defaults = defaults self.storageKey = storageKey } diff --git a/swift/Sources/Core/Services/MockIDPService.swift b/swift/Sources/Core/Services/MockIDPService.swift index 0beac26..22a7ba0 100644 --- a/swift/Sources/Core/Services/MockIDPService.swift +++ b/swift/Sources/Core/Services/MockIDPService.swift @@ -12,6 +12,8 @@ protocol IDPServicing { } actor MockIDPService: IDPServicing { + static let shared = MockIDPService() + private let profile = MemberProfile( name: "Phil Kunz", handle: "phil@idp.global", @@ -20,15 +22,24 @@ actor MockIDPService: IDPServicing { recoverySummary: "Recovery kit healthy with 2 of 3 backup paths verified." ) + private let appStateStore: AppStateStoring private var requests: [ApprovalRequest] = [] private var notifications: [AppNotification] = [] - init() { - requests = Self.seedRequests() - notifications = Self.seedNotifications() + init(appStateStore: AppStateStoring = UserDefaultsAppStateStore()) { + self.appStateStore = appStateStore + + if let state = appStateStore.load() { + requests = state.requests.sorted { $0.createdAt > $1.createdAt } + notifications = state.notifications.sorted { $0.sentAt > $1.sentAt } + } else { + requests = Self.seedRequests() + notifications = Self.seedNotifications() + } } func bootstrap() async throws -> BootstrapContext { + restoreSharedState() try await Task.sleep(for: .milliseconds(120)) return BootstrapContext( suggestedPairingPayload: "idp.global://pair?token=swiftapp-demo-berlin&origin=code.foss.global&device=Safari%20on%20Berlin%20MBP" @@ -36,6 +47,7 @@ actor MockIDPService: IDPServicing { } func signIn(with request: PairingAuthenticationRequest) async throws -> SignInResult { + restoreSharedState() try await Task.sleep(for: .milliseconds(260)) try validateSignedGPSPosition(in: request) @@ -51,6 +63,8 @@ actor MockIDPService: IDPServicing { at: 0 ) + persistSharedStateIfAvailable() + return SignInResult( session: session, snapshot: snapshot() @@ -58,6 +72,7 @@ actor MockIDPService: IDPServicing { } func identify(with request: PairingAuthenticationRequest) async throws -> DashboardSnapshot { + restoreSharedState() try await Task.sleep(for: .milliseconds(180)) try validateSignedGPSPosition(in: request) @@ -73,15 +88,19 @@ actor MockIDPService: IDPServicing { at: 0 ) + persistSharedStateIfAvailable() + return snapshot() } func refreshDashboard() async throws -> DashboardSnapshot { + restoreSharedState() try await Task.sleep(for: .milliseconds(180)) return snapshot() } func approveRequest(id: UUID) async throws -> DashboardSnapshot { + restoreSharedState() try await Task.sleep(for: .milliseconds(150)) guard let index = requests.firstIndex(where: { $0.id == id }) else { @@ -100,10 +119,13 @@ actor MockIDPService: IDPServicing { at: 0 ) + persistSharedStateIfAvailable() + return snapshot() } func rejectRequest(id: UUID) async throws -> DashboardSnapshot { + restoreSharedState() try await Task.sleep(for: .milliseconds(150)) guard let index = requests.firstIndex(where: { $0.id == id }) else { @@ -122,10 +144,13 @@ actor MockIDPService: IDPServicing { at: 0 ) + persistSharedStateIfAvailable() + return snapshot() } func simulateIncomingRequest() async throws -> DashboardSnapshot { + restoreSharedState() try await Task.sleep(for: .milliseconds(120)) let syntheticRequest = ApprovalRequest( @@ -151,10 +176,13 @@ actor MockIDPService: IDPServicing { at: 0 ) + persistSharedStateIfAvailable() + return snapshot() } func markNotificationRead(id: UUID) async throws -> DashboardSnapshot { + restoreSharedState() try await Task.sleep(for: .milliseconds(80)) guard let index = notifications.firstIndex(where: { $0.id == id }) else { @@ -162,6 +190,7 @@ actor MockIDPService: IDPServicing { } notifications[index].isUnread = false + persistSharedStateIfAvailable() return snapshot() } @@ -227,6 +256,30 @@ actor MockIDPService: IDPServicing { return "An identity proof was completed for \(context.deviceName) on \(context.originHost)." } + private func restoreSharedState() { + guard let state = appStateStore.load() else { + requests = Self.seedRequests() + notifications = Self.seedNotifications() + return + } + + requests = state.requests.sorted { $0.createdAt > $1.createdAt } + notifications = state.notifications.sorted { $0.sentAt > $1.sentAt } + } + + private func persistSharedStateIfAvailable() { + guard let state = appStateStore.load() else { return } + + appStateStore.save( + PersistedAppState( + session: state.session, + profile: state.profile, + requests: requests, + notifications: notifications + ) + ) + } + private static func seedRequests() -> [ApprovalRequest] { [ ApprovalRequest( diff --git a/swift/Sources/Features/Auth/LoginRootView.swift b/swift/Sources/Features/Auth/LoginRootView.swift index 24d7365..4393062 100644 --- a/swift/Sources/Features/Auth/LoginRootView.swift +++ b/swift/Sources/Features/Auth/LoginRootView.swift @@ -1,193 +1,126 @@ import SwiftUI -private let loginAccent = AppTheme.accent - struct LoginRootView: View { @ObservedObject var model: AppViewModel - @Environment(\.horizontalSizeClass) private var horizontalSizeClass + + #if !os(macOS) + @State private var isNFCSheetPresented = false + #endif var body: some View { - AppScrollScreen(compactLayout: compactLayout) { - LoginHeroPanel(model: model, compactLayout: compactLayout) - PairingConsoleCard(model: model, compactLayout: compactLayout) - } - .sheet(isPresented: $model.isScannerPresented) { - QRScannerSheet( - seededPayload: model.suggestedPairingPayload, - title: "Scan linking QR", - description: "Use the camera to scan the QR code from the web flow that activates this device as your passport.", - navigationTitle: "Scan Linking QR", - onCodeScanned: { payload in + #if os(macOS) + MacPairingView(model: model) + #else + NavigationStack { + ZStack(alignment: .top) { + LiveQRScannerView { payload in model.manualPairingPayload = payload Task { await model.signIn(with: payload, transport: .qr) } } - ) - } - } + .ignoresSafeArea() - private var compactLayout: Bool { - #if os(iOS) - horizontalSizeClass == .compact - #else - false + VStack(spacing: 0) { + IdPGlassCapsule { + VStack(alignment: .leading, spacing: 6) { + Text("Scan a pairing code") + .font(.headline) + + Text("Turn this iPhone into your idp.global passport with QR or NFC.") + .font(.subheadline) + .foregroundStyle(.secondary) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + .padding(.horizontal, 16) + .padding(.top, 12) + + Spacer() + + Button { + isNFCSheetPresented = true + } label: { + IdPGlassCapsule { + HStack(spacing: 10) { + Image(systemName: "wave.3.right") + .foregroundStyle(IdP.tint) + Text("Hold near NFC tag") + .font(.headline) + .foregroundStyle(.primary) + } + } + } + .buttonStyle(.plain) + .padding(.horizontal, 16) + .padding(.bottom, 24) + } + } + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button("Use demo payload") { + Task { + await model.signInWithSuggestedPayload() + } + } + .font(.footnote) + .disabled(model.isAuthenticating || model.suggestedPairingPayload.isEmpty) + } + } + } + .sheet(isPresented: $isNFCSheetPresented) { + NFCSheet(actionTitle: "Approve") { request in + await model.signIn(with: request) + } + } #endif } } -private struct LoginHeroPanel: View { +#if os(macOS) +private struct MacPairingView: View { @ObservedObject var model: AppViewModel - let compactLayout: Bool var body: some View { - AppPanel(compactLayout: compactLayout, radius: AppLayout.largeCardRadius) { - AppBadge(title: "Secure passport setup", tone: loginAccent) + VStack(alignment: .leading, spacing: 18) { + HStack(spacing: 12) { + Image(systemName: "shield.lefthalf.filled") + .font(.title2) + .foregroundStyle(IdP.tint) - Text("Turn this device into a passport for your idp.global identity") - .font(.system(size: compactLayout ? 28 : 36, weight: .bold, design: .rounded)) - .lineLimit(3) - - Text("Scan a linking QR code or paste a payload to activate this device as your passport for identity proofs and security alerts.") - .font(.subheadline) - .foregroundStyle(.secondary) - - Divider() - - VStack(alignment: .leading, spacing: 14) { - LoginFeatureRow(icon: "qrcode.viewfinder", title: "Scan a QR code from the web flow") - LoginFeatureRow(icon: "doc.text.viewfinder", title: "Paste a payload when you already have one") - LoginFeatureRow(icon: "iphone.gen3", title: "Handle identity checks and alerts here") - } - - if model.isBootstrapping { - ProgressView("Preparing preview passport...") - .tint(loginAccent) - } - } - } -} - -private struct LoginFeatureRow: View { - let icon: String - let title: String - - var body: some View { - HStack(alignment: .center, spacing: 12) { - Image(systemName: icon) - .font(.subheadline.weight(.semibold)) - .foregroundStyle(loginAccent) - .frame(width: 28, height: 28) - - Text(title) - .font(.headline) - - Spacer(minLength: 0) - } - } -} - -private struct PairingConsoleCard: View { - @ObservedObject var model: AppViewModel - let compactLayout: Bool - - var body: some View { - AppSectionCard(title: "Set up passport", compactLayout: compactLayout) { - VStack(alignment: .leading, spacing: 8) { - Text("Link payload") - .font(.subheadline.weight(.semibold)) - - AppTextEditorField( - text: $model.manualPairingPayload, - minHeight: compactLayout ? 132 : 150 - ) - } - - if model.isAuthenticating { - HStack(spacing: 10) { - ProgressView() - Text("Activating this passport...") + VStack(alignment: .leading, spacing: 2) { + Text("Set up idp.global") + .font(.headline) + Text("Use the demo payload or paste a pairing link.") + .font(.subheadline) .foregroundStyle(.secondary) } } - Text("NFC, QR, and OTP proof methods become available after this passport is active.") - .font(.footnote) - .foregroundStyle(.secondary) + TextEditor(text: $model.manualPairingPayload) + .font(.footnote.monospaced()) + .scrollContentBackground(.hidden) + .frame(minHeight: 140) + .padding(10) + .background(Color.idpSecondaryGroupedBackground, in: RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous)) - if compactLayout { - VStack(spacing: 12) { - primaryButtons - secondaryButtons - } - } else { - VStack(spacing: 12) { - HStack(spacing: 12) { - primaryButtons + VStack(spacing: 10) { + Button("Use demo payload") { + Task { + await model.signInWithSuggestedPayload() } - - secondaryButtons } - } - } - } + .buttonStyle(PrimaryActionStyle()) - @ViewBuilder - private var primaryButtons: some View { - Button { - model.isScannerPresented = true - } label: { - Label("Scan QR", systemImage: "qrcode.viewfinder") - .frame(maxWidth: .infinity) - } - .buttonStyle(.borderedProminent) - .controlSize(.large) - } - - @ViewBuilder - private var secondaryButtons: some View { - if compactLayout { - VStack(spacing: 12) { - usePayloadButton - previewPayloadButton - } - } else { - HStack(spacing: 12) { - usePayloadButton - previewPayloadButton + Button("Link with payload") { + Task { + await model.signInWithManualPayload() + } + } + .buttonStyle(SecondaryActionStyle()) } } - } - - private var usePayloadButton: some View { - Button { - Task { - await model.signInWithManualPayload() - } - } label: { - if model.isAuthenticating { - ProgressView() - .frame(maxWidth: .infinity) - } else { - Label("Link with payload", systemImage: "arrow.right.circle") - .frame(maxWidth: .infinity) - } - } - .buttonStyle(.bordered) - .controlSize(.large) - .disabled(model.isAuthenticating) - } - - private var previewPayloadButton: some View { - Button { - Task { - await model.signInWithSuggestedPayload() - } - } label: { - Label("Use preview passport", systemImage: "wand.and.stars") - .frame(maxWidth: .infinity) - } - .buttonStyle(.bordered) - .controlSize(.large) + .padding(20) } } +#endif diff --git a/swift/Sources/Features/Auth/NFCPairingView.swift b/swift/Sources/Features/Auth/NFCPairingView.swift index a38bb68..335fb6c 100644 --- a/swift/Sources/Features/Auth/NFCPairingView.swift +++ b/swift/Sources/Features/Auth/NFCPairingView.swift @@ -40,7 +40,7 @@ final class NFCIdentifyReader: NSObject, ObservableObject, @preconcurrency NFCND helperText = Self.scanningHelperText let session = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: true) - session.alertMessage = "Hold your iPhone near the idp.global tag. A signed GPS position will be attached to this NFC identify action." + session.alertMessage = "Hold your iPhone near the idp.global tag. A signed location proof will be attached before approval is sent." self.session = session session.begin() } @@ -161,11 +161,11 @@ final class NFCIdentifyReader: NSObject, ObservableObject, @preconcurrency NFCND return "NFC identify could not be completed on this device." } - private static let idleHelperText = "Tap to identify with an NFC tag on supported iPhone hardware. A signed GPS position will be attached automatically." - private static let scanningHelperText = "Hold the top of your iPhone near the NFC tag until it is identified." - private static let signingLocationHelperText = "Tag detected. Capturing and signing the current GPS position for NFC identify." - private static let unavailableHelperText = "NFC identify is unavailable on this device." - private static let unavailableErrorMessage = "Tap to identify requires supported iPhone hardware with NFC enabled." + private static let idleHelperText = "Hold this iPhone near a reader or tag to attach a signed location proof and confirm sign-in." + private static let scanningHelperText = "Hold the top of your iPhone near the NFC tag until the payload is read." + private static let signingLocationHelperText = "Tag detected. Capturing and signing the current GPS position before approval is sent." + private static let unavailableHelperText = "NFC approval is unavailable on this device." + private static let unavailableErrorMessage = "NFC approval requires supported iPhone hardware with NFC enabled." private static let invalidTagMessage = "The NFC tag did not contain a usable idp.global payload." private static let gpsSigningFailureMessage = "The NFC tag was read, but the signed GPS position could not be attached." } diff --git a/swift/Sources/Features/Auth/QRScannerView.swift b/swift/Sources/Features/Auth/QRScannerView.swift index ba3c6a0..5135212 100644 --- a/swift/Sources/Features/Auth/QRScannerView.swift +++ b/swift/Sources/Features/Auth/QRScannerView.swift @@ -1,6 +1,7 @@ import AVFoundation import Combine import SwiftUI + #if os(iOS) import UIKit #elseif os(macOS) @@ -15,7 +16,6 @@ struct QRScannerSheet: View { let onCodeScanned: (String) -> Void @Environment(\.dismiss) private var dismiss - @Environment(\.horizontalSizeClass) private var horizontalSizeClass @State private var manualFallback = "" init( @@ -34,33 +34,59 @@ struct QRScannerSheet: View { var body: some View { NavigationStack { - AppScrollScreen(compactLayout: compactLayout) { - AppSectionCard(title: title, compactLayout: compactLayout) { - Text(description) - .font(.subheadline) - .foregroundStyle(.secondary) - - LiveQRScannerView(onCodeScanned: onCodeScanned) - .frame(minHeight: 340) + ZStack(alignment: .top) { + LiveQRScannerView { payload in + onCodeScanned(payload) + dismiss() } + .ignoresSafeArea() - AppSectionCard(title: "Manual fallback", compactLayout: compactLayout) { - AppTextEditorField(text: $manualFallback, minHeight: 120) - - if compactLayout { - VStack(spacing: 12) { - useFallbackButton - useSeededButton + VStack(spacing: 12) { + IdPGlassCapsule { + VStack(alignment: .leading, spacing: 6) { + Text(title) + .font(.headline) + Text(description) + .font(.subheadline) + .foregroundStyle(.secondary) } - } else { - HStack(spacing: 12) { - useFallbackButton - useSeededButton + .frame(maxWidth: .infinity, alignment: .leading) + } + + Spacer() + + VStack(alignment: .leading, spacing: 12) { + Text("Manual fallback") + .font(.headline) + + TextEditor(text: $manualFallback) + .font(.footnote.monospaced()) + .scrollContentBackground(.hidden) + .frame(minHeight: 110) + .padding(10) + .background(Color.idpTertiaryFill, in: RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous)) + + VStack(spacing: 10) { + Button("Use payload") { + let chosen = manualFallback.trimmingCharacters(in: .whitespacesAndNewlines) + onCodeScanned(chosen.isEmpty ? seededPayload : chosen) + dismiss() + } + .buttonStyle(PrimaryActionStyle()) + + Button("Use demo payload") { + manualFallback = seededPayload + } + .buttonStyle(SecondaryActionStyle()) } } + .padding(18) + .background(.regularMaterial, in: RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous)) } + .padding(16) } .navigationTitle(navigationTitleText) + .applyInlineNavigationTitleDisplayMode() .toolbar { ToolbarItem(placement: .cancellationAction) { Button("Close") { @@ -73,85 +99,74 @@ struct QRScannerSheet: View { } } } +} - private var compactLayout: Bool { - #if os(iOS) - horizontalSizeClass == .compact +private extension View { + @ViewBuilder + func applyInlineNavigationTitleDisplayMode() -> some View { + #if os(macOS) + self #else - false + navigationBarTitleDisplayMode(.inline) #endif } - - private var useFallbackButton: some View { - Button { - let chosen = manualFallback.trimmingCharacters(in: .whitespacesAndNewlines) - onCodeScanned(chosen.isEmpty ? seededPayload : chosen) - dismiss() - } label: { - Label("Use payload", systemImage: "arrow.up.forward.square") - .frame(maxWidth: .infinity) - } - .buttonStyle(.borderedProminent) - } - - private var useSeededButton: some View { - Button { - manualFallback = seededPayload - } label: { - Label("Reset sample", systemImage: "wand.and.rays") - .frame(maxWidth: .infinity) - } - .buttonStyle(.bordered) - } } -private struct LiveQRScannerView: View { +struct LiveQRScannerView: View { let onCodeScanned: (String) -> Void @StateObject private var scanner = QRScannerViewModel() + @State private var didDetectCode = false var body: some View { ZStack(alignment: .bottomLeading) { Group { if scanner.isPreviewAvailable { ScannerPreview(session: scanner.captureSession) - .clipShape(RoundedRectangle(cornerRadius: 30, style: .continuous)) } else { - RoundedRectangle(cornerRadius: 30, style: .continuous) - .fill(Color.black.opacity(0.86)) + Color.black - VStack(alignment: .leading, spacing: 12) { + VStack(alignment: .leading, spacing: 10) { Image(systemName: "video.slash.fill") - .font(.system(size: 28, weight: .semibold)) + .font(.system(size: 24, weight: .semibold)) .foregroundStyle(.white) - Text("Live camera preview unavailable") + Text("Camera preview unavailable") .font(.title3.weight(.semibold)) .foregroundStyle(.white) Text(scanner.statusMessage) .foregroundStyle(.white.opacity(0.78)) } .padding(24) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) } } - RoundedRectangle(cornerRadius: 30, style: .continuous) - .strokeBorder(.white.opacity(0.22), lineWidth: 1.5) + Color.black.opacity(0.18) + .ignoresSafeArea() - VStack(alignment: .leading, spacing: 8) { - Text("Camera Scanner") + ScanFrameOverlay(detected: didDetectCode) + .padding(40) + + VStack(alignment: .leading, spacing: 6) { + Text("Point the camera at the pairing QR") .font(.headline.weight(.semibold)) .foregroundStyle(.white) Text(scanner.statusMessage) + .font(.subheadline) .foregroundStyle(.white.opacity(0.84)) } .padding(22) - - ScanFrameOverlay() - .padding(40) } .task { scanner.onCodeScanned = { payload in - onCodeScanned(payload) + withAnimation(.spring(response: 0.3, dampingFraction: 0.82)) { + didDetectCode = true + } + + Task { + try? await Task.sleep(for: .milliseconds(180)) + onCodeScanned(payload) + } } await scanner.start() } @@ -162,19 +177,46 @@ private struct LiveQRScannerView: View { } private struct ScanFrameOverlay: View { + let detected: Bool + var body: some View { GeometryReader { geometry in let size = min(geometry.size.width, geometry.size.height) * 0.5 + let inset = detected ? 18.0 : 0 - RoundedRectangle(cornerRadius: 28, style: .continuous) - .strokeBorder(.white.opacity(0.82), style: StrokeStyle(lineWidth: 3, dash: [10, 8])) - .frame(width: size, height: size) - .position(x: geometry.size.width / 2, y: geometry.size.height / 2) + ZStack { + CornerTick(rotation: .degrees(0)) + .frame(width: size, height: size) + CornerTick(rotation: .degrees(90)) + .frame(width: size, height: size) + CornerTick(rotation: .degrees(180)) + .frame(width: size, height: size) + CornerTick(rotation: .degrees(270)) + .frame(width: size, height: size) + } + .frame(width: size - inset, height: size - inset) + .position(x: geometry.size.width / 2, y: geometry.size.height / 2) + .animation(.spring(response: 0.3, dampingFraction: 0.82), value: detected) } .allowsHitTesting(false) } } +private struct CornerTick: View { + let rotation: Angle + + var body: some View { + Path { path in + let length: CGFloat = 34 + path.move(to: CGPoint(x: 0, y: length)) + path.addLine(to: CGPoint(x: 0, y: 0)) + path.addLine(to: CGPoint(x: length, y: 0)) + } + .stroke(.white, style: StrokeStyle(lineWidth: 5, lineCap: .round, lineJoin: .round)) + .rotationEffect(rotation) + } +} + private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMetadataOutputObjectsDelegate { @Published var isPreviewAvailable = false @Published var statusMessage = "Point the camera at the QR code from the idp.global web portal." @@ -191,9 +233,8 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet #if os(iOS) && targetEnvironment(simulator) await MainActor.run { isPreviewAvailable = false - statusMessage = "The iOS simulator has no live camera feed. Use the seeded payload below." + statusMessage = "The iOS simulator has no live camera feed. Use the demo payload below." } - #else #endif #if !(os(iOS) && targetEnvironment(simulator)) @@ -207,7 +248,7 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet await MainActor.run { self.statusMessage = granted ? "Point the camera at the QR code from the idp.global web portal." - : "Camera access was denied. Use the fallback payload below." + : "Camera access was denied. Use the manual fallback instead." } guard granted else { return } await configureIfNeeded() @@ -215,7 +256,7 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet case .denied, .restricted: await MainActor.run { isPreviewAvailable = false - statusMessage = "Camera access is unavailable. Use the fallback payload below." + statusMessage = "Camera access is unavailable. Use the manual fallback instead." } @unknown default: await MainActor.run { @@ -285,7 +326,7 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet guard let device = AVCaptureDevice.default(for: .video) else { DispatchQueue.main.async { self.isPreviewAvailable = false - self.statusMessage = "No compatible camera was found. Use the fallback payload below." + self.statusMessage = "No compatible camera was found. Use the manual fallback instead." } return } @@ -293,7 +334,7 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet guard let input = try? AVCaptureDeviceInput(device: device) else { DispatchQueue.main.async { self.isPreviewAvailable = false - self.statusMessage = "No compatible camera was found. Use the fallback payload below." + self.statusMessage = "No compatible camera was found. Use the manual fallback instead." } return } @@ -301,7 +342,7 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet guard self.captureSession.canAddInput(input) else { DispatchQueue.main.async { self.isPreviewAvailable = false - self.statusMessage = "No compatible camera was found. Use the fallback payload below." + self.statusMessage = "No compatible camera was found. Use the manual fallback instead." } return } @@ -313,7 +354,7 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet self.captureSession.removeInput(input) DispatchQueue.main.async { self.isPreviewAvailable = false - self.statusMessage = "Unable to configure QR metadata scanning on this device." + self.statusMessage = "Unable to configure QR scanning on this device." } return } @@ -327,7 +368,7 @@ private final class QRScannerViewModel: NSObject, ObservableObject, AVCaptureMet self.captureSession.removeInput(input) DispatchQueue.main.async { self.isPreviewAvailable = false - self.statusMessage = "This camera does not support QR metadata scanning. Use the fallback payload below." + self.statusMessage = "This camera does not support QR scanning. Use the manual fallback instead." } return } diff --git a/swift/Sources/Features/Home/HomeCards.swift b/swift/Sources/Features/Home/HomeCards.swift index 05c815e..7b890f0 100644 --- a/swift/Sources/Features/Home/HomeCards.swift +++ b/swift/Sources/Features/Home/HomeCards.swift @@ -1,330 +1,346 @@ import SwiftUI -struct RequestList: View { - let requests: [ApprovalRequest] - let compactLayout: Bool - let activeRequestID: ApprovalRequest.ID? - let onApprove: ((ApprovalRequest) -> Void)? - let onReject: ((ApprovalRequest) -> Void)? - let onOpenRequest: (ApprovalRequest) -> Void +extension ApprovalRequest { + var appDisplayName: String { + source + .replacingOccurrences(of: "auth.", with: "") + .replacingOccurrences(of: ".idp.global", with: ".idp.global") + } - var body: some View { - VStack(spacing: 14) { - ForEach(requests) { request in - RequestCard( - request: request, - compactLayout: compactLayout, - isBusy: activeRequestID == request.id, - onApprove: onApprove == nil ? nil : { onApprove?(request) }, - onReject: onReject == nil ? nil : { onReject?(request) }, - onOpenRequest: { onOpenRequest(request) } - ) - } + var inboxTitle: String { + "Sign in to \(appDisplayName)" + } + + var locationSummary: String { + "Berlin, DE" + } + + var deviceSummary: String { + switch kind { + case .signIn: + "Safari on Berlin iPhone" + case .accessGrant: + "Chrome on iPad Pro" + case .elevatedAction: + "Berlin MacBook Pro" + } + } + + var networkSummary: String { + switch kind { + case .signIn: + "Home Wi-Fi" + case .accessGrant: + "Shared office Wi-Fi" + case .elevatedAction: + "Ethernet" + } + } + + var ipSummary: String { + risk == .elevated ? "84.187.12.44" : "84.187.12.36" + } + + var trustColor: Color { + switch (status, risk) { + case (.rejected, _): + .red + case (.approved, _), (_, .routine): + .green + case (.pending, .elevated): + .yellow + } + } + + var trustExplanation: String { + switch (status, risk) { + case (.approved, _): + "This proof came from a signed device session that matches your usual sign-in pattern." + case (.rejected, _): + "This request was denied, so no data will be shared unless a new sign-in is started." + case (.pending, .routine): + "The origin and device pattern look familiar for this account." + case (.pending, .elevated): + "The request is valid, but it is asking for a stronger proof than usual." + } + } + + var expiresAt: Date { + createdAt.addingTimeInterval(risk == .elevated ? 180 : 300) + } +} + +private enum NotificationPresentationStatus { + case approved + case denied + case expired + + var title: String { + switch self { + case .approved: "Approved" + case .denied: "Denied" + case .expired: "Expired" + } + } + + var color: Color { + switch self { + case .approved: .green + case .denied: .red + case .expired: .secondary } } } -private struct RequestCard: View { - let request: ApprovalRequest - let compactLayout: Bool - let isBusy: Bool - let onApprove: (() -> Void)? - let onReject: (() -> Void)? - let onOpenRequest: () -> Void +extension AppNotification { + fileprivate var presentationStatus: NotificationPresentationStatus { + let haystack = "\(title) \(message)".lowercased() + if haystack.contains("declined") || haystack.contains("denied") { + return .denied + } + if haystack.contains("expired") || haystack.contains("quiet hours") { + return .expired + } + return .approved + } +} + +struct StatusPill: View { + let title: String + let color: Color var body: some View { - VStack(alignment: .leading, spacing: 12) { - HStack(alignment: .top, spacing: 12) { - Image(systemName: request.kind.systemImage) + Text(title) + .font(.caption.weight(.semibold)) + .padding(.horizontal, 10) + .padding(.vertical, 5) + .background(color.opacity(0.12), in: Capsule(style: .continuous)) + .foregroundStyle(color) + } +} + +struct TimeChip: View { + let date: Date + var compact = false + + var body: some View { + Text(date, format: .dateTime.hour().minute()) + .font(compact ? .caption2.weight(.medium) : .caption.weight(.medium)) + .monospacedDigit() + .padding(.horizontal, compact ? 8 : 10) + .padding(.vertical, compact ? 4 : 6) + .background(Color.idpTertiaryFill, in: Capsule(style: .continuous)) + .foregroundStyle(.secondary) + } +} + +struct ApprovalRow: View { + let request: ApprovalRequest + let handle: String + var compact = false + var highlighted = false + + var body: some View { + HStack(spacing: 12) { + MonogramAvatar(title: request.appDisplayName, size: compact ? 32 : 40) + + VStack(alignment: .leading, spacing: 4) { + Text(request.inboxTitle) + .font(compact ? .subheadline.weight(.semibold) : .headline) + .foregroundStyle(.primary) + .lineLimit(2) + + Text("as \(handle) · \(request.locationSummary)") + .font(compact ? .caption : .subheadline) + .foregroundStyle(.secondary) + .lineLimit(1) + } + + Spacer(minLength: 8) + + HStack(spacing: 10) { + TimeChip(date: request.createdAt, compact: compact) + Image(systemName: "chevron.right") + .font(.caption.weight(.semibold)) + .foregroundStyle(.tertiary) + } + } + .padding(.vertical, compact ? 6 : 10) + .padding(.horizontal, 12) + .background( + RoundedRectangle(cornerRadius: 18, style: .continuous) + .fill(highlighted ? IdP.tint.opacity(0.06) : Color.clear) + ) + .overlay( + RoundedRectangle(cornerRadius: 18, style: .continuous) + .stroke(highlighted ? IdP.tint : Color.clear, lineWidth: highlighted ? 1.5 : 0) + ) + .contentShape(Rectangle()) + .accessibilityElement(children: .combine) + .accessibilityLabel("\(request.inboxTitle), \(request.locationSummary), \(request.createdAt.formatted(date: .omitted, time: .shortened))") + } +} + +struct NotificationEventRow: View { + let notification: AppNotification + + var body: some View { + HStack(alignment: .top, spacing: 12) { + MonogramAvatar(title: notification.title, size: 40, tint: notification.presentationStatus.color) + + VStack(alignment: .leading, spacing: 5) { + Text(notification.title) .font(.headline) - .foregroundStyle(requestAccent) - .frame(width: 28, height: 28) + .lineLimit(2) - VStack(alignment: .leading, spacing: 4) { - Text(request.title) - .font(.headline) - .multilineTextAlignment(.leading) - - Text(request.source) - .font(.subheadline) - .foregroundStyle(.secondary) - .lineLimit(1) - } - - Spacer(minLength: 0) - - AppStatusTag(title: request.status.title, tone: statusTone) - } - - Text(request.subtitle) - .font(.subheadline) - .foregroundStyle(.secondary) - .lineLimit(2) - - HStack(spacing: 8) { - AppStatusTag(title: request.risk.title, tone: request.risk == .routine ? dashboardAccent : .orange) - Text(request.scopeSummary) - .font(.footnote) - .foregroundStyle(.secondary) - Spacer(minLength: 0) - Text(request.createdAt, style: .relative) - .font(.footnote) - .foregroundStyle(.secondary) - } - - if !request.scopes.isEmpty { - Text("Proof details: \(request.scopes.joined(separator: ", "))") - .font(.footnote) + Text(notification.message) + .font(.subheadline) .foregroundStyle(.secondary) .lineLimit(2) } - controls - } - .padding(compactLayout ? 18 : 20) - .appSurface(radius: 24) - } + Spacer(minLength: 8) - @ViewBuilder - private var controls: some View { - if compactLayout { - VStack(alignment: .leading, spacing: 10) { - reviewButton - decisionButtons - } - } else { - HStack(spacing: 12) { - reviewButton - Spacer(minLength: 0) - decisionButtons - } - } - } - - private var reviewButton: some View { - Button { - onOpenRequest() - } label: { - Label("Review proof", systemImage: "arrow.up.forward.app") - } - .buttonStyle(.bordered) - } - - @ViewBuilder - private var decisionButtons: some View { - if request.status == .pending, let onApprove, let onReject { - Button { - onApprove() - } label: { - if isBusy { - ProgressView() - } else { - Label("Verify", systemImage: "checkmark.circle.fill") - } - } - .buttonStyle(.borderedProminent) - .disabled(isBusy) - - Button(role: .destructive) { - onReject() - } label: { - Label("Decline", systemImage: "xmark.circle.fill") - } - .buttonStyle(.bordered) - .disabled(isBusy) - } - } - - private var statusTone: Color { - switch request.status { - case .pending: - .orange - case .approved: - .green - case .rejected: - .red - } - } - - private var requestAccent: Color { - switch request.status { - case .approved: - .green - case .rejected: - .red - case .pending: - request.risk == .routine ? dashboardAccent : .orange + StatusPill(title: notification.presentationStatus.title, color: notification.presentationStatus.color) } + .padding(.vertical, 8) + .accessibilityElement(children: .combine) } } -struct NotificationList: View { - let notifications: [AppNotification] - let compactLayout: Bool - let onMarkRead: (AppNotification) -> Void +struct NotificationPermissionCard: View { + @ObservedObject var model: AppViewModel var body: some View { - VStack(spacing: 14) { - ForEach(notifications) { notification in - NotificationCard( - notification: notification, - compactLayout: compactLayout, - onMarkRead: { onMarkRead(notification) } - ) - } - } - } -} + VStack(alignment: .leading, spacing: 14) { + Label("Allow sign-in alerts", systemImage: model.notificationPermission.systemImage) + .font(.headline) -private struct NotificationCard: View { - let notification: AppNotification - let compactLayout: Bool - let onMarkRead: () -> Void - - var body: some View { - VStack(alignment: .leading, spacing: 10) { - HStack(alignment: .top, spacing: 12) { - Image(systemName: notification.kind.systemImage) - .font(.headline) - .foregroundStyle(accentColor) - .frame(width: 28, height: 28) - - VStack(alignment: .leading, spacing: 4) { - Text(notification.title) - .font(.headline) - - HStack(spacing: 8) { - AppStatusTag(title: notification.kind.title, tone: accentColor) - if notification.isUnread { - AppStatusTag(title: "Unread", tone: .orange) - } - } - } - - Spacer(minLength: 0) - } - - Text(notification.message) + Text(model.notificationPermission.summary) .font(.subheadline) .foregroundStyle(.secondary) - .fixedSize(horizontal: false, vertical: true) - if compactLayout { - VStack(alignment: .leading, spacing: 10) { - timestamp - if notification.isUnread { - markReadButton + VStack(spacing: 10) { + Button("Enable Notifications") { + Task { + await model.requestNotificationAccess() } } - } else { - HStack { - timestamp - Spacer(minLength: 0) - if notification.isUnread { - markReadButton + .buttonStyle(PrimaryActionStyle()) + + Button("Send Test Alert") { + Task { + await model.sendTestNotification() } } + .buttonStyle(SecondaryActionStyle()) } } - .padding(compactLayout ? 18 : 20) - .appSurface(radius: 24) - } - - private var timestamp: some View { - Text(notification.sentAt.formatted(date: .abbreviated, time: .shortened)) - .font(.footnote) - .foregroundStyle(.secondary) - } - - private var markReadButton: some View { - Button { - onMarkRead() - } label: { - Label("Mark read", systemImage: "checkmark") - } - .buttonStyle(.bordered) - } - - private var accentColor: Color { - switch notification.kind { - case .approval: - .green - case .security: - .orange - case .system: - .blue - } + .approvalCard() } } -struct NotificationBellButton: View { - @ObservedObject var model: AppViewModel +struct DevicePresentation: Identifiable, Hashable { + let id: UUID + let name: String + let systemImage: String + let lastSeen: Date + let isCurrent: Bool + let isTrusted: Bool + + init( + id: UUID = UUID(), + name: String, + systemImage: String, + lastSeen: Date, + isCurrent: Bool, + isTrusted: Bool + ) { + self.id = id + self.name = name + self.systemImage = systemImage + self.lastSeen = lastSeen + self.isCurrent = isCurrent + self.isTrusted = isTrusted + } +} + +struct DeviceItemRow: View { + let device: DevicePresentation var body: some View { - Button { - model.isNotificationCenterPresented = true - } label: { - Image(systemName: imageName) + HStack(spacing: 12) { + Image(systemName: device.systemImage) .font(.headline) - .foregroundStyle(iconTone) - .frame(width: 28, height: 28, alignment: .center) - .background(alignment: .center) { - #if os(iOS) - GeometryReader { proxy in - Color.clear - .preference(key: NotificationBellFrameKey.self, value: proxy.frame(in: .global)) - } - #endif - } + .foregroundStyle(IdP.tint) + .frame(width: 28) + + VStack(alignment: .leading, spacing: 3) { + Text(device.name) + .font(.body.weight(.medium)) + + Text(device.isCurrent ? "This device" : "Seen \(device.lastSeen, style: .relative)") + .font(.subheadline) + .foregroundStyle(.secondary) + } + + Spacer(minLength: 8) + + StatusDot(color: device.isTrusted ? .green : .yellow) + + Image(systemName: "chevron.right") + .font(.caption.weight(.semibold)) + .foregroundStyle(.tertiary) } - .accessibilityLabel("Notifications") - } - - private var imageName: String { - #if os(iOS) - model.unreadNotificationCount == 0 ? "bell" : "bell.fill" - #else - model.unreadNotificationCount == 0 ? "bell" : "bell.badge.fill" - #endif - } - - private var iconTone: some ShapeStyle { - model.unreadNotificationCount == 0 ? Color.primary : dashboardAccent + .deviceRowStyle() + .accessibilityElement(children: .combine) } } -struct NotificationCenterSheet: View { - @ObservedObject var model: AppViewModel - @Environment(\.dismiss) private var dismiss - @Environment(\.horizontalSizeClass) private var horizontalSizeClass +struct TrustSignalBanner: View { + let request: ApprovalRequest var body: some View { - NavigationStack { - AppScrollScreen( - compactLayout: compactLayout, - bottomPadding: compactLayout ? AppLayout.compactBottomDockPadding : AppLayout.regularBottomPadding - ) { - NotificationsPanel(model: model, compactLayout: compactLayout) - } - .navigationTitle("Notifications") - .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button("Done") { - dismiss() - } - } + HStack(alignment: .top, spacing: 12) { + Image(systemName: symbolName) + .font(.headline) + .foregroundStyle(request.trustColor) + + VStack(alignment: .leading, spacing: 4) { + Text(request.trustHeadline) + .font(.subheadline.weight(.semibold)) + + Text(request.trustExplanation) + .font(.subheadline) + .foregroundStyle(.secondary) } } - #if os(iOS) - .presentationDetents(compactLayout ? [.large] : [.medium, .large]) - #endif + .padding(.vertical, 8) } - private var compactLayout: Bool { - #if os(iOS) - horizontalSizeClass == .compact - #else - false - #endif + private var symbolName: String { + switch request.trustColor { + case .green: + return "checkmark.shield.fill" + case .yellow: + return "exclamationmark.triangle.fill" + default: + return "xmark.shield.fill" + } + } +} + +struct EmptyPaneView: View { + let title: String + let message: String + let systemImage: String + + var body: some View { + ContentUnavailableView { + Label(title, systemImage: systemImage) + } description: { + Text(message) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) } } diff --git a/swift/Sources/Features/Home/HomePanels.swift b/swift/Sources/Features/Home/HomePanels.swift index 77c9cf6..2160565 100644 --- a/swift/Sources/Features/Home/HomePanels.swift +++ b/swift/Sources/Features/Home/HomePanels.swift @@ -1,317 +1,467 @@ import SwiftUI -struct OverviewPanel: View { +struct InboxListView: View { @ObservedObject var model: AppViewModel - let compactLayout: Bool + @Binding var selectedRequestID: ApprovalRequest.ID? + @Binding var searchText: String + @Binding var isSearchPresented: Bool + var usesSelection = false - var body: some View { - VStack(alignment: .leading, spacing: AppLayout.sectionSpacing(for: compactLayout)) { - if let profile = model.profile, let session = model.session { - OverviewHero( - profile: profile, - session: session, - pendingCount: model.pendingRequests.count, - unreadCount: model.unreadNotificationCount, - compactLayout: compactLayout - ) - } + private var filteredRequests: [ApprovalRequest] { + guard !searchText.isEmpty else { + return model.requests + } + + return model.requests.filter { + $0.inboxTitle.localizedCaseInsensitiveContains(searchText) + || $0.source.localizedCaseInsensitiveContains(searchText) + || $0.subtitle.localizedCaseInsensitiveContains(searchText) } } -} -struct RequestsPanel: View { - @ObservedObject var model: AppViewModel - let compactLayout: Bool - let onOpenRequest: (ApprovalRequest) -> Void + private var recentRequests: [ApprovalRequest] { + filteredRequests.filter { Date.now.timeIntervalSince($0.createdAt) <= 60 * 30 } + } + + private var earlierRequests: [ApprovalRequest] { + filteredRequests.filter { Date.now.timeIntervalSince($0.createdAt) > 60 * 30 } + } + + private var highlightedRequestID: ApprovalRequest.ID? { + filteredRequests.first?.id + } var body: some View { - VStack(alignment: .leading, spacing: AppLayout.sectionSpacing(for: compactLayout)) { - if model.requests.isEmpty { - AppPanel(compactLayout: compactLayout) { - EmptyStateCopy( - title: "No checks waiting", - systemImage: "checkmark.circle", - message: "Identity proof requests from sites and devices appear here." - ) - } + List { + if filteredRequests.isEmpty { + EmptyPaneView( + title: "No sign-in requests", + message: "New approval requests will appear here as soon as a relying party asks for proof.", + systemImage: "tray" + ) + .listRowBackground(Color.clear) } else { - RequestList( - requests: model.requests, - compactLayout: compactLayout, - activeRequestID: model.activeRequestID, - onApprove: { request in - Task { await model.approve(request) } - }, - onReject: { request in - Task { await model.reject(request) } - }, - onOpenRequest: onOpenRequest - ) - } - } - } -} - -struct ActivityPanel: View { - @ObservedObject var model: AppViewModel - let compactLayout: Bool - - var body: some View { - VStack(alignment: .leading, spacing: AppLayout.sectionSpacing(for: compactLayout)) { - if model.notifications.isEmpty { - AppPanel(compactLayout: compactLayout) { - EmptyStateCopy( - title: "No proof activity yet", - systemImage: "clock.badge.xmark", - message: "Identity proofs and security events will appear here." - ) + ForEach(recentRequests) { request in + row(for: request, compact: false) + .transition(.move(edge: .top).combined(with: .opacity)) } - } else { - NotificationList( - notifications: model.notifications, - compactLayout: compactLayout, - onMarkRead: { notification in - Task { await model.markNotificationRead(notification) } - } - ) - } - } - } -} -struct NotificationsPanel: View { - @ObservedObject var model: AppViewModel - let compactLayout: Bool - - var body: some View { - VStack(alignment: .leading, spacing: AppLayout.sectionSpacing(for: compactLayout)) { - AppSectionCard(title: "Delivery", compactLayout: compactLayout) { - NotificationPermissionSummary(model: model, compactLayout: compactLayout) - } - - AppSectionCard(title: "Alerts", compactLayout: compactLayout) { - if model.notifications.isEmpty { - EmptyStateCopy( - title: "No alerts yet", - systemImage: "bell.slash", - message: "New passport and identity-proof alerts will accumulate here." - ) - } else { - NotificationList( - notifications: model.notifications, - compactLayout: compactLayout, - onMarkRead: { notification in - Task { await model.markNotificationRead(notification) } + if !earlierRequests.isEmpty { + Section { + ForEach(earlierRequests) { request in + row(for: request, compact: true) + .transition(.move(edge: .top).combined(with: .opacity)) } - ) - } - } - } - } -} - -struct AccountPanel: View { - @ObservedObject var model: AppViewModel - let compactLayout: Bool - - var body: some View { - VStack(alignment: .leading, spacing: AppLayout.sectionSpacing(for: compactLayout)) { - if let profile = model.profile, let session = model.session { - AccountHero(profile: profile, session: session, compactLayout: compactLayout) - - AppSectionCard(title: "Session", compactLayout: compactLayout) { - AccountFactsGrid(profile: profile, session: session, compactLayout: compactLayout) - } - } - - AppSectionCard(title: "Pairing payload", compactLayout: compactLayout) { - AppTextSurface(text: model.suggestedPairingPayload, monospaced: true) - } - - AppSectionCard(title: "Actions", compactLayout: compactLayout) { - Button(role: .destructive) { - model.signOut() - } label: { - Label("Sign Out", systemImage: "rectangle.portrait.and.arrow.right") - } - .buttonStyle(.bordered) - } - } - } -} - -private struct OverviewHero: View { - let profile: MemberProfile - let session: AuthSession - let pendingCount: Int - let unreadCount: Int - let compactLayout: Bool - - private var detailColumns: [GridItem] { - Array(repeating: GridItem(.flexible(), spacing: 16), count: compactLayout ? 1 : 2) - } - - private var metricColumns: [GridItem] { - Array(repeating: GridItem(.flexible(), spacing: 16), count: 3) - } - - var body: some View { - AppPanel(compactLayout: compactLayout, radius: AppLayout.largeCardRadius) { - AppBadge(title: "Digital passport", tone: dashboardAccent) - - VStack(alignment: .leading, spacing: 6) { - Text(profile.name) - .font(.system(size: compactLayout ? 30 : 38, weight: .bold, design: .rounded)) - .lineLimit(2) - - Text("\(profile.handle) • \(profile.organization)") - .font(.subheadline) - .foregroundStyle(.secondary) - } - - HStack(spacing: 8) { - AppStatusTag(title: "Passport active", tone: dashboardAccent) - AppStatusTag(title: session.pairingTransport.title, tone: dashboardGold) - } - - Divider() - - LazyVGrid(columns: detailColumns, alignment: .leading, spacing: 16) { - AppKeyValue(label: "Device", value: session.deviceName) - AppKeyValue(label: "Origin", value: session.originHost, monospaced: true) - AppKeyValue(label: "Linked", value: session.pairedAt.formatted(date: .abbreviated, time: .shortened)) - AppKeyValue(label: "Token", value: "...\(session.tokenPreview)", monospaced: true) - } - - Divider() - - LazyVGrid(columns: metricColumns, alignment: .leading, spacing: 16) { - AppMetric(title: "Pending", value: "\(pendingCount)") - AppMetric(title: "Alerts", value: "\(unreadCount)") - AppMetric(title: "Devices", value: "\(profile.deviceCount)") - } - } - } -} - -private struct NotificationPermissionSummary: View { - @ObservedObject var model: AppViewModel - let compactLayout: Bool - - var body: some View { - VStack(alignment: .leading, spacing: 14) { - HStack(alignment: .top, spacing: 12) { - Image(systemName: model.notificationPermission.systemImage) - .font(.headline) - .foregroundStyle(dashboardAccent) - .frame(width: 28, height: 28) - - VStack(alignment: .leading, spacing: 4) { - Text(model.notificationPermission.title) - .font(.headline) - Text(model.notificationPermission.summary) - .font(.subheadline) - .foregroundStyle(.secondary) - } - } - - if compactLayout { - VStack(alignment: .leading, spacing: 12) { - permissionButtons - } - } else { - HStack(spacing: 12) { - permissionButtons + } header: { + Text("Earlier today") + .textCase(nil) + } } } } + .listStyle(.plain) + .navigationTitle("Inbox") + .animation(.spring(response: 0.35, dampingFraction: 0.88), value: filteredRequests.map(\.id)) + .idpSearchable(text: $searchText, isPresented: $isSearchPresented) } @ViewBuilder - private var permissionButtons: some View { - Button { - Task { await model.requestNotificationAccess() } - } label: { - Label("Enable notifications", systemImage: "bell.and.waves.left.and.right.fill") - .frame(maxWidth: .infinity) - } - .buttonStyle(.borderedProminent) - - Button { - Task { await model.sendTestNotification() } - } label: { - Label("Send test alert", systemImage: "paperplane.fill") - .frame(maxWidth: .infinity) - } - .buttonStyle(.bordered) - } -} - -private struct AccountHero: View { - let profile: MemberProfile - let session: AuthSession - let compactLayout: Bool - - var body: some View { - AppPanel(compactLayout: compactLayout, radius: AppLayout.largeCardRadius) { - AppBadge(title: "Account", tone: dashboardAccent) - - Text(profile.name) - .font(.system(size: compactLayout ? 28 : 34, weight: .bold, design: .rounded)) - .lineLimit(2) - - Text(profile.handle) - .font(.headline) - .foregroundStyle(.secondary) - - Text("Active client: \(session.deviceName)") - .font(.subheadline) - .foregroundStyle(.secondary) - } - } -} - -private struct AccountFactsGrid: View { - let profile: MemberProfile - let session: AuthSession - let compactLayout: Bool - - private var columns: [GridItem] { - Array(repeating: GridItem(.flexible(), spacing: 16), count: compactLayout ? 1 : 2) - } - - var body: some View { - LazyVGrid(columns: columns, alignment: .leading, spacing: 16) { - AppKeyValue(label: "Organization", value: profile.organization) - AppKeyValue(label: "Origin", value: session.originHost, monospaced: true) - AppKeyValue(label: "Linked At", value: session.pairedAt.formatted(date: .abbreviated, time: .shortened)) - AppKeyValue(label: "Method", value: session.pairingTransport.title) - AppKeyValue(label: "Token", value: "...\(session.tokenPreview)", monospaced: true) - AppKeyValue(label: "Recovery", value: profile.recoverySummary) - if let signedGPSPosition = session.signedGPSPosition { - AppKeyValue( - label: "Signed GPS", - value: "\(signedGPSPosition.coordinateSummary) \(signedGPSPosition.accuracySummary)", - monospaced: true + private func row(for request: ApprovalRequest, compact: Bool) -> some View { + if usesSelection { + Button { + selectedRequestID = request.id + Haptics.selection() + } label: { + ApprovalRow( + request: request, + handle: model.profile?.handle ?? "@you", + compact: compact, + highlighted: highlightedRequestID == request.id ) } - AppKeyValue(label: "Trusted Devices", value: "\(profile.deviceCount)") + .buttonStyle(.plain) + .listRowInsets(EdgeInsets(top: 4, leading: 8, bottom: 4, trailing: 8)) + .listRowSeparator(.hidden) + .listRowBackground(Color.clear) + } else { + NavigationLink(value: request.id) { + ApprovalRow( + request: request, + handle: model.profile?.handle ?? "@you", + compact: compact, + highlighted: highlightedRequestID == request.id + ) + } + .buttonStyle(.plain) + .listRowInsets(EdgeInsets(top: 4, leading: 8, bottom: 4, trailing: 8)) + .listRowSeparator(.hidden) + .listRowBackground(Color.clear) } } } -private struct EmptyStateCopy: View { - let title: String - let systemImage: String - let message: String +struct NotificationCenterView: View { + @ObservedObject var model: AppViewModel + + private var groupedNotifications: [(String, [AppNotification])] { + let calendar = Calendar.current + let groups = Dictionary(grouping: model.notifications) { calendar.startOfDay(for: $0.sentAt) } + + return groups + .keys + .sorted(by: >) + .map { day in + (sectionTitle(for: day), groups[day]?.sorted(by: { $0.sentAt > $1.sentAt }) ?? []) + } + } var body: some View { - ContentUnavailableView( - title, - systemImage: systemImage, - description: Text(message) - ) - .frame(maxWidth: .infinity) - .padding(.vertical, 10) + Group { + if model.notifications.isEmpty { + EmptyPaneView( + title: "All clear", + message: "You'll see new sign-in requests here.", + systemImage: "shield" + ) + } else { + List { + if model.notificationPermission == .unknown || model.notificationPermission == .denied { + NotificationPermissionCard(model: model) + .listRowInsets(EdgeInsets(top: 12, leading: 12, bottom: 12, trailing: 12)) + .listRowSeparator(.hidden) + .listRowBackground(Color.clear) + } + + ForEach(groupedNotifications, id: \.0) { section in + Section { + ForEach(section.1) { notification in + Button { + guard notification.isUnread else { return } + Task { + await model.markNotificationRead(notification) + } + } label: { + NotificationEventRow(notification: notification) + } + .buttonStyle(.plain) + } + } header: { + Text(section.0) + .textCase(nil) + } + } + } + .listStyle(.plain) + } + } + .navigationTitle("Notifications") + } + + private func sectionTitle(for date: Date) -> String { + if Calendar.current.isDateInToday(date) { + return "Today" + } + if Calendar.current.isDateInYesterday(date) { + return "Yesterday" + } + return date.formatted(.dateTime.month(.wide).day()) + } +} + +struct DevicesView: View { + @ObservedObject var model: AppViewModel + @State private var isPairingCodePresented = false + + private var devices: [DevicePresentation] { + guard let session else { return [] } + + let current = DevicePresentation( + name: session.deviceName, + systemImage: symbolName(for: session.deviceName), + lastSeen: .now, + isCurrent: true, + isTrusted: true + ) + + let others = [ + DevicePresentation(name: "Phil's iPad Pro", systemImage: "ipad", lastSeen: .now.addingTimeInterval(-60 * 18), isCurrent: false, isTrusted: true), + DevicePresentation(name: "Berlin MacBook Pro", systemImage: "laptopcomputer", lastSeen: .now.addingTimeInterval(-60 * 74), isCurrent: false, isTrusted: true), + DevicePresentation(name: "Apple Watch", systemImage: "applewatch", lastSeen: .now.addingTimeInterval(-60 * 180), isCurrent: false, isTrusted: false) + ] + + let count = max((model.profile?.deviceCount ?? 1) - 1, 0) + return [current] + Array(others.prefix(count)) + } + + private var session: AuthSession? { + model.session + } + + var body: some View { + Form { + Section("This device") { + if let current = devices.first { + DeviceItemRow(device: current) + } + } + + Section("Other devices · \(max(devices.count - 1, 0))") { + ForEach(Array(devices.dropFirst())) { device in + DeviceItemRow(device: device) + } + } + + Section { + VStack(spacing: 12) { + Button("Pair another device") { + isPairingCodePresented = true + } + .buttonStyle(PrimaryActionStyle()) + + Button("Sign out everywhere") { + model.signOut() + } + .buttonStyle(DestructiveStyle()) + } + .padding(.vertical, 6) + } + } + .navigationTitle("Devices") + .sheet(isPresented: $isPairingCodePresented) { + if let session { + OneTimePasscodeSheet(session: session) + } + } + } + + private func symbolName(for deviceName: String) -> String { + let lowercased = deviceName.lowercased() + if lowercased.contains("ipad") { + return "ipad" + } + if lowercased.contains("watch") { + return "applewatch" + } + if lowercased.contains("mac") || lowercased.contains("safari") { + return "laptopcomputer" + } + return "iphone" + } +} + +struct IdentityView: View { + @ObservedObject var model: AppViewModel + + var body: some View { + Form { + if let profile = model.profile { + Section("Identity") { + LabeledContent("Name", value: profile.name) + LabeledContent("Handle", value: profile.handle) + LabeledContent("Organization", value: profile.organization) + } + + Section("Recovery") { + Text(profile.recoverySummary) + .font(.body) + } + } + + if let session = model.session { + Section("Session") { + LabeledContent("Device", value: session.deviceName) + LabeledContent("Linked", value: session.pairedAt.formatted(date: .abbreviated, time: .shortened)) + LabeledContent("Origin", value: session.originHost) + LabeledContent("Transport", value: session.pairingTransport.title) + } + + Section("Pairing payload") { + Text(session.pairingCode) + .font(.footnote.monospaced()) + .textSelection(.enabled) + } + } + } + .navigationTitle("Identity") + } +} + +struct SettingsView: View { + @ObservedObject var model: AppViewModel + + var body: some View { + Form { + Section("Alerts") { + LabeledContent("Notifications", value: model.notificationPermission.title) + + Button("Enable Notifications") { + Task { + await model.requestNotificationAccess() + } + } + .buttonStyle(SecondaryActionStyle()) + + Button("Send Test Notification") { + Task { + await model.sendTestNotification() + } + } + .buttonStyle(SecondaryActionStyle()) + } + + Section("Demo") { + Button("Simulate Incoming Request") { + Task { + await model.simulateIncomingRequest() + } + } + .buttonStyle(PrimaryActionStyle()) + + Button("Refresh") { + Task { + await model.refreshDashboard() + } + } + .buttonStyle(SecondaryActionStyle()) + } + } + .navigationTitle("Settings") + } +} + +enum PreviewFixtures { + static let profile = MemberProfile( + name: "Jurgen Meyer", + handle: "@jurgen", + organization: "idp.global", + deviceCount: 4, + recoverySummary: "Recovery kit healthy with 2 of 3 backup paths verified." + ) + + static let session = AuthSession( + deviceName: "iPhone 17 Pro", + originHost: "github.com", + pairedAt: .now.addingTimeInterval(-60 * 90), + tokenPreview: "berlin", + pairingCode: "idp.global://pair?token=swiftapp-demo-berlin&origin=github.com&device=iPhone%2017%20Pro", + pairingTransport: .preview + ) + + static let requests: [ApprovalRequest] = [ + ApprovalRequest( + title: "Prove identity for GitHub", + subtitle: "GitHub is asking for a routine sign-in confirmation.", + source: "github.com", + createdAt: .now.addingTimeInterval(-60 * 4), + kind: .signIn, + risk: .routine, + scopes: ["email", "profile", "session:read"], + status: .pending + ), + ApprovalRequest( + title: "Prove identity for workspace", + subtitle: "Your secure workspace needs a stronger proof before unlocking.", + source: "workspace.idp.global", + createdAt: .now.addingTimeInterval(-60 * 42), + kind: .elevatedAction, + risk: .elevated, + scopes: ["profile", "device", "location"], + status: .pending + ), + ApprovalRequest( + title: "CLI session", + subtitle: "A CLI login was completed earlier today.", + source: "cli.idp.global", + createdAt: .now.addingTimeInterval(-60 * 120), + kind: .signIn, + risk: .routine, + scopes: ["profile"], + status: .approved + ) + ] + + static let notifications: [AppNotification] = [ + AppNotification( + title: "GitHub sign-in approved", + message: "Your latest sign-in request for github.com was approved.", + sentAt: .now.addingTimeInterval(-60 * 9), + kind: .approval, + isUnread: true + ), + AppNotification( + title: "Recovery check passed", + message: "Backup recovery channels were verified in the last 24 hours.", + sentAt: .now.addingTimeInterval(-60 * 110), + kind: .system, + isUnread: false + ), + AppNotification( + title: "Session expired", + message: "A pending workstation approval expired before it could be completed.", + sentAt: .now.addingTimeInterval(-60 * 1_500), + kind: .security, + isUnread: false + ) + ] + + @MainActor + static func model() -> AppViewModel { + let model = AppViewModel( + service: MockIDPService.shared, + notificationCoordinator: PreviewNotificationCoordinator(), + appStateStore: PreviewStateStore(), + launchArguments: [] + ) + model.session = session + model.profile = profile + model.requests = requests + model.notifications = notifications + model.selectedSection = .inbox + model.manualPairingPayload = session.pairingCode + model.suggestedPairingPayload = session.pairingCode + model.notificationPermission = .allowed + return model + } +} + +private struct PreviewNotificationCoordinator: NotificationCoordinating { + func authorizationStatus() async -> NotificationPermissionState { .allowed } + func requestAuthorization() async throws -> NotificationPermissionState { .allowed } + func scheduleTestNotification(title: String, body: String) async throws {} +} + +private struct PreviewStateStore: AppStateStoring { + func load() -> PersistedAppState? { nil } + func save(_ state: PersistedAppState) {} + func clear() {} +} + +#Preview("Inbox Light") { + NavigationStack { + InboxPreviewHost() + } +} + +#Preview("Inbox Dark") { + NavigationStack { + InboxPreviewHost() + } + .preferredColorScheme(.dark) +} + +@MainActor +private struct InboxPreviewHost: View { + @State private var selectedRequestID = PreviewFixtures.requests.first?.id + @State private var searchText = "" + @State private var isSearchPresented = false + @State private var model = PreviewFixtures.model() + + var body: some View { + InboxListView( + model: model, + selectedRequestID: $selectedRequestID, + searchText: $searchText, + isSearchPresented: $isSearchPresented + ) } } diff --git a/swift/Sources/Features/Home/HomeRootView.swift b/swift/Sources/Features/Home/HomeRootView.swift index 9271797..65d262b 100644 --- a/swift/Sources/Features/Home/HomeRootView.swift +++ b/swift/Sources/Features/Home/HomeRootView.swift @@ -1,78 +1,73 @@ import SwiftUI -let dashboardAccent = AppTheme.accent -let dashboardGold = AppTheme.warmAccent - -extension View { - @ViewBuilder - func inlineNavigationTitleOnIOS() -> some View { - #if os(iOS) - navigationBarTitleDisplayMode(.inline) - #else - self - #endif - } - - @ViewBuilder - func cleanTabBarOnIOS() -> some View { - #if os(iOS) - toolbarBackground(.visible, for: .tabBar) - .toolbarBackground(AppTheme.chromeFill, for: .tabBar) - #else - self - #endif - } -} - struct HomeRootView: View { @ObservedObject var model: AppViewModel - @State private var notificationBellFrame: CGRect? + @Environment(\.horizontalSizeClass) private var horizontalSizeClass + + @State private var selectedRequestID: ApprovalRequest.ID? + @State private var searchText = "" + @State private var isSearchPresented = false var body: some View { Group { - if usesCompactNavigation { - CompactHomeContainer(model: model) - } else { - RegularHomeContainer(model: model) - } - } - .onPreferenceChange(NotificationBellFrameKey.self) { notificationBellFrame = $0 } - .overlay(alignment: .topLeading) { - if usesCompactNavigation { - NotificationBellBadgeOverlay( - unreadCount: model.unreadNotificationCount, - bellFrame: notificationBellFrame + if usesRegularNavigation { + RegularHomeContainer( + model: model, + selectedRequestID: $selectedRequestID, + searchText: $searchText, + isSearchPresented: $isSearchPresented + ) + } else { + CompactHomeContainer( + model: model, + selectedRequestID: $selectedRequestID, + searchText: $searchText, + isSearchPresented: $isSearchPresented ) - .ignoresSafeArea() } } - .sheet(isPresented: $model.isNotificationCenterPresented) { - NotificationCenterSheet(model: model) + .onAppear(perform: syncSelection) + .onChange(of: model.requests.map(\.id)) { _, _ in + syncSelection() } } - private var usesCompactNavigation: Bool { + private var usesRegularNavigation: Bool { #if os(iOS) - true + horizontalSizeClass == .regular #else false #endif } + + private func syncSelection() { + if let selectedRequestID, + model.requests.contains(where: { $0.id == selectedRequestID }) { + return + } + + selectedRequestID = model.pendingRequests.first?.id ?? model.requests.first?.id + } } private struct CompactHomeContainer: View { @ObservedObject var model: AppViewModel - @Environment(\.horizontalSizeClass) private var horizontalSizeClass + @Binding var selectedRequestID: ApprovalRequest.ID? + @Binding var searchText: String + @Binding var isSearchPresented: Bool var body: some View { TabView(selection: $model.selectedSection) { ForEach(AppSection.allCases) { section in NavigationStack { - HomeSectionScreen(model: model, section: section, compactLayout: compactLayout) - .navigationTitle(section.title) - .inlineNavigationTitleOnIOS() + sectionContent(for: section) + .navigationDestination(for: ApprovalRequest.ID.self) { requestID in + ApprovalDetailView(model: model, requestID: requestID, dismissOnResolve: true) + } .toolbar { - DashboardToolbar(model: model) + if section == .inbox { + InboxToolbar(model: model, isSearchPresented: $isSearchPresented) + } } } .tag(section) @@ -81,239 +76,130 @@ private struct CompactHomeContainer: View { } } } - .cleanTabBarOnIOS() + .idpTabBarChrome() } - private var compactLayout: Bool { - #if os(iOS) - horizontalSizeClass == .compact - #else - false - #endif + @ViewBuilder + private func sectionContent(for section: AppSection) -> some View { + switch section { + case .inbox: + InboxListView( + model: model, + selectedRequestID: $selectedRequestID, + searchText: $searchText, + isSearchPresented: $isSearchPresented, + usesSelection: false + ) + case .notifications: + NotificationCenterView(model: model) + case .devices: + DevicesView(model: model) + case .identity: + IdentityView(model: model) + case .settings: + SettingsView(model: model) + } } } private struct RegularHomeContainer: View { @ObservedObject var model: AppViewModel + @Binding var selectedRequestID: ApprovalRequest.ID? + @Binding var searchText: String + @Binding var isSearchPresented: Bool var body: some View { NavigationSplitView { - Sidebar(model: model) - .navigationSplitViewColumnWidth(min: 240, ideal: 280, max: 320) + SidebarView(model: model) + .navigationSplitViewColumnWidth(min: 250, ideal: 280, max: 320) + } content: { + contentColumn } detail: { - HomeSectionScreen(model: model, section: model.selectedSection, compactLayout: false) - .navigationTitle(model.selectedSection.title) - .toolbar { - DashboardToolbar(model: model) - } + detailColumn } .navigationSplitViewStyle(.balanced) } -} -private struct DashboardToolbar: ToolbarContent { - @ObservedObject var model: AppViewModel - - var body: some ToolbarContent { - ToolbarItemGroup(placement: .primaryAction) { - NotificationBellButton(model: model) - } - } -} - -struct NotificationBellFrameKey: PreferenceKey { - static var defaultValue: CGRect? = nil - - static func reduce(value: inout CGRect?, nextValue: () -> CGRect?) { - value = nextValue() ?? value - } -} - -private struct NotificationBellBadgeOverlay: View { - let unreadCount: Int - let bellFrame: CGRect? - - var body: some View { - GeometryReader { proxy in - if unreadCount > 0, let bellFrame { - let rootFrame = proxy.frame(in: .global) - - Text("\(min(unreadCount, 9))") - .font(.caption2.weight(.bold)) - .foregroundStyle(.white) - .frame(minWidth: 18, minHeight: 18) - .padding(.horizontal, 3) - .background(Color.orange, in: Capsule()) - .position( - x: bellFrame.maxX - rootFrame.minX - 2, - y: bellFrame.minY - rootFrame.minY + 2 - ) - } - } - .allowsHitTesting(false) - } -} - -private struct HomeSectionScreen: View { - @ObservedObject var model: AppViewModel - let section: AppSection - let compactLayout: Bool - - @State private var focusedRequest: ApprovalRequest? - @State private var isOTPPresented = false - @StateObject private var identifyReader = NFCIdentifyReader() - - var body: some View { - AppScrollScreen( - compactLayout: compactLayout, - bottomPadding: compactLayout ? AppLayout.compactBottomDockPadding : AppLayout.regularBottomPadding - ) { - HomeTopActions( + @ViewBuilder + private var contentColumn: some View { + switch model.selectedSection { + case .inbox: + InboxListView( model: model, - identifyReader: identifyReader, - onScanQR: { model.isScannerPresented = true }, - onShowOTP: { isOTPPresented = true } + selectedRequestID: $selectedRequestID, + searchText: $searchText, + isSearchPresented: $isSearchPresented, + usesSelection: true ) + .toolbar { + InboxToolbar(model: model, isSearchPresented: $isSearchPresented) + } + case .notifications: + NotificationCenterView(model: model) + case .devices: + DevicesView(model: model) + case .identity: + IdentityView(model: model) + case .settings: + SettingsView(model: model) + } + } - switch section { - case .overview: - OverviewPanel(model: model, compactLayout: compactLayout) - case .requests: - RequestsPanel(model: model, compactLayout: compactLayout, onOpenRequest: { focusedRequest = $0 }) - case .activity: - ActivityPanel(model: model, compactLayout: compactLayout) - case .account: - AccountPanel(model: model, compactLayout: compactLayout) - } - } - .task { - identifyReader.onAuthenticationRequestDetected = { request in - Task { - await model.identifyWithNFC(request) - } - } - - identifyReader.onError = { message in - model.errorMessage = message - } - } - .sheet(item: $focusedRequest) { request in - RequestDetailSheet(request: request, model: model) - } - .sheet(isPresented: $model.isScannerPresented) { - QRScannerSheet( - seededPayload: model.session?.pairingCode ?? model.suggestedPairingPayload, - title: "Scan proof QR", - description: "Use the camera to scan an idp.global QR challenge from the site or device asking you to prove that it is really you.", - navigationTitle: "Scan Proof QR", - onCodeScanned: { payload in - Task { - await model.identifyWithPayload(payload, transport: .qr) - } - } + @ViewBuilder + private var detailColumn: some View { + switch model.selectedSection { + case .inbox: + ApprovalDetailView(model: model, requestID: selectedRequestID) + case .notifications: + EmptyPaneView( + title: "Notification history", + message: "Select the inbox to review request context side by side.", + systemImage: "bell" + ) + case .devices: + EmptyPaneView( + title: "Trusted hardware", + message: "Device trust and last-seen state appear here while you manage your passport.", + systemImage: "desktopcomputer" + ) + case .identity: + EmptyPaneView( + title: "Identity overview", + message: "Your profile, recovery status, and pairing state stay visible here.", + systemImage: "person.crop.rectangle.stack" + ) + case .settings: + EmptyPaneView( + title: "Preferences", + message: "Notification delivery and demo controls live in settings.", + systemImage: "gearshape" ) - } - .sheet(isPresented: $isOTPPresented) { - if let session = model.session { - OneTimePasscodeSheet(session: session) - } } } } -private struct HomeTopActions: View { - @ObservedObject var model: AppViewModel - @ObservedObject var identifyReader: NFCIdentifyReader - let onScanQR: () -> Void - let onShowOTP: () -> Void - - var body: some View { - LazyVGrid(columns: columns, spacing: 12) { - identifyButton - qrButton - otpButton - } - } - - private var columns: [GridItem] { - Array(repeating: GridItem(.flexible(), spacing: 12), count: 3) - } - - private var identifyButton: some View { - Button { - identifyReader.beginScanning() - } label: { - AppActionTile( - title: identifyReader.isScanning ? "Scanning NFC" : "Tap NFC", - systemImage: "dot.radiowaves.left.and.right", - tone: dashboardAccent, - isBusy: identifyReader.isScanning || model.isIdentifying - ) - } - .buttonStyle(.plain) - .disabled(identifyReader.isScanning || !identifyReader.isSupported || model.isIdentifying) - } - - private var qrButton: some View { - Button { - onScanQR() - } label: { - AppActionTile( - title: "Scan QR", - systemImage: "qrcode.viewfinder", - tone: dashboardAccent - ) - } - .buttonStyle(.plain) - } - - private var otpButton: some View { - Button { - onShowOTP() - } label: { - AppActionTile( - title: "OTP", - systemImage: "number.square.fill", - tone: dashboardGold - ) - } - .buttonStyle(.plain) - } -} - -private struct Sidebar: View { +struct SidebarView: View { @ObservedObject var model: AppViewModel var body: some View { List { - Section { - SidebarStatusCard( - profile: model.profile, - pendingCount: model.pendingRequests.count, - unreadCount: model.unreadNotificationCount - ) - } - - Section("Workspace") { - ForEach(AppSection.allCases) { section in - Button { - model.selectedSection = section - } label: { - HStack { - Label(section.title, systemImage: section.systemImage) - Spacer() - if badgeCount(for: section) > 0 { - AppStatusTag(title: "\(badgeCount(for: section))", tone: dashboardAccent) - } + ForEach(Array(AppSection.allCases.enumerated()), id: \.element.id) { index, section in + Button { + model.selectedSection = section + Haptics.selection() + } label: { + HStack(spacing: 12) { + Label(section.title, systemImage: section.systemImage) + Spacer() + if badgeCount(for: section) > 0 { + StatusPill(title: "\(badgeCount(for: section))", color: IdP.tint) } } - .buttonStyle(.plain) - .listRowBackground( - model.selectedSection == section - ? dashboardAccent.opacity(0.10) - : Color.clear - ) + .padding(.vertical, 6) } + .buttonStyle(.plain) + .listRowBackground(model.selectedSection == section ? IdP.tint.opacity(0.08) : Color.clear) + .keyboardShortcut(shortcut(for: index), modifiers: .command) } } .navigationTitle("idp.global") @@ -321,36 +207,57 @@ private struct Sidebar: View { private func badgeCount(for section: AppSection) -> Int { switch section { - case .overview: - 0 - case .requests: + case .inbox: model.pendingRequests.count - case .activity: + case .notifications: model.unreadNotificationCount - case .account: + case .devices: + max((model.profile?.deviceCount ?? 1) - 1, 0) + case .identity, .settings: 0 } } -} -private struct SidebarStatusCard: View { - let profile: MemberProfile? - let pendingCount: Int - let unreadCount: Int - - var body: some View { - VStack(alignment: .leading, spacing: 10) { - Text("Digital Passport") - .font(.headline) - - Text(profile?.handle ?? "No passport active") - .foregroundStyle(.secondary) - - HStack(spacing: 8) { - AppStatusTag(title: "\(pendingCount) pending", tone: dashboardAccent) - AppStatusTag(title: "\(unreadCount) unread", tone: dashboardGold) - } - } - .padding(.vertical, 6) + private func shortcut(for index: Int) -> KeyEquivalent { + let value = max(1, min(index + 1, 9)) + return KeyEquivalent(Character("\(value)")) + } +} + +private struct InboxToolbar: ToolbarContent { + @ObservedObject var model: AppViewModel + @Binding var isSearchPresented: Bool + + var body: some ToolbarContent { + ToolbarItem(placement: .idpTrailingToolbar) { + HStack(spacing: 8) { + Button { + isSearchPresented = true + } label: { + Image(systemName: "magnifyingglass") + .font(.headline) + .foregroundStyle(.primary) + } + .accessibilityLabel("Search inbox") + + Button { + model.selectedSection = .identity + } label: { + MonogramAvatar(title: model.profile?.name ?? "idp.global", size: 28) + } + .accessibilityLabel("Open identity") + } + .padding(.horizontal, 10) + .padding(.vertical, 8) + .background( + RoundedRectangle(cornerRadius: 18, style: .continuous) + .fill(.clear) + .idpGlassChrome() + ) + .overlay( + RoundedRectangle(cornerRadius: 18, style: .continuous) + .stroke(Color.white.opacity(0.16), lineWidth: 1) + ) + } } } diff --git a/swift/Sources/Features/Home/HomeSheets.swift b/swift/Sources/Features/Home/HomeSheets.swift index 6f9efbf..b7ff904 100644 --- a/swift/Sources/Features/Home/HomeSheets.swift +++ b/swift/Sources/Features/Home/HomeSheets.swift @@ -1,122 +1,299 @@ import SwiftUI +struct ApprovalDetailView: View { + @ObservedObject var model: AppViewModel + let requestID: ApprovalRequest.ID? + var dismissOnResolve = false + + @Environment(\.dismiss) private var dismiss + + private var request: ApprovalRequest? { + guard let requestID else { return nil } + return model.requests.first(where: { $0.id == requestID }) + } + + var body: some View { + Group { + if let request { + VStack(spacing: 0) { + RequestHeroCard( + request: request, + handle: model.profile?.handle ?? "@you" + ) + .padding(.horizontal, 16) + .padding(.top, 16) + + Form { + Section("Context") { + LabeledContent("From device", value: request.deviceSummary) + LabeledContent("Location", value: request.locationSummary) + LabeledContent("Network", value: request.networkSummary) + LabeledContent("IP") { + Text(request.ipSummary) + .monospacedDigit() + } + } + + Section("Will share") { + ForEach(request.scopes, id: \.self) { scope in + Label(scope, systemImage: "checkmark.circle.fill") + .foregroundStyle(.green) + } + } + + Section("Trust signals") { + TrustSignalBanner(request: request) + } + } + .scrollContentBackground(.hidden) + .background(Color.idpGroupedBackground) + } + .background(Color.idpGroupedBackground) + .navigationTitle(request.appDisplayName) + .idpInlineNavigationTitle() + .toolbar { + ToolbarItem(placement: .idpTrailingToolbar) { + IdPGlassCapsule(padding: EdgeInsets(top: 8, leading: 12, bottom: 8, trailing: 12)) { + Text(request.expiresAt, style: .timer) + .font(.caption.weight(.semibold)) + .monospacedDigit() + } + } + } + .safeAreaInset(edge: .bottom) { + if request.status == .pending { + HStack(spacing: 12) { + Button("Deny") { + Task { + await performReject(request) + } + } + .buttonStyle(SecondaryActionStyle()) + + HoldToApproveButton(isBusy: model.activeRequestID == request.id) { + await performApprove(request) + } + } + .padding(.horizontal, 16) + .padding(.vertical, 12) + .background { + Rectangle() + .fill(.clear) + .idpGlassChrome() + } + } + } + .background { + keyboardShortcuts(for: request) + } + } else { + EmptyPaneView( + title: "Nothing selected", + message: "Choose a sign-in request from the inbox to review the full context.", + systemImage: "checkmark.circle" + ) + } + } + } + + @ViewBuilder + private func keyboardShortcuts(for request: ApprovalRequest) -> some View { + Group { + Button("Approve") { + Task { + await performApprove(request) + } + } + .keyboardShortcut(.return, modifiers: .command) + .hidden() + .accessibilityHidden(true) + + Button("Deny") { + Task { + await performReject(request) + } + } + .keyboardShortcut(.delete, modifiers: .command) + .hidden() + .accessibilityHidden(true) + } + } + + private func performApprove(_ request: ApprovalRequest) async { + guard model.activeRequestID != request.id else { return } + await model.approve(request) + if dismissOnResolve { + dismiss() + } + } + + private func performReject(_ request: ApprovalRequest) async { + guard model.activeRequestID != request.id else { return } + Haptics.warning() + await model.reject(request) + if dismissOnResolve { + dismiss() + } + } +} + struct RequestDetailSheet: View { let request: ApprovalRequest @ObservedObject var model: AppViewModel - @Environment(\.dismiss) private var dismiss - var body: some View { NavigationStack { - AppScrollScreen( - compactLayout: true, - bottomPadding: AppLayout.compactBottomDockPadding - ) { - RequestDetailHero(request: request) - - AppSectionCard(title: "Summary", compactLayout: true) { - AppKeyValue(label: "Source", value: request.source) - AppKeyValue(label: "Requested", value: request.createdAt.formatted(date: .abbreviated, time: .shortened)) - AppKeyValue(label: "Risk", value: request.risk.summary) - AppKeyValue(label: "Type", value: request.kind.title) - } - - AppSectionCard(title: "Proof details", compactLayout: true) { - if request.scopes.isEmpty { - Text("No explicit proof details were provided by the mock backend.") - .foregroundStyle(.secondary) - } else { - Text(request.scopes.joined(separator: "\n")) - .font(.body.monospaced()) - .foregroundStyle(.secondary) - } - } - - AppSectionCard(title: "Guidance", compactLayout: true) { - Text(request.trustDetail) - .foregroundStyle(.secondary) - - Text(request.risk.guidance) - .font(.headline) - } - - if request.status == .pending { - AppSectionCard(title: "Actions", compactLayout: true) { - VStack(spacing: 12) { - Button { - Task { - await model.approve(request) - dismiss() - } - } label: { - if model.activeRequestID == request.id { - ProgressView() - } else { - Label("Verify identity", systemImage: "checkmark.circle.fill") - .frame(maxWidth: .infinity) - } - } - .buttonStyle(.borderedProminent) - .disabled(model.activeRequestID == request.id) - - Button(role: .destructive) { - Task { - await model.reject(request) - dismiss() - } - } label: { - Label("Decline", systemImage: "xmark.circle.fill") - .frame(maxWidth: .infinity) - } - .buttonStyle(.bordered) - .disabled(model.activeRequestID == request.id) - } - } - } - } - .navigationTitle("Review Proof") - .inlineNavigationTitleOnIOS() - .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button("Close") { - dismiss() - } - } - } + ApprovalDetailView(model: model, requestID: request.id, dismissOnResolve: true) } } } -private struct RequestDetailHero: View { - let request: ApprovalRequest +struct HoldToApproveButton: View { + var title = "Hold to approve" + var isBusy = false + let action: () async -> Void - private var accent: Color { - switch request.status { - case .approved: - .green - case .rejected: - .red - case .pending: - request.risk == .routine ? dashboardAccent : .orange + @State private var progress: CGFloat = 0 + + var body: some View { + ZStack { + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(isBusy ? Color.secondary.opacity(0.24) : IdP.tint) + + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .stroke(Color.white.opacity(0.16), lineWidth: 1) + + label + .padding(.horizontal, 20) + .padding(.vertical, 14) + + GeometryReader { geometry in + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .trim(from: 0, to: progress) + .stroke(Color.white.opacity(0.85), style: StrokeStyle(lineWidth: 3, lineCap: .round)) + .rotationEffect(.degrees(-90)) + .padding(2) + } + } + .frame(minHeight: 52) + .contentShape(RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous)) + .onLongPressGesture(minimumDuration: 0.6, maximumDistance: 20, pressing: updateProgress) { + guard !isBusy else { return } + Task { + Haptics.success() + await action() + progress = 0 + } + } + .accessibilityAddTraits(.isButton) + .accessibilityLabel(title) + .accessibilityHint("Press and hold to approve this request.") + } + + @ViewBuilder + private var label: some View { + if isBusy { + ProgressView() + .tint(.white) + } else { + Text(title) + .font(.headline) + .foregroundStyle(.white) } } + private func updateProgress(_ isPressing: Bool) { + guard !isBusy else { return } + withAnimation(.linear(duration: isPressing ? 0.6 : 0.15)) { + progress = isPressing ? 1 : 0 + } + } +} + +struct NFCSheet: View { + var title = "Hold near reader" + var message = "Tap to confirm sign-in. Your location will be signed and sent." + var actionTitle = "Approve" + let onSubmit: (PairingAuthenticationRequest) async -> Void + + @Environment(\.dismiss) private var dismiss + @StateObject private var reader = NFCIdentifyReader() + @State private var pendingRequest: PairingAuthenticationRequest? + @State private var isSubmitting = false + @State private var pulse = false + + private var isPreview: Bool { + ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" + } + var body: some View { - AppPanel(compactLayout: true, radius: AppLayout.largeCardRadius) { - AppBadge(title: request.kind.title, tone: accent) + VStack(spacing: 24) { + ZStack { + ForEach(0..<3, id: \.self) { index in + Circle() + .stroke(IdP.tint.opacity(0.16), lineWidth: 1.5) + .frame(width: 88 + CGFloat(index * 34), height: 88 + CGFloat(index * 34)) + .scaleEffect(pulse ? 1.08 : 0.92) + .opacity(pulse ? 0.2 : 0.6) + .animation(.easeInOut(duration: 1.4).repeatForever().delay(Double(index) * 0.12), value: pulse) + } - Text(request.title) - .font(.system(size: 30, weight: .bold, design: .rounded)) - .lineLimit(3) + Image(systemName: "wave.3.right") + .font(.system(size: 34, weight: .semibold)) + .foregroundStyle(IdP.tint) + } + .frame(height: 160) - Text(request.subtitle) - .foregroundStyle(.secondary) + VStack(spacing: 8) { + Text(title) + .font(.title3.weight(.semibold)) - HStack(spacing: 8) { - AppStatusTag(title: request.status.title, tone: accent) - AppStatusTag(title: request.risk.title, tone: request.risk == .routine ? dashboardAccent : .orange) + Text(message) + .font(.subheadline) + .foregroundStyle(.secondary) + .multilineTextAlignment(.center) + } + + VStack(spacing: 12) { + Button("Cancel") { + dismiss() + } + .buttonStyle(SecondaryActionStyle()) + + Button(primaryTitle) { + guard let pendingRequest else { return } + Task { + isSubmitting = true + await onSubmit(pendingRequest) + isSubmitting = false + dismiss() + } + } + .buttonStyle(PrimaryActionStyle()) + .disabled(pendingRequest == nil || isSubmitting) } } + .padding(24) + .presentationDetents([.medium]) + .presentationDragIndicator(.visible) + .task { + pulse = true + reader.onAuthenticationRequestDetected = { request in + pendingRequest = request + Haptics.selection() + } + reader.onError = { _ in } + + guard !isPreview else { return } + reader.beginScanning() + } + } + + private var primaryTitle: String { + if isSubmitting { + return "Approving…" + } + return pendingRequest == nil ? "Waiting…" : actionTitle } } @@ -124,7 +301,6 @@ struct OneTimePasscodeSheet: View { let session: AuthSession @Environment(\.dismiss) private var dismiss - @Environment(\.horizontalSizeClass) private var horizontalSizeClass var body: some View { NavigationStack { @@ -132,42 +308,32 @@ struct OneTimePasscodeSheet: View { let code = OneTimePasscodeGenerator.code(for: session.pairingCode, at: context.date) let secondsRemaining = OneTimePasscodeGenerator.renewalCountdown(at: context.date) - AppScrollScreen(compactLayout: compactLayout) { - AppPanel(compactLayout: compactLayout, radius: AppLayout.largeCardRadius) { - AppBadge(title: "One-time passcode", tone: dashboardGold) + VStack(alignment: .leading, spacing: 18) { + Text("One-time pairing code") + .font(.title3.weight(.semibold)) - Text("OTP") - .font(.system(size: compactLayout ? 32 : 40, weight: .bold, design: .rounded)) + Text("Use this code on the next device you want to pair with your idp.global passport.") + .font(.subheadline) + .foregroundStyle(.secondary) - Text("Share this code only with the site or device asking you to prove that it is really you.") - .font(.subheadline) - .foregroundStyle(.secondary) + Text(code) + .font(.system(size: 42, weight: .bold, design: .rounded).monospacedDigit()) + .tracking(5) + .frame(maxWidth: .infinity) + .padding(.vertical, 18) + .background(Color.idpSecondaryGroupedBackground, in: RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous)) - Text(code) - .font(.system(size: compactLayout ? 42 : 54, weight: .bold, design: .rounded).monospacedDigit()) - .tracking(compactLayout ? 4 : 6) - .frame(maxWidth: .infinity) - .padding(.vertical, compactLayout ? 16 : 20) - .background(AppTheme.mutedFill, in: RoundedRectangle(cornerRadius: 24, style: .continuous)) - .overlay( - RoundedRectangle(cornerRadius: 24, style: .continuous) - .stroke(AppTheme.border, lineWidth: 1) - ) - - HStack(spacing: 8) { - AppStatusTag(title: "Renews in \(secondsRemaining)s", tone: dashboardGold) - AppStatusTag(title: session.originHost, tone: dashboardAccent) - } - - Divider() - - AppKeyValue(label: "Client", value: session.deviceName) - AppKeyValue(label: "Linked", value: session.pairedAt.formatted(date: .abbreviated, time: .shortened)) + HStack { + StatusPill(title: "Renews in \(secondsRemaining)s", color: IdP.tint) + StatusPill(title: session.originHost, color: .secondary) } + + Spacer() } + .padding(24) } - .navigationTitle("OTP") - .inlineNavigationTitleOnIOS() + .navigationTitle("Pair Device") + .idpInlineNavigationTitle() .toolbar { ToolbarItem(placement: .cancellationAction) { Button("Close") { @@ -177,12 +343,170 @@ struct OneTimePasscodeSheet: View { } } } +} - private var compactLayout: Bool { - #if os(iOS) - horizontalSizeClass == .compact - #else - false - #endif +struct MenuBarPopover: View { + @ObservedObject var model: AppViewModel + @State private var notificationsPaused = false + @State private var isPairingCodePresented = false + + var body: some View { + VStack(alignment: .leading, spacing: 18) { + header + + if let request = model.pendingRequests.first { + RequestHeroCard(request: request, handle: model.profile?.handle ?? "@you") + } else { + EmptyPaneView( + title: "Inbox clear", + message: "New sign-in requests will appear here.", + systemImage: "shield" + ) + .approvalCard() + } + + if model.pendingRequests.count > 1 { + VStack(alignment: .leading, spacing: 6) { + Text("Queued") + .font(.caption.weight(.semibold)) + .foregroundStyle(.secondary) + + ForEach(model.pendingRequests.dropFirst().prefix(3)) { request in + ApprovalRow(request: request, handle: model.profile?.handle ?? "@you", compact: true) + } + } + } + + Divider() + + VStack(spacing: 8) { + Button { + model.selectedSection = .inbox + } label: { + MenuRowLabel(title: "Open inbox", systemImage: "tray.full") + } + .buttonStyle(.plain) + .keyboardShortcut("o", modifiers: .command) + + Button { + isPairingCodePresented = true + } label: { + MenuRowLabel(title: "Pair new device", systemImage: "plus.viewfinder") + } + .buttonStyle(.plain) + .keyboardShortcut("n", modifiers: .command) + + Button { + notificationsPaused.toggle() + Haptics.selection() + } label: { + MenuRowLabel(title: notificationsPaused ? "Resume notifications" : "Pause notifications", systemImage: notificationsPaused ? "bell.badge" : "bell.slash") + } + .buttonStyle(.plain) + + Button { + model.selectedSection = .settings + } label: { + MenuRowLabel(title: "Preferences", systemImage: "gearshape") + } + .buttonStyle(.plain) + .keyboardShortcut(",", modifiers: .command) + } + } + .padding(20) + .sheet(isPresented: $isPairingCodePresented) { + if let session = model.session { + OneTimePasscodeSheet(session: session) + } + } + } + + private var header: some View { + HStack(alignment: .center, spacing: 12) { + Image(systemName: "shield.lefthalf.filled") + .font(.title2) + .foregroundStyle(IdP.tint) + + VStack(alignment: .leading, spacing: 2) { + Text("idp.global") + .font(.headline) + + StatusPill(title: "Connected", color: .green) + } + + Spacer() + } + } +} + +private struct MenuRowLabel: View { + let title: String + let systemImage: String + + var body: some View { + HStack(spacing: 12) { + Image(systemName: systemImage) + .frame(width: 18) + .foregroundStyle(IdP.tint) + Text(title) + Spacer() + } + .padding(.vertical, 6) + .contentShape(Rectangle()) + } +} + +#Preview("Approval Detail Light") { + NavigationStack { + ApprovalDetailPreviewHost() + } +} + +#Preview("Approval Detail Dark") { + NavigationStack { + ApprovalDetailPreviewHost() + } + .preferredColorScheme(.dark) +} + +#Preview("NFC Sheet Light") { + NFCSheet { _ in } +} + +#Preview("NFC Sheet Dark") { + NFCSheet { _ in } + .preferredColorScheme(.dark) +} + +#Preview("Request Hero Card Light") { + RequestHeroCard(request: PreviewFixtures.requests[0], handle: PreviewFixtures.profile.handle) + .padding() +} + +#Preview("Request Hero Card Dark") { + RequestHeroCard(request: PreviewFixtures.requests[0], handle: PreviewFixtures.profile.handle) + .padding() + .preferredColorScheme(.dark) +} + +#if os(macOS) +#Preview("Menu Bar Popover Light") { + MenuBarPopover(model: PreviewFixtures.model()) + .frame(width: 420) +} + +#Preview("Menu Bar Popover Dark") { + MenuBarPopover(model: PreviewFixtures.model()) + .frame(width: 420) + .preferredColorScheme(.dark) +} +#endif + +@MainActor +private struct ApprovalDetailPreviewHost: View { + @State private var model = PreviewFixtures.model() + + var body: some View { + ApprovalDetailView(model: model, requestID: PreviewFixtures.requests.first?.id) } } diff --git a/swift/WatchApp/Design/ButtonStyles.swift b/swift/WatchApp/Design/ButtonStyles.swift new file mode 100644 index 0000000..da17ec0 --- /dev/null +++ b/swift/WatchApp/Design/ButtonStyles.swift @@ -0,0 +1,57 @@ +import SwiftUI + +struct PrimaryActionStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .font(.headline) + .frame(maxWidth: .infinity) + .padding(.horizontal, 12) + .padding(.vertical, 12) + .background( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(IdP.tint) + ) + .foregroundStyle(.white) + .opacity(configuration.isPressed ? 0.92 : 1) + } +} + +struct SecondaryActionStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .font(.headline) + .frame(maxWidth: .infinity) + .padding(.horizontal, 12) + .padding(.vertical, 12) + .background( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(Color.idpSecondaryGroupedBackground) + ) + .overlay( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .stroke(Color.idpSeparator, lineWidth: 1) + ) + .foregroundStyle(.white) + .opacity(configuration.isPressed ? 0.92 : 1) + } +} + +struct DestructiveStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .font(.headline) + .frame(maxWidth: .infinity) + .padding(.horizontal, 12) + .padding(.vertical, 12) + .background( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(Color.red.opacity(0.18)) + ) + .overlay( + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .stroke(Color.red.opacity(0.25), lineWidth: 1) + ) + .foregroundStyle(.red) + .opacity(configuration.isPressed ? 0.92 : 1) + } +} diff --git a/swift/WatchApp/Design/Cards.swift b/swift/WatchApp/Design/Cards.swift new file mode 100644 index 0000000..20a480a --- /dev/null +++ b/swift/WatchApp/Design/Cards.swift @@ -0,0 +1,65 @@ +import SwiftUI + +struct ApprovalCardModifier: ViewModifier { + var highlighted = false + + func body(content: Content) -> some View { + content + .padding(14) + .background( + RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous) + .fill(Color.idpSecondaryGroupedBackground) + ) + .overlay( + RoundedRectangle(cornerRadius: IdP.cardRadius, style: .continuous) + .stroke(highlighted ? IdP.tint.opacity(0.75) : Color.idpSeparator, lineWidth: highlighted ? 1.5 : 1) + ) + } +} + +extension View { + func approvalCard(highlighted: Bool = false) -> some View { + modifier(ApprovalCardModifier(highlighted: highlighted)) + } +} + +struct RequestHeroCard: View { + let request: ApprovalRequest + let handle: String + + var body: some View { + HStack(spacing: 12) { + MonogramAvatar(title: request.source, size: 40) + + VStack(alignment: .leading, spacing: 4) { + Text(request.source) + .font(.headline) + .foregroundStyle(.white) + Text(handle) + .font(.footnote) + .foregroundStyle(IdP.tint) + } + } + .approvalCard(highlighted: true) + } +} + +struct MonogramAvatar: View { + let title: String + var size: CGFloat = 22 + + private var monogram: String { + String(title.trimmingCharacters(in: .whitespacesAndNewlines).first ?? "I").uppercased() + } + + var body: some View { + RoundedRectangle(cornerRadius: size * 0.34, style: .continuous) + .fill(IdP.tint.opacity(0.2)) + .frame(width: size, height: size) + .overlay { + Text(monogram) + .font(.system(size: size * 0.48, weight: .semibold, design: .rounded)) + .foregroundStyle(IdP.tint) + } + } +} diff --git a/swift/WatchApp/Design/GlassChrome.swift b/swift/WatchApp/Design/GlassChrome.swift new file mode 100644 index 0000000..e704dda --- /dev/null +++ b/swift/WatchApp/Design/GlassChrome.swift @@ -0,0 +1,8 @@ +import SwiftUI + +public extension View { + @ViewBuilder + func idpGlassChrome() -> some View { + self.background(.thinMaterial) + } +} diff --git a/swift/WatchApp/Design/Haptics.swift b/swift/WatchApp/Design/Haptics.swift new file mode 100644 index 0000000..1da6bed --- /dev/null +++ b/swift/WatchApp/Design/Haptics.swift @@ -0,0 +1,16 @@ +import SwiftUI +import WatchKit + +enum Haptics { + static func success() { + WKInterfaceDevice.current().play(.success) + } + + static func warning() { + WKInterfaceDevice.current().play(.failure) + } + + static func selection() { + WKInterfaceDevice.current().play(.click) + } +} diff --git a/swift/WatchApp/Design/IdPTokens.swift b/swift/WatchApp/Design/IdPTokens.swift new file mode 100644 index 0000000..e7c4f51 --- /dev/null +++ b/swift/WatchApp/Design/IdPTokens.swift @@ -0,0 +1,15 @@ +import SwiftUI + +public enum IdP { + public static let tint = Color("IdPTint") + public static let cardRadius: CGFloat = 20 + public static let controlRadius: CGFloat = 14 + public static let badgeRadius: CGFloat = 8 +} + +extension Color { + static var idpGroupedBackground: Color { .black } + static var idpSecondaryGroupedBackground: Color { Color.white.opacity(0.08) } + static var idpTertiaryFill: Color { Color.white.opacity(0.12) } + static var idpSeparator: Color { Color.white.opacity(0.14) } +} diff --git a/swift/WatchApp/Design/StatusDot.swift b/swift/WatchApp/Design/StatusDot.swift new file mode 100644 index 0000000..a344e44 --- /dev/null +++ b/swift/WatchApp/Design/StatusDot.swift @@ -0,0 +1,11 @@ +import SwiftUI + +struct StatusDot: View { + let color: Color + + var body: some View { + Circle() + .fill(color) + .frame(width: 8, height: 8) + } +} diff --git a/swift/WatchApp/Features/WatchRootView.swift b/swift/WatchApp/Features/WatchRootView.swift index 55a69bd..ee44642 100644 --- a/swift/WatchApp/Features/WatchRootView.swift +++ b/swift/WatchApp/Features/WatchRootView.swift @@ -1,11 +1,8 @@ -import Foundation import SwiftUI -private let watchAccent = AppTheme.accent -private let watchGold = AppTheme.warmAccent - struct WatchRootView: View { @ObservedObject var model: AppViewModel + @State private var showsQueue = false var body: some View { NavigationStack { @@ -13,12 +10,21 @@ struct WatchRootView: View { if model.session == nil { WatchPairingView(model: model) } else { - WatchDashboardView(model: model) + if showsQueue { + WatchQueueView(model: model) + } else { + WatchHomeView(model: model) + } } } - .navigationBarTitleDisplayMode(.inline) + .background(Color.idpGroupedBackground.ignoresSafeArea()) + } + .tint(IdP.tint) + .onOpenURL { url in + if (url.host ?? url.lastPathComponent).lowercased() == "inbox" { + showsQueue = true + } } - .tint(watchAccent) } } @@ -26,395 +32,148 @@ private struct WatchPairingView: View { @ObservedObject var model: AppViewModel var body: some View { - ScrollView { - VStack(alignment: .leading, spacing: 12) { - VStack(alignment: .leading, spacing: 10) { - AppBadge(title: "Preview passport", tone: watchAccent) + VStack(alignment: .leading, spacing: 12) { + Text("Link your watch") + .font(.headline) + .foregroundStyle(.white) - Text("Prove identity from your wrist") - .font(.title3.weight(.semibold)) - .foregroundStyle(.white) + Text("Use the shared demo passport so approvals stay visible on your wrist.") + .font(.footnote) + .foregroundStyle(.white.opacity(0.72)) - Text("Link this watch to the preview passport so identity checks and alerts stay visible on your wrist.") - .font(.footnote) - .foregroundStyle(.white.opacity(0.72)) - - HStack(spacing: 8) { - AppStatusTag(title: "Wrist-ready", tone: watchAccent) - AppStatusTag(title: "Proof focus", tone: watchGold) - } + Button("Use demo payload") { + Task { + await model.signInWithSuggestedPayload() } - .watchCard() - - if model.isBootstrapping { - HStack(spacing: 8) { - ProgressView() - .tint(watchAccent) - Text("Preparing preview passport...") - .font(.footnote) - .foregroundStyle(.white.opacity(0.72)) - } - .frame(maxWidth: .infinity, alignment: .leading) - .watchCard() - } - - Button { - Task { - await model.signInWithSuggestedPayload() - } - } label: { - if model.isAuthenticating { - ProgressView() - .frame(maxWidth: .infinity) - } else { - Label("Link Preview Passport", systemImage: "applewatch") - .frame(maxWidth: .infinity) - } - } - .buttonStyle(.borderedProminent) - .tint(watchAccent) - .disabled(model.isBootstrapping || model.suggestedPairingPayload.isEmpty || model.isAuthenticating) - - VStack(alignment: .leading, spacing: 10) { - Text("What this watch does") - .font(.headline) - .foregroundStyle(.white) - - WatchSetupFeatureRow( - systemImage: "checkmark.shield", - title: "Review identity checks", - subtitle: "See pending proof prompts quickly." - ) - - WatchSetupFeatureRow( - systemImage: "bell.badge", - title: "Surface important alerts", - subtitle: "Keep passport activity visible at a glance." - ) - - WatchSetupFeatureRow( - systemImage: "iphone.radiowaves.left.and.right", - title: "Stay in sync with the phone preview", - subtitle: "Use the same mocked passport context." - ) - } - .watchCard() } - .padding(.horizontal, 8) - .padding(.top, 6) - .padding(.bottom, 20) + .buttonStyle(PrimaryActionStyle()) } - .background(Color.black.ignoresSafeArea()) - .navigationTitle("Link Watch") + .approvalCard(highlighted: true) + .padding(10) + .navigationTitle("idp.global") } } -private struct WatchSetupFeatureRow: View { - let systemImage: String - let title: String - let subtitle: String +private struct WatchHomeView: View { + @ObservedObject var model: AppViewModel var body: some View { - HStack(alignment: .top, spacing: 10) { - Image(systemName: systemImage) - .font(.footnote.weight(.semibold)) - .foregroundStyle(watchAccent) - .frame(width: 18, height: 18) + Group { + if let request = model.pendingRequests.first { + WatchApprovalView(model: model, requestID: request.id) + } else { + WatchQueueView(model: model) + } + } + } +} + +struct WatchApprovalView: View { + @ObservedObject var model: AppViewModel + let requestID: ApprovalRequest.ID + + private var request: ApprovalRequest? { + model.requests.first(where: { $0.id == requestID }) + } + + var body: some View { + Group { + if let request { + ScrollView { + VStack(alignment: .leading, spacing: 12) { + MonogramAvatar(title: request.watchAppDisplayName, size: 42) + + Text("Sign in as \(model.profile?.handle ?? "@you")?") + .font(.headline) + .foregroundStyle(.white) + + Text(request.watchLocationSummary) + .font(.footnote) + .foregroundStyle(.white.opacity(0.72)) + + HStack(spacing: 8) { + Button { + Task { + Haptics.warning() + await model.reject(request) + } + } label: { + Image(systemName: "xmark") + .frame(maxWidth: .infinity) + } + .buttonStyle(SecondaryActionStyle()) + .frame(maxWidth: .infinity) + + WatchHoldToApproveButton(isBusy: model.activeRequestID == request.id) { + await model.approve(request) + } + .frame(maxWidth: .infinity) + } + } + .approvalCard(highlighted: true) + .padding(10) + } + .navigationTitle("Approve") + .toolbar { + ToolbarItem(placement: .bottomBar) { + NavigationLink("Queue") { + WatchQueueView(model: model) + } + } + } + } else { + WatchEmptyState( + title: "No request", + message: "This sign-in is no longer pending.", + systemImage: "checkmark.circle" + ) + } + } + } +} + +private struct WatchQueueView: View { + @ObservedObject var model: AppViewModel + + var body: some View { + List { + if model.requests.isEmpty { + WatchEmptyState( + title: "All clear", + message: "New sign-in requests will appear on your watch here.", + systemImage: "shield" + ) + } else { + ForEach(model.requests) { request in + NavigationLink { + WatchRequestDetailView(model: model, requestID: request.id) + } label: { + WatchQueueRow(request: request) + } + } + } + } + .navigationTitle("Queue") + } +} + +private struct WatchQueueRow: View { + let request: ApprovalRequest + + var body: some View { + HStack(spacing: 8) { + MonogramAvatar(title: request.watchAppDisplayName, size: 22) VStack(alignment: .leading, spacing: 2) { - Text(title) + Text(request.watchAppDisplayName) .font(.footnote.weight(.semibold)) .foregroundStyle(.white) - - Text(subtitle) + Text(request.createdAt, style: .time) .font(.caption2) .foregroundStyle(.white.opacity(0.68)) } } - } -} - -private extension View { - func watchCard() -> some View { - padding(14) - .frame(maxWidth: .infinity, alignment: .leading) - .background(Color.white.opacity(0.08), in: RoundedRectangle(cornerRadius: 22, style: .continuous)) - .overlay( - RoundedRectangle(cornerRadius: 22, style: .continuous) - .stroke(Color.white.opacity(0.10), lineWidth: 1) - ) - } -} - -private struct WatchDashboardView: View { - @ObservedObject var model: AppViewModel - - var body: some View { - ScrollView { - VStack(alignment: .leading, spacing: 12) { - WatchPassportCard(model: model) - .watchCard() - - WatchSectionHeader( - title: "Pending", - detail: model.pendingRequests.isEmpty ? nil : "\(model.pendingRequests.count)" - ) - - if model.pendingRequests.isEmpty { - VStack(alignment: .leading, spacing: 10) { - Text("No checks waiting.") - .font(.footnote.weight(.semibold)) - .foregroundStyle(.white) - - Text("New identity checks will appear here when a site or device asks you to prove it is really you.") - .font(.caption2) - .foregroundStyle(.white.opacity(0.68)) - - Button("Seed Identity Check") { - Task { - await model.simulateIncomingRequest() - } - } - .buttonStyle(.bordered) - .tint(watchAccent) - } - .watchCard() - } else { - ForEach(model.pendingRequests) { request in - NavigationLink { - WatchRequestDetailView(model: model, requestID: request.id) - } label: { - WatchRequestRow(request: request) - .watchCard() - } - .buttonStyle(.plain) - } - } - - WatchSectionHeader(title: "Activity") - - if model.notifications.isEmpty { - VStack(alignment: .leading, spacing: 8) { - Text("No recent alerts.") - .font(.footnote.weight(.semibold)) - .foregroundStyle(.white) - - Text("Passport activity and security events will show up here.") - .font(.caption2) - .foregroundStyle(.white.opacity(0.68)) - } - .watchCard() - } else { - ForEach(model.notifications.prefix(3)) { notification in - NavigationLink { - WatchNotificationDetailView(model: model, notificationID: notification.id) - } label: { - WatchNotificationRow(notification: notification) - .watchCard() - } - .buttonStyle(.plain) - } - } - - WatchSectionHeader(title: "Actions") - - VStack(alignment: .leading, spacing: 10) { - Button("Refresh") { - Task { - await model.refreshDashboard() - } - } - .buttonStyle(.bordered) - .tint(watchAccent) - .disabled(model.isRefreshing) - - Button("Send Test Alert") { - Task { - await model.sendTestNotification() - } - } - .buttonStyle(.bordered) - - if model.notificationPermission == .unknown || model.notificationPermission == .denied { - Button("Enable Alerts") { - Task { - await model.requestNotificationAccess() - } - } - .buttonStyle(.bordered) - } - - Button("Sign Out", role: .destructive) { - model.signOut() - } - .buttonStyle(.bordered) - } - .watchCard() - - if let profile = model.profile { - WatchSectionHeader(title: "Identity") - - VStack(alignment: .leading, spacing: 8) { - Text(profile.handle) - .font(.footnote.weight(.semibold)) - .foregroundStyle(.white) - - Text(profile.organization) - .font(.caption2) - .foregroundStyle(.white.opacity(0.68)) - - Text("Notifications: \(model.notificationPermission.title)") - .font(.caption2) - .foregroundStyle(.white.opacity(0.68)) - } - .watchCard() - } - } - .padding(.horizontal, 8) - .padding(.top, 12) - .padding(.bottom, 20) - } - .background(Color.black.ignoresSafeArea()) - .navigationTitle("Passport") - .refreshable { - await model.refreshDashboard() - } - } -} - -private struct WatchSectionHeader: View { - let title: String - var detail: String? = nil - - var body: some View { - HStack(alignment: .firstTextBaseline, spacing: 8) { - Text(title) - .font(.headline) - .foregroundStyle(.white) - - if let detail, !detail.isEmpty { - Text(detail) - .font(.caption2.weight(.semibold)) - .foregroundStyle(.white.opacity(0.58)) - } - } - .padding(.horizontal, 2) - } -} - -private struct WatchPassportCard: View { - @ObservedObject var model: AppViewModel - - var body: some View { - VStack(alignment: .leading, spacing: 10) { - AppBadge(title: "Passport active", tone: watchAccent) - - VStack(alignment: .leading, spacing: 2) { - Text(model.profile?.name ?? "Preview Session") - .font(.headline) - .foregroundStyle(.white) - Text(model.pairedDeviceSummary) - .font(.footnote) - .foregroundStyle(.white.opacity(0.72)) - if let session = model.session { - Text("Via \(session.pairingTransport.title)") - .font(.caption2) - .foregroundStyle(.white.opacity(0.58)) - } - } - - HStack(spacing: 8) { - WatchMetricPill(title: "Pending", value: "\(model.pendingRequests.count)", accent: watchAccent) - WatchMetricPill(title: "Unread", value: "\(model.unreadNotificationCount)", accent: watchGold) - } - } - .padding(.vertical, 6) - } -} - -private struct WatchMetricPill: View { - let title: String - let value: String - let accent: Color - - var body: some View { - VStack(alignment: .leading, spacing: 2) { - Text(value) - .font(.headline.monospacedDigit()) - .foregroundStyle(.white) - Text(title) - .font(.caption2) - .foregroundStyle(.white.opacity(0.68)) - } - .padding(.horizontal, 10) - .padding(.vertical, 8) - .frame(maxWidth: .infinity, alignment: .leading) - .background(accent.opacity(0.14), in: RoundedRectangle(cornerRadius: 14, style: .continuous)) - } -} - -private struct WatchRequestRow: View { - let request: ApprovalRequest - - var body: some View { - VStack(alignment: .leading, spacing: 4) { - HStack(alignment: .top, spacing: 6) { - Text(request.title) - .font(.headline) - .lineLimit(2) - .foregroundStyle(.white) - - Spacer(minLength: 6) - - Image(systemName: request.risk == .elevated ? "exclamationmark.shield.fill" : "checkmark.shield.fill") - .foregroundStyle(request.risk == .elevated ? .orange : watchAccent) - } - - Text(request.source) - .font(.footnote) - .foregroundStyle(.white.opacity(0.72)) - - HStack(spacing: 8) { - AppStatusTag(title: request.risk.title, tone: request.risk == .routine ? watchAccent : .orange) - AppStatusTag(title: request.status.title, tone: request.status == .pending ? .orange : watchAccent) - } - - Text(request.createdAt.watchRelativeString) - .font(.caption2) - .foregroundStyle(.white.opacity(0.58)) - } - } -} - -private struct WatchNotificationRow: View { - let notification: AppNotification - - var body: some View { - VStack(alignment: .leading, spacing: 4) { - HStack(alignment: .top, spacing: 6) { - Text(notification.title) - .font(.headline) - .lineLimit(2) - .foregroundStyle(.white) - - Spacer(minLength: 6) - - if notification.isUnread { - Circle() - .fill(watchAccent) - .frame(width: 8, height: 8) - } - } - - Text(notification.message) - .font(.footnote) - .foregroundStyle(.white.opacity(0.72)) - .lineLimit(2) - - Text(notification.sentAt.watchRelativeString) - .font(.caption2) - .foregroundStyle(.white.opacity(0.58)) - } + .padding(.vertical, 2) } } @@ -431,159 +190,202 @@ private struct WatchRequestDetailView: View { if let request { ScrollView { VStack(alignment: .leading, spacing: 12) { - detailHeader( - title: request.title, - subtitle: request.source, - badge: request.status.title - ) + RequestHeroCard(request: request, handle: model.profile?.handle ?? "@you") - Text(request.subtitle) + Text(request.watchTrustExplanation) .font(.footnote) - .foregroundStyle(.secondary) - - VStack(alignment: .leading, spacing: 6) { - Text("Trust Summary") - .font(.headline) - Text(request.trustHeadline) - .font(.subheadline.weight(.semibold)) - Text(request.trustDetail) - .font(.footnote) - .foregroundStyle(.secondary) - Text(request.risk.guidance) - .font(.footnote) - .foregroundStyle(.secondary) - } - .padding(10) - .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 18, style: .continuous)) - - if !request.scopes.isEmpty { - VStack(alignment: .leading, spacing: 8) { - Text("Scopes") - .font(.headline) - - ForEach(request.scopes, id: \.self) { scope in - Label(scope, systemImage: "checkmark.seal.fill") - .font(.footnote) - } - } - } + .foregroundStyle(.white.opacity(0.72)) if request.status == .pending { - if model.activeRequestID == request.id { - ProgressView("Updating proof...") - } else { - Button("Verify") { - Task { - await model.approve(request) - } - } - .buttonStyle(.borderedProminent) + WatchHoldToApproveButton(isBusy: model.activeRequestID == request.id) { + await model.approve(request) + } - Button("Decline", role: .destructive) { - Task { - await model.reject(request) - } + Button("Deny") { + Task { + Haptics.warning() + await model.reject(request) } } + .buttonStyle(SecondaryActionStyle()) } } - .padding(.horizontal, 8) - .padding(.bottom, 20) + .padding(10) } } else { - Text("This request is no longer available.") - .foregroundStyle(.secondary) + WatchEmptyState( + title: "No request", + message: "This sign-in is no longer pending.", + systemImage: "shield" + ) } } - .navigationTitle("Identity Check") - } - - private func detailHeader(title: String, subtitle: String, badge: String) -> some View { - VStack(alignment: .leading, spacing: 6) { - Text(title) - .font(.headline) - - Text(subtitle) - .font(.footnote) - .foregroundStyle(.secondary) - - Text(badge) - .font(.caption.weight(.semibold)) - .padding(.horizontal, 8) - .padding(.vertical, 4) - .background(watchAccent.opacity(0.14), in: Capsule()) - } + .navigationTitle("Details") } } -private struct WatchNotificationDetailView: View { - @ObservedObject var model: AppViewModel - let notificationID: AppNotification.ID +private struct WatchHoldToApproveButton: View { + var isBusy = false + let action: () async -> Void - private var notification: AppNotification? { - model.notifications.first(where: { $0.id == notificationID }) - } + @State private var progress: CGFloat = 0 var body: some View { - Group { - if let notification { - ScrollView { - VStack(alignment: .leading, spacing: 12) { - VStack(alignment: .leading, spacing: 6) { - Text(notification.title) - .font(.headline) - Text(notification.kind.title) - .font(.footnote.weight(.semibold)) - .foregroundStyle(watchAccent) - Text(notification.sentAt.watchRelativeString) - .font(.caption2) - .foregroundStyle(.secondary) - } + ZStack { + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .fill(isBusy ? Color.white.opacity(0.18) : IdP.tint) - Text(notification.message) - .font(.footnote) - .foregroundStyle(.secondary) + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .stroke(Color.white.opacity(0.16), lineWidth: 1) - VStack(alignment: .leading, spacing: 6) { - Text("Alert posture") - .font(.headline) - Text(model.notificationPermission.summary) - .font(.footnote) - .foregroundStyle(.secondary) - } - .padding(10) - .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 18, style: .continuous)) + Text(isBusy ? "Working…" : "Approve") + .font(.headline) + .foregroundStyle(.white) + .padding(.vertical, 12) - if notification.isUnread { - Button("Mark Read") { - Task { - await model.markNotificationRead(notification) - } - } - } - } - .padding(.horizontal, 8) - .padding(.bottom, 20) - } - } else { - Text("This activity item has already been cleared.") - .foregroundStyle(.secondary) + RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous) + .trim(from: 0, to: progress) + .stroke(Color.white.opacity(0.88), style: StrokeStyle(lineWidth: 2.5, lineCap: .round)) + .rotationEffect(.degrees(-90)) + .padding(2) + } + .contentShape(RoundedRectangle(cornerRadius: IdP.controlRadius, style: .continuous)) + .onLongPressGesture(minimumDuration: 0.6, maximumDistance: 18, pressing: updateProgress) { + guard !isBusy else { return } + Task { + Haptics.success() + await action() + progress = 0 } } - .navigationTitle("Activity") + .watchPrimaryActionGesture() + .accessibilityAddTraits(.isButton) + .accessibilityHint("Press and hold to approve the sign-in request.") + } + + private func updateProgress(_ isPressing: Bool) { + guard !isBusy else { return } + withAnimation(.linear(duration: isPressing ? 0.6 : 0.15)) { + progress = isPressing ? 1 : 0 + } } } -private extension Date { - var watchRelativeString: String { - WatchFormatters.relative.localizedString(for: self, relativeTo: .now) +private extension View { + @ViewBuilder + func watchPrimaryActionGesture() -> some View { + if #available(watchOS 11.0, *) { + self.handGestureShortcut(.primaryAction) + } else { + self + } } } -private enum WatchFormatters { - static let relative: RelativeDateTimeFormatter = { - let formatter = RelativeDateTimeFormatter() - formatter.unitsStyle = .abbreviated - return formatter - }() +private extension ApprovalRequest { + var watchAppDisplayName: String { + source.replacingOccurrences(of: "auth.", with: "") + } + + var watchTrustExplanation: String { + risk == .elevated + ? "This request needs a higher-assurance proof before it can continue." + : "This request matches a familiar device and sign-in pattern." + } + + var watchLocationSummary: String { + "Berlin, DE" + } +} + +private struct WatchEmptyState: View { + let title: String + let message: String + let systemImage: String + + var body: some View { + ContentUnavailableView { + Label(title, systemImage: systemImage) + } description: { + Text(message) + } + } +} + +#Preview("Watch Approval Light") { + WatchApprovalPreviewHost() +} + +#Preview("Watch Approval Dark") { + WatchApprovalPreviewHost() + .preferredColorScheme(.dark) +} + +@MainActor +private struct WatchApprovalPreviewHost: View { + @State private var model = WatchPreviewFixtures.model() + + var body: some View { + WatchApprovalView(model: model, requestID: WatchPreviewFixtures.requests[0].id) + } +} + +private enum WatchPreviewFixtures { + static let profile = MemberProfile( + name: "Jurgen Meyer", + handle: "@jurgen", + organization: "idp.global", + deviceCount: 3, + recoverySummary: "Recovery kit healthy." + ) + + static let session = AuthSession( + deviceName: "Apple Watch", + originHost: "github.com", + pairedAt: .now.addingTimeInterval(-60 * 45), + tokenPreview: "berlin", + pairingCode: "idp.global://pair?token=swiftapp-demo-berlin&origin=github.com&device=Apple%20Watch", + pairingTransport: .preview + ) + + static let requests: [ApprovalRequest] = [ + ApprovalRequest( + title: "GitHub sign-in", + subtitle: "A sign-in request is waiting on your iPhone.", + source: "github.com", + createdAt: .now.addingTimeInterval(-60 * 2), + kind: .signIn, + risk: .routine, + scopes: ["profile", "email"], + status: .pending + ) + ] + + @MainActor + static func model() -> AppViewModel { + let model = AppViewModel( + service: MockIDPService.shared, + notificationCoordinator: WatchPreviewCoordinator(), + appStateStore: WatchPreviewStore(), + launchArguments: [] + ) + model.session = session + model.profile = profile + model.requests = requests + model.notifications = [] + model.notificationPermission = .allowed + return model + } +} + +private struct WatchPreviewCoordinator: NotificationCoordinating { + func authorizationStatus() async -> NotificationPermissionState { .allowed } + func requestAuthorization() async throws -> NotificationPermissionState { .allowed } + func scheduleTestNotification(title: String, body: String) async throws {} +} + +private struct WatchPreviewStore: AppStateStoring { + func load() -> PersistedAppState? { nil } + func save(_ state: PersistedAppState) {} + func clear() {} } diff --git a/swift/WatchApp/Widgets/IDPGlobalWidgetsBundle.swift b/swift/WatchApp/Widgets/IDPGlobalWidgetsBundle.swift new file mode 100644 index 0000000..6fe280f --- /dev/null +++ b/swift/WatchApp/Widgets/IDPGlobalWidgetsBundle.swift @@ -0,0 +1,292 @@ +import SwiftUI +import WidgetKit + +#if os(iOS) +import ActivityKit +import AppIntents +import UIKit +#endif + +struct ApprovalWidgetEntry: TimelineEntry { + let date: Date + let pendingCount: Int + let topPayload: ApprovalActivityPayload? +} + +struct ApprovalWidgetProvider: TimelineProvider { + func placeholder(in context: Context) -> ApprovalWidgetEntry { + ApprovalWidgetEntry( + date: .now, + pendingCount: 2, + topPayload: ApprovalActivityPayload( + requestID: UUID().uuidString, + title: "github.com wants to sign in", + appName: "github.com", + source: "github.com", + handle: "@jurgen", + location: "Berlin, DE", + createdAt: .now + ) + ) + } + + func getSnapshot(in context: Context, completion: @escaping (ApprovalWidgetEntry) -> Void) { + completion(makeEntry()) + } + + func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) { + let entry = makeEntry() + completion(Timeline(entries: [entry], policy: .after(.now.addingTimeInterval(60)))) + } + + private func makeEntry() -> ApprovalWidgetEntry { + let state = UserDefaultsAppStateStore().load() + let pendingRequests = (state?.requests ?? []) + .filter { $0.status == .pending } + .sorted { $0.createdAt > $1.createdAt } + let handle = state?.profile.handle ?? "@you" + + return ApprovalWidgetEntry( + date: .now, + pendingCount: pendingRequests.count, + topPayload: pendingRequests.first?.activityPayload(handle: handle) + ) + } +} + +@main +struct IDPGlobalWidgetsBundle: WidgetBundle { + var body: some Widget { + #if os(iOS) + ApprovalLiveActivityWidget() + #endif + + #if os(watchOS) + ApprovalAccessoryRectangularWidget() + ApprovalAccessoryCircularWidget() + ApprovalAccessoryCornerWidget() + #endif + } +} + +#if os(iOS) +struct ApproveLiveActivityIntent: LiveActivityIntent { + static var title: LocalizedStringResource = "Approve" + static var openAppWhenRun = false + + @Parameter(title: "Request ID") + var requestID: String + + init() {} + + init(requestID: String) { + self.requestID = requestID + } + + func perform() async throws -> some IntentResult { + guard let id = UUID(uuidString: requestID) else { + return .result() + } + + _ = try? await MockIDPService.shared.approveRequest(id: id) + await ApprovalLiveActivityActionHandler.complete(requestID: requestID, outcome: "Approved") + WidgetCenter.shared.reloadAllTimelines() + return .result() + } +} + +struct DenyLiveActivityIntent: LiveActivityIntent { + static var title: LocalizedStringResource = "Deny" + static var openAppWhenRun = false + + @Parameter(title: "Request ID") + var requestID: String + + init() {} + + init(requestID: String) { + self.requestID = requestID + } + + func perform() async throws -> some IntentResult { + guard let id = UUID(uuidString: requestID) else { + return .result() + } + + _ = try? await MockIDPService.shared.rejectRequest(id: id) + await ApprovalLiveActivityActionHandler.complete(requestID: requestID, outcome: "Denied") + WidgetCenter.shared.reloadAllTimelines() + return .result() + } +} + +private enum ApprovalLiveActivityActionHandler { + static func complete(requestID: String, outcome: String) async { + guard let activity = Activity.activities.first(where: { $0.attributes.requestID == requestID }) else { + return + } + + let state = ApprovalActivityAttributes.ContentState( + requestID: requestID, + title: outcome, + appName: activity.content.state.appName, + source: activity.content.state.source, + handle: activity.content.state.handle, + location: activity.content.state.location + ) + + await activity.end(ActivityContent(state: state, staleDate: .now), dismissalPolicy: .immediate) + } +} + +struct ApprovalLiveActivityWidget: Widget { + var body: some WidgetConfiguration { + ActivityConfiguration(for: ApprovalActivityAttributes.self) { context in + VStack(alignment: .leading, spacing: 12) { + Text(context.state.title) + .font(.headline) + + Text("Sign in as \(Text(context.state.handle).foregroundStyle(.purple))") + .font(.subheadline) + + Text(context.state.location) + .font(.caption) + .foregroundStyle(.secondary) + + HStack(spacing: 10) { + Button(intent: DenyLiveActivityIntent(requestID: context.state.requestID)) { + Text("Deny") + } + .buttonStyle(.bordered) + + Button(intent: ApproveLiveActivityIntent(requestID: context.state.requestID)) { + Text("Approve") + } + .buttonStyle(.borderedProminent) + .tint(.purple) + } + } + .padding(16) + .activityBackgroundTint(Color(uiColor: .systemBackground)) + .activitySystemActionForegroundColor(.purple) + } dynamicIsland: { context in + DynamicIsland { + DynamicIslandExpandedRegion(.leading) { + Image(systemName: "shield.lefthalf.filled") + .foregroundStyle(.purple) + } + DynamicIslandExpandedRegion(.trailing) { + MonogramBubble(title: context.state.appName) + } + DynamicIslandExpandedRegion(.center) { + VStack(alignment: .leading, spacing: 4) { + Text(context.state.title) + .font(.headline) + Text(context.state.handle) + .font(.caption) + .foregroundStyle(.secondary) + } + } + DynamicIslandExpandedRegion(.bottom) { + HStack(spacing: 10) { + Button(intent: DenyLiveActivityIntent(requestID: context.state.requestID)) { + Text("Deny") + } + .buttonStyle(.bordered) + + Button(intent: ApproveLiveActivityIntent(requestID: context.state.requestID)) { + Text("Approve") + } + .buttonStyle(.borderedProminent) + .tint(.purple) + } + } + } compactLeading: { + Image(systemName: "shield.lefthalf.filled") + .foregroundStyle(.purple) + } compactTrailing: { + MonogramBubble(title: context.state.appName) + } minimal: { + Image(systemName: "shield") + .foregroundStyle(.purple) + } + } + } +} + +private struct MonogramBubble: View { + let title: String + + private var letter: String { + String(title.trimmingCharacters(in: .whitespacesAndNewlines).first ?? "I").uppercased() + } + + var body: some View { + ZStack { + Circle() + .fill(Color.purple.opacity(0.18)) + Text(letter) + .font(.caption.weight(.bold)) + .foregroundStyle(.purple) + } + .frame(width: 24, height: 24) + } +} +#endif + +#if os(watchOS) +struct ApprovalAccessoryRectangularWidget: Widget { + var body: some WidgetConfiguration { + StaticConfiguration(kind: "IDPGlobalAccessoryRectangular", provider: ApprovalWidgetProvider()) { entry in + VStack(alignment: .leading, spacing: 3) { + Label("idp.global", systemImage: "shield.lefthalf.filled") + .font(.caption2) + + Text("\(entry.pendingCount) requests") + .font(.headline) + + Text(entry.topPayload?.appName ?? "Inbox") + .font(.caption2) + .foregroundStyle(.secondary) + } + .widgetURL(URL(string: "idpglobal://inbox")) + } + .configurationDisplayName("Approval Queue") + .description("Pending sign-in requests.") + .supportedFamilies([.accessoryRectangular]) + } +} + +struct ApprovalAccessoryCircularWidget: Widget { + var body: some WidgetConfiguration { + StaticConfiguration(kind: "IDPGlobalAccessoryCircular", provider: ApprovalWidgetProvider()) { entry in + ZStack { + AccessoryWidgetBackground() + VStack(spacing: 2) { + Image(systemName: "shield.lefthalf.filled") + Text("\(entry.pendingCount)") + .font(.caption2.weight(.bold)) + } + } + .widgetURL(URL(string: "idpglobal://inbox")) + } + .configurationDisplayName("Approval Count") + .supportedFamilies([.accessoryCircular]) + } +} + +struct ApprovalAccessoryCornerWidget: Widget { + var body: some WidgetConfiguration { + StaticConfiguration(kind: "IDPGlobalAccessoryCorner", provider: ApprovalWidgetProvider()) { entry in + Text("\(entry.pendingCount)") + .widgetCurvesContent() + .widgetLabel { + Image(systemName: "shield.lefthalf.filled") + } + .widgetURL(URL(string: "idpglobal://inbox")) + } + .configurationDisplayName("Approval Corner") + .supportedFamilies([.accessoryCorner]) + } +} +#endif diff --git a/swift/WatchApp/Widgets/Info.plist b/swift/WatchApp/Widgets/Info.plist new file mode 100644 index 0000000..c53e2da --- /dev/null +++ b/swift/WatchApp/Widgets/Info.plist @@ -0,0 +1,31 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + idp.global Widgets + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSExtension + + NSExtensionPointIdentifier + com.apple.widgetkit-extension + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).IDPGlobalWidgetsBundle + + +