From bd24617ae8d84f7b8bce49d9031064f212d968ed Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Tue, 19 Sep 2023 16:02:50 +0800 Subject: [PATCH 01/40] Preferences // Use ObjC instead. --- Preferences/Base.lproj/Preferences.xib | 11 ++++++---- Preferences/Preferences.h | 10 +++++++++ Preferences/Preferences.m | 11 ++++++++++ Preferences/Preferences.swift | 20 ------------------ vChewing.xcodeproj/project.pbxproj | 28 +++++++++----------------- 5 files changed, 37 insertions(+), 43 deletions(-) create mode 100644 Preferences/Preferences.h create mode 100644 Preferences/Preferences.m delete mode 100644 Preferences/Preferences.swift diff --git a/Preferences/Base.lproj/Preferences.xib b/Preferences/Base.lproj/Preferences.xib index af488e3c3..63ebca7ac 100644 --- a/Preferences/Base.lproj/Preferences.xib +++ b/Preferences/Base.lproj/Preferences.xib @@ -1,15 +1,15 @@ - + - + - + @@ -23,7 +23,7 @@ - + @@ -39,6 +39,9 @@ Memo: This screen is only for testing whether customized IME preferences work in + + + diff --git a/Preferences/Preferences.h b/Preferences/Preferences.h new file mode 100644 index 000000000..64e263cfd --- /dev/null +++ b/Preferences/Preferences.h @@ -0,0 +1,10 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface Preferences : NSPreferencePane +@property (strong) IBOutlet NSTextField *lblDisclaimer; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Preferences/Preferences.m b/Preferences/Preferences.m new file mode 100644 index 000000000..d2a216b49 --- /dev/null +++ b/Preferences/Preferences.m @@ -0,0 +1,11 @@ +#import "Preferences.h" + +@implementation Preferences + +-(void) mainViewDidLoad { + [[self mainView] setFrameSize: NSMakeSize(420.0f, 330.0f)]; + [_lblDisclaimer sizeToFit]; + [_lblDisclaimer setFrameSize: NSMakeSize(384.0f, 296.0f)]; +} + +@end diff --git a/Preferences/Preferences.swift b/Preferences/Preferences.swift deleted file mode 100644 index 04caea8bc..000000000 --- a/Preferences/Preferences.swift +++ /dev/null @@ -1,20 +0,0 @@ -import PreferencePanes - -@objc(Preferences) -public class Preferences: NSPreferencePane { - @IBOutlet var lblDisclaimer: NSTextField! - override public func mainViewDidLoad() { - // let label: NSTextField = { - // let result = NSTextField() - // result.stringValue = "114514" - // result.font = NSFont.systemFont(ofSize: 12) - // result.isEditable = false - // result.isSelectable = false - // return result - // }() - // mainView.addSubview(label) - mainView.setFrameSize(.init(width: 420, height: 330.0)) - lblDisclaimer.sizeToFit() - lblDisclaimer.setFrameSize(.init(width: 384.0, height: 296.0)) - } -} diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index 8b5dc910b..98a61b744 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -11,7 +11,6 @@ 5B0E22A628FC11B900EB7ACA /* Preferences.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 5B0E22A528FC11B900EB7ACA /* Preferences.tiff */; }; 5B0E22A928FC11B900EB7ACA /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0E22A728FC11B900EB7ACA /* Preferences.xib */; }; 5B0E22B028FC17CB00EB7ACA /* Preferences.prefPane in Resources */ = {isa = PBXBuildFile; fileRef = 5B0E229F28FC11B900EB7ACA /* Preferences.prefPane */; }; - 5B0E22B228FC318C00EB7ACA /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0E22B128FC318C00EB7ACA /* Preferences.swift */; }; 5B0EF55D28CDBF7100F8F7CE /* frmClientListMgr.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0EF55C28CDBF7100F8F7CE /* frmClientListMgr.xib */; }; 5B0EF55F28CDBF8E00F8F7CE /* CtlClientListMgr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0EF55E28CDBF8E00F8F7CE /* CtlClientListMgr.swift */; }; 5B1C98B929436CEE0019B807 /* data-bpmf-reverse-lookup.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B1C98B729436CED0019B807 /* data-bpmf-reverse-lookup.json */; }; @@ -34,6 +33,8 @@ 5B70F4EA2A0BE900005EA8C4 /* MenuIcon-SCVIM.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E62A0BE900005EA8C4 /* MenuIcon-SCVIM.png */; }; 5B70F4EB2A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E72A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png */; }; 5B70F4EC2A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E82A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png */; }; + 5B72D55C2AB98B8300FB88CE /* Preferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B72D55A2AB98B8300FB88CE /* Preferences.h */; }; + 5B72D55D2AB98B8300FB88CE /* Preferences.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B72D55B2AB98B8300FB88CE /* Preferences.m */; }; 5B765F09293A253C00122315 /* PhraseEditorUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5B765F08293A253C00122315 /* PhraseEditorUI */; }; 5B78EE0D28A562B4009456C1 /* VwrPrefPaneDevZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B78EE0C28A562B4009456C1 /* VwrPrefPaneDevZone.swift */; }; 5B7BC4B027AFFBE800F66C24 /* frmPrefWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */; }; @@ -165,7 +166,6 @@ 5B0E22A528FC11B900EB7ACA /* Preferences.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Preferences.tiff; sourceTree = ""; }; 5B0E22A828FC11B900EB7ACA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Preferences.xib; sourceTree = ""; }; 5B0E22AA28FC11B900EB7ACA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5B0E22B128FC318C00EB7ACA /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; 5B0EF55C28CDBF7100F8F7CE /* frmClientListMgr.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = frmClientListMgr.xib; sourceTree = ""; }; 5B0EF55E28CDBF8E00F8F7CE /* CtlClientListMgr.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CtlClientListMgr.swift; sourceTree = ""; }; 5B18BA6F27C7BD8B0056EB19 /* LICENSE-CHS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-CHS.txt"; sourceTree = ""; }; @@ -198,6 +198,8 @@ 5B70F4E62A0BE900005EA8C4 /* MenuIcon-SCVIM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-SCVIM.png"; sourceTree = ""; }; 5B70F4E72A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-SCVIM@2x.png"; sourceTree = ""; }; 5B70F4E82A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-TCVIM@2x.png"; sourceTree = ""; }; + 5B72D55A2AB98B8300FB88CE /* Preferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Preferences.h; sourceTree = ""; }; + 5B72D55B2AB98B8300FB88CE /* Preferences.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Preferences.m; sourceTree = ""; }; 5B765F07293A250000122315 /* vChewing_PhraseEditorUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_PhraseEditorUI; path = Packages/vChewing_PhraseEditorUI; sourceTree = ""; }; 5B78EE0C28A562B4009456C1 /* VwrPrefPaneDevZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VwrPrefPaneDevZone.swift; sourceTree = ""; }; 5B7BC4AF27AFFBE800F66C24 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmPrefWindow.xib; sourceTree = ""; }; @@ -347,7 +349,8 @@ 5B0E22A028FC11B900EB7ACA /* Preferences */ = { isa = PBXGroup; children = ( - 5B0E22B128FC318C00EB7ACA /* Preferences.swift */, + 5B72D55A2AB98B8300FB88CE /* Preferences.h */, + 5B72D55B2AB98B8300FB88CE /* Preferences.m */, 5B0E22A528FC11B900EB7ACA /* Preferences.tiff */, 5B0E22A728FC11B900EB7ACA /* Preferences.xib */, 5B0E22AA28FC11B900EB7ACA /* Info.plist */, @@ -648,6 +651,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 5B72D55C2AB98B8300FB88CE /* Preferences.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -754,7 +758,7 @@ TargetAttributes = { 5B0E229E28FC11B900EB7ACA = { CreatedOnToolsVersion = 14.0; - LastSwiftMigration = 1400; + LastSwiftMigration = 1500; }; 6A0D4EA115FC0D2D00ABF4B3 = { LastSwiftMigration = 1400; @@ -956,7 +960,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5B0E22B228FC318C00EB7ACA /* Preferences.swift in Sources */, + 5B72D55D2AB98B8300FB88CE /* Preferences.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1157,13 +1161,6 @@ INFOPLIST_KEY_NSMainNibFile = Preferences; INFOPLIST_KEY_NSPrincipalClass = Preferences; INSTALL_PATH = "$(HOME)/Library/PreferencePanes"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "$(LD_RUNPATH_SEARCH_PATHS_SHALLOW_BUNDLE_$(SHALLOW_BUNDLE))", - "@loader_path/../Frameworks", - "@loader_path/../../../../Frameworks", - /usr/lib/swift, - ); MACOSX_DEPLOYMENT_TARGET = 10.13.4; MARKETING_VERSION = 3.5.5; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; @@ -1206,13 +1203,6 @@ INFOPLIST_KEY_NSMainNibFile = Preferences; INFOPLIST_KEY_NSPrincipalClass = Preferences; INSTALL_PATH = "$(HOME)/Library/PreferencePanes"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "$(LD_RUNPATH_SEARCH_PATHS_SHALLOW_BUNDLE_$(SHALLOW_BUNDLE))", - "@loader_path/../Frameworks", - "@loader_path/../../../../Frameworks", - /usr/lib/swift, - ); MACOSX_DEPLOYMENT_TARGET = 10.13.4; MARKETING_VERSION = 3.5.5; MTL_ENABLE_DEBUG_INFO = NO; From 4ff185687be9d2670f910a6c281ef59c00e7a324 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Mon, 25 Sep 2023 17:04:47 +0800 Subject: [PATCH 02/40] TDKCandidates // Patch `.kern` for macOS 14. --- .../Sources/CandidateWindow/CandidateCellData_Core.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Packages/vChewing_CandidateWindow/Sources/CandidateWindow/CandidateCellData_Core.swift b/Packages/vChewing_CandidateWindow/Sources/CandidateWindow/CandidateCellData_Core.swift index 8b7f5bfcb..53d59b6fb 100644 --- a/Packages/vChewing_CandidateWindow/Sources/CandidateWindow/CandidateCellData_Core.swift +++ b/Packages/vChewing_CandidateWindow/Sources/CandidateWindow/CandidateCellData_Core.swift @@ -147,8 +147,8 @@ public class CandidateCellData: Hashable { noSpacePadding: Bool = true, withHighlight: Bool = false, isMatrix: Bool = false ) -> NSAttributedString { let attrSpace: [NSAttributedString.Key: Any] = [ - .font: phraseFont(size: size), .kern: 0, + .font: phraseFont(size: size), .paragraphStyle: Self.sharedParagraphStyle, ] let result: NSMutableAttributedString = { @@ -185,6 +185,7 @@ public class CandidateCellData: Hashable { public func attributedStringPhrase(isMatrix: Bool = false) -> NSAttributedString { var attrCandidate: [NSAttributedString.Key: Any] = [ + .kern: 0, .font: phraseFont(size: size), .paragraphStyle: Self.sharedParagraphStyle, .foregroundColor: fontColorCandidate, From 3a98021595b3894b36f0b49bf637cd985a7dfde6 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sat, 23 Sep 2023 22:41:44 +0800 Subject: [PATCH 03/40] Repo // Deprecating Theme Color. --- .../Contents.json | 74 ------------------ .../icon_1024.png | Bin 76057 -> 0 bytes .../icon_128.png | Bin 5717 -> 0 bytes .../icon_16.png | Bin 957 -> 0 bytes .../icon_256.png | Bin 12509 -> 0 bytes .../icon_32.png | Bin 1638 -> 0 bytes .../icon_512.png | Bin 30421 -> 0 bytes .../icon_64.png | Bin 2959 -> 0 bytes .../ThemeColor.colorset/Contents.json | 38 --------- vChewing.xcodeproj/project.pbxproj | 4 - 10 files changed, 116 deletions(-) delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/Contents.json delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_1024.png delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_128.png delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_16.png delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_256.png delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_32.png delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_512.png delete mode 100644 Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_64.png delete mode 100644 Source/Resources/Images/Images.xcassets/ThemeColor.colorset/Contents.json diff --git a/Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/Contents.json b/Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/Contents.json deleted file mode 100644 index e58fc60f9..000000000 --- a/Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/Contents.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon_1024.png", - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - }, - { - "filename" : "icon_16.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "16x16" - }, - { - "filename" : "icon_32.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "16x16" - }, - { - "filename" : "icon_32.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "32x32" - }, - { - "filename" : "icon_64.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "32x32" - }, - { - "filename" : "icon_128.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "128x128" - }, - { - "filename" : "icon_256.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "128x128" - }, - { - "filename" : "icon_256.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "256x256" - }, - { - "filename" : "icon_512.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "256x256" - }, - { - "filename" : "icon_512.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "512x512" - }, - { - "filename" : "icon_1024.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "512x512" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_1024.png b/Source/Resources/Images/Images.xcassets/AppIcon-PhraseEditor.appiconset/icon_1024.png deleted file mode 100644 index 5b14c5d7ef94e55fe9847663cff661fdcf46c4d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76057 zcmd3NcTf{w)b`y?A@tCsNC`zjsfr2+l0{HZQGy~xN}?j5(o_@#Aq%LWAfTdP0b)l{ z0kMD}iK2oiMFc@wB8v3hLy~>@%{Sl7```EPm(5IecQSYHJ?A|4ob#Ns7iha2r6trP z007e4oE&xofL}Vr0}^iO$Em8L_`j<_yPb9b6sJoH_7j$_p%c3uH-qQ(>H`4a0L|HL zi(|O+(*6JE2ZF%=`Tp;JLNG)m5Kotc9}HdVzeTNJ$BJL>t4=cQm)jq#D5k}fov3qL zb>hON^R^m_<~y~W!w0I5wZA>0OFMo2rp2ERq2VcOU+i4*?mmM}(+|r*f-YnnJ#ocp8^0F%V;Hvd+>2l0jr`Iko6)iQ$kqFjQ)?4fd7htYNtkGg zHD+WOAGkW!a5}Ln#)zIi-FnW@`{EGY~S|(>4x@w2pS8v zSQ~IHw({i3H=$$xYh&I;OtxM4?PoIJYckWGl3AB>xjyNS$Lit38)iDwCtA++R~;Gf zF}hrv%-f^i>uY@RQ+#A;_@MvV^xAX7p_UWB(yo0^>D|9(-O-%>!|O*|E?#fAH1H`n z{qy;Ok4I0uJbLN<+2k7Z!Uwd?+j#i6HIoxLu;1)LCHgyX{lGEnv8IHP#@K)Cz-}Lt zKSwS5LahFTZM;&Q+;!AaC=?9UMQ43aJ8^Hz!1oJT-&1*e^?TU?GBVQh{Q1$T$$O6w zBV)t1BbLeK%z=-=>Ke-jMtf~+H!aRhER6ka39{h*Yk%~r%Efu>%%AVPeobsL}OLsySVoy z4?>Oy?2cxIrWYpNdxxf6zxD9NwcLz?@Ar?NNpfc#F3HK5s(5rTEEC+xBwmI0jMYRv-YzkZM zsF`#%dE4mmW2?1SpT)0M*W1j{wL{&EzMQu-WAt4-i*oRW2^7+Lv3xT5L*3rs&G(gR zw(o6IM{2~BOaxm-_jp>Al$2O69btM(wb8i`40gZ1suLH7W%-8M&i`)={(pYXTQj+; zQ$gU1drEu(n`x5p$f65X7_&YZMg%cr=}}w)c>Tb3!={G}gw$NU;HX8cnK0<$ws2pv z-)|@#(?hO0{;^e4&>W?3vgUk5!gZoQj_-5-L951{{uVNX)#H_fo$nPnd2_X*yFJu4 z_EcVG-(~&H@rua3xjmvIKbi32&R0e?;!tpO+ic(y4D2n8|3WOzxB;K#EHcSxVuv{`=}YUm`N<*EtFp?}GA(MEm7My~W@c_x zRpPfZHTCgN$;dOY0Je+h%mh{Oxt7=wL#;g99A9b2d*9EobY*Z80qfNLq?0CFm3oqL zvU0Mvz3u5gi-AA=5knigLVdMv`n7lQQ{&03WefP_b zk${pM!HH+5N?P2~DvT?ybZ1WtUqb{))7V^}kaD~- zv+S78Rc#3ZQ+|FoN{Y(nm-jZ9u}>M~U|Z)!5wBIYKR+K<7*JC1=|Cx2#MWp}onG^n zT$}R92}5~e%G)-Y^qiq3$)tw9@pQF_^N7{3@rNU-^cN~*nCrjzmTXMycbdb?3$Gqy z%~5PBeDtkS=Ig@!rfTn-${dPgGoM%1H}v)O#h$Lo%S(B)R?c5tU88*)ZyQ7>QGVH% za96RlMe*aJTY1c=XshKi$|=8kor^LmVi#vu`)41xKawR%GQB@_S-3wk;~@5R7cb_n zZ%t@Nd6(aK5%bBB*kIAde%RlB|BU>pf@7__bUR;n|NV!aaTt3k*lCDQP|MrT&Vd5o zU#fsN8>UekC*lza9I&9ZPcD8YV z;o-_N6Q?dWW2^V_FSTo3EUa9$kW(tbd}JsyVPM3}gzO}q)?LxEfSMMfTQ{B&bep76 zaqYj|7!T1=iJPZLnO{J;Z1_v4@TruUJhFvTrU9MUA2+UdkFimSnq7OHH@~e@)^al^ z2bzEVhOc~uJ^OclF^}o#TbsbXscN(?PMC-%3DR%IRmJr(6sCQc{Q5yNiY~ht zQ)ZfPtw86EXR8x27mj#j@nWaAY7ttw+bpyNCu4C$-Z~ zd{=VbB6C}vIqDQ2L24x0s0iOpGPOII(Pi0nCb$3-tYlhtME158(a~%usoQ$SRV40RpT^?TECO_!Bpq2jQr(b=Cv(S;I7D%C^mzXloar25O{ zSz$AP_~Ue&v{BZc8}K7Lb4C*4PNZ}v7E^D|y2Qmr8a}0;n=GH9`|riV`D~R-CY>#8 zWW*zu?IoPr&ZNz@?mwM=+&uM#&78|n+naR0{&4H0R$kmo8(ZUiH!T(n(u4Y4vbkMtBAy-+B$bJ*VDzhe(Fm{ENbe}--g%Nq5E-BZ%w@g(Jxy% zp3L9GUcTA!?{GqV;#uME(;tp*lAK?bprpg=REG8#!VkX=EF3?ryO~#FhPP4W=oO{& z%ZIV?`3|iI!WXlJAGHTXEBWbHZm}=Fn;&w}Ko`%jt>yyD3pYg1{N2s2JV)w3=e+rt zx5U)R=}HZD?QOzMuT^FSm!Y2qWZ(X)8X~H!QFUtbn!40OFQwWM6o|f>cwVGH|e3R>C4l2|COAzK4P_pDK+R-{l^=YWN$4z zDi$!&I>K(}KX{03uVSBU=LQQ6hv*hB$3kDW8dkque>mh;$U6AXJn1!bkh_6(1g{td zyU7;aCd!3Rb^bTKcTLpJMZzb#i70i_)EZ?>((BwqG4q+ZI?+~q>9py7=9x8NxpN)I z>4WSz-$RSantS)K_7NTO6iU-cPP?GrdlM|4NLwyp#RJpz5+s(ywPV*#|DrE+vBPFt zO*cjh8dizQX8Zhp|LCwi+8`4y&tl)|mohs}X(L>Bj(;kZY@(bxN-;||kqHk#;zcGRVC36dUZxYwD$13FvKI>|>w8RtW1JW4T>p z&tito8-kUDAOih~WcJIwq|6Y)8P!JT&h2{N(4$?1(ooHw6f|TV^tFG-R*qohCh=@J zL?JxAms^0X{>eP#J0EkyOO%p3pMI11=bxX_h-tVlcUQBrg{_^u>FOXDw-h*X4qzG6<35?--m7C5CG-IyZA-JbuG+ zv~U@N63`CKzp0r9eYn!}!`!KdX|*dyJ4M!ZF)1BCmt$zFePAK6uox3zL#P5Ip?c#2u@Fo5j@z|P-foU`6PF2Ps*V_m?7J^AN>vo z^MQq!hQr?oC)5TL!w7&5pRF;XJ-RKWGz zy^y!wg#W5Q6!W&8%Hj{0pm#r+&TP8dr1d+UhwH6PDM?IpyMy^}^i7krJk8m_8`=D9 z8E*hwq_8w4Xm$vfc=iKxx9AIR%(QTYFv%DbT*_0}F|Yi5vZ;paJ8dPj-wL_C@-5$b zR`Ozn;P=%h{5M~*6?6EvXr9=-7l-@73)LnuI-p1;a-%hZ2$`?mpTpc|v^+)U%(1J3 zpVRGkEELQMf}7dp-f`daCLOO4$XZdm*F8kNiY@raE-8wfH0AIf(bs<;*i&mDW!do8 zz*D8IQakGI3vd%}@CFwxHvWTZh#fsMUl@jkSYYdZVGhT-98(0+`e)(?xqFT4@yA83 zs~5J#%7YhAu+^r1`=ONxtRm%Csm|JxXF753H^JBh%%Lkh0Uo}eMM|LXc8vkwYgo(4 zI|BCWRhXKv;45|~{CCo)V_e6W^nJ4e^=6k%$QD320`))6bA?`^>T>8_9J-g9E%R{Z z1j4ikItiiTz=qQfH@l+Bc=a{1mU6Nr33KQujGvYvJ7bX>GJCa}MIG0ent(USysyEB z@|msqasPnTS1>7e{kV(?W<$LFdor(?gftfxp(;mXH|FnT#qIhPCT1h|G8;7Gg3TCS zWZEEhBOcl{9fFL3%6aya_t>7fX}X6fP+^(KyM}(ES&Sx#wA-Nr)F%1}%KR$#`n8;o z2spM-0C{hRvwyPx#dF@{1ZJEDm?aagw+rti)%XVLdW8)M{^k81O$WWqyS1YIE%X;C zZLlx_q=6uz%uhU|>MeR`A14-=pgf>MzS^#iRGmOm}|LWR$lZ0w3`Y<)O?LswxSvyna9~ zAjG7R2;VWLtiz9w$y2|ZBlo2HH8@__eF2x;fwhi|PyyBw#(!4D^j+}yLcbw=RjXyN zSRsnnM=Ka4+EwAyAHx@ECCkK|8r8|VDDDQRZO`NJ(>DtI!7=!ixMu=lNIYAFnuP#e zU`3)y6J}%>515DN#@1JeID*Eu}jGM4JtMBr0 zUmw2#9d!EGMOCyNNdyP(#!2=T_;7;YQ_s+a{Kh72o>Q*)6&2q5uDAcm$R4v8E9k)X zw9eAKMMGuOe34e!C4r|?o<8cDt3b^Ex3~(U`!>EU^i28GGwFF4q_4rt=M5n5q88wq;LF-{hIInO0@6Q zSSB|o$9HlI)=WWf%L7r2TO{^C(D8Gj#p?&Cbi|Ka8hdn+#__b()EnE0WZbJlb4ZDl zZNt))B>e&Z9wSGfxoENQR_fBsj{Kqa&C*+iw@R>0o(qwC*%g*B529#Y_GQcM0_h#S z>2|DmD8_WVNIw$Rkwowr%{`9%NB9g+<+wctWDd^8h$97QmP7h{b>5?yZs_SuLp4^w zndcI*S6%FZM$_?+>4}14pFEylgpaR*YrH^)?^fPP?fcL{b%>{eZUzBhD`=@s0ctBb zW70u3lx#wT4CL69V*haj=?z$d+9^K!bk=9=(La7+D|?l&@3~;FI^X;UmV0t0X<6J2 z$Uxi;kFEmMOpm_HpZ57MB<8i^GTXKOtmL7d;1K#m8d;z(JiwEGq;qd>xCI#yvyC|c z_8cX6oeaxTm30ig^$us*g1t(*KEd9}H}&H?nj=xO`Yp_(3qujq``q6d`d}H<*o6t! zzVKDvt2-_}gSFvgXi^A;@;(OAlXi$f#ksgfTMic{w$sRIkhT#A51H7ZodmazctgQ| zi?Ev>YZh75V#68i$$Q0fToY!>psYJpe$$(bwgpngQ=RGo?o>+6e&1YIoPozBPy>@- zH~j?pbz*LFU_S}5-NpC=g-d#B;*+gVkw2&Q$QTG0atEJ?3Tmn1*n@-2^OJ>fRp}1| zEqn8la~D}+eosXnc$#{iW9X3luj-Tu%M~QEl{-Nld{{m?2ee=g2>1feZbFbM=<7?A z5`q?K#c|LNem`iaOE7c=mpMPENBxYgOE?*ypj$=(0{qCu+TXfUIDXimaT{#K7}oR zBPt%HS5E%$6wd5nQWgq|@+4vn6o6=$C;LlSsKF~M7r82iyVu59uOOqwtW#*>S$U8K zU5Q6Qu~FP%s}qQ)WIqh=v%vi|+#F5pM=;R{)tXOTlO{s$G7|;+2Ma$H>VkH$)ImTo zU27_I{ND2>qTmbpy53{n%w8^%0EOav0EcJI;mu2DB{vEI$mO`50w{?Iw~X@Wqmtnv)*a z;`nWjux+4n_DV?tsIc5tIy1Wg;c2G;EcAq(90&CIsM z8=T6P4BClZX157OkEJb(xsv@e+(szGywh z>^I<2HF%a1FSe6d+bElsA?m0ZvRRJuTaKccKO}NLA*Y+KySYC#qeo57MY8A|2oy8x zUJ59HC16dlcg@h3W9#XBbA|5tdreddKk_>BfoT81AIw0@%pvM}_$T4)VbH%?8|cR$ ztcP}A1bZdToMsi$fZ``^k&zl~OvIO za#5Sedo5Ug7dy2u7Svnl={3{)89X5|l6HaKPkR-E-z}`^%1z&hZw z!9hnH8KDH}lbc|FQjr9F|4004VyUA#&%FwY7M|dGJFk(@NMkE0Vp_#ZD1~bi}y|hx=}yISmXZ3-VKDybptp zRR>WwfAqz){+eyjK_-r8$%>I2PXfN=#tmfFEz)2$vo=|X)( zkTgim6j-PNGR&D^Zk+`|`0(xvki*!Ii8HA-ykZ?9WfkKbD7F!AejpZP%+Z$Ue<Z@xHgG~6drI-Ok>6UFGn#r1NP1rN>G^3DUR0U0o;c6^7 ziPTnasP&aNEev!@x?vA~W2!Mj9&MA{Q*|x{{G-BqvW`m_%qX5r$8JXkfbX|F9tisM zh)5ES0CQwmw+NHR03Ze#G1?D6vt&SmpC-ZA^l@5e9z>u+njix-vPDx9*q!lude`^7 z&{}4}?1j+*Wuby2IPJa@3J0_ZG0+UrWNCG{aiZC$M4&+d6R7c2HY;0f0}*Fyihr4g z&vEm>kIRHJACxJDzat}M5CQ{FA!c19(yE{DqW1 z{q!uID)^Jnj9l=zM%O`i#seoo-dxn7)fpKXv1k*)4e(qbGpR;T^rRLD z!oh3Mp58lc(9e0w_{~pX5M;=L4=v1z;V?sy=?;+^+@?rk7z~3<05%dMM53ys$mg!_ zJCsjk;@$s%ODgC-RJ4`Spi~P3GOw9fY6f)Cd$vT{2CxoPOwk@N3;9%q0Om^HYs?)B zvPTELs&f7XY^??*Hut1xj)34V5j9awWp5dxGb>J>L{HZmA6tfg1jWDCB4Ltk5}{BC zx$zo~WQC5`l1+%Er=@S9D}fV)Wb+$bu=g7<>+9IVQa3y&4KJsVuYjlnBn=YIbwmpn z6RVoXd%Dipx_C)tY*0b{v^d^+Van=ONJyZ(ZmbsPsE*gqIM)>FfnVBl$&ed{`X8I|KMis>tA1ej+k!v;+J_q z-Bh~e#ASEMmu~lus;gzaold=5h2{pgRpt7d>#Wt$HK#jNC@)m4G~D+oN5gY=ymD+x zSgCxuMkMv5xP=-}a6_fF4>4wgCc@gUFiY_UAlVW9J~n{+y93o~A2>0eYXVir2=;L_Yk(c4FTU!?7S0MtWXowF z`rku36MtKmxe$XS#_M+91SH^I3OR{^pQ5o!;hUTZtbUf6(=Gban}+#b9qQj(w= zFZ4FSBu5;@pV80e{t3EPoX2k5yuUOk#44ci0jx2L`J#h; zpKp3k7 z`-rGlSMa6`IM06vWSBvQI|AS)FutW8WVT}O$Krl=iPp2zb%DER_~Q=HP9m4!=3j(Z zCNY~-cxSZ%TLrYCDv*PsnZxbD52&8B-XgdtZIB2Z=gKUbgWsz#zDNNkKKR~CQC{?1 zhZeSDH8Z3w&^XQt*Pp*0e8Qe$e@+4F>q~vIP4W}((|w>TUKAEMCXfCAmr06kvTOGs z8f0D}7;r`Ff%S3uBIlJ$_zTR04DMl%Ot87mc`Wuf-w}^l!u|dDqC96vYuM#cz6M7> z01Bd>b`i(*8HrWAjtm>qd`Twv%ae6hu##2Hc7ROcG89B8_FuyRJKn$DH$VwA@9zUB zi|@-fHT>UR0Bm}mdjZRrjhoM+_Akaydf+qKaj9{eve$~C(c;rPJEG$rA)KR{xcfe+ z$l3EQu#>?htX{{_fwn1TOhS63d>Zs}j3CI2UhP>S9lrmDGq8k8^`t>5Kt`||Z?I^; zS#Fc)*mU|4K7fi=u`KV-x%8|+GNGu`LCPozCY5j&FT>%=lr=~jTAl%?+KH3C&cfF{ zaG_)h8i1=kgepQLg`%75p}H+V8pz{{OdwXOC{H-7zg}ecNO-iDeNG{MTYxN$f>aR9 zV$m4lUv@~}=}5#&ELuAe-SlT2JZY%kpwSUJ9(Jxkg;#sy&=<&Doac27gk}># z^OB+PJMZuEC zpmEpu-x)o)PBQI-8TuLUw`P2U4ibVQWU^hrJwCn5c{%z)NIwBi39#IY*b@G{L<+yL zg_T8Hfej8(MY-)YQ)($7QkM|*UJtcHZ56)hLlU?T3@K-#eWDy0Hgk$#<>RC502%Lg z2iy?*aO%o7&beN*CHGhQfsK0^KZG?3wHQJyKvo%}n>LF^#srsZsoJO~-VJaZK@GlW zM$8?whZS+91GJHd&ykwB{e8Q@3Ml@z*jYfr2S_ESH^*<54^M<4KRfgdd|!@o8B9E5 z9jbxeLX7z)`fl`NtU^^KsabGiIb-9`vc{WmO ztMM>{Vpg*a$PlDbpm3EaHAP0Cg}3O4eE1<>Ix%P^><@TP)u2#{GRP6qJFt@`cs=Tm*@c~9hW|+pp4wDwqy+Ll(eBe%GHJlsR{lQ%=2 z5^sD!R^uC!AQeJ*A#OZ`^-vcf0tYzCOAKJ5yi_cDU_r|VYuyow4IZOQLJrqV;v`l3 zFPiUXsvfrHXzUfrVPlT$@JQe!&a%-e;J@Vb=;eq>B?=x=PzV<$UX+HHCezGF$SM%J z!mJ5CW?1x{#K5C2>5_9;$a+!7=jJ6Q;rn!$5z}w7D^%d!Qke;6>FG@eK^dN-4~#Q$ zQKQ;mg#Bc(qGm#z107h)3WV(XucPsg@cCvL2XKQlfWrkR+~a)4an1)~VzXFu$HN)w z0pZmSHbFSGqA=$&Krd&2ElcRk9(4&fU8p!5lXK6#V6$`-$(a}-LjqDNQUV7~siq+3 zjdXq@UDC;K&XuUs((rB96H|Vn7gZ=JAggtGDjk=8C1#llq7L@hh?fY4ETL3A$O&tRb2&!jHN2kldbyhF zs1MaZYDE7RAdH~$_9`fm&c6(?R1gYhyS*Go5||0;Od+>SOnR8#2S%oUY9GDDR!isx0sp*#x9o!C~_Efu^D{tM6*Xt4Nr zu{kK3!)`rqWj@c^jin7UzrGPzLF22Cz_r^+NGL>+<|LhpKjD)EzYOrwr%b*i5{XFiNU5 z%5Z>|$*J7Eg7TFpiJ*MI^!yry@W(eu0OokegBnS6L5OLd7Cs`29@&n0PmAu?#^&?Uk%!pv_j(< zZJuiJ+KPBHh#@u$@BM`ykU)IJ7>TIi(VLr8OlHfNBe;`=`@n_PYOY<9tAYGRgi=SvIEoFqePN z8jk`&t?&2q%Gu9;`*x2p<^K4haj23FsbEx(xz#a#}v{p@WCc$XbUk{l_i%D>T4bD=DL2Dy6-vvAa z$~LIJuyCCu)Fj7{0)3UetsoYMe#24D4d$Vk=F)i9wfK*Cv;EX1gPS8E$8h1LL9vx5 z!li6h8963w#IpztR8#D>8li1l9jpQeKVNS|#Al%<$HBNJxX;BN7l;Ow;}#nSmNv}i zsla-IguKL@a2b)PgbV226cYQh>IcVp8OKC&%Hr$`SISmEk>j+XYn6CfA}Nj>`U#bX z)Z}pgbT~?yP~7T9Y+;IOg`*u1dXEajeh;v@79>;$gkq|MkK!CRGO~%tYjGVa(K3@z zNn3ErFh>js6o>nOC>7oY_9%LugR{qo*nKi@cgf0lp49l)z=o#~`U*SR!PcA^JBmHF z#$xvf=N6BMqv_!8hXyI=vI6HoB*+!CY*gy&-@g^Mgh>*O)sWiK63!;g9tQhWXcypc z@wQ8W@j67G!@H#NCDEIZUp)-=gC)&&;=taY?165kN9Axzi0HA^QeN;8uxvPr<*?^B zAlMj|bLB+14Y3KifiuuYd>2gv<9x^r9~;GCP`+t9u4r2^|!fOC?NOnn_J8Ip2A( zoy>ax=40%>eB#vLd@`?c0>se`I2$ZDaT)0RhC{-ZpTW{;Skxk$;455Tj#UaBjPp`J zm?-D+YRnS%v1pzU6>NYC6l%NZ zpa%Y$g6Y2+AXpev%{(82*^V&v;^xQGx1ejF)SgW&@ec6eIS{$?lqkd1@k4&n&h{t` z#A*YoIL828FY(j^IqVfv2M|?0saM^~=e?2U>HO z$iS*tjMrdHm{+%+q}RSJ?geU-X_PWfBE2j(Z0Hg}?am*myp3$ThFz(eMf0 zcQ2!5j#FO7Wb(!RNPd@$#03eo7H!$58LJxwB3ead+E-IGA zRI0E_4QvI7*blOM#z4KK%6}BZ`a2bC6N$u`d7SGS!0 z+LN(G?oL6Fud}pQ4eNp3@+uqh$K+tQb;}YC(8^coESrCHe(NqXnfA8p83&DDUeQkR zl8&7dc1Ln!$8r|+7oW6--hA3#w@@EhIcD9LV}2WKw6xXOX;Lqvi=7BduTQ$S=ZjOL z?$!92y+e^oSK%8FI*r@CCmtq^%ev!}y`?%&XXIQ{MQ?++f4i1S07wGFGX+LFZeiLZ zT2DmPEclY=_})?)^?&s(6|f8;YCzQYs;xPd?pUh)Rj zuR**Aaw6|97i)WC5XW4nnwwW-s-o$a`gYI>>C%L4NaU?(b;K&OUsBmH9F-D(N|CWY zZ5bi^nmBKise(sql!5yJ8L;y)R+7oS@d51XPM<@?(Svt{c_qL7%?9sTs7bH9`g>mR z*J=J~W7F><(?i7!>J{m&dYl9Z0#166DYBcjlXq_q}Wdp8X3j7x5$!rBn>mJt!J<1?zFmD(3UYKV) zv)q-)IBySR00l<*R2s+(CpfPmN;w3^&+hf#MA{pdQx82EeaPA?SP+=^=}W`+kAuS` zvJr92=Jq93bR%RW_^1sSi|nr}RA(A;MZb56KCJ=e!WbFg2^6Wgr=px0LQed_qf$W? zI%DU)uR<5oD`ryOt&=Z`HdY5w>YTgahF3P!ufXvrr$OkXIImX`hwK*avE{$thY<-< zHGP9v4TMUdWm79Oy1Qw?ik49d%iv&nUN|_e%UN`^6&To1#34Ukx!qbhG-OTVBQSN@ zDC6G}(FtytDiF{NFz-0m6CWOl~Y3MrzhN}`&v8rD7{T}_i!!!~a2wwWxuP<@g z(f)3~hYZ~OU6DtMpH`*FCZdhUIY%ZhkzMgl%J9J-z&f(8CKmWYpqvn~{3=*#pY0c? z@ClsKG3>%L7Iu1(O&5fAMDF17?PkKx)-FLYXIV2KrvSf>^8W31Ai^-*_&WSo!4Hc-Ue!ch95YSR(ljFirVO&}uR-?6@57&a4jT!dEoBg2|B(Enj5!o5>I^cX|Acs|!wj zIY?%tFxO`RL>h>5p|`dk8G9uAy+9+Wg0tR{$hrW2IHJ@in?WG4rp+Avtb^Rfa|}Rc z(QJc1c+pC=6f8wxYyPDR4cCFT-Y|v#Y$A#%XzxWTgK2p+c=w@#y{Cv7XF>W^UAqcW zh8}*iKbk|Q1%h`g(6X}Otfw$Xq8}c2Tcnl>_Z*=bFiQ^FgEr8p4QH30x9s^s7{)aE zfU5*}iVfL=e6o`altyArNs+GsBY1qlXfKj3ee(Nek4i8QfwU-#sA0_b5Rtqiv zHM%r=In)F)Dv|)-6*w6n-=?H6LJibOg8#=^mN%pzwwFXy`W z2JrGC&~JcZ12o85@K5)lmLTDx6wA}--}gclm=q4=w9W9q+k2{##Cjm%bPcR!@27wV z3^9YlIHztwgAcZFrH3=5QvlZYyTP$@e3k0K&f#Y zrOhCCOw{gZccr`~&adx;#$AAe zI9kES+~cshTJE~4<;eO#!5e8L1*#y5fo_eRTW(XA%j(~Y(~1=owpx#*6R%EOXdnK~ zlID^qt59E&ie$cGN+)UDc_U1!S*o$mujVz(;L&_y_AhA#w7C#GSmMIT&zaf6yj;Oj z5~BY3t;Onlci!TAwkZ$e*4^9yg=+&>z!n%% z@W~8R5l>cvuO^}Ag55g|Xl^(Md5*?PXeroS_e>N9atD^95M<_^hVwjF1~R_xY(6(t zo%q9qB{?>?@}g5sH;I(sE6w*Ax@LuU|i$GsUJN+ zx?C{yoW#>XabSTqQy#XRv=ksNRB#sCpP$HS6zK2oD}A4n!V21S?LKpxyYbn-Uj zcF~s5M$tO7jCLN#`=eyS{ATav=)6I80aTAuM|by2m<54kbKnUB`F7@wXed9xgM9)d zKNdYu0WnveaHH)Xl<^`!P#fT>LIv7HG8vT~+;a|GJcJr|h*dnhCyiJ@%d}=LiY7Atayg$iepR`W3KyVyvO>ZA=Z8zx)V~HA>nGuNi^C;a9}f~ znv9;|SQ&?ax8g-AY#ibP`8^x~U(La_Y3#-R%zHxa^gMNsh?>=*ybgRWJLP>~p-(20 zc%`996j{9r68SfzMZvRP%5Q|PSHSs| z*z)ltlX&uSWS8*Gk*q8&&)S{MK>h1;?0FNPyW_;Fm=0|@lmVRJ{5C-AbaFt?TA|`l z)HCo;n-|wiY!nB{JJD|@TfqSh^x8VHaZ??b5`$SVrr5$ib4g>MA~n8$|u6wX0g zJY@=bycXHGWQTjSGGsvHZgrFl@#Mh$IcDN3EK3{?Ux>HAz%-3c?%RAy*hkzhj_{SM zp1)pxM-O>7x)oZZz@l*m*)#)BtXSkthWsVto$Wb07In}xTgnaGac6YlFA3Fx@Q$b# z0bMnXt^J4H$QnC+ac2~6oW=)5h0_~6`Fk@?;ntubDPUbJk?|`>_e62};KpN7uFsCE(?RY0(E_?i~T(@qB2jrV*ig65cIi_~3! zw#XF57yfMj5Z963G=w2{;PGX!$Gedb4}4UwK6F=#MPvPBxY&{!v&ONFPkJ)eBEa9{7aOMAc3tH^BQL%+QzPtF9!zP=w?7I3!0LSt6Q9TRe6_P&-viXlceHlRY5kEcf* zteYpI%GN*suwRs;%Vc_=C7foO|x&y07bc;1xO1 zDTr%c?zz8ydb0~f@OYBYuj)J>9)Z}Zf&bG-WR5l1l&m_mMU&WPNPJ^BOvSsbcr9aS z^o`J7RcS69QiiLetpT@(xW@1~i9g^3txZYt9r=*Yt-keo#v^Ft5H^@02Do(Ry`#HX z$@y5q8SsLEr-syO6H027ceJASD!JcASantI=NbsfWBj3-??YF5a(b%dZ>-m$lUXdk z3o7NOAQvJHoUjN*qzyYSSrL~Ui79w(rz-w&pAv6a5d$0Ud1I`|XVm07lmXFSa!7i$ z6%K7`gL}j?TDQsPn2A7xS>e6PWSmed>1!kWKpo zVi0VGz=N_*BRDdigUPQ}$^YG%kZ_-dN=>X}OdWDr)8$B3iZEJo5M(YCp2ta=dp}iF zc(Os^ev7%c%&?&)<4p=^O~<@xFn6?dV@A6L?<3Z=8E-6k>CyB(M*z95c-T#S*@N`N zy=hED4nlQT=;5ERHhX|0g4v}g=W#Wy!Fd$2xU#3zccflgBT0r$g*Mhc^ zzn9qrjm29>)ifg}XdGjzmm)D!KD8MSX@TTZ{H!kSb7eua{NxYvDKurGFcd3t{_xmp z`d!GKEg(zTvAtOCiTzwHv?mRkFKP&~K<=HPpstN|l*7~{xpP4I5<%=d;pk5l!V5kt z!f85kmZeAH92TjfD1fKRpm=)tajc}^8+OrPtnTcjvsDIthHU;cI~={z1eSdI5;>V3 z8A7dfG4XZ8Rs-TW!~Y%``3hKx%?kzR{fhqEF@e6kaxo9C>A;%GC;OT-;3Q^pZ=Ef8z#n=SE*qQ>jm(g#P%+9q8(~Q^A6u`eBnYL1Xk+1Dt$0y1k<$UaTwTy!%_29fg8SrH zBX4I@dGa0~Tx^FWt0C@AO!zV})jkB2oPz$5;`@?ptKr1={GAao7_T-7qh5r47?hR# z)xLILDC5|SlRT8XKAU}npA@A!WpivvHU>`#;rPg&b8kb%Ses*$T zZv2Ro)%Swzq>;haZ8OskxDUvkJ=lODJ5#8Zw#ry1Hm%}+e{d!oPzaFj+u>BH(}liu$dyT zlNn96l^@juu`_h3=2Xby76a#3>q~B75pz<8?!?hxwyfMrb_JKd(nJO1Tql$Zf45F^ zz;F5ra9Z_m+72zO2<}J9PyS*E*M0iX8ts1a!MC;T9 zKPiq2z^#Ky{F(#?G~@zXzR2EZeK@hg3qImqPoz2DD2?1*N2FIpWPHsrUXe;8fETwP z4uk(KAZWsaiyso$`yTQQ-M!23CShGgqDaYkd?6h!F9e=9co+aaLNZ=r3WxP9DZncs5&-0i@GF2)0nU(DdvtLSKGeSyxNio-+i&1KYyn+qUL=Jl+{rECagLDx3h)U%FrVuphX3F%0~7MFJ=iTBs@NN0~Z>jFoWQT=zubL#l7Q$^{ZhCUJWoAOO_Qn$c{<` zLB0pk3tU$ld;dVVhyfdD5|>~m@A=>)SP$MIaIr(~m?4WY#;f(&tmq_dm{@(IBkFL# z&(^!rR+n_)MlCY#YGw!!h2(n?(hJh0I6iV)MccQXs0L3*6v6S%VMO?sC}OOKlxG0| zXa1-N?n3e`={j1>i`_ea#?J8}}@gn&@AYm$xBz`LS$>byrP3#;?YR zZct*#KZs18cYQdMM5lB$!sST95=Q4vqih9hl8RL%+O*_qx`$tkxmKe&eQF7J9n-RBC8-jr3&krrS(rD|AZpLtS zIwBf1qFEP9ea>G90`i%E_{S!UGx?t2<~fl(VHB-&>Ht=Ohb>hS+EaRMS)}SOc6)L& zMF_dZ54WZv3Jz973kJ=UyS8cx!k0Os=&8BismT%g2Zp1cQ#ie_;Sz>0@WaJz2j^UG zJKE*+oJqn%#zqwNL`-SK?Hj)%B{_ZhEB03%?G8%fp- z?fju|zU?#dXP)E&4lg-ojx({kYb zB7v7}L%eFW8BB(ZkE@{T659WW;vJ!y>H;B$V2drB^5i$O%zvmlf*I;cHb$v1Y!D@6p{{ z7T<-D;41vodD8&vX_g;dP{^;EHZ}NU4hX2J^erl=f@?rgxiAgQD=?Q0mJ;=c*t4AI`k$WmvK!CtQatVUxI&R6stZYEzKZC3%q=FBXD=siJ}*Z8)SRx@iN_ zikWa~qU5fcXa>$%1}=)#nrJ=alp0|L%Ig)PzdVjOq0@*VZO$X8>{H?l$*ZT}$fr;3 zDZVdJ=xZRbHnBSmaEuP$huL^^wN>DXr8hA9cSt66ekWMlf))SkkZaS*C z!+z}so}@rDlV^qHV$Ky;3CxdvObEI#|CG!dgDsl8C9U+_4$7}d1o^tz#Gr1jR4Lg3 zE`|f^XGsGE3B!w0;hRxw*7MfWQ-Kck$9JQRl%1$0Wm;1w<1&a&s$dCg#W@N-V+z1{ zepUGXhrC-)c6iN0_*P78RO4x3`io#kC}uqy9ibDYeMaYHb6-)#K9V*{93kcK++pIS zc%Ar{D>dxp*T;Mn$1XNu*U^b4jXp7jR*L#IK*#0w`w0BVt?T#kyG`(EjGPDL0V}ZT zqdHrz@5J2BzoZlIv5$`MZS=RvVy;AnfGzW&ik9YM5>fAF1M%}lYDlw#cy0Fi{kijk zDA-sAIWc$XbFNK~{Ok#$wVv1!x)Lvo(Xbd*GQa{ZP2(H|!A=m;c?SJ%nq+o3@SZ9* zWD}9LlA5X({@2CxoIGS1bS8y!2-AaCD^Z-62!0O8vZ$gv+Tdd)tpbW7IS{YcRVYbp>%JRO{U$hk_x1idVI>Pk=$=E(qUNwc2CC)jVtc?d(6FVj* zll|=auB^Qj?$dZUkjdc09Pk}`@+$P0K1zTP9bpQJ9?PC*tg@urW~j#Au`|0yTd$j2 zPq9@>c+uN>K}DpR03O3DsX|K>$uy^fhZfS~JkW{2O_*=jlgUc32^U+tP^=V*d~M!k z6&UPW@xdhOoG+)D#!D2+ECh7t+Ks{=^Sz=BN5+F>0izQ8wPlII@Jv;5HVH_4uD~Kwj$5NlPWLaV;T)zR!1W3WwVVTci^7hV{_B1h(`# zHdUDSL?pZ62U<^$))&G}g|12+(5a<0TxU$z#$-zK5KEodrP{!N_AaQd=lf8XFPSV* z`$iX7iY&(ZXNiIoep9?c!}orAX_|fFFn{j5YLoh~_pQ?{#U(xLK;l5T7LhD}rYJhZ z#KfzSxgu$VaOVMM8O`n(v??;h6Xz6#DS;4uVMN8l7#bYlTaPX-c-|`snx~8gOw>R? zZ`7}wm^LputhrM*%}J@Rz)7zvO*m5iFph=PAq95fg65RvnE4bT1X9`w#22oMAt9TB zPBW5=jQ#@;C-~OAz+Es!FJ|`*ra1q@Z?P#y3p=tj?m7Q<(-|l6iJv`(u4|a)i&JQ{ zLZamq^OPD2Ap~HezS*w&C$2jkA5;^Zr}7M8kcC!JIMv}=nDcy@ViR!+rl&_GP=a4a zz53X6WD4%$UgY})UP0F;3T(r3D~PAK|LH`~SV&B#@^JCOPc)7O=>7qROsNi&qy7;O zlNiDk+V?nR=c2DsWBzZn+ZN95H%Wk5w$0RbDgh8x$fN0os1tb_;up`>@Nis072m{h z@zfxYc~c=IoYbul3r3|?MncQ_qbDQh-e-u`Lxy~AHKl9r@A@D2sjjW}x6OXoTmO20 zGGh+A`R{+Oh>SZ+Yzs8}rgT{o*HlxDuLLc`u!Z*`bfMf-c=a_Cjcp~oL2|(j zG7p0OYZ^y$nV#&PI!~rEjP2E7FFv9iHtW-UiAj+(r)913UyJw}{~UVPB88a1!E;{d z*m8n|UNkx7*|81*F&n8K>sa^if*~C^iYSq)C@igMJ%sC^M0}+Q+m6+6v|)+t%IWYu zTW_4*qy_n!AJ3S<9a#UIbt(?h{|fY4bqznTYEQyyHp=kClbP_+kp|Wj&cD$dPyPnF zH!ffZ8Q@JBV5x*qX_xPJ~NpsFkeQDaR>Iq zwN0N94_a&>nPwHeNjQ9Cf+*QqSXxJ%Ac47R8}Aa;t`8$W1NuLt|JZ!=d)|g`9^v?l z_l^yP4Ra8J$Mjr{m_1_#v4OYoSB;=RAeJIAU4h^;IZr7Kd$J}GVTRPBu>7PdPK`ox z{Bi$gua(h#_ktZKly}KB$;CI5?S*?#QGZYj=;F=TIc(Toi+X)XB7xg zD9DN?*a89vXj?5T&B$L64=2^(yMmZ0P;FuKKMx!VJdsgLY2uFz`Btg#z;l=LKGJhr zs`qjpsWW^{vXR(tbf9(hQ;f9`9weep4ynrp7o4L94kKE41G$4dh+PwzvrCwuNAtE9 z{(2oD3w@m~ADSz1$h{`Jh6Vnn-MHZ?ylu*U8%9yF8jZ@lI9e z;qChvDL!1Sg?urhi)yz_W+`Lc=AThR3&v5VhOP(1^LKKHjWYtiB$>Upj9qMBpLE;g zi`AN>q=(+rQ**InlxDF(`KRur_uq~EFJd-N6<{9vLe9N2l~&EdJf6TA3hI52p?2=5 z*79i0W0<)rp-WR&rG)#Nu)A?hb=Q*I)Xzy4@AYGD{5)mjK2m8PT9e7?qQ9?z*Kqo> zh*rtJHsPVL>1U=5!`lb5G6si5(5{6DlF=cg3U|X|Q+Pyo*2D*kPWJSfbK?&_bgbHS zctTS8OP8&S-DDk$5SF#flh^wy2;-BAImB(6C|F|Stb+ozdFMc=i0HTZGhX$VEOf#r zq$6>wuvo>0;DtiI%6Vx)`Pie1&(wa&Ox~Gk^PF-i&u3YApq}$rpy{zXjbngEUN{D8 zf5l{50-l7H#MfaJ7<;pv7Ip@RR<<~W;w*bYIXD&CsCMPdADkkDBRHi=eO&YU%djWFilJ0 zb%wy{XruAo{&GirXcrbbRC>AWQe@2CX(7+8@y2=^Qc<S)aS%#X+yEGKn*0MFenqe zncyk2_k;(R_iNYUvzIG`<6Cg6W=hdm-j$D2)e1LNhje_)_oR`W!J@31Pz4i3e#Wck zaFRftio^+Hfg6Mzfc9=3%63?U)-*6Qy@bh3?~wka%PR(sZ2g&^EB8#wPdCS{Y|