From 2d87c396f1d52328684bdf9b76d9a812f3c962e2 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Sat, 16 May 2020 16:17:18 -0700 Subject: [PATCH] Deactivates apps by backing up + deleting them on iOS 13.5+ Deactivating apps by removing their profiles no longer works on iOS 13.5. Instead, AltStore will now back up the app by temporarily replacing it with AltBackup, then remove the app from the phone. --- AltStore.xcodeproj/project.pbxproj | 4 + AltStore/Info.plist | 10 + AltStore/Managing Apps/AppManager.swift | 279 +++++++++++++++++--- AltStore/Model/InstalledApp.swift | 10 + AltStore/My Apps/MyAppsViewController.swift | 11 +- AltStore/Operations/OperationContexts.swift | 2 +- AltStore/Operations/RefreshGroup.swift | 14 + AltStore/Operations/SendAppOperation.swift | 9 +- AltStore/Resources/AltBackup.ipa | Bin 0 -> 64161 bytes 9 files changed, 293 insertions(+), 46 deletions(-) create mode 100644 AltStore/Resources/AltBackup.ipa diff --git a/AltStore.xcodeproj/project.pbxproj b/AltStore.xcodeproj/project.pbxproj index d33aeef1..71cfe90d 100644 --- a/AltStore.xcodeproj/project.pbxproj +++ b/AltStore.xcodeproj/project.pbxproj @@ -51,6 +51,7 @@ BF44CC6C232AEB90004DA9C3 /* LaunchAtLogin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF44CC6A232AEB74004DA9C3 /* LaunchAtLogin.framework */; }; BF44CC6D232AEB90004DA9C3 /* LaunchAtLogin.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BF44CC6A232AEB74004DA9C3 /* LaunchAtLogin.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; BF44EEF0246B08BA002A52F2 /* BackupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF44EEEF246B08BA002A52F2 /* BackupController.swift */; }; + BF44EEF3246B3A17002A52F2 /* AltBackup.ipa in Resources */ = {isa = PBXBuildFile; fileRef = BF44EEF2246B3A17002A52F2 /* AltBackup.ipa */; }; BF44EEFC246B4550002A52F2 /* RemoveAppOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF44EEFB246B4550002A52F2 /* RemoveAppOperation.swift */; }; BF458690229872EA00BD7491 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF45868F229872EA00BD7491 /* AppDelegate.swift */; }; BF458694229872EA00BD7491 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BF458693229872EA00BD7491 /* Assets.xcassets */; }; @@ -375,6 +376,7 @@ BF43002F22A71C960051E2BC /* UserDefaults+AltStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+AltStore.swift"; sourceTree = ""; }; BF44CC6A232AEB74004DA9C3 /* LaunchAtLogin.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LaunchAtLogin.framework; path = Carthage/Build/Mac/LaunchAtLogin.framework; sourceTree = ""; }; BF44EEEF246B08BA002A52F2 /* BackupController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupController.swift; sourceTree = ""; }; + BF44EEF2246B3A17002A52F2 /* AltBackup.ipa */ = {isa = PBXFileReference; lastKnownFileType = file; path = AltBackup.ipa; sourceTree = ""; }; BF44EEFB246B4550002A52F2 /* RemoveAppOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoveAppOperation.swift; sourceTree = ""; }; BF45868D229872EA00BD7491 /* AltServer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AltServer.app; sourceTree = BUILT_PRODUCTS_DIR; }; BF45868F229872EA00BD7491 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -1171,6 +1173,7 @@ BFD247962284D7C100981D42 /* Resources */ = { isa = PBXGroup; children = ( + BF44EEF2246B3A17002A52F2 /* AltBackup.ipa */, BFB1169C22932DB100BB457C /* apps.json */, BFD247762284B9A700981D42 /* Assets.xcassets */, BF770E6822BD57DD002A40FE /* Silence.m4a */, @@ -1588,6 +1591,7 @@ BFB4323F22DE852000B7F8BC /* UpdateCollectionViewCell.xib in Resources */, BFE60738231ADF49002B0E8E /* Settings.storyboard in Resources */, BFD2477A2284B9A700981D42 /* LaunchScreen.storyboard in Resources */, + BF44EEF3246B3A17002A52F2 /* AltBackup.ipa in Resources */, BF770E6922BD57DD002A40FE /* Silence.m4a in Resources */, BFD247772284B9A700981D42 /* Assets.xcassets in Resources */, BFF0B6922321A305007A79E1 /* AboutPatreonHeaderView.xib in Resources */, diff --git a/AltStore/Info.plist b/AltStore/Info.plist index 1f9ca88e..90def6a1 100644 --- a/AltStore/Info.plist +++ b/AltStore/Info.plist @@ -53,6 +53,16 @@ altstore + + CFBundleTypeRole + Editor + CFBundleURLName + AltStore Backup + CFBundleURLSchemes + + altstore-com.rileytestut.AltStore + + CFBundleVersion 1 diff --git a/AltStore/Managing Apps/AppManager.swift b/AltStore/Managing Apps/AppManager.swift index c8688380..e5c89652 100644 --- a/AltStore/Managing Apps/AppManager.swift +++ b/AltStore/Managing Apps/AppManager.swift @@ -74,6 +74,15 @@ extension AppManager guard !self.isActivelyManagingApp(withBundleID: app.bundleIdentifier) else { continue } + if !UserDefaults.standard.isLegacyDeactivationSupported + { + // We can't (ab)use provisioning profiles to deactivate apps, + // which means we must delete apps to free up active slots. + // So, only check if active apps are installed to prevent + // false positives when checking inactive apps. + guard app.isActive else { continue } + } + let uti = UTTypeCopyDeclaration(app.installedAppUTI as CFString)?.takeRetainedValue() as NSDictionary? if uti == nil && !legacySideloadedApps.contains(app.bundleIdentifier) { @@ -329,19 +338,49 @@ extension AppManager } } - func deactivate(_ installedApp: InstalledApp, completionHandler: @escaping (Result) -> Void) + func deactivate(_ installedApp: InstalledApp, presentingViewController: UIViewController?, completionHandler: @escaping (Result) -> Void) { - let context = OperationContext() - - let findServerOperation = self.findServer(context: context) { _ in } - - let deactivateAppOperation = DeactivateAppOperation(app: installedApp, context: context) - deactivateAppOperation.resultHandler = { (result) in - completionHandler(result) + if UserDefaults.standard.isLegacyDeactivationSupported + { + // Normally we pipe everything down into perform(), + // but the pre-iOS 13.5 deactivation method doesn't require + // authentication, so we keep it separate. + let context = OperationContext() + + let findServerOperation = self.findServer(context: context) { _ in } + + let deactivateAppOperation = DeactivateAppOperation(app: installedApp, context: context) + deactivateAppOperation.resultHandler = { (result) in + completionHandler(result) + } + deactivateAppOperation.addDependency(findServerOperation) + + self.run([deactivateAppOperation], context: context, requiresSerialQueue: true) + } + else + { + let group = RefreshGroup() + group.completionHandler = { (results) in + do + { + guard let result = results.values.first else { throw OperationError.unknown } + + let installedApp = try result.get() + assert(installedApp.managedObjectContext != nil) + + installedApp.managedObjectContext?.perform { + completionHandler(.success(installedApp)) + } + } + catch + { + completionHandler(.failure(error)) + } + } + + let operation = AppOperation.deactivate(installedApp) + self.perform([operation], presentingViewController: presentingViewController, group: group) } - deactivateAppOperation.addDependency(findServerOperation) - - self.run([deactivateAppOperation], context: context, requiresSerialQueue: true) } func remove(_ installedApp: InstalledApp, completionHandler: @escaping (Result) -> Void) @@ -405,12 +444,15 @@ private extension AppManager { case install(AppProtocol) case update(AppProtocol) - case refresh(AppProtocol) + case refresh(InstalledApp) + case deactivate(InstalledApp) var app: AppProtocol { switch self { - case .install(let app), .update(let app), .refresh(let app): return app + case .install(let app), .update(let app), + .refresh(let app as AppProtocol), .deactivate(let app as AppProtocol): + return app } } @@ -485,22 +527,43 @@ private extension AppManager switch operation { - case .refresh(let installedApp as InstalledApp) where installedApp.certificateSerialNumber == group.context.certificate?.serialNumber: - // Refreshing apps, but using same certificate as last time, so we can just refresh provisioning profiles. - - let refreshProgress = self._refresh(installedApp, operation: operation, group: group) { (result) in - self.finish(operation, result: result, group: group, progress: progress) - } - progress?.addChild(refreshProgress, withPendingUnitCount: 80) - - case .refresh(let app), .install(let app), .update(let app): - // Either installing for first time, or refreshing with a different signing certificate, - // so we need to resign the app then install it. - + case .install(let app), .update(let app): let installProgress = self._install(app, operation: operation, group: group) { (result) in self.finish(operation, result: result, group: group, progress: progress) } progress?.addChild(installProgress, withPendingUnitCount: 80) + + case .activate(let app): fallthrough + case .refresh(let app): + // Check if backup app is installed in place of real app. + let uti = UTTypeCopyDeclaration(app.installedBackupAppUTI as CFString)?.takeRetainedValue() as NSDictionary? + + if app.certificateSerialNumber == group.context.certificate?.serialNumber && uti == nil + { + // Refreshing with same certificate as last time, and backup app isn't still installed, + // so we can just refresh provisioning profiles. + + let refreshProgress = self._refresh(app, operation: operation, group: group) { (result) in + self.finish(operation, result: result, group: group, progress: progress) + } + progress?.addChild(refreshProgress, withPendingUnitCount: 80) + } + else + { + // Refreshing using different certificate or backup app is still installed, + // so we need to resign + install. + + let installProgress = self._install(app, operation: operation, group: group) { (result) in + self.finish(operation, result: result, group: group, progress: progress) + } + progress?.addChild(installProgress, withPendingUnitCount: 80) + } + + case .deactivate(let app): + let deactivateProgress = self._deactivate(app, operation: operation, group: group) { (result) in + self.finish(operation, result: result, group: group, progress: progress) + } + progress?.addChild(deactivateProgress, withPendingUnitCount: 80) } } } @@ -528,11 +591,13 @@ private extension AppManager return group } - private func _install(_ app: AppProtocol, operation: AppOperation, group: RefreshGroup, additionalEntitlements: [ALTEntitlement: Any]? = nil, cacheApp: Bool = true, completionHandler: @escaping (Result) -> Void) -> Progress + private func _install(_ app: AppProtocol, operation: AppOperation, group: RefreshGroup, context: InstallAppOperationContext? = nil, additionalEntitlements: [ALTEntitlement: Any]? = nil, cacheApp: Bool = true, completionHandler: @escaping (Result) -> Void) -> Progress { let progress = Progress.discreteProgress(totalUnitCount: 100) - let context = InstallAppOperationContext(bundleIdentifier: app.bundleIdentifier, authenticatedContext: group.context) + let context = context ?? InstallAppOperationContext(bundleIdentifier: app.bundleIdentifier, authenticatedContext: group.context) + assert(context.authenticatedContext === group.context) + context.beginInstallationHandler = { (installedApp) in switch operation { @@ -578,6 +643,7 @@ private extension AppManager } progress.addChild(downloadOperation.progress, withPendingUnitCount: 25) + /* Verify App */ let verifyOperation = VerifyAppOperation(context: context) verifyOperation.resultHandler = { (result) in @@ -589,6 +655,7 @@ private extension AppManager } verifyOperation.addDependency(downloadOperation) + /* Refresh Anisette Data */ let refreshAnisetteDataOperation = FetchAnisetteDataOperation(context: group.context) refreshAnisetteDataOperation.resultHandler = { (result) in @@ -648,6 +715,8 @@ private extension AppManager { case .failure(let error): completionHandler(.failure(error)) case .success(let installedApp): + context.installedApp = installedApp + if let app = app as? StoreApp, let storeApp = installedApp.managedObjectContext?.object(with: app.objectID) as? StoreApp { installedApp.storeApp = storeApp @@ -678,7 +747,7 @@ private extension AppManager let context = AppOperationContext(bundleIdentifier: app.bundleIdentifier, authenticatedContext: group.context) context.app = ALTApplication(fileURL: app.url) - + /* Fetch Provisioning Profiles */ let fetchProvisioningProfilesOperation = FetchProvisioningProfilesOperation(context: context) fetchProvisioningProfilesOperation.resultHandler = { (result) in @@ -689,7 +758,7 @@ private extension AppManager } } progress.addChild(fetchProvisioningProfilesOperation.progress, withPendingUnitCount: 60) - + /* Refresh */ let refreshAppOperation = RefreshAppOperation(context: context) refreshAppOperation.resultHandler = { (result) in @@ -718,6 +787,140 @@ private extension AppManager let operations = [fetchProvisioningProfilesOperation, refreshAppOperation] group.add(operations) self.run(operations, context: group.context) + + return progress + } + + private func _deactivate(_ app: InstalledApp, operation appOperation: AppOperation, group: RefreshGroup, completionHandler: @escaping (Result) -> Void) -> Progress + { + let progress = Progress.discreteProgress(totalUnitCount: 100) + let context = InstallAppOperationContext(bundleIdentifier: app.bundleIdentifier, authenticatedContext: group.context) + + let installBackupAppProgress = Progress.discreteProgress(totalUnitCount: 100) + let installBackupAppOperation = RSTAsyncBlockOperation { [weak self] (operation) in + app.managedObjectContext?.perform { + guard let self = self else { return } + + let progress = self._installBackupApp(for: app, operation: appOperation, group: group, context: context) { (result) in + switch result + { + case .success(let installedApp): context.installedApp = installedApp + case .failure(let error): context.error = error + } + + operation.finish() + } + installBackupAppProgress.addChild(progress, withPendingUnitCount: 100) + } + } + progress.addChild(installBackupAppProgress, withPendingUnitCount: 70) + + let backupAppOperation = BackupAppOperation(action: .backup, context: context) + backupAppOperation.resultHandler = { (result) in + switch result + { + case .failure(let error): context.error = error + case .success: break + } + } + backupAppOperation.addDependency(installBackupAppOperation) + progress.addChild(backupAppOperation.progress, withPendingUnitCount: 15) + + let removeAppOperation = RemoveAppOperation(context: context) + removeAppOperation.resultHandler = { (result) in + completionHandler(result) + } + removeAppOperation.addDependency(backupAppOperation) + progress.addChild(removeAppOperation.progress, withPendingUnitCount: 15) + + group.add([installBackupAppOperation, backupAppOperation, removeAppOperation]) + self.run([installBackupAppOperation, backupAppOperation, removeAppOperation], context: group.context) + + return progress + } + + private func _installBackupApp(for app: InstalledApp, operation appOperation: AppOperation, group: RefreshGroup, context: InstallAppOperationContext, completionHandler: @escaping (Result) -> Void) -> Progress + { + let progress = Progress.discreteProgress(totalUnitCount: 100) + + guard let application = ALTApplication(fileURL: app.fileURL) else { + completionHandler(.failure(OperationError.appNotFound)) + return progress + } + + let prepareProgress = Progress.discreteProgress(totalUnitCount: 1) + let prepareOperation = RSTAsyncBlockOperation { (operation) in + app.managedObjectContext?.perform { + do + { + let temporaryDirectoryURL = context.temporaryDirectory.appendingPathComponent("AltBackup-" + UUID().uuidString) + try FileManager.default.createDirectory(at: temporaryDirectoryURL, withIntermediateDirectories: true, attributes: nil) + + guard let altbackupFileURL = Bundle.main.url(forResource: "AltBackup", withExtension: "ipa") else { throw OperationError.appNotFound } + + let unzippedAppBundleURL = try FileManager.default.unzipAppBundle(at: altbackupFileURL, toDirectory: temporaryDirectoryURL) + guard let unzippedAppBundle = Bundle(url: unzippedAppBundleURL) else { throw OperationError.invalidApp } + + if var infoDictionary = unzippedAppBundle.infoDictionary + { + // Replace name + bundle identifier so AltStore treats it as the same app. + infoDictionary["CFBundleDisplayName"] = app.name + infoDictionary[kCFBundleIdentifierKey as String] = app.bundleIdentifier + + // Add app-specific exported UTI so we can check later if this temporary backup app is still installed or not. + let installedAppUTI = ["UTTypeConformsTo": [], + "UTTypeDescription": "AltStore Backup App", + "UTTypeIconFiles": [], + "UTTypeIdentifier": app.installedBackupAppUTI, + "UTTypeTagSpecification": [:]] as [String : Any] + + var exportedUTIs = infoDictionary[Bundle.Info.exportedUTIs] as? [[String: Any]] ?? [] + exportedUTIs.append(installedAppUTI) + infoDictionary[Bundle.Info.exportedUTIs] = exportedUTIs + + try (infoDictionary as NSDictionary).write(to: unzippedAppBundle.infoPlistURL) + } + + guard let backupApp = ALTApplication(fileURL: unzippedAppBundleURL) else { throw OperationError.invalidApp } + context.app = backupApp + + prepareProgress.completedUnitCount += 1 + } + catch + { + print(error) + } + + operation.finish() + } + } + progress.addChild(prepareProgress, withPendingUnitCount: 20) + + let installProgress = Progress.discreteProgress(totalUnitCount: 100) + let installOperation = RSTAsyncBlockOperation { [weak self] (operation) in + guard let self = self else { return } + + guard let backupApp = context.app else { + context.error = OperationError.invalidApp + operation.finish() + return + } + + var appGroups = application.entitlements[.appGroups] as? [String] ?? [] + appGroups.append(Bundle.baseAltStoreAppGroupID) + + let additionalEntitlements: [ALTEntitlement: Any] = [.appGroups: appGroups] + let progress = self._install(backupApp, operation: appOperation, group: group, context: context, additionalEntitlements: additionalEntitlements, cacheApp: false) { (result) in + completionHandler(result) + operation.finish() + } + installProgress.addChild(progress, withPendingUnitCount: 100) + } + installOperation.addDependency(prepareOperation) + progress.addChild(installProgress, withPendingUnitCount: 80) + + group.add([prepareOperation, installOperation]) + self.run([prepareOperation, installOperation], context: group.context) return progress } @@ -775,6 +978,7 @@ private extension AppManager event = nil case .update: event = .updatedApp(installedApp) + case .deactivate: event = nil } if let event = event @@ -819,17 +1023,8 @@ private extension AppManager switch operation { case _ where requiresSerialQueue: fallthrough - case is InstallAppOperation, is RefreshAppOperation: - if let context = context, let previousOperation = self.serialOperationQueue.operations.last(where: { context.operations.contains($0) }) - { - // Ensure operations execute in the order they're added (in same context), since they may become ready at different points. - operation.addDependency(previousOperation) - } - - self.serialOperationQueue.addOperation(operation) - - default: - self.operationQueue.addOperation(operation) + case is InstallAppOperation, is RefreshAppOperation, is BackupAppOperation: self.serialOperationQueue.addOperation(operation) + default: self.operationQueue.addOperation(operation) } context?.operations.add(operation) @@ -841,7 +1036,7 @@ private extension AppManager switch operation { case .install, .update: return self.installationProgress[operation.bundleIdentifier] - case .refresh: return self.refreshProgress[operation.bundleIdentifier] + case .refresh, .deactivate: return self.refreshProgress[operation.bundleIdentifier] } } @@ -850,7 +1045,7 @@ private extension AppManager switch operation { case .install, .update: self.installationProgress[operation.bundleIdentifier] = progress - case .refresh: self.refreshProgress[operation.bundleIdentifier] = progress + case .refresh, .deactivate: self.refreshProgress[operation.bundleIdentifier] = progress } } } diff --git a/AltStore/Model/InstalledApp.swift b/AltStore/Model/InstalledApp.swift index dc4b2193..36170e0c 100644 --- a/AltStore/Model/InstalledApp.swift +++ b/AltStore/Model/InstalledApp.swift @@ -247,6 +247,12 @@ extension InstalledApp return installedAppUTI } + class func installedBackupAppUTI(forBundleIdentifier bundleIdentifier: String) -> String + { + let installedBackupAppUTI = InstalledApp.installedAppUTI(forBundleIdentifier: bundleIdentifier) + ".backup" + return installedBackupAppUTI + } + var directoryURL: URL { return InstalledApp.directoryURL(for: self) } @@ -262,4 +268,8 @@ extension InstalledApp var installedAppUTI: String { return InstalledApp.installedAppUTI(forBundleIdentifier: self.resignedBundleIdentifier) } + + var installedBackupAppUTI: String { + return InstalledApp.installedBackupAppUTI(forBundleIdentifier: self.resignedBundleIdentifier) + } } diff --git a/AltStore/My Apps/MyAppsViewController.swift b/AltStore/My Apps/MyAppsViewController.swift index d5d6f987..232bb391 100644 --- a/AltStore/My Apps/MyAppsViewController.swift +++ b/AltStore/My Apps/MyAppsViewController.swift @@ -404,6 +404,15 @@ private extension MyAppsViewController // Ensure no leftover progress from active apps cell reuse. cell.bannerView.button.progress = nil + + if let progress = AppManager.shared.refreshProgress(for: installedApp), progress.fractionCompleted < 1.0 + { + cell.bannerView.button.progress = progress + } + else + { + cell.bannerView.button.progress = nil + } } dataSource.prefetchHandler = { (item, indexPath, completion) in let fileURL = item.fileURL @@ -887,7 +896,7 @@ private extension MyAppsViewController guard installedApp.isActive else { return } installedApp.isActive = false - AppManager.shared.deactivate(installedApp) { (result) in + AppManager.shared.deactivate(installedApp, presentingViewController: self) { (result) in do { let app = try result.get() diff --git a/AltStore/Operations/OperationContexts.swift b/AltStore/Operations/OperationContexts.swift index 97bc0dfb..1cf990c0 100644 --- a/AltStore/Operations/OperationContexts.swift +++ b/AltStore/Operations/OperationContexts.swift @@ -63,7 +63,7 @@ class AuthenticatedOperationContext: OperationContext class AppOperationContext { let bundleIdentifier: String - private let authenticatedContext: AuthenticatedOperationContext + let authenticatedContext: AuthenticatedOperationContext var app: ALTApplication? var provisioningProfiles: [String: ALTProvisioningProfile]? diff --git a/AltStore/Operations/RefreshGroup.swift b/AltStore/Operations/RefreshGroup.swift index 9d487b6b..721fc26e 100644 --- a/AltStore/Operations/RefreshGroup.swift +++ b/AltStore/Operations/RefreshGroup.swift @@ -21,6 +21,10 @@ class RefreshGroup: NSObject private(set) var results = [String: Result]() + // Keep strong references to managed object contexts + // so they don't die out from under us. + private(set) var _contexts = Set() + private var isFinished = false private let dispatchGroup = DispatchGroup() @@ -33,6 +37,8 @@ class RefreshGroup: NSObject super.init() } + /// Used to keep track of which operations belong to this group. + /// This does _not_ add them to any operation queue. func add(_ operations: [Foundation.Operation]) { for operation in operations @@ -57,6 +63,14 @@ class RefreshGroup: NSObject func set(_ result: Result, forAppWithBundleIdentifier bundleIdentifier: String) { self.results[bundleIdentifier] = result + + switch result + { + case .failure: break + case .success(let installedApp): + guard let context = installedApp.managedObjectContext else { break } + self._contexts.insert(context) + } } func cancel() diff --git a/AltStore/Operations/SendAppOperation.swift b/AltStore/Operations/SendAppOperation.swift index 75b35ec8..9d8835dc 100644 --- a/AltStore/Operations/SendAppOperation.swift +++ b/AltStore/Operations/SendAppOperation.swift @@ -89,8 +89,13 @@ private extension SendAppOperation connection.send(appData, prependSize: false) { (result) in switch result { - case .failure(let error): completionHandler(.failure(error)) - case .success: completionHandler(.success(())) + case .failure(let error): + print("Failed to send app data (\(appData.count) bytes)") + completionHandler(.failure(error)) + + case .success: + print("Successfully sent app data (\(appData.count) bytes)") + completionHandler(.success(())) } } } diff --git a/AltStore/Resources/AltBackup.ipa b/AltStore/Resources/AltBackup.ipa new file mode 100644 index 0000000000000000000000000000000000000000..b08d0da0bb4b0bc2df87b5bfc09913026774ff37 GIT binary patch literal 64161 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%0Af9*s9!&xKzYW9~v}C3;=znOLlx+gznq)6yK zY^62JP0TnkT;7UR3_gTxGp0E$qF_kXZaVYK^u08-P|+sN?q# zSoi$0Is5|B?gMqxt@(`IKivs`|9s44XOPkfk`V9C=SBe%7j%O1t=q%{UL@5c@1!Zr z3u#ug8VMG$tS&uq3)Xaih;>fpze*3_5(BD+LaMt;1vW5&#fWTS&OZt|roYXRp8{7= zmA8#e0t6b{8{cE#Rtx}jvp=yA7CSqKiRQq0rNaX)VS+!!3cI9NC)NRb&j1Q-&o`EN z>p#zc(;}P^{UEpBo2rswhu$=IuUsCbu`6$niJHEd5Kblbc{V%T8dqo1ih$z8%v4}u ztkWK4|8$op&Gw=4VB5@Ip7#!o{Mtu=UhRTU5qNX|4tMS2Bud_JN&w8A!lU>c_#n7} z*oNk-;5xO%_1$V}i=@rw3PnS#_!%h%%Z^1tdlML{p6-*xx}pJ87qETqAC>-9IU?C9 z7m@Jm>0f>6WAP>q`twaJ1&!9|!(mEmYYU)O*;e-T;c$Vy^ZCa8ipo~7Ct-T1vN%Cb zh9Yf9Wi{*CT?=QW*~cA!LxEhoU|R7ZS-z$w%pH1wR>cB;A-=OA`@V^{KI+@@D^um< z52D}BYq$=^*Hwy|0JqAFa|YrEPaK_@2lC#tDo;}cRlG$xc}7!8cpf^0#eWb3xx)LS z&2SIp%S*6TN2ONmjhLy}a79|-($5i}8qc8N3c7$e^?O~S$L9q3tTz|k{rgYbFLo5# ztu*Y%t0$P>ADW*O3W_i5s5dmgF?jDRz&SngfOqm>>>QR^m%`^)>~4>qMl2Bp%i7fY zF`;h_rWabX4_~qO^9@sjPXqC+71Q@RauA zCHEt;!-4po;C$#sOsp0SZ>ZyryDx76EG(X}tL{~;-&XgF{DGo7>5!KCI`PlD*n{Df z2)!DsB;TC+{auba#F7bvHzCoL2tJpnHMwi;n_tab*|xsaU@ca@RN(xf`0IFyWix~DCV~JQh#2< z6b*2)puD{`f(p6{nQ4dmi2~QSd%yUXzOr#`Gysj+78{F>`o;!xV-_>*cQnb-qBa+D3=f9 zvZ~hgP|GzZs*P*yhBj)mhO_!(1Z2z=YDl`8BBs(6 z=hCm;;hh_5C{bq&alq{J_c55wH2i66KbkFEVKEgbm%E@swBFZnF_Kv{v8NhdXMy%@ z2?^Qf`jB}Rgbjf zTa_zvbQ88-DgtqpPzNU8a3mK!#u@Hj2S(rTNIr^J9OyOaTlfSW#YQEj|L>-<*&n-+ zYE!n-3D)U)|1h@bgeoXrMQZ-nlb8rz2s-3Lb(LMCkfu_%4A80RdMRR=o|t?SkZQke z;h+~V^)?cS%Y+KG{HKxeKRkv1%ah~VQRbEaL5F6j7^80n(vtEO8v5o|@_!i3GXKk% z_8-Pi{}qwm_x~3rT9Eg9sy`G%a}SExyKI2C-4d=os8|{1Fn->6zbHKj=W1FpRtRpB z=9(`!NdX23o|1-vgEMJC2v-ZyL8wr^=paPsX><@WbU2y@5k|110IxC34q{cKHaCa6h2mxlHxL+pz)@20wLhXW@-se<3aecx4p)rnZZloWVA z2nDm*JKjCU(T4CrSZx|-?dU1G{TS$Z@F9aF;*}Ww6gP$PO@Zdx!YY$i^5NXSlff^Nx zJkS{IlUM@%)I*3*g9SAja6y2X44@_p#`v0QCPjm#Jn1(Hul`;TB_W98Tr2kc!M{X; zei#sgdu83(4ql?AMuE0RHzUB<2eixb87AR3f1wVJP^nttcOyXucw$ZA)+3;PJ-_e( zn9xdZqBr!bm*~PanMHP@TGT+w9RS?LM_52l65T837CG`@5@JCJlr*?j3dYxCDhJc* z(V#cM^i^OQ1Rw|7#(xOd**V1xs>2%Cm-*Fs8NctMC)PSM>sP~GTD_>StFop$(t zU`|s~ryv|L-+6!%K>V?@YmU;a_tGzad_~@98)A40F@eiFRQ;R)Bp@H62(& z-25dlxCCDi2Q}zvrtKoXs>L^j_x-{;c!?Y+x#NTQ3b*qw_eQ)P45m@&$ScD>Z9}@U z9WV}lqjE#tQi~={fi)FF1AAy>JK(PPqI2Q9v7IXLuZHmpF|f2#7SL|n||3b za;%O!{)@gLf5hKlry1*mGKhM!b-|#O=MCYk@B#eWH;derQ4O9OLHZ#v>(`3ipAQXZ z<9Y6=mlpjRV@li}%lXcmsvUE_X$wdEZJgc|$`HB7j+OD;DB_hHPMyu|hD<%9EzTIz z)GqVHEWOrOgdd&DyyI5f+0wclT^+?wIA^idxWjP(1@vg*Ge@&RUSlqiIXR$*2U_l-E zs&$LPha}LZ77-aS7|1)7&d8j!fP$qlJC-Z(Nq)ZYTiBou99F{2_H!jlO3bd(pGvG=)ZKvpBJpAx6mmSr=GC|`+x)G^s@ za)@UpymYs-jffo#Abzybie>5%FMEk!V1CH0(qM_0{nuUOp?r9RVnQY#O)W<)6B^Ga zGdlip)5_+;1~C@D8LUT;Q<%njrY@WCtCvn-eMWcEu@uUVW$H}Wb;s~a(0fd6u?9L8P_^Ci z)OP5eJ;zQ6F$bAm`?@{`_R`yOP-Fh8YvCs`jG3|L{ew-LU8hhMq<_wgXFQOrWKAq) z4Wy6am*`wW2X@gkN5;?F@ zP@xW&7sIfadgfxkK^^F-r~d;aOpCB(IUV6Ai{~$Y?a3v6B7Z-==0`Q z$4$X!I0?p&@(w_4Le{M_gG=3mkUaCSYW5!BAQD~-d_%dPDo0r@1YnEGHR$eg2*&+N z78={h6@*t_S4I&^zGCy!?24&}s3k6q_GS8x2AMl{yc_Kv(2~Ve!cJ$5mx3hDU$0Dm zc1F&!ZeCt*&YAE*sELY{ofeaB3$HdVDU1oK5{EZ=DYy+$EGfLjf2*rUVor+CD<9oe z#hEV<-|sz1129d5+pLkEayQ+9>SK>l)o6By_nx3>pp37)_!wCFfI3*{sO;DS+J`%; zk0!IFz_l&-#F9kR&^>Dp+&x=9RFe`$7&I!CV@{X4&m%wEV#q=jFdH>U+)V(@O zMkhwI7oMjq<~|-pmLEC#VQaIu^-n+o|MX+*fw12hRZ!B2bAz+MFK zgg2mtt!in2_K(wQzdRwc!{^W0aSWs6*b9a6r)?Kq&*5=4lY;ib)?9uEiT;cuh%+>i zB@mVM(pty7R7g^E!5>E^IJ*+%f7|m)$q%` zYe2n26m)=&Tt>@!kn(FF+Q@fbmP*VzfqMmE(xqFaEg@3fXQfoXMCkY+x?-vgLP{w4 zC%>Q%m>EX|rg%i;#t|h1y1e6$syd}(gZsCnUpKyj-?0P713_*fg^yJ~B%)tf#_W97 z)V$f}f*2QK(dqd7bycgRH8M)|cu-{3{he`Gsy<;Oi<|!_PrX&!*^r0e1dow|cU(!< z#M_&PJ@CG7D4A$wr6F{!2gg(gpo~|r7(!yK2(&ZywlUAeW7tDLSzmc=`eJh^zP@MY zld5RRA54~PW8S^8M%A@ySUz$fnB=lD%i9o<&ZvqJukw;OrM7!~R~*;g*_r>b(9%uT zKDKD^9VV1fiFs6sJ|R@SHc!Qjlw9dH*|v10ijXn8+d4;i;R z8hLOC;F;3;Gh2DN@p5>O!+(E<*ECVHU@0);OJiKg-@LNGt8bb?*AHvj$3}}B(t)$q z&C^IdEolomte1J$;yGCMYLp>|_ce8<(JXYrDXJvYAd=im%dWHE7QqF6DP5mc%chZN z`7b77anI)f0vm!+Ze1I`URN}=&-359elOcj)M<6G3K9+~Mr26YTj8f+;Vo!EiaS(_ zR*ily($`|AI;M^W`|}wT>-)v6TkQX_ZMT*#bu845Tbce8T!9)5GvtdYVy8ATXKXI)Sv7P^aQ!aBN#@_!3CzaeqE) zk0!K@c9nn1fi{kFLR}Q!mi}^Twm55pD_?Bvhzn_>FODeb_oSKy*C1Nn^b99~3+AQr zhqm6HJyO{hX7sU3M!IfBPOSr8dk(?0#;iTe@$|5c=6$8UqUJVnznh<~-_k~~u@9Tl z-u^Mp{C*NCocBaHSeeP`UyfY8DayjwBW7`ovOwUJtOx`MYrb;>iLBb13Wr&xqCUo^ z(vAbxPhZh@@J^e`Y99>8J+%w%I3kBom1t8mu0Ng;=bP6V{3*5}S`P0T9ux0nEx$68 z^aX$z&2YZNO_S}_$)c}Wy}RomS0kL08(kUqsF7h<##HjyTmEgbn@(rYWu~LTGvjZo z)R8d8Qa&md%ev-lQ_X4$@)ZZ zpowMH;p8nOm+jeWksj5Sh2%7&FWG<8P!}^NYm8xS>2atR3!Rs-AOogpJQl!vVBE4& z4A~B?q-x}15R{9&2+Jes9+|S{a>Mb#3v%?l7c+x9;#&En>TE);%%g7?7&ACybUM#&CM`kSdFW5MySk?%#YZV1lFy9MNm}+6n zg>;LC0=`cPz3Jv|7HJD6`Q#!wP=AEa5>!;25vEr@{Kkp@;~l+hy_Lj9eZ3+#9RnrO z-Q;jj-S%i3y+x%){m`uxKhkk#IZKHd{WbV^v3oV%aUO-!LRRlFhg2(>L>`D z^!Jv;zo*r$=6)!olf8->xBoV(T zr(a02vo4(UtNko~$g-lKik?8Bw`}Fa?qgsH*p}Y2g7XvIdc< zYN{x=J|4Z-IzT`5>?`=#mG0_K#yD3rnQlpHik+OzSNHepmS5W5-pDLcaJo>N**z1- z46AylX0KFBs~k^SMrZjIkgr%M z+HPTq)evY7r>y2?FpeyK{8c~HRL1|E{wn65xo_^<#s=lcRhcvIp~JR!Rv`vGhhho( zp-rDX5irg;QV+B6&%}nlsPoog@9DNy3q1m^Q4-m8NqU3A5Jxpc;->eVL%3awtkMPX zsHWHyFvQhY)X+Q#vLfB1a>Jj<-PHYRgsz{HVWhYD^jVu+%!mzv(jvT{sIrIL1M1e= z$<&D*l1UURlfzQd?soTR3_iW0;iUmxQbyS>Z%>%bk3M|k>Wp^Yf9VuEICh@h5V^I3nx`I2L~Q8=JS9;#R=1*QM}ZT z`!c@^w(z)xv~VSA4Fsl+IW;vk(O_&is?6M+@CaUUt=(7f z=R5j^tRT5nWw&d}VvK5GkCaeP+Aq2JQDTNF_PF|dasC^bl#t)wr<8H&Ji$_8O>&-+ z9(R6O#>qQfTADHt?c@oMU)~&ZPsb+$?uuHPC)ahls!YVZSTT5EbPpovyOi)+Jgd?) zkqe0}r;NX;PqZZW0$XqAnp%V*Vg8y~GjkM+@aBc6CIyUV7ClOB)Tki%aN=UJuQcKM zs2#RSSy-xTnp;A*SEKS$r5q^KEGfu@;E(dC)KIXAqx}vqR!DI^>lcPSMmse`mpGDz!yWRm?+@D_tJt)l0xsIJ29eI(tL zCsM>6zDd{5Unrgl41E5juq6Zw+ya!e*28+2XTK~gnfwk>^{~YB9z&0n=9h1TTG+>Q zJhcoFxnlnP_Pyam@Z6{W9J6KRdC=HpG+yb(zii#Lovnd9d!}NpMi)ala62Nw`{z;P zbmj1GeG%o%2o7snWHTXs@i-<_+jf*bB&x?aF^QIXn_&1Lk|SE4I*EwVwXtL9y@~Ni z(JAg$goT zF5#ZOUp0bRtB&N&x%&28F-RHmBR$Dy-zggQ?{7EL8^yzj(UushWLglnsl!q679#>~ z>Zu_Fh_d<{axNy2*P`=E?knwNZv>6zA6Fe^c}ddCB8(ELzY%%P7`J@Ferqnv5j5$F zCI~5OMlNL9=F(l~J*5vFUMO!D)tDH}r(lXs-Uhp;9`TeW)`q;%AJMvc>SCNSu*GK{ z>EVig$%Ema1JPuV`=eMQU}=fhXF{Vq=-V>IfD|{N#CQ;{EaNZGcck=kbnbU zt4$Z?zg0m_XitslH6*`?N8V&H;PMMh==cp!`4qiAY(r%<)%&_oI{qXxBcN``nDfh= zbEaP7uCCmab*l8GeF#XsCD5nmMd%ASic>oIEy=UV?(|u#FrukmR#je^w+LTT68yyFPKxYn(NU zbWcP7rlI;GZ-L)-7P#+E8G1a5*A1e_VxfjTrbR`^YnUzASN2%7;a3(f0C@2~S+u?! z1RZEsvSjiJ`}hB3m5g>wH8@8c@ux^zB8=StA%O^tyAr$;l$=R|ppJ)^t9xE?2wC2c z=618#WSCW4wAF})2^TtKb^+Ly&H@nepl8(ZcotheM;muWdUD9M=|&uO1mc;vjC9Qk zic96H^$ftOpZJ<>v3^w;PRS4WNNvVv7eJy1$gxP7mA1%s%xva z=o0Nk8W}lXuaab6tMR%U(?4;twyW}Qu~Ly1kH@G9Wy6(%*@Qp%*^!6>}PzAnPR4xV`gS% zW@ct)`~2fKamv6v&k0S= zU`>UTMJtdtVJ#aO)?x-JllS|WlrK&tJpohtuudY6NPD^XFis~z9NoMx6!wz$a%)@S zUA?f5<-)K*6Qpb7E0*@LT4dRrGqjRIux)j%$-tuw@}!OWN|sU`^(9 zMV7jw^$0+?n=7;;e&H=Ic}K6Wzr>0|RlO2US8=SP(!iUF9d5#k9nAFXJ#Opl9o2|N zXLK_LK^;%@nXe+*=LB2aod{3doX$}@`>1a8VP0>Ti>%kiL*_am_HPgt>0i|3T|H6% z^xI@mU%Jx2ZJjcH@0h4Bf8xQ8e}-8+xWm`g9Pp!eS@x4$^~;F>glapMPy@`iw0l+Q zAh$>WQKX6=TkQVM{-Y3!&}&wfhp^ptFo!V7kn}{loJ|jmj-m*sg8@k$o^&lR|`-6l#by^dmo>E}{G4u`ThSpu)0mhuq;} z%Zi>HzsP!C0g#+ET&cTm#c9Em+N_wk=WGhUh&1@~wHZ?I$dYAkQAeUsNF;3Go(r#8 zM}9^)S)G&rCYY`b94amb8pl3a4{822zk7-!e@#~?4JsNn*zh*mSVw0qJFJzLwPC0W zNaTAz40$??cX=?qAse>ACH00@z>g~>Yf+@9`MpL;R+Qu9DYS88h9;&%Wsyl34!Xdx!V9%*&XoFx-K9*|F9&0@vr z`kE9%?kc>pc#zxWsx3E1i?qfsg{$%R({@^*wp~5)VLMhrJIt)DDgU|Ur?`aiW4I?&n_-W!QIXsw4M z8;Q0J-U)V#H_YHl58vH)p0mB8BMYC4MLh6~$c69AF~v#FLI7wz9>K$KEa(ShtmG~v zx{(0ro_n}bv>PeoNhY~uyDDsF-YhoTdSct99I_Kd=b zF!^9t^P^=A-Z?cIzKY_60KkOldZyu6&<;q(L@dQLK>*wy>ELv9b@H{4E3lqkxENC2 zfGY59v*4U1zZQ}?l1TBC-;Bsc-+Pwf5Yb!E)k$=N7#Uzj#eA-QhQgee-Q)i89_Y-l zjPWJ96Ih4@`jGHMe|&Z>KYtozM@n#d@@x=pnA6DO`3S2T?nT<(}Ym^ z^*+%nYDO@Y#0ejJOW)KTsP^!DBGWJtE@h)gA6Wb-#{-xW)(m`a%eHF@J{Da1&3NvP zz(9`FE^7qcg8{d^nKE=Kl}zfJS55Gpyi72qDZEf3;P}H~oMyQw;(fAz*UBJh%8v|l zm5s*T2WJ8nO*~43=krJODx64m&-H=d+$~u2>?wfX-({EEfp@q(kyM6DyEBOMIZv*m z#V5X=(9_-TP&FgQboWVK(oFF~O8?Psg(SA6F~*;A937RRPt`p%6!v7EgJ&pW0_d&8RP^ z218dGwq2f>Givy6p|^K>XOjUZd^CDQ9VY=>=l*}NpJA4||7g^O_bBhR#tGm*yORUq zZ)oB^zoG>Szm_FH*#U3FxPBBj&A9)tpUuvz1(?sB1%toha>`EpccE15@uC|Ry=-Gv zXWknJVeSOFo+4tFqWi8~;ZR|!D2>}$jk%-Mlr;^8mwVA4bTsw&S^)@A4FT1T00M#o#U25KieUhMJf#06dclX~WV>gqx zY0PuqO`bTQw=Bqj@`%swFk78O{y-+M&d+m=!Aa4MypT7!p-R)IWXR*xeFJ_pAnc6| z&Ij&ZXaAM=_yYs+?`(YkPAag^-sO+g$pWyq3+K063Fs|sn628~h^MNrR3^cf9qEAk z+0OOxdiis2k?AJy;3b&>u4|KV5$KKBC*YF!h6uiMZgMr*Ne9-6^sFmB`ZP&y(0c`B zeNwO>@zc!ubVBJ00Qe+WAS-v9r{ecBnilaFwIBth& zPFg0Y+1mvJL!ltr4u_AEk{IR&y$uc{E-TEJkT#48Nu$&OV?+npJdA0LuFhChh&wbA z@p6LmFE#Mk*zhMLK3e><2rA&V`u)!QfR26-)%eM5Xp#BN8{$gi;JH!5CN4W=p7~=l zHhV$%<8)}!hV;{Wj|cYy7~A^&iH z*yKLnx9x*>yz?q!D?~hqa-MPKQ~Uu)J##MhIJrZ0{Y zb~^t7*MDF7q%Z4Z;6iiL|0oKRkBGJr0^sVAKQBP&9kdCXAfU$GA`Y>?pg0JPX@^| z@MpLhwCh{-=FX?g_rD1@9^bN2h$h#^UW)FOGS$(oYr6YAL&3-{d1VF#irOgX4nV z#07tlWe!d4BtX8^?zJ-dM}ZweykQygcR9>LytP}&6HvW`d=7p4_lVs1G}jHm@XH@9D-=6@*i8PPJZw6!Svf2$1S`kf?ef_$ zE|`LZ@UfY~Z-RQ5Z;N~PP)hA+za)~&)A=ie<=%vAT|aw)RG!6)m`D&4v-XOHDCB4; z!kPsDQMG@)`p_2jh07n~Nv-TBHrM zoN$TTgF;F<7lLER{QvIFwTFWYd*Z#zsBe7ULuk&L!Ut#q)M9mRnh?q>B?_6c8)0HL zoY8nSl#1@|2Xv~bPd?$wgfH3CzQgUSS5r#L1_lEg>dKsa#g2;aK1O_$y`m=^^znM$ zBC4v{bd&z&|2%FEP;3%n`kw1MPCiSu%&3)pd{`*%q~5~o`;Cj2T#54`7VhPK{2+?H zRgRjR2KqW0p(58jvXYojsXBMZh6!9P>fNVc2@&P3jw2i6Hb)DpOof_OA72yw@-3^O)w+5 z7}Ih&S)T#<6J>Z&@`=Sa^QbuxGN3>+P z_?45Saq0w|l#e6W36|F+FJf7H!)dV7x~mh(*;sk?f;{fylp1FJ2|U4)QZpwdicqnO z2@#QhANyAhJ@eng2AaZeyCL8keC-Dx1!49yJO>l;i(S6Sb6DZZ3F(5NC)gN&Jgoe= zEV61zmoX%uAw!aB!xruJWloHVJR*2B-Q{*|uSIF+av>_un*7ZwPvdWrH`@`S%Q1L~ zwP-bfFKG(Q6ntPALj6)Qf+iEk#+TpjF3ivL+qJq5wxs7hf|Wjc*{^R>Qg{;y;V%yI$YHiro5^A@P*;?7O8zBKPa3(n!feI@WV((XRURr zcNGPSn^NMnahSh84OkyzZ6`b{b0E30WQfCR!gQ}SAXCIaldJeC5^7a6K|%gttzX)2 zz?S-!Ilhav(u3Jo+W)z)`-2Ky=x0qG6FJfpuPpC=l(Vo4Q!&gDe}!>rYewV-e2*Xs z2*2!!jKDN)77yRSzrmpaPRyb{>28 zrdCZpbJV_ahrnfI2v{l?wh6FTRO+UnOKGDqhtf)xrE=p54+C?cy?IFa&ZZdOe$t?U zP9lSE0a(42v(m;kRprq$P`s$`g#R+4AMv{AkBO_PSrk(uIhqP*pooNgIb1o$DQDS; ziRD5I9YaBK+3RQcGC89vS>^|9xRfuxX6A<(=OOLLEeX4*elIl>ZJ63Bid|50mnQNt zJ#ooXIi&UXQ35^M^Ty9(oom@AxoiKFEt$zrD1jrk>Rx)OiWk zbt*d9Rdvp#tOQs8S-jx!m_qi|2=9=jvESO2$&ux30(viN#ZlcPz~k5 z)B)e`-?mpX$3uTuq%|ij+p%T(Emh7bT9qX4?mV2RMqM&dXd|fTl-lf+;k1 z4@ACr?dFOr0fErOKZE5H?{+~+gHf4_3aD|RfivWbKUeKcx2ahFiG0G-5;1fdidSjI zRdUe4mPQC~oJ=jthPY8SU&fjr3dROMTmDX`^sU`h`$p@|FD*WWci&-ka{{m4!0+`f zvkjhNd+Ia-5y2x_Hz7OC46CWGSX-IRHGupl8~L1s>(NI}DH0l64p= zw*;n?2iumbL>QTvYkBOpS@`4e^8MYu`&j);rYmKv{N35&mJR-I_$Jis;_CF(${r4v zYkv{!O^r>4=Bf7@r2K05BHX`g1xI+e7SA~e4(?HNS*WpSx0!>S)nDVH5<3{viLgzn z59rdI2>-~-^4``&jg3jtvW*YKYo663kNqG*g0@l=oy;=7pVB3~qNHSrxn?&(&sG!$ zX-YPCC^q@j#UfSzc*{u&p)8F3y~s`@Z<5Ow6wJ9`3zrthE#MUCJ9|9id(Hx{vzc4v zv?|@h_Jl~;7|pa2Vk|uTik}%R)mGGl_lc)RpIa)tURKd$T*StXLXqxf1Mi}&2dk`z*?<}?-q z$R*V~v)tK>#gr-2@o7eM{xT(P7sAv|Xo%R-YB?kXL`+zm?Tkn`EEd|R3=3KV;JC_B zzvGDPFIgF42eWYsij^d3+T?t`!eFoX$+oE^EyvvkXaCVPoxmrjLZ~UEp)Gne9=&8@ zkLGBiL~vw<2{*}~KXS4V61b{!o*q&UhJxDx=F6jzQTDPP?}7IW48*%LG1e_3m^$K_ zmir^2^%=vJP**A^qG`i5lPV5D86iV~vn;orGQO*U2kQ4PMedVE56y$KhO__H4h0h? z*A;gE0h5T7nM<{fAxJQ2YOwiaHA|7-4W_7T+f772;PWe%@eka9I=&>-tDz*~LS%l? z^H9HB{b~2tEJ7D$1L_Nbqf7=XRQ0n*RRvNmmcRTbhEz(!QM-(J*@1W`p0?&Nqa(GB zCC+7@cG-2fy3!)&n-Y5W^~?rRv%L*@?lWNgSs?*gN3d+ladJms*J ziBNq?oGewQoij;MCVvo*>?OjWd_^Ep%hFHT;VKiyP~fheu$w{i zmcX$p!k#!)cDyJ|H=L6Divd;6L|ph|Srs{zXKVj%*3rMjVICQS*(rR(aNxsUQ?dh2 z^8W7g>&@MTg1?@YmRf(I@=DjtrGJqes`k;shI~xmm+pk;JPe!JY{$vy?-u(Nzb`7?ci8GQBw6m>}7)&}gebN9a~% zG0IqYaqbs<(9_A9S=t1M;gxR_c!xK%t&z527Kjjzi~tp-9flnQg%xhG+r$J&#<9IJ zaC93Yk=|}QrqJI(=s>T<0vs1AORa~eMB2rIKdE=P%UQexSHGozZqmUh5YE~h*_O=Q zkrarssLGOqB*SQR#PLuVW0OzDHO&4E$_SZD!aTXZMCgy86Tk^$eV)2SI2c%HS!r)< zaFOKc)bE&>o+N{&#r(`dqz7U`kU$wTgq}fG4+bTsjCX%*AVH{iCIrRYzM#F{c-uj;A~wRlb+>F{R^62z_`6WV zoWrmZ$ad3_n`4E#O!Z*nE{|g3h@Evg6iBJ5N~mzONUlbtJDGY0m-9Wh#> z&=q%vo!{XJvyr!M$z!ID#i&-c#hX2bc%P%`#7`+Iw}Ty4x}egKv+fVTk;tMC;9-m% zU8wTq!Yfm8;*>z1`6hyt(>j1LWGsHI)&xaeoeB!hW`=e4sHJx6!X>R@tZT zNFxhM^e)8klkla;mgK^fXiGgD#_}CqJArLD2i*YqLRXl)W!oyuIAUK(a?1GU2#+E? z%Vr}%&jF6s@jmj6__i zAnNSToIS0=D>=n7#XBMfDWwIe6#KF;FHq5K;nLWTX3{d}zcC+@$DyuRKn4tiAN~3i zsv`JY=^sAgCjr-8mFQBLl0L!N>7G?kZaGsNjQSY1-#MtBRc%Goz~7uB5j~vh-J%Kc z{>l9=;QsxO1d0U)j&!a_gOxb#ZETKPhsiPsvfBvOr4H>L(m1D=`IK z;{3WPP~H9X^}-aQ(yPLoUmK<<^OgTorr5tGGZ!nd4FWP1OD4+p-Ii9U=4(?3f6Gut zN$^BtO=y0G!hddopr8`Qj~x~ksTQ(2h>cUXgw;1d+>?Epnb#46_3<%^-?``iaqT8o zt7S-UPd9mRJ<49&ZQdwH-=K|b*kzPSRtM_aRw+eO2&=`5Qf7`f(9m447S?rdnfp4y13z72Cl0Te=r>FDs+7$|N zrP0x+3nK7{QN`oHl|pi8FmlnA&7SEuW6c=#$k# zRXvB(p2*8-MBIu++=D@sp}h%Z)4`#OG^{)=M8s8P8tP_6e3^A&*T|%a;o#fDwGtAd z!CC5TB@$ndTJQ>|x#LTJIm-wb|7nzyk+TSwN6X8DXpx70|8}=<8(zzUV_*?^VCj;u z(<4^S36GA6Ssb`j2Gd*LZzJQUW35)N)_3IGaXRfCK@OjukFA{Tf{SS?vse6=V563U zo&!67@SCutcZNe%@pamE*yJ0wRA>HU|;XF^UQH5Xre4kE4>p$Kqb zif`V@i(f=wUAb)Bq#M5<%OSPLKF-1;sxLI_wKK7B`*~mBhrhHe1kD)*v zi8+HTcLbn=)#2T*hxbT)h3y&o{ZrnnqxWA0Dm`8k!7EZEI<)U#a-<7lXT0MD>En6C2mVx z4y@S7F)xVT;wTfzH$JD;&Fl;|L zr;+7O0Oy4q^bt9e^@wPJ+oDIz#g~zz@{5pch6M+RFT!AQRD}CN2>OW5NyOvwB`;7T z<4e2F7PAVGWH37##C^F$dWRPI9Gg1naB6`S`RWT%&;hO&`hVQQ=DYv=?td*XJhlD4 z=Ryo360)k7EMl(9$~k1Ydw<_MEpu>l1-Y@@!GJafr-)hZ zfH*DpQDaZtQ{*_@5nnugZhnM?)E<^&^IucHnDiWGGNAO7FEH1-xHxKeiq@lW=d-@1=Jm!*D?9vPy9@8Et`_ z@9gh!0M%PNT~S~h-*m|&Hj$&ClaZp=FcVPhzcmeS6@HoEIk0ruIr*9h0JB}=&=y-q zd`-Mfo?8fAT3zF?jbIsxdDy*c$o9BR-reO;jR{R#Fll}In<*&V6e*<{(=Tz5cEp4*4dQ__6XSo3@U|n|F#C~%7k#o zTf+qi1ia$vLN?WI`GLEmta$=D17DHXpaD@^^ntBV7w&-M?sxDDgknSEv0;CSNQ7b! zVEo}bB zPWMm4^>qY$Bud`=e>9Toa)(FWZMp!K?sb$2IC|m?_zW#F1%l?%V}8JBcR5%i-WoR` zy<087``a4Jmj2GsYbW2%X)sXVp#+FgGS zdGqwDcA;SZ*)l*^LbpQyV6Z{?P{i?@t(E00tueUXg<(m}7Q)8uQKNR%JAHl4o37RC zvrl}ZbiL18?scWYOGGEa9rp95&c;W4yFKulqOo*s-3@DXMY}D#{5i^Y{Ias6F!Kx2 zDD_3*Ec-)6r?AqFd^3Bw`|+^hq8{M=2z0jDWV<-FSvKzwsE)W?X}Huo?P&iz0kxMd z7rV>p+T8Q+&oMxh1H8=vAXSW`MWg&^eJ?&lzKWCz%KQjrVf%^*srR%dtKo*lLy-1B} z-)Z;F-0n%MLKrXq;%;xBujElox|Bl;A~{SOd4D6cvhGrmt+c|}H)!=%USqe4&CId> zJ6MQ!lv50I8CMMYytYfETf(DSR#=8O?(`!s$bl~UV*KQSoc&cAHGFTsY}_ z&06{LYByCst@IfA(5;7^(VW#nFKYx(Ncy7m-S2zCjQmYcM%HMyS=QJ{_zUKpg1p$| zxqM}?RB!uq+DHSdy1d4}?+;!r2$>~Lu#}L6jMvxMKZpi9>sa1ege-*0jWE|!2fDTS-?Mkb8$saKq!4>=+E~Xy+B|3JmN%;>!TLGkJQluRm zio+<#=n9C}?y{0ow?ZjFLOu#mam3I&mq=*O+r%|00@_Y%68_HoOOX6N3J+J#`JtV) zybwe?)A6%B+D^8i*|*$*1as(j!O>k3&QE*^Bchx%r(T^UmJ(ypO7s{GDh);r9(ocRmEdaXOY6PcFANr0_&QEb9>Qp?t7vR2`_88>9VVZ7 zP%VC3412=PWdm=9A@={Q#TNFrerITT9PO-}(8PT|`>gwPXozool+UuK_HE8Jz5WwA zc#--bT`96(`KkCMe^wnonOPV^#2K&s>T$L#;(2Meszb<5vzLboJmo(~k0y6<$apS( zOu(gyApdNBNW6CS-Bg#$+`MeIcqHIyHGlsT%J6U1?sbw?Be#s7xhf%ZXxMk z%jyKrx2&b=g~SJAU)OGnn3KiJiIn?~27?&eO8%>HYzzBvV99lQ=ez<>$BpFpI+e=C ztH(%BD^au2$E6)127|ePTmH$V%pm{uK+LjxyXT3)3qR%JNtR@I_N})`HY#d6cY9BV z$5Su*a+t;Ar;X6&YH}seq)O@eB7mjSo~PPst~~;DxsJZm#?eT(?r(XTM@6@~Q3^s2ch1GhXa``^i3_#kM!|oV?hnhF;FR&j0!PGmmHU z)6Jv@^fMX}lvWYZ>9R&ABS1LAP)}-ofl)+Bz)$$TeC{gKDd1@>Uiz=i zB4+I~8-wBfVF+z7n1|T=X||+9$J!gXeDdJ#ckHWR()S#>pXr{>VX=94Ij)5|KH*tw zbW(SuhRU|+XLIp%H*+uw%a7Yuahg|+s@}Fb3z!Y%X$3N_=XTnxek}295Wg%TV>@J) zc$(Q=JfEWmN6xD1{to}Q(NC;bPkUYz6-qbYYw)>HN^j>dp|yJZ+2k?XvVX4Ha=AjV zsl|JGWpg=h;By(Cd~lX!v2j&7Q){wO@^Y3ap?}KqG{d-Gd)mqKId9SEgE8+c@z`iU z1OTkz-$(6cdC{MiP8cLVTwK3dNL*@hUIA9|TZoTd-%e=4CtrP;c5A&k+S=|nh-nIe zA9H#b0yEKG2kA9M*+&HiOFR!pY3LI#_F~cVjQV?6+bH z4n@kPcZ(P}F;)uafX&{6XUM0o(O$l5p~#<2yAL(nD)^T0oMPO5yh$cnWh&FyD~9uN$nggV{`W+=NbOPE;mE5kTck4pa)Yj%6lgtMRNudcXUeOk<3;7|9 zLYaw>b}`njuA%1Ute6dh)6>$go2&#!>31c^FnJ}jh|rn;g1X6!aJ~cVz>?juE#q8D zveOzK#}GyL{7Z$KF-@~Vznw6$-_V@PwS=GvN|dO^SQzTfr^5Erbn~2pcQzK}4TlB- zr6_HF>fLd7J072caTDC`CWHyqXjzOjdMXK(_Qpb<#T1 z)UuYO=a}V*YFH}>1;XgFLaP;Onj5~j2>J!;)WV#_Xu%~dt?wo)t@H17?xicL#eWbA zm{qUGJA(4UOUNVz|ELBFcDF&Se>Y6CeGe5W!4kIPZv7lujEoL$@Ut3 zuTHd6u_U&semBszH0)Nfq%6RhRa*@iD&}s?b6R$5)k!Fs-IyxZlg(gP=V4~2;AisN zJ6~VvmzFx8k$9sd(@pzrd2UFGzWq++3|hBhOBQ~QXpeTcHgx-yKa7=7D2E>Z%})j~ zAJRMruI=w%HFp|rK$k;an@-NwhQgTVLD2CkDl$%@qtm!T5wdp@l5Qh|e&aplH*YT3sS8P!}-J+G8rrYV*z?hZI*Q=ptiynQ?oUPvCgUE8sg+<$DT|lx)rPD#*%pcc0{nz{6OJ*QHKxQD#!taRZ zFy{Hz0N7w7ydePe`B-a8-z)`s-w)qF-bO*kF|fT|i)?rJ1fA~=c6>A!9ghUPIZG!7 zs@Q71M7kY+w{!S)xp6+PH?OC@Hb-Z>N~7dis*t_%y84uQX?keuskR#6;jaEGZH`nM z3(StV=cqDz#;yE_Ie&rK&sSr z&ePM@S5mm%?mqKUtHjZzDb%giqLL&!f@+R{^|6K#>LEHCNFS9>>Lg~Zkl|IuvqbrTM<0Hc?3$!V0 zFAEkQPY1%SAML9f?11N`_EVyy`DN#`cwy{7tUzGq;C4b%#W@t+ft|Mi+T`tG9}I(`0`|kQouvu~fn^ddG^j1NtKw^UIz)}u$MSX;$E)+z zHV6iOe;+y8N{bEYI~{te<2(CZx3g*WJ~tFsW-rxg1HVxjwP@39PMovB__ey#`hMC& z7w>N1-LHo$lFV&!mJud!iRS3NAV$LEh-eGp+m)-jvwVL0hu|RpAO48l3VdoylyU9a^s!CAc=UiQ8)t$3YbV=YkY2AJ>+ZV+1=#VjEE;JiE%94!?ud_zy z={1PImfg|P@=3SbNKlXZ^f5`%}nN3H{b9=eI-l9g_S!&Sp%0cv=+iQUs z&CB)|IEbil;n7vkdbyre+XE7KQZ~^R7t!Cri0jPuP^^1aU`6TUQjI#rgw{#iGO)Vw*ku`=L&U9zdB>LliAxe9B|8uP0^+$5I9 zowB+T;J))Sn>lDM6v3crF|#vpy&J_yw&~T5DWjslC~fD-hml=^$=KV=_P%bAZ>1ce z;Iiuuf3M6mj7^>Xhhu!YQx^vBXlkAh&5ZsvzSJ}E)hU&)1oLqM_C-2H)3L&@*qe7H z*0ZvBd`-_HajMc-(KQ-B&~7)`+oIf)XwwGRx6e&U&3-PHW%Abe$jSS9u3RkGImXmw;W%d-k6ibTk}C`daGCh(pIi{dXl7q-@>~QZ9B*#CokXg4 zPOQH^_i?~*$ah@I_zI-fx{Vw*a_Da> ze7-%DgoRO+M)T;P?pZ`FdFjO8Tr*{I``!%~(gf^!atTcEx;jY%MG z9o~;k;S{$1@~%lr%Vf&?``s(TycQ7+eXGaJ{1(9mq4#r>HH7@f0I+JapiHz;>CC>j zUQgvz|=Rmnk#Z#UK7)T@0+4wkk zg7z+97_C@Xir?C30i$Obk?vN>74p$KwH_)L!I#>}){SYQaQpB>^m6<_3GLSf`(fy` z^EUX?hJti~DqX*gIGN-ARt$!RVAq?yQghkt_e(LS%8of086EY&`pm z*U%@MB^~d!8WxY#ERPNRsijI+oL4TjiG6GEp}Fp_w)2WpZFldB3!XBQ)zA#7bRGvr zRm+EwH-z!f6fuy{1{1BX_p;ukHa$ruq=WUHzRMQQPX{3XC=iM_V>><%I3qVd2XTAQ$+m5f9dcoHk@zn=}fO4<(#u)eORGMws&h* zTB|o^`UCZZZTHmaE@g|SO?FGnrLLg)no5w|*r<@4ykS?s3vy7st$4Xy?8^#b8crqH zsHtX~6EnUOxoZcqDH?Ox*HQ_@de_|4+|ba_*c>B5O2KvwEl8RcfxGij?V|1JIj#?+ z!GZZ%6*m6-JarP-HxdS0yV0T>#@V*g1(OBjN=3Ryc8SXn4!)oemkah2@1+o@GMpx1 z--AhtR}p*_RIWxI@h|idM9TJ8KA+2PBSEyA95VjQm7J_|a&HWzR!NBU(TU~u{U`kN z7iqvBQM(-m=@*REbu*ogH^qe}sposahu#I{ENeYy{S2_!UaLkxEp1z-?(O8Jn9?jL zhPu-`J>|#kp{CqWZ76)m%)Gw92+nsJI%S=t@fmVwWBHxTS_z%xf}vCIIy+b8w}Kau zDeq_8OvO&F=hUzp^|BU*#adrY`_qKN)$iL}3cS}^v&QVNhaV1yKEAIdk3RK3WA-ys zRrFHsEAWO_5^G$1_mAqfuw`8}T5*eVh@Z9TvS#OsoV_)@XD45{khZ3B-d3Cq3}W;b2a*g46aXY!5d6DBrNawRYE;Nhzh#@Jp}*Dc4IR=Q3$(ki>$ zd=4`!T!LIC^kQ1q@;{2w>}*M$@e4NTF<)7HVrltIYWMcBy1#uY$s1OPAy8#$ZN z+X9>%tQpiak-%`UJN5rd58#;po8q|t?-VC%T^=p5AL=-jN#-08H<*yz}e>6l$u=A|MSm<1cCyqZeN%N78pB&CBJg-_nK-8k~w~2f;CV#`&8I<#8I;iVy!&75LJ2!_r z(uisz?xMj^x#opqiiDQ!XX~!4b^B3l9C!-VTd0S1M2JG@-hf2|N1XDHW(|XXh$gcl zeA=$jYSD_8tR9nz*p|4-coBD~dUu7_kl+mqPxPwBs*-W(pUN@}ZNb#Ins6XcEu3Dm zpQJBvRPRLr3RRA9%Oh3#;a_9q^!@AsrTkd#|j&LPl&JkZ`9_c;kg1Y}O z9%_p+jNSn-u$newCkviqytei>4qqvaX2?Nkxx36wTZ3|?*l4lH_@?7>T7}Z>bPD4k z?d4am#Se+ijp^H-$E5lvz6^_MsXIW$p`7l1&V~%lsZ0lQ zT}+AtPt#I+?<>dRsaX|lSS+M)|`FKR3!<0r;^Kzu~dVydV0!PgQXrRYD*uj2S={*rtt zJAOC(7E#<78uH9EaDU*C>^4%nf75R;Qrnq)$g1CT7nyHV?LpbB?~M_k*aq>bgTY8eY|Gy+ z3Ku+s4$%y>xLp>{&QfNDtn%TZ(Q=(wQ*{zNeP~3ik3auFmKt6m?YK=k-Y&#DGH6Kp zoV}-H4KYq1M}s75^ed1Py2XU9*txpeVJ0xuIthxw=0qD!f7@eGS=p+4Mpyo)3+b4= zUnn5Kz)qq5(~Xc&|7&SB{r^*%om}l*tnAGGS8|-FrsIGwhDoH&!`aKXw)q52s!Bq7 z9lIotUk=Fp6)`Kp`nAtKsLXwQ%r+2Ra$^a9H4KB&YK7G_Kowawgan5Hk9G+8u;GhU(uc|M0NzM9H^_M?z`i#>rbyu_abx8OxEw1{Q{NZ zoucIic~6ZCFTM76-g7VHE$TJlZEamY8N2~uul7}Bn;|bo!)X<-Wh0rqDr1P$KjHr+ zBl<1|$?-xR`(H8}47U!5EI110Vq7??O~QVd>BB>-@Ltuo$`6k~Thj1|eHooKNFF2S zJvZTX(GE-5)FkTP0+y&(k}e&I*PstV{3|R* ziT(2~{**zZ&_GjA`-5TPtx}_HO@#f05q6B#ZXDo8+Aax;Mvsc%8VC^&OR33Wk9#wz z>b+rZnH3C8os!(i=fgcs%FJ>KoGz0P0PBhKWh65;5e3KTQQSG z7Be$5Gcz+YGqWXGj25#jW@cuKEM{f~i|Na||K0VyvEJPmFLtIoCSqbHGb<}AE4%8P zZk=_lt)PR7fnnX79+3(8veo*;Dt7BNCfQDse` z`Gak?%IPFIAO7m3VOFNV8bR_A+p$+uCy-qV?>V);6d(6wh|^t|OmE>Ve)sr}2!{zZ zi_^@+)-LWCHB3C4>5q0#t>1wkLB{XIkL-xhEIVpB8Rm%M;YH5YrKHdFss?skOiT^D z47SGRNe0$a*$Q_tZPy7+DW9nG4vI3%>CZz3DXUfy2JhA=i#0b50~Sg*tr>l$vtt!{>WOWs8#o;jgI z0vQxv3YXHrQJfyL*UL~Q&#Py6oJ>BYHGsn>y@%_iK}Xqs&NN|)Z>FL`4IsALi|eYNeZ#sE$GWR`{H~zzpU+$ zl%&)&hGExhpYC2aXclf3J;{^9E&LSO&Hl{Oe8^U=!h4!_+m)Pic;@UuIF0E#WjOt6 zHT79sR%)L~dP3^1E#8N*{d{#zxbbB=zjL(9m0MjE|K#Zms?c65mvi!Nl>pW++RGKi zU<_ndDy*_Y)1bSc3?&D!4a+M?ZqOG0!Qcf2wbrlKlZ0S#bY(kkA8Hxa8>qSqC= z6(b?rSCN(cYCgY&&J2|}GPy{`tFcTC1@nrMp0vS>KZpTHd7=0aBwSZ*Uja=Z!W!L_ zLp|0YT={s!Vhki*1CGb)&3Qy=FGGzs4%DK_2u@#SLKOTZ&U) zvVZ;C71PP$xt0U4`VEkVV{(n&>I4gW}n5IK!PT-@^*}X&=4f1EGI(HmE zh?CI{L3gR~PJ>dSB&3vX4@VpnUm_t-XsClm?Sjebv9NZ>Ld&KX3$I0~;@(j4e%xJuLavQK;I`x^GU*vNQ=2)J7=$HfNz&spRyCYd$ z+qZEkt3_I6pIubV$hv7+uX*;QeVfI;uOLlj2=ZRn-eMA`aKe1-&@2GFh&`tf%vF;@ zLAoqHS5d3N$1q+1)Pd#UD~e-{$yDnYKt#238{87BgW;}lvl&%~k&nD0dH%7Qs13?c z@E-MK1C>zfhLaS~7}ZTaJFUvYM+-5!VGjo1D*JLm`6{efmBRXc)g16)@Vgr#7!zqe zzu&<;ZOVcfD9RcJ$LfuFBws(8D!iNCqA3(hsjZN|1dlyUM_!?TiNBlNJ?Q|Z4 z^T6pL)fDtyzIXMAPB;q&o^?qf(b;>zcifQ3SYVb&_w#F02QYS3fs&gaJp=xnbq14x zxMlurzzhAK0$$w4#Foa+%G}ZE=jAKOFRKWW6hp&QH1u>$qeFe8J>wr}voVg)zoclK zrDv%sBxJ?MYwV=NrK-lIynm;J6?dMLvXhjYrh!G9jdFyp6{o9|l8~jAuob6~o|2iQ z7MHpOHKT$ala-gXhvlbw3QHCAi}*Z3#=EfR4HC zXwI30w>@xnk=OWUzXosb#vQ)8*dIOmTl(cSU)nG0L+nzF;9Zd8iZt)BU{x6DuhX1j zSH)GHq46Vt{LitU)N;?Cgv5K%E8AziaUFzJk*y_iD0paHnDxhRK=|vTTJF1qNqIK< zF>#wfo~Hv5BwRV42_XXT{{NACW29WH#uOPRKa?V#SGUReRfnRD)840N$hs`C?6ha( zvKrtX587uT1Q4ylZTWa_*})L^=JXD(&3U(c7Pg?Z3r=qVm$s@eWLpc0b=g0U=Ez~2 zyQv8<64!svr!HQz>)ihX{{!j;m{vy~w$qZ?#PlsUJtR&&Te@XM=eT?2&KMxOwbvuo z*g)Z8TSM%GDOQ$-Mf1=Ae#eTgVT*>3t|c0&jA7L18zT>=6_y1quUGZWYT!%3cD#a9 zv2&w6PpHhNLXJ~G(qYX?&Qk$V^U=bY`7vrn^NKy_2ZuEZw|GiS3Q}Qu)TjoE>6(|B zcG;%QG7_H&k3;V)Iw(1P_ApjJxZ9Ylk%Yhsj~ncJ&EP3V|thr?c_+`G%5+Z9Oi#8T_t*UL|-9(Z?fo_zaue#>sl1^I`1oGYIAhGkL z8n>p0bKxJokm*y^v!(6NH9Yrw!BH`il?^O%?bfmCFEQM926##bTeHDp7d8`E+EQUDzbxG>d@O744qdaz z+_WApjdgZo=BbCKf;>qEd4?n@t6uYm^t6T(2T777B}YcLshPtfwT>>*M$WW-l)3cu zR!M4F>9lz&i)fMjSZqxShCcuPh^eE5PWb|0EozlsRN2V1Uoyv?&XJ!yJAQF_Z}7Mz zd7=v5xPcu6x^ZTO3$zHd1rFIV#uO{yt@MMCMsbk@KXr+;l!h@Vx$@}P^eO3)Nt}#W z0925g(N}3{AtZ^lMAh8SSNshEJhVS{WP^b8SArht%Sc&Q`D>OKymbx@ED&aFUfvmc zVSErXK%3Nbdx9IybnGAf39g;A6`$r?rUEd=_83FR?c@T3rag_me-VIilivKqf?qHM zo>KIXo6E^(C?_G&V&cYK#l65-<)?5Uh$AOywo8p_NK!msi>ev%or(&nR*j38Usa6A znC6=qnCpVYHxa7KxE;Nf^bBW44JyQUWL89CBs&ll(k=a=U-aDt#y%V-kWJ%Q*N)oo zC@O)@9EHg}!TBtcW|`%<%_Jw>=qI5WjnL#>t-hUTcPT(3M5-hr#cTt5jp^KB2uS`G zGUZ6D33Vx$lYKO4!c}|~BtUO~9Ln6`Kq!9Mr5^Vw2NF31c@}D7HQEiNBjrfSY3wwn73N|kotEoXqE=7`V}YI<<(90iSZ~#fAjb zBFu>pulV# zL6W--Nw6(#rW2P6xf_m@Td>rj*R%bg?*w)Y`8KAb%1B^JPHz~#CqX2Onqt8ggt{d% zXHJ7@*WOBC0m=xwsZSq`ui!Y9|5>gm-%)fM%bc0srXZz}o}NOVIh0)bhyDOtYy?PU%R)5itl}1IS>@3I?CEt?&~gRPyW?j}=x- zc(Lj<19-+T3LX4iG_D@XjFk1#v|B)=P^mlek)k-4@@T+K?@Sf^B|IteudmtjB9y3e z%7)32=xm(CflAz`dB`doz?tDJSyOuxl*Up|#-y0iu7#a=45zjyk||%M2ui=yer|B- zkrJW)pn(DuqadEj7FRytgqVI4dmE}W$%rvX7oa#H#7>RMSjv?*yQQ(m6g6vZ!#zQl zst(L^%_sgP(tLnwTlU~t4E9O16tY!)%`*w;_gEYvVw2du!l4ql1m z*B&GJ^B?`JUql*406f`iY8La@k(9)Ru$0B42ag{@NQFU4qS2E}xQX&U)CzBV>4m|XBj|OZ_GF4%Pgvf()6=rPmc;m z7hM9{S~s{g`h{B3{4SlVB@mQdy)IdoP*o;^t%Ym4P02RnyJf5sX zEC@8DUZho6AwQ1mY2E;7I(Z?riD)DZ3Y@wkpNhsvmvUDr8lX8Pftv(`yTb-%#CP;? zcDYEm`d+74DW^zWA3bd%BT#0tIB3Ef4G^a?fQ+vCJQ~^^@$hawd6qy7QwY~(>=}7O z0@uki28z7f2>E!a-8$}Vvd=m#AJ4@mAp*G*^QABp+7e76ocsAw?bDp8$UGj^;CU_E zOk7;YIMrE3(P3GT&Jgi+Ta#Q;uuk{56sd?((-_H)HqgtyMF)F$`9GS|55h!5M;b40 z7YBV7!6M&a_12E+A3{R|f8TG|X9_i50VVA9a|4xxh2kG*6T-2Ks^t;=GL4x=kLYrQ zh#D_-PmmBDwJ+t+u|)zTRh>>>zYUmWfIoFA#x{&sTsBvcU?6U(6U)?@C}oij&revD zt&)*Im~6#}o|dSvM&0~_>?8gCh*D^Nk3^k;kW)=@XiMosD9r~60}r4m6QgDYCr6(` zWz(1%8{YG5#5Jy2k$UCjv~Sgj+X#;N!_q?No<0gzvwLlb+$EHL1k^nuD74xx&PX5m<; zQ`rY3%V>Z}`79R14wso&ZzD1&R!bUp z<0a8&u%2Y{c9wD?cx>AP&KS(4vV{(A#?|gbF6-Goyg}kTDH!{;vSsZs7k2BGZ__Jc z_QFNYUa+}GxTPCq2fCe9?(4&2&x#?0q(k1)!PFmYdx+v~f#kX11Q4>|?r*DCSe|?6 z35aswz&rw(;M@wr0e{?4clD+zU=IK|=6@}u7Lf~=gQvn|Xy{|a78uzI zRj`6U%qOT_x6uQEhp@$>{A??}%Mf-_s}W%+cUszOCG!2);&iA$C`>#EGzykw347Bv zy$HtQy4Hgcb1|xm*~s zNDbdjL7QNRAV&{Zm%=*-aH032mKnvN!}-c)2M<=nfogF^Hvtv#9nq4}A|)LodJu7J z)~gzs9{j5xtDa+STMqbbK^ z^<1OaT?*CElG6b2*yet%&0-`OWt%DeMyEZz{ogDABmr>%(}l6=x|%UENdQeO7?R-$ zUz0)P)(yZR}QYr@F$K85wds$G|%Z-xKM4W5`r)i8y2fuO!>1J<|egf!$x zt`ixCaT?y1;);8q8?gz4Y|5FQhO-U|7z>|v+_KqQ!F?F1J1tx_y@R85>0PRn5AAk+ zIXl+lVQBQ(EVB}&Jc|>?bdBl|M5T2kO9w7fM0CwfV1ri=Vrh9P-Hym(M@Y9+>S896 zBHb2r^5)$op)Cen=+de6O5bx;9UmafcPJFnQMUP+XSL)ERJ4P#CDCh@QoEJNM_+=>K*NnOe z>vs@!8}fu)Du&sfml+u*3rg8+)u7^MMh-CuQ?e8miv}?@u_H&9y!r#lY5OGA4_H7Z z5c0(W0)*FzHN|>&P?us6Ly6C;YTg$)SY5aNoiFg~T4||r(-I=)imh4AcUe|W^8TGP z0y$51xy1GtPFr1ZJmZ8GgA|S)>7Jv9$18bB5Erpq0=ebFF+^YG%s%hd_G{&6_I2m^ z@$`=!4L3ZYhv+c9D@s8`6Gp~mk=05SwD#`8L`d> z5TIN`)-x0qnn&wTXcKv>&zG89OV~CKHkin)Tim_h>rsMRrnSj|CYJXq7V&vmRKgoO zo;ZDt1h>jMo-&J?*kaI1ug(Pt^l03g1$ZQxFVqc1K*oehY?eY`++10o%qJp`c##B35JrHAA5S3k8HxtKE+9Tg zXgC?h%8iNmCe(jGZxrC|HtOh1L@%NjFG??}dlli6L6=hcrrHWDCPX`60QzI-+1W5U zS1bdJMD|Rz5VrrZr9TL+WT*g45R#g7q#=|%ObDb{bj~0m3>%a@NKn;D^#VGHSxZAV zVM$IG5aQQ7M3Q(WFac11P>ld1m?3`@3W{7r;SWR+QXP!S|5!E+p> zx+f5r2OY_ri3~vUoA9>6h!6ej{p`_9nh3#w zsgTfeA@I^5KvC!r(PR)ld`1OD{v?b(NUXpw{^8J)nv4d-4x362h(<(QA#{q#juk%} z2=K>O^O(8-Dmm|RV)IWV5Fe88K#|PkA|T?rAk~z_HdxaGh&2TA$-Wmx6KRD7jKzlm z3G1UN8-2hh*T6>r9FS8g0QK)8(~yfY!NSP1!*Bz6uznK|8Z(Xo1P6r+j#8`CgY4H6 z0Qn?>02xLk|4EK-l{ha3rdKW@!3e<9F{bcF%qVsZv0uY4*E<*TnV~wak`6me_A21r+*~XNmW$f`02Zb6IuYnj$ z&Lbdm#xX<4rGW?s04(7n1p8N!fFVt+b)gQczL`gjFtA=cp6DB4!AqwUkY0Ng`fSA}-j`ln3fM@lSi%@#*ZhBlDF| z5kpqWL)D1eM1|?;L;cVbgzAr{ms)WH4Psxk!1r=`sL!y8g9z`G@_waitEI`wDZ&Nd z{NoMm$jqy>*4I$b(6AT8Y^VFK9~Kz=7Fb@vGizm?S8sAbr1K*VbY$@=3?^sUF|1wu zSLsyXEU2*}SU6nHVxEPU+z)0meaN$J4RfKr+d1~kEw6^6bBA1uWlJD@##ceH2$1@8 zK=Ei{aTGx{^A?cC@douguymtwO4RG;azxl4E-9Lk`uSHKRvJKJm z-6=t}&+EPQHP{^lCVBgg2X+ps$C0_}O5ZU>2H6R?Gc$x%_d3wW=4pZp(f| z^}sjU|0Otl?XMVUI6LQA%Ci^HI>%C>3gAyRcn7LPXjWp(v_WgC&(U6X0$ zLc2w;vHe8wIw#JO$Dt|j8q;Nkb6Ns z-A;0)CQ0Vb`$LiNRYEu#KQ^{AVC28Rb$HuNeo;*5aLE?u5|2% zk8o((i+WvJgT7JA>h5)H+$f@!+lqBG{z#oDt-ZBr_34g2%_!7;-qx;sdFq!RKkjt5 zxf?hR!GAKLA?@hgq-Cs#3&iYrGDc#(8SKQ6z~pT{AMG1Uk)-kQ9t{KM`M!SjN?Vw! zm3<-Ll|`p@6C6G=sN1#l!U2 zed5LDRJnJeL%GpLd+Kp?dhJGWJi~i;H|zW{?`+T4U1N|@Rxy5?@k=+gE%8#LvrliP z(<54G%T)k=+!4BJ03-1No`zm1SwXNyDert4mEV#!ZFy?XyD==*Zb=s8wk zYr5hfTl!*ptXZA-vMkGXS|-WO%X@L!cj;QUcDdLzfy%{hb;|nuZ8D>B^%|jOi} z=Hm1j&u)L)^X`dj@L3HnR~sa$stvBs7^>Tpp7$N<7xlak4ir4SLF7RlV@)y zC7)H>Uh=44RySG;_#<&M79ImF4@#5h8rLtjzfB0Mj*CUQo8RQM%4FWmBpln8M5!6J z9Hq|>#2;L1id@r1Nwz(o^gX-oM=tpcpR0Ir*S-FpOvqp#s`VvXCVSv!eDrk+s9v|Jv7Nr!l~tOYTM*n(6I~4rYbxezGm)W!z$~= zPT?Q$95hb0%Uo5i*GBFq!1qy{xeD9Q|#Zj{K8 znIs4(o@R3u&dm#TV|=|ew_NhgrV3D_@KaYG`X*fxH{l0r?GT?}9gkFxKsAGk0zGn~ z6X2j;)u2##f>PDohF1((9A2p5Ye-jEdF4z~y|SjT*5r8@ma%R|*+J8u%RfG*h^pIi zzq5NSy)*Ax#`XkXtK0e(J=j@&xZD#qp&Kj8t7~syyE64?=&oyVyfHzOOWQuO{DY!? z_qB8N0PD-rd>d<<%f=)$X*xC#aX7%pUDTp$*4o>qFr{ zYK2g|r-+M{=hO6T3vT_JzvMutB?=3 z`>YL(>rR&x69e(MZ%CZm_v#Z7nRWiU&3sE1nrz+9`-#i0CreLLlifSs{aZ>+dG_RH z+BCLS0QA-OybHNM%+gwX?U$R)NS(I$3t>;;;mCZ}fLw&*~D#X-XO zrdv(HyYQlYQg8Od*LZJkKI59?;Zo6?x{gw|`w}>buzmo`0?L>Xye(Oqg}HKyj|yfN zgNMar%IBH%r5oA@o{x--d_fHmJMOS$!^F_q=V-dSKMX;ZiYa};c=LJQAvN`lZ@O8v zc9n!LIvEQ-8b|Wm~x5+CF)C+L9LC%Ddcj zB=rQJ|ANgQ@MF%QACK{-q!8bm`}FTY1*57lV&aN`FMlR<~LE==H5_eZPW|iN-Cq&+zu$HLJ<#Bjf}|CuFxuLpdiLIT zD{M3IwhIvR8Y=gFAt{7#@HqHj{+x`=)K-y4XJCRT%ff5+*A7N~E zd?=&{K=%Ha;2wEeF$i`?pV61oniPcg8LoZbo}LQOTZjx&MyZ{lhUA*hU%{jDal8&T zMWdpM2dB29d0d|Rwvk9>GcwaXwnj%67a8|W_A}FcJ@oC(-Hpv}wj7f(eK&Wty4`ja zxK$e*^qXV?*&;BG*jTTt&zqWd^s-`6yA$#rlAFfCYB>7_(@fSaijY3l^B4J78n8le zXUg?kBi_R@XWWO`8giNx9d3QFtGnHKPi8=Y3laN-ORGIhTa_ML-YD*EJ#GdnF)t(* zhNYMeKa2uWGyH1w3x>%qm-EKiV45*GQ9f3y@Nsukq_SDg))e*URD)p5xvy41`F})I zh2b<&6L-l9q6ELy>oNrI;_oomIukv=%_6W{u5vl)>b}|JHe%9dDZMXGmcvS<$l$XZ zGhM;sxiqky#!_ihptK+O9628&x?&^9twWh8f3l1n4_dbjgWwD{onDa`e3Q;E0{E#& zT&pKkO}RW#Dp(C`_XD%KsuV zr+m{G7*VD$R-9*OFLW7-=~!dzO!rl3jrlHGhbo{7Tz$F_`V2fUMHp)CS{0I4o-24S zrnUTHGkv@;h}_(MLgS!b8{IyjIU1TGkJh3_HTT9CyVs)1J?0X-KKDb!L{pc%!X!z> zRg8=ThCotx67~2qF^uH=#~W*HS{h?ixsj<_joaFfx(faj^C1k&$cCLsmH0>0w713` znu84Hu4?!jTlXi|TT2{;ttuQ+rBJFN1U(o>i@m@jL#_mvpPC{xxh!sRd_FwCQ@NXVWqXAUkqs2x!^8zB+bzxpzP|~Y9D+(j7j)hYzY%gl zc#rZ7<^%5=(AlGT!SW3J3i%e`+v|&x%}4xolyW~2mRNyDzJi=r?1eC}n_BzJ8OKQU z+uxu@8o=;nKXG;bp#N%gWB+z%Ue40==K%k?5s&!`pvDmf;-VV-C&B3*Lkkk73Goiw z`FYAo0s^4`{~bm9*X@4@0GRh*{O!ee%K!88e+W>@Y7l>H^ZzResDF~c@{5E&Q>cC? z@2^RX_)qdYek)H`(ALOU(cIKV-^tm*_?@Q&@dqvI@8t}EOQ+C-Oj`~l1 zg#W8xe%JQj3H}pp?XUj%=dfyyKZzdrPelI<3fq6CQ~ggmX*&Lc=KNOYKXBZ?p|kzf zq<_#~ekI0O{9;nRfBk>cq<;eO{=JRAV&jeeWMg2@f6;A!LgN0_x_=%>8oyX~%1<=- zf3fc0qxJu4(?5FkS0J9H^0vF*nesP=+*Be|4}|b{82v0 YNrJwUZ2$le-`|AqHG|pvp8){=ACsu}YXATM literal 0 HcmV?d00001